Commit 27bea614 authored by youjie's avatar youjie

聚合订单

parent 69fa707d
......@@ -50,12 +50,12 @@
@change="getOrderType"
:params="msg"></AggOrdHeader>
<view class="AggOrdStatus row items-center">
<template v-for="(item,index) in statusList">
<template>
<view class="AggOrdT"
v-for="(item,index) in statusList"
:key="index"
:class="[msg.OrderStatus==item.ID?'active':'']"
@click="msg.OrderStatus=item.ID,research()"
v-if="item.ID!=4">
@click="msg.OrderStatus=item.ID,research()">
<text>{{ item.Name }}</text>
</view>
</template>
......@@ -76,7 +76,7 @@
</template>
<script>
import {mappingListType,transProductEnum} from "../../utils/producttypeenum";
import {mappingListType,mappingListTypeTy} from "../../utils/producttypeenum";
import EnumHelper from '../../utils/enumhelper';
import OrderStatusEnum from '../../utils/orderStautsEnum';
import AggOrdHeader from "./components/header.vue";
......@@ -107,14 +107,15 @@
statusList: [],
g: [],
page_count: 1,
index: 0,
payindex: 0,
showAuth: false,
}
},
onLoad(options){
if(options.OrderTypeStr){
this.msg.OrderTypeStr = options.OrderTypeStr
}
},
created() {
this.getOrderEnums()
......@@ -151,7 +152,12 @@
if (res.resultCode == 1) {
uni.hideLoading()
res.data.pageData.forEach(x=>{
// #ifdef MP-DI
x.goodTypeEnum = mappingListType(x.goodsType)
// #endif
// #ifdef MP-AG
x.goodTypeEnum = mappingListTypeTy(x.goodsType)
// #endif
x.orderStatusInfo = EnumHelper.ParseToEnum(OrderStatusEnum,x.orderStatus,'value')
})
this.g = this.g.concat(res.data.pageData);
......@@ -202,7 +208,12 @@
{},
(res) => {
if (res.resultCode == 1) {
this.statusList = res.data;
// #ifdef MP-DI
this.statusList = res.data.filter(x=>x.ID!=4);
// #endif
// #ifdef MP-AG
this.statusList = res.data.filter(x=>x.ID!=5);
// #endif
this.statusList.splice(0,0,{ID:0,Name:'全部'})
this.statusList.forEach(x=>{
if(x.Name=='已付款') x.Name = '待出行'
......
......@@ -213,6 +213,7 @@
if (res.resultCode == 1) {
this.orderTypeList = []
res.data.forEach(x=>{
if(x.Name=='团队'){ x.Name = '线路' }
if(x.Name!='Jalan酒店'){
let icon = ''
if(x.Id=='1') icon = this.icons[1]
......
<style lang="scss" scoped>
</style>
<template>
<view>
<u-popup v-model="showModal" mode="center" length="80%" border-radius="20px 20px 20px 20px">
<view style='display: flex;flex-direction: column;align-items: center;background: #fff;'>
<view style="display: flex;align-items: center;justify-content: center;height:70px ;">
<Text>是否取消订单?</Text>
</view>
<view style="display: flex;flex-direction: column;height:80px ;margin-left: 15px;width: 100%;" >
<Text style='margin-left: 10px;margin-top: 5px;'>备注</Text>
<input class="uni-input inputM" style='margin-left: 10px;margin-top: 5px;' v-model="Cancelmsg.Remark" placeholder="输入备注" />
</view>
<view style="display: flex;flex-direction: row;align-items: center;height: 50px;border-top: 1px solid #F5F5F5;width: 100%;">
<view style="width: 50%;display: flex;align-items: center;justify-content: center" @click="cancel">
<Text>取消</Text>
</view>
<view style="width: 50%;color: #2979ff;display: flex;align-items: center;justify-content: center" @click="confirm">
<Text>确定</Text>
</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
export default{
props:['showModal','datas'],
data(){
return{
Cancelmsg:{
Remark: ''
}
}
},
onLoad(options){
},
created() {
},
methods:{
cancel(){
this.$emit('cancel')
},
confirm(){
}
}
}
</script>
\ No newline at end of file
......@@ -79,6 +79,20 @@ export default {
]
}
},
watch:{
params:{
handler(newVal, oldVal) {
if(newVal.OrderTypeStr){
this.orderTypeList.forEach(x=>{
if(x.Id==newVal.OrderTypeStr){
this.getTypeId(x)
}
})
}
},
deep:true
}
},
mounted() {
// #ifdef MP-AG
this.getEnumList()
......@@ -90,6 +104,7 @@ export default {
if (res.resultCode == 1) {
this.orderTypeList = []
res.data.forEach(x=>{
if(x.Name=='团队'){ x.Name = '线路' }
if(x.Name!='Jalan酒店'){
let icon = ''
if(x.Id=='1') icon = this.icons[1]
......
......@@ -4,7 +4,7 @@
<view class="visaList row"
v-for="(item,index) in g" :key="index"
@click="goDetail(item)"
:class="[item.orderStatusInfo.value==4?'active':'']">
:class="[item.orderStatus==4?'active':'']">
<view class="visaListL">
<image mode="aspectFill" :src="item.goodsPic"/>
<text class="visaListLText">
......@@ -25,10 +25,16 @@
<text class="price-stuff" style="font-size: 20rpx;color: rgba(164, 164, 164, 1)"></text>
</view>
<view class="visaListNumL row items-center">
<!-- #ifdef MP-DI -->
<template v-if="item.orderStatus!=5">
{{ item.orderStatusInfo.desc }}
</template>
<template v-else>{{ item.AfterSalesOrderStatusStr }}</template>
<template v-else>{{ item.afterSalesOrderStatusStr }}</template>
<!-- #endif -->
<!-- #ifdef MP-AG -->
{{ item.orderStatusInfo.desc }}
<!-- {{ item.orderStatusStr=='取消'?'已取消':item.orderStatusStr }}-->
<!-- #endif -->
</view>
</view>
<view class="row">
......@@ -42,16 +48,14 @@
<!-- #endif -->
<view class="row">
<!-- #ifdef MP-DI -->
<template v-if="item.orderStatus==1">
<view class="jz_Zailai"
<view v-if="item.orderStatus==1||item.orderStatus==2" class="jz_Zailai"
style="width: 110rpx" @click.stop="goCancelZK(item)">取消</view>
<view class="jz_Zailai jz_ZailaiZF"
<view v-if="item.orderStatus==1" class="jz_Zailai jz_ZailaiZF"
style="width: 150rpx;margin-left: 10rpx;" @click.stop="submitGetCodeByOrderNo(item)">立即支付</view>
</template>
<view v-else class="jz_Zailai" @click.stop="AnotherOrder(item)">再来一单</view>
<view v-if="item.orderStatus!=1" class="jz_Zailai" @click.stop="AnotherOrder(item)">再来一单</view>
<!-- #endif -->
<!-- #ifdef MP-AG -->
<view v-if="item.Income == 0" class="jz_Zailai"
<view v-if="item.income == 0&&item.orderStatus==1" class="jz_Zailai"
style="width: 110rpx" @click.stop="goCancel(item)">取消</view>
<view v-else class="jz_Zailai" @click.stop="AnotherOrder(item)">再来一单</view>
<!-- #endif -->
......@@ -60,18 +64,24 @@
</view>
</view>
</view>
<cancelPrompt :showModal="showModal" @cancel="cancelPrompt" :datas="currentData"></cancelPrompt>
</view>
</template>
<script>
import cancelPrompt from "./cancelPrompt.vue";
export default {
props:['orders'],
components: {
cancelPrompt
},
data() {
return {
g: [],
submitCancel:false,
submit: false,
orderInfo:null,
showModal: false,
currentData: null,
}
},
watch:{
......@@ -194,27 +204,33 @@ export default {
let msg = null
// #ifdef MP-DI
msg = `OrderNo=${item.orderNo}`
// #endif
// #ifdef MP-AG
msg = `orderId=${item.erpOrderId}`
// #endif
if(item.goodsType>0&&item.goodsType<4)url = `jiuzhai/jz_SureOrder?`//线路
if(item.goodsType>0&&item.goodsType<4) url = `jiuzhai/jz_SureOrder?` //线路
else if(item.goodsType>3&&item.goodsType<8){//景点门票
}else if(item.goodsType>7&&item.goodsType<12){//酒店住宿
}else if(item.goodsType>11&&item.goodsType<15){//目的地用车
}else if(item.goodsType==15) url = `visa/visa_SureOrder?`//签证
else if(item.goodsType==16){//机票
url = `airTicket/airTicketOrderDetail?`
else if(item.goodsType==16)url = `airTicket/airTicketOrderDetail?`//机票
// #endif
// #ifdef MP-AG
msg = `orderId=${item.erpOrderId}`
if(item.goodsType==2) url = `jiuzhai/jz_SureOrder?`//线路
else if(item.goodsType==4){//景点门票
}else if(item.goodsType==3){//酒店住宿
}else if(item.goodsType==5){//目的地用车
}else if(item.goodsType==6) url = `visa/visa_SureOrder?`//签证
else if(item.goodsType==1){//机票
url = `airTicket/airTicketOrderDetail?`
msg = `id=${item.erpOrderId}`
// #endif
}
// #endif
if(url) {
let path = `/pages/${url}${msg}`
uni.navigateTo({
url: `/pages/${url}${msg}`,
url: path,
});
}
},
//取消订单
goCancel(item) {
//未付款-调用后台取消
......@@ -252,7 +268,14 @@ export default {
}
})
},
cancelPrompt(){
this.showModal = false
},
goCancelZK(item) {
if(item.orderStatus){
this.currentData = item
return this.showModal = true
}
let that = this
if(this.submit||this.submitCancel) return
wx.showModal({
......
......@@ -36,6 +36,7 @@ export default {
params:{
handler(newVal,oldVal){
this.msg.keyword = newVal.keyword
this.msg.OrderTypeStr = newVal.OrderTypeStr
},
deep:true,
}
......
......@@ -298,12 +298,15 @@
</view>
</u-popup>
<u-modal :border-radius="16" @confirm="cancleOrderHandle" title="订单取消提醒" content="你正在取消订单,是否确认执行" @cancel="cancelVisible=false" v-model="cancelVisible" confirm-text='确认取消' cancel-text='关闭' confirm-color='#DEBF7B' cancel-color='#080A09' :show-cancel-button="true"></u-modal>
<cancelPrompt :showModal="showModal" @cancel="cancelPrompt"></cancelPrompt>
</view>
</template>
<script>
import Flight from './components/flight/Index.vue'
import cancelPrompt from '../AggregateOrders/components/cancelPrompt.vue'
export default {
components:{Flight,cancelPrompt},
data() {
return {
timestamp: 86400,
......@@ -327,6 +330,7 @@
submit: false,
OrderTypeStr: '',
OrderNo: '',
showModal: false,
}
},
computed:{
......@@ -356,7 +360,6 @@
return Math.ceil(bp * p)
},
},
components:{Flight},
onLoad(options) {
if(options.OrderNo||(options.id&&options.OrderTypeStr)){
this.id = options.id
......@@ -382,6 +385,9 @@
this.navigatorToHomeHandle()
},
methods: {
cancelPrompt(){
this.showModal = false
},
submitGetCodeByOrderNo() {
if (this.submit) return;
this.submit = true
......
......@@ -434,7 +434,7 @@
},
nativageToOrderHandle(){
uni.redirectTo({
url:'/pages/airTicket/TicketOrderList'
url:`/pages/AggregateOrders/AggregateOrdersList?OrderTypeStr=1`
})
},
orderHandler(){
......
......@@ -506,6 +506,7 @@
<view class="priceMoerBox">
最近团期:
<!-- #ifdef MP-DI -->
<template v-if="item.priceList.length>0">
<template v-for="(items,i) in item.priceList">
<text v-if="i<1" :key="i">{{ items.startDates }}</text>
</template>
......@@ -513,6 +514,10 @@
更多
<u-icon name="arrow-left" color="#999999" size="24"></u-icon>
</view>
</template>
<template v-else>
{{item.startDate}}
</template>
<!-- #endif -->
<!-- #ifdef MP-AG -->
{{item.startDate}}
......
......@@ -1221,7 +1221,7 @@
icon: 'none'
})
uni.redirectTo({
url: "/pages/jiuzhai/jz_MyOrder",
url: `/pages/AggregateOrders/AggregateOrdersList?OrderTypeStr=2`,
});
// #endif
......
......@@ -580,6 +580,7 @@
</view>
</view>
<coupons v-if="showCoupons" :coupon-message="couponMessage" @goLook="()=>showCoupons=false" @closeBtn="()=>showCoupons=false"></coupons>
<cancelPrompt :showModal="showModal" @cancel="cancelPrompt"></cancelPrompt>
</view>
</template>
......@@ -588,8 +589,9 @@
<script>
import coupons from "@/components/coupons/coupons.vue";
import cancelPrompt from '../AggregateOrders/components/cancelPrompt.vue'
export default {
components: {coupons},
components: {coupons,cancelPrompt},
data() {
return {
pageTitle: "订单详情",
......@@ -609,6 +611,7 @@
orderId: 0,
showCoupons:false,
couponMessage:[],
showModal: false,
};
},
created() {},
......@@ -629,6 +632,9 @@
}
},
methods: {
cancelPrompt(){
this.showModal = false
},
submitGetCodeByOrderNo() {
if (this.submit || this.submitCancel) return;
this.submit = true
......@@ -748,12 +754,16 @@
icon: "success",
});
uni.navigateTo({
url: "/pages/jiuzhai/jz_MyOrder",
url: "/pages/AggregateOrders/AggregateOrdersList?OrderTypeStr=2",
});
}
this.submitCancel = false
},
(err) => {
uni.showToast({
title: err.message,
icon: "none",
});
this.submitCancel = false
}
);
......@@ -768,18 +778,24 @@
"sellorder_post_AppletUserCancelOrder",
msg,
(res) => {
this.submitCancel = false
if (res.resultCode == 1) {
uni.showToast({
title: "操作成功",
icon: "success",
});
uni.navigateTo({
url: "/pages/jiuzhai/jz_MyOrder",
url: "/pages/AggregateOrders/AggregateOrdersList?OrderTypeStr=2",
});
} else {}
this.submitCancel = false
}
},
null
(err) => {
uni.showToast({
title: err.message,
icon: "none",
});
this.submitCancel = false
}
);
}
},
......@@ -798,7 +814,7 @@
icon: "success",
});
uni.navigateTo({
url: "/pages/jiuzhai/jz_MyOrder",
url: "/pages/AggregateOrders/AggregateOrdersList?OrderTypeStr=2",
});
}
this.submitCancel = false
......@@ -834,10 +850,8 @@
msg,
(res) => {
if (res.resultCode == 1) {
this.orderData = {
...res.data
};
// #ifdef MP-AG
this.orderData = res.data
this.formatStatus(
this.orderData.model.OrderState,
this.orderData.model.IsChargeLossOrders,
......@@ -845,18 +859,21 @@
);
// #endif
// #ifdef MP-DI
this.orderData = {
...res.data
};
if(!this.OrderNo){
this.getOrderInfoByIdAndType()
}
// #endif
} else {
}
console.log(res);
},
(e) => {
this.orderData = {
result: -1,
};
}
console.log(res);
},
(e) => {}
);
},
formatStatus(status, loss, isCancel) {
......@@ -903,6 +920,7 @@
this.orderStatus.text = "正常";
this.showPayBtn = false;
}
this.$forceUpdate();
// #endif
},
// #ifdef MP-WEIXIN
......
......@@ -60,28 +60,22 @@ export default {
},
methods: {
redictToOrders() {
let num = null
if (this.isLineOrder == 0) {
uni.redirectTo({
url: "/pages/jiuzhai/allorderList",
});
} else if (this.isLineOrder == 1) {
uni.redirectTo({
url: "/pages/jiuzhai/jz_MyOrder",
});
} else if (this.isLineOrder == 2) {
} else if (this.isLineOrder == 1) num = '2'//线路订单
else if (this.isLineOrder == 2) {
//司导订单
uni.redirectTo({
url: "/pages/guidecar/orderList",
});
} else if (this.isLineOrder == 3) {
//签证订单
uni.redirectTo({
url: "/pages/visa/visa_MyOrder",
});
} else if (this.isLineOrder == 4) {
//机票订单
} else if (this.isLineOrder == 3) num = '6'//签证订单
else if (this.isLineOrder == 4) num = '1'//机票订单
if(num){
uni.redirectTo({
url: "/pages/airTicket/TicketOrderList",
url: `/pages/AggregateOrders/AggregateOrdersList?OrderTypeStr=${num}`,
});
}
},
......
......@@ -1345,7 +1345,7 @@
icon: 'none'
})
uni.redirectTo({
url: "/pages/visa/visa_MyOrder",
url: `/pages/AggregateOrders/AggregateOrdersList?OrderTypeStr=6`,
});
// #endif
} else {
......
......@@ -569,6 +569,7 @@
<!-- #ifdef MP-ALIPAY -->
<subscribe-msg />
<!-- #endif -->
<cancelPrompt :showModal="showModal" @cancel="cancelPrompt"></cancelPrompt>
</view>
</template>
......@@ -576,8 +577,9 @@
</script>
<script>
import cancelPrompt from '../AggregateOrders/components/cancelPrompt.vue'
export default {
components: {},
components: {cancelPrompt},
data() {
return {
pageTitle: "订单详情",
......@@ -596,6 +598,7 @@
orderId: 0,
OrderTypeStr: 0,
OrderNo: '',
showModal: false,
};
},
created() {},
......@@ -618,6 +621,9 @@
}
},
methods: {
cancelPrompt(){
this.showModal = false
},
submitGetCodeByOrderNo() {
if (this.submit || this.submitCancel) return;
this.submit = true
......
import EnumHelper from "./enumhelper.js"
import ListProductTypeEnum from "./listProductType.js"
const ProductTypeEnum = Object.freeze({
/**
* 一日游
*/
ONE_DAY: {
const ProductTypeEnum = [
{
value: 1,
desc: '当地游产品'
desc: '机票产品'
},
/**
* 多日游
* 线路
*/
TEAM_TRIP: {
{
value: 2,
desc: '出境游产品'
desc: '线路产品'
},
/**
* 小包团
* 酒店
*/
UNIT_TRIP: {
{
value: 3,
desc: '小包团产品'
desc: '酒店产品'
},
/**
* 景点门票
*/
SCENIC_SPOT: {
{
value: 4,
desc: '景点门票产品'
},
/**
* 主题乐园
*/
THEME_PART: {
value: 5,
desc: '主题乐园门票'
},
/**
* 博物馆
*/
MUSEUM: {
value: 6,
desc: '博物馆门票'
},
/**
* 历史景点
*/
HISTORY: {
value: 7,
desc: '历史景点门票'
},
/**
* 温泉酒店
*/
HOT_SPRING: {
value: 8,
desc: '温泉酒店产品'
},
/**
* 星级酒店
*/
STAR_HOTEL: {
value: 9,
desc: '星级酒店产品'
},
/**
* 度假酒店
*/
RESORT_HOTEL: {
value: 10,
desc: '度假酒店产品'
},
/**
* 民宿
*/
HOMESTAY: {
value: 11,
desc: '民宿产品'
},
/**
* 包车
*/
CHARTER: {
value: 12,
{
value: 5,
desc: '包车产品'
},
/**
* 接机
*/
PICK_UP: {
value: 13,
desc: '接机产品'
},
/**
* 送机
*/
DROP_OFF: {
value: 14,
desc: '送机产品'
},
VISA: {
value: 15,
{
value: 6,
desc: '签证产品'
},
PLANE: {
value: 16,
desc: '机票产品'
}
})
]
const mappingRules = [
[-1],
......@@ -145,10 +66,17 @@ const mappingListType = (value) => {
return {}
}
const mappingListTypeTy = (type) => {
let val = ProductTypeEnum.findIndex(x => {
return x.value==Number(type)
})
return ProductTypeEnum[val]
}
const transProductEnum = (value) => {
return mappingRules[value]
}
export default ProductTypeEnum
export { mappingListType, transProductEnum }
\ No newline at end of file
export { mappingListType, transProductEnum, mappingListTypeTy }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment