1
0
Code Issues Pull Requests Packages Projects Releases Wiki Activity GitHub Gitee

191 lines
4.5 KiB
JavaScript
Raw Normal View History

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';
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 getDeliverCompanyList().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.name,
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: { code, name },
} = this.data;
const params = {
rightsNo: this.rightsNo,
logisticsCompanyCode: code,
logisticsCompanyName: name,
logisticsNo: trackingNo,
remark,
};
const api = this.isChange ? create : update;
this.setData({ submitting: true });
api(params)
.then(() => {
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: () => {},
});
},
});