| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- 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: () => {},
- });
- },
- });
|