329 lines
8.6 KiB
JavaScript
329 lines
8.6 KiB
JavaScript
import Toast from 'tdesign-miniprogram/toast/index';
|
||
import Dialog from 'tdesign-miniprogram/dialog/index';
|
||
import {
|
||
OrderButtonTypes
|
||
} from '../../config';
|
||
import {
|
||
wechatPayOrder
|
||
} from '~/services/pay';
|
||
import {
|
||
wxRepay
|
||
} from '~/services/order/wxRepay';
|
||
import {
|
||
waitPayCancelOrder
|
||
} from '~/services/order/waitPayCancelOrder';
|
||
import {
|
||
payCancelOrder
|
||
} from '~/services/order/payCancelOrder';
|
||
import {
|
||
delOrder
|
||
} from '~/services/order/delOrder';
|
||
import {
|
||
confirmReceipt
|
||
} from '~/services/order/confirmReceipt';
|
||
|
||
Component({
|
||
options: {
|
||
addGlobalClass: true,
|
||
},
|
||
properties: {
|
||
order: {
|
||
type: Object,
|
||
observer(order) {
|
||
// 判定有传goodsIndex ,则认为是商品button bar, 仅显示申请售后按钮
|
||
// if (this.properties?.goodsIndex !== null) {
|
||
// const goods = order.goodsList[Number(this.properties.goodsIndex)];
|
||
// this.setData({
|
||
// buttons: {
|
||
// left: [],
|
||
// right: (goods.buttons || []).filter((b) => b.type == OrderButtonTypes.APPLY_REFUND),
|
||
// },
|
||
// });
|
||
// return;
|
||
// }
|
||
// 订单的button bar 不显示申请售后按钮
|
||
const buttonsRight = (order.buttons || [])
|
||
// .filter((b) => b.type !== OrderButtonTypes.APPLY_REFUND)
|
||
.map((button) => {
|
||
//邀请好友拼团按钮
|
||
if (button.type === OrderButtonTypes.INVITE_GROUPON && order.groupInfoVo) {
|
||
const {
|
||
groupInfoVo: {
|
||
groupId,
|
||
promotionId,
|
||
remainMember,
|
||
groupPrice
|
||
},
|
||
goodsList,
|
||
} = order;
|
||
const goodsImg = goodsList[0] && goodsList[0].imgUrl;
|
||
const goodsName = goodsList[0] && goodsList[0].name;
|
||
return {
|
||
...button,
|
||
openType: 'share',
|
||
dataShare: {
|
||
goodsImg,
|
||
goodsName,
|
||
groupId,
|
||
promotionId,
|
||
remainMember,
|
||
groupPrice,
|
||
storeId: order.storeId,
|
||
},
|
||
};
|
||
}
|
||
return button;
|
||
});
|
||
// 删除订单按钮单独挪到左侧
|
||
const deleteBtnIndex = buttonsRight.findIndex((b) => b.type === OrderButtonTypes.DELETE);
|
||
let buttonsLeft = [];
|
||
if (deleteBtnIndex > -1) {
|
||
buttonsLeft = buttonsRight.splice(deleteBtnIndex, 1);
|
||
}
|
||
this.setData({
|
||
buttons: {
|
||
left: buttonsLeft,
|
||
right: buttonsRight,
|
||
},
|
||
});
|
||
},
|
||
},
|
||
goodsIndex: {
|
||
type: Number,
|
||
value: null,
|
||
},
|
||
isBtnMax: {
|
||
type: Boolean,
|
||
value: false,
|
||
},
|
||
},
|
||
|
||
data: {
|
||
order: {},
|
||
buttons: {
|
||
left: [],
|
||
right: [],
|
||
},
|
||
},
|
||
|
||
methods: {
|
||
// 点击【订单操作】按钮,根据按钮类型分发
|
||
onOrderBtnTap(e) {
|
||
const {
|
||
type
|
||
} = e.currentTarget.dataset;
|
||
switch (type) {
|
||
case OrderButtonTypes.DELETE:
|
||
this.onDelete(this.data.order);
|
||
break;
|
||
case OrderButtonTypes.CANCEL:
|
||
this.onCancel(this.data.order);
|
||
break;
|
||
case OrderButtonTypes.CONFIRM:
|
||
this.onConfirm(this.data.order);
|
||
break;
|
||
case OrderButtonTypes.PAY:
|
||
this.onPay(this.data.order);
|
||
break;
|
||
case OrderButtonTypes.APPLY_REFUND:
|
||
this.onApplyRefund(this.data.order);
|
||
break;
|
||
case OrderButtonTypes.VIEW_REFUND:
|
||
this.onViewRefund(this.data.order);
|
||
break;
|
||
case OrderButtonTypes.COMMENT:
|
||
this.onAddComment(this.data.order);
|
||
break;
|
||
case OrderButtonTypes.INVITE_GROUPON:
|
||
//分享邀请好友拼团
|
||
break;
|
||
case OrderButtonTypes.REBUY:
|
||
this.onBuyAgain(this.data.order);
|
||
}
|
||
},
|
||
|
||
//删除订单
|
||
onDelete(order) {
|
||
delOrder(order.id).then((res) => {
|
||
if (res.code === 200) {
|
||
this.triggerEvent('refresh')
|
||
Toast({
|
||
context: this,
|
||
selector: '#t-toast',
|
||
message: '删除成功',
|
||
icon: '',
|
||
});
|
||
}
|
||
})
|
||
},
|
||
|
||
//取消订单
|
||
onCancel(order) {
|
||
|
||
// 待支付取消
|
||
if (order.status === 1) {
|
||
let data = {
|
||
orderGuid: order.Guid
|
||
}
|
||
waitPayCancelOrder(data).then((res) => {
|
||
if (res.code === 200) {
|
||
this.triggerEvent('refresh')
|
||
Toast({
|
||
context: this,
|
||
selector: '#t-toast',
|
||
message: '取消成功',
|
||
icon: '',
|
||
});
|
||
}
|
||
})
|
||
}
|
||
// 已支付取消
|
||
if (order.status !== 1) {
|
||
let data = {
|
||
orderGuid: order.Guid
|
||
}
|
||
payCancelOrder(data).then((res) => {
|
||
if (res.code === 200) {
|
||
this.triggerEvent('refresh')
|
||
Toast({
|
||
context: this,
|
||
selector: '#t-toast',
|
||
message: '申请取消成功',
|
||
icon: '',
|
||
});
|
||
}
|
||
})
|
||
}
|
||
},
|
||
|
||
//确认收货
|
||
onConfirm(order) {
|
||
Dialog.confirm({
|
||
title: '确认是否已经收到货?',
|
||
content: '',
|
||
confirmBtn: '确认收货',
|
||
cancelBtn: '取消',
|
||
})
|
||
.then(() => {
|
||
let data = {
|
||
orderGuid: order.Guid
|
||
}
|
||
confirmReceipt(data).then((res) => {
|
||
if (res.code === 200) {
|
||
this.triggerEvent('refresh')
|
||
Toast({
|
||
context: this,
|
||
selector: '#t-toast',
|
||
message: '收货成功',
|
||
icon: 'check-circle',
|
||
});
|
||
}
|
||
})
|
||
})
|
||
.catch(() => {
|
||
Toast({
|
||
context: this,
|
||
selector: '#t-toast',
|
||
message: '你取消了确认收货',
|
||
icon: 'check-circle',
|
||
});
|
||
});
|
||
},
|
||
|
||
// 重新调起支付
|
||
onPay(order) {
|
||
let data = {
|
||
orderNo: order.orderNo,
|
||
openId: wx.getStorageSync('openId')
|
||
}
|
||
|
||
wxRepay(data).then((res) => {
|
||
this.handlePay(res.data,order).then((res) => {
|
||
})
|
||
})
|
||
},
|
||
|
||
onBuyAgain(order) {
|
||
console.log(order,'asdasd');
|
||
console.log(order.goodsList[0].id,'asdasd');
|
||
wx.navigateTo({
|
||
url: `/pages/goods/details/index?spuId=${order.goodsList[0].id}`
|
||
});
|
||
},
|
||
|
||
// 申请售后
|
||
onApplyRefund(order) {
|
||
const goods = order.goodsList[this.properties.goodsIndex];
|
||
const params = {
|
||
orderGuid: order.Guid,
|
||
orderNo: order.orderNo,
|
||
goodsList: JSON.stringify(order.goodsList),
|
||
skuId: goods?.skuId,
|
||
spuId: goods?.id,
|
||
thumb: goods?.thumb,
|
||
title: goods?.title,
|
||
spec: goods?.spec,
|
||
orderStatus: order.status,
|
||
logisticsNo: order.logisticsNo,
|
||
price: goods?.price,
|
||
num: goods?.num,
|
||
createTime: order.createTime,
|
||
orderAmt: order.totalAmount,
|
||
freightFee: order.freightFee,
|
||
payAmt: order.amount,
|
||
canApplyReturn: true,
|
||
};
|
||
const paramsStr = Object.keys(params)
|
||
.map((k) => `${k}=${params[k]}`)
|
||
.join('&');
|
||
wx.navigateTo({
|
||
url: `/pages/order/apply-service/index?${paramsStr}`
|
||
});
|
||
},
|
||
|
||
onViewRefund() {
|
||
Toast({
|
||
context: this,
|
||
selector: '#t-toast',
|
||
message: '你点击了查看退款',
|
||
icon: '',
|
||
});
|
||
},
|
||
|
||
/** 添加订单评论 */
|
||
onAddComment(order) {
|
||
const imgUrl = order?.goodsList?.[0]?.thumb;
|
||
const title = order?.goodsList?.[0]?.title;
|
||
const specs = order?.goodsList?.[0]?.specs;
|
||
const orderGuid = order?.Guid;
|
||
const goodsGuid = order?.goodsList?.[0]?.id;
|
||
wx.navigateTo({
|
||
url: `/pages/goods/comments/create/index?specs=${specs}&title=${title}&orderNo=${order?.orderNo}&imgUrl=${imgUrl}&orderGuid=${orderGuid}&goodsGuid=${goodsGuid}`,
|
||
});
|
||
},
|
||
|
||
// 处理支付
|
||
handlePay(data,order) {
|
||
const {
|
||
jsApiUiPackage,
|
||
outTradeNo,
|
||
interactId,
|
||
transactionId
|
||
} = data;
|
||
const payOrderInfo = {
|
||
payInfo: jsApiUiPackage,
|
||
orderId: outTradeNo,
|
||
orderAmt: order.totalAmount,
|
||
payAmt: order.totalAmount,
|
||
interactId: interactId,
|
||
tradeNo: outTradeNo,
|
||
transactionId: transactionId,
|
||
};
|
||
|
||
// if (channel === 'wechat') {
|
||
wechatPayOrder(payOrderInfo);
|
||
// }
|
||
},
|
||
|
||
},
|
||
}); |