import Dialog from 'tdesign-miniprogram/dialog/index'; import Toast from 'tdesign-miniprogram/toast/index'; import reasonSheet from '../components/reason-sheet/reasonSheet'; import { getDeliverCompanyList, create, update } from './api'; import { getLogisticsCompanyList } from '~/services/order/getLogisticsCompanyList'; import { buyerDelivery } from '~/services/order/buyerDelivery'; Page({ deliveryCompanyList: [], data: { trackingNo: '', remark: '', deliveryCompany: null, submitActived: false, submitting: false, }, onLoad(query) { const { rightsNo = '', logisticsNo = '', logisticsCompanyName = '', logisticsCompanyCode = '', remark = '', } = query; if (!rightsNo) { Dialog.confirm({ title: '请选择售后单?', content: '', confirmBtn: '确认', }).then(() => { wx.navigateBack({ backRefresh: true }); }); } this.rightsNo = rightsNo; if (logisticsNo) { wx.setNavigationBarTitle({ title: '修改运单号', fail() {}, }); this.isChange = true; this.setData({ deliveryCompany: { name: logisticsCompanyName, code: logisticsCompanyCode, }, trackingNo: logisticsNo, remark, submitActived: true, }); } this.setWatcher('trackingNo', this.checkParams.bind(this)); this.setWatcher('deliveryCompany', this.checkParams.bind(this)); }, setWatcher(key, callback) { let lastData = this.data; const keys = key.split('.'); keys.slice(0, -1).forEach((k) => { lastData = lastData[k]; }); const lastKey = keys[keys.length - 1]; this.observe(lastData, lastKey, callback); }, observe(data, k, callback) { let val = data[k]; Object.defineProperty(data, k, { configurable: true, enumerable: true, set: (value) => { val = value; callback(); }, get: () => { return val; }, }); }, // 获取物流公司列表 getDeliveryCompanyList() { if (this.deliveryCompanyList.length > 0) { return Promise.resolve(this.deliveryCompanyList); } return getLogisticsCompanyList().then((res) => { this.deliveryCompanyList = res.data || []; return this.deliveryCompanyList; }); }, onInput(e) { const { key } = e.currentTarget.dataset; const { value } = e.detail; this.setData({ [key]: value }); }, onCompanyTap() { this.getDeliveryCompanyList().then((deliveryCompanyList) => { reasonSheet({ show: true, title: '选择物流公司', options: deliveryCompanyList.map((company) => ({ title: company.logisticsCompanyName, checked: this.data.deliveryCompany ? company.code === this.data.deliveryCompany.code : false, })), showConfirmButton: true, showCancelButton: true, emptyTip: '请选择物流公司', }).then((indexes) => { this.setData({ deliveryCompany: deliveryCompanyList[indexes[0]], }); }); }); }, checkParams() { const res = { errMsg: '', require: false }; if (!this.data.trackingNo) { res.errMsg = '请填写运单号'; res.require = true; } else if (!this.data.deliveryCompany) { res.errMsg = '请选择物流公司'; res.require = true; } this.setData({ submitActived: !res.require }); return res; }, // 提交 onSubmit() { const checkRes = this.checkParams(); if (checkRes.errMsg) { Toast({ context: this, selector: '#t-toast', message: checkRes.errMsg, icon: '', }); return; } const { trackingNo, remark, deliveryCompany: { logisticsCompanyCode, logisticsCompanyName, logisticsCompanyGuid }, } = this.data; const params = { orderRefundGuid: this.rightsNo, logisticsCompanyGuid: logisticsCompanyGuid, expressNo: trackingNo, customerWaybillRemark: remark, }; const api = this.isChange ? create : update; this.setData({ submitting: true }); buyerDelivery(params) .then((res) => { if(res.code === 200){ this.setData({ submitting: false }); Toast({ context: this, selector: '#t-toast', message: '保存成功', icon: '', }); setTimeout(() => wx.navigateBack({ backRefresh: true }), 1000); } }) .catch(() => { this.setData({ submitting: false }); }); }, onScanTap() { wx.scanCode({ scanType: ['barCode'], success: (res) => { Toast({ context: this, selector: '#t-toast', message: '扫码成功', icon: '', }); this.setData({ trackingNo: res.result }); }, fail: () => {}, }); }, });