import orderApi from '../../api/order'; import userApi from '../../api/user'; const app = getApp(); import {hidePhoneNumber} from '../../utils/util'; Page({ orderId:'', /** * 页面的初始数据 */ data: { orderDetail:{}, refreshTrigger:false, orderStatus:orderApi.status, orderStatusKV:orderApi.statusKV, deliverStatusKV:orderApi.deliverStatusKV, genderKV:userApi.genderKV, orderStep:0, receiving:false, isShowRefundConfirm:false }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { this.orderId = options.id; this.getOrderDetail(); }, getOrderDetail(){ orderApi.detail(this.orderId).then((data)=>{ let orderStep = 0; if(data.status==this.data.orderStatus.received){ orderStep = 1; }else if(data.status==this.data.orderStatus.delivering){ orderStep = 2; }else if(data.status==this.data.orderStatus.unpaid||data.status==this.data.orderStatus.completed){ orderStep = 3; } data.complete_time = this.formatTime(data.complete_time); data.pickup_time = this.formatTime(data.pickup_time); data.received_time = this.formatTime(data.received_time); const receivedStatusCode = wx.getStorageSync(data.orderid); data.packages.map((item,index)=>{ //formattedCode 预防有重复 code,造成选中问题,如果code全部显示出来,可能跑腿的在取了快递之后,后面遇到重复的这个,会找不到包裹,因为已经取了~ item.formattedCode = {}; item.pickup_codes.map((code)=>{ if(!item.formattedCode[code]){ item.formattedCode[code] = { sameCount:item.pickup_codes.filter((c)=>c==code).length } } }) if(receivedStatusCode){ if(Object.keys(item.formattedCode).length==(receivedStatusCode[item.id]||[]).length){ item.receivedAll = true; } (receivedStatusCode[item.id]||[]).map((code)=>{ item.formattedCode[code].checked = true; }) } }); console.log(data.packages); if(data.status==this.data.orderStatus.created||data.status==this.data.orderStatus.completed||data.status==this.data.orderStatus.unpaid){ data.address_phone = hidePhoneNumber(data.address_phone); } this.setData({ orderDetail:data, refreshTrigger:false, receiving:false, orderStep }) }).catch((res)=>{ this.setData({ refreshTrigger:false }) }) }, copyOrderId(){ wx.setClipboardData({ data: this.data.orderDetail.orderid, }) }, formatTime(time){ return (time||'').substr(5,11); }, preview(event){ const current = event.currentTarget.dataset.url; wx.previewImage({ current:current, urls: this.data.orderDetail.complete_images, }) }, previewPackageImage(event){ const current = event.currentTarget.dataset.item; wx.previewImage({ current:current, urls: this.data.orderDetail.pickup_images, }) }, selectPackageCode(event){ const index = event.currentTarget.dataset.index; const item = this.data.orderDetail.packages[index]; let receviedStatus = wx.getStorageSync(item.orderid)||{}; const checkedCode = event.detail.value; for(let key in item.formattedCode){ item.formattedCode[key].checked = !!checkedCode.find((code)=>code==key); } let receivedAll = Object.keys(item.formattedCode).length==checkedCode.length; item.receivedAll = receivedAll; this.setData({ [`orderDetail.packages[${index}]`]:item }); receviedStatus[item.id] = checkedCode; wx.setStorage({ key:item.orderid, data:receviedStatus }) }, showMoreAS(event){ const item = this.data.orderDetail; const markupAction = ()=>{ const markupView = this.selectComponent('#markupView'); markupView.show(item) } const makePhoneCallAction = ()=>{ wx.makePhoneCall({ phoneNumber: item.address_phone, }); } const refundAction = ()=>{ console.log(item.receiving); if(item.receiving)return; this.setData({ isShowRefundConfirm:true }); } let items = []; let actions = []; if(item.status==this.data.orderStatus.created){ items = ['联系用户','取消订单']; actions = [makePhoneCallAction,refundAction] }else if(item.status==this.data.orderStatus.received){ items = ['包裹加价','联系用户','取消订单']; actions = [markupAction,makePhoneCallAction,refundAction] }else if(item.status==this.data.orderStatus.delivering){ items = ['联系用户']; actions = [makePhoneCallAction] } if(items.length!=actions.length){ throw new Error('sb') } wx.showActionSheet({ itemList: items, success:(res)=>{ actions[res.tapIndex](); } }) }, markupSuccess(){ app.globalData.needRefreshOrderList = true; this.getOrderDetail(); }, refund(event){ const item = this.data.orderDetail; if(item.receiving)return; this.setData({ receiving:true }) orderApi.cancel(item.orderid,event.detail).then((data)=>{ wx.showToast({ title: '取消成功', icon:'success' }); app.globalData.needRefreshOrderList = true; this.getOrderDetail(); }) }, receivedOrder(){ const item = this.data.orderDetail; const hasUnReceive = !!item.packages.find((p)=>!p.receivedAll); if(hasUnReceive){ this.setData({ receiving:false }) wx.showToast({ icon:'none', title: '请先取件', }) return; } orderApi.pickup(item.orderid).then((data)=>{ wx.showToast({ icon:'success', title: '取货成功', }) app.globalData.needRefreshOrderList = true; this.getOrderDetail(); wx.removeStorage({ key: item.orderid, }) }).catch(()=>{ this.setData({ receiving:false }) }) }, emptyFun(){}, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })