chore: 抢单端UI回退前备份当前完整工作区
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -10,6 +10,7 @@ import { reconnectForRole } from '../../utils/role-tab-bar.js';
|
||||
import { ensurePhoneAuth } from '../../utils/phone-auth.js';
|
||||
import { fetchGonggaoLunbo, isGonggaoCacheValid } from '../../utils/display-config.js';
|
||||
import { checkPenaltyForGrab } from '../../utils/grab-order-gate.js';
|
||||
import { fetchMyZhidingOrders, submitZhidingResponse, processZhidingList, filterZhidingBannerList, ZHIDING_HF_MAP } from '../../utils/zhiding-order.js';
|
||||
|
||||
Page({
|
||||
data: {
|
||||
@@ -58,9 +59,25 @@ Page({
|
||||
examRequired: false,
|
||||
examPassed: false,
|
||||
_examChecked: false,
|
||||
|
||||
myZhidingList: [],
|
||||
highlightOrderId: '',
|
||||
myZhidingCount: 0,
|
||||
defaultAvatarUrl: '',
|
||||
showZhidingDetail: false,
|
||||
zhidingDetailOrder: null,
|
||||
showLaterModal: false,
|
||||
laterOrderId: '',
|
||||
laterNote: '',
|
||||
},
|
||||
|
||||
async onLoad() {
|
||||
async onLoad(options) {
|
||||
const defAvatar = getDefaultAvatarUrl(app);
|
||||
const highlight = (options && options.highlight) ? String(options.highlight) : '';
|
||||
this.setData({ defaultAvatarUrl: defAvatar, highlightOrderId: highlight });
|
||||
if (options && options.highlight) {
|
||||
this._pendingHighlight = String(options.highlight);
|
||||
}
|
||||
if (app.globalData._acceptOrderSessionReady && app.globalData._acceptOrderPageCache) {
|
||||
const cache = { ...app.globalData._acceptOrderPageCache };
|
||||
this.data.shangpinleixing = cache.shangpinleixing || [];
|
||||
@@ -90,6 +107,7 @@ Page({
|
||||
}
|
||||
this.persistPageCache();
|
||||
this._skipShowRefresh = true;
|
||||
await this.loadMyZhidingOrders(true);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -97,6 +115,7 @@ Page({
|
||||
const banner = await this.loadGonggaoAndLunbo(false);
|
||||
await this.syncDashouProfileFromServer();
|
||||
await this.loadShangpinLeixing(true, false, false);
|
||||
await this.loadMyZhidingOrders(true);
|
||||
this.persistPageCache(banner);
|
||||
app.globalData._acceptOrderSessionReady = true;
|
||||
|
||||
@@ -149,6 +168,16 @@ Page({
|
||||
|
||||
await this.checkExamStatus(false);
|
||||
|
||||
this.setData({ defaultAvatarUrl: getDefaultAvatarUrl(app) });
|
||||
await this.loadMyZhidingOrders(true);
|
||||
|
||||
const hl = app.globalData._acceptOrderHighlight;
|
||||
if (hl) {
|
||||
app.globalData._acceptOrderHighlight = '';
|
||||
this.setData({ highlightOrderId: hl });
|
||||
await this.loadMyZhidingOrders(true);
|
||||
}
|
||||
|
||||
if (this._skipShowRefresh) {
|
||||
this._skipShowRefresh = false;
|
||||
return;
|
||||
@@ -172,6 +201,7 @@ Page({
|
||||
await this.loadDingdanList(true, true);
|
||||
await this.loadBankuaiBiaoqian();
|
||||
}
|
||||
await this.loadMyZhidingOrders(true);
|
||||
this.loadGlobalStatus();
|
||||
this.persistPageCache(banner);
|
||||
} catch (e) {
|
||||
@@ -464,8 +494,11 @@ Page({
|
||||
}
|
||||
|
||||
const isZhiding = item.zhuangtai === 7;
|
||||
const uid = this.data.uid;
|
||||
const isMyZhiding = isZhiding && uid && String(item.zhiding_uid) === String(uid);
|
||||
|
||||
let zhidingAvatar = '';
|
||||
const defAvatar = getDefaultAvatarUrl(app);
|
||||
let zhidingAvatar = defAvatar;
|
||||
if (item.zhiding_avatar) {
|
||||
zhidingAvatar = !item.zhiding_avatar.startsWith('http')
|
||||
? ossUrl + item.zhiding_avatar
|
||||
@@ -493,6 +526,11 @@ Page({
|
||||
leixing_icon_url: fullTupianUrl,
|
||||
shangjia_avatar_full: shangjiaAvatar,
|
||||
isZhiding: isZhiding,
|
||||
isMyZhiding,
|
||||
isHighlighted: this.data.highlightOrderId && item.dingdan_id === this.data.highlightOrderId,
|
||||
zhiding_hf: item.zhiding_hf,
|
||||
zhiding_hf_text: item.zhiding_hf_text || ZHIDING_HF_MAP[item.zhiding_hf] || '',
|
||||
zhiding_dhj_sm: item.zhiding_dhj_sm || '',
|
||||
isPingtai: item.pingtai == 1,
|
||||
isShangjia: item.pingtai == 2,
|
||||
zhiding_avatar_full: zhidingAvatar,
|
||||
@@ -684,6 +722,7 @@ Page({
|
||||
);
|
||||
that.setData({ dingdanList: newList });
|
||||
that.persistPageCache();
|
||||
that.loadMyZhidingOrders(true);
|
||||
} else {
|
||||
wx.showToast({
|
||||
title: qiangdanRes.data.msg || '抢单失败',
|
||||
@@ -714,6 +753,125 @@ Page({
|
||||
});
|
||||
},
|
||||
|
||||
async loadMyZhidingOrders(silent = false) {
|
||||
if (!this.data.uid && !wx.getStorageSync('uid')) return;
|
||||
try {
|
||||
const raw = await fetchMyZhidingOrders();
|
||||
const uid = this.data.uid || wx.getStorageSync('uid');
|
||||
const highlight = this.data.highlightOrderId || this._pendingHighlight || '';
|
||||
const list = filterZhidingBannerList(processZhidingList(raw, app, uid, highlight));
|
||||
this.setData({ myZhidingList: list, myZhidingCount: list.length });
|
||||
if (highlight && list.some((o) => o.dingdan_id === highlight)) {
|
||||
this.setData({ highlightOrderId: highlight });
|
||||
this._pendingHighlight = '';
|
||||
}
|
||||
} catch (e) {
|
||||
if (!silent) console.warn('loadMyZhidingOrders', e);
|
||||
}
|
||||
},
|
||||
|
||||
openZhidingDetail(e) {
|
||||
const item = e.currentTarget.dataset.item;
|
||||
if (!item) return;
|
||||
this.setData({ showZhidingDetail: true, zhidingDetailOrder: item });
|
||||
},
|
||||
|
||||
closeZhidingDetail() {
|
||||
this.setData({ showZhidingDetail: false, zhidingDetailOrder: null });
|
||||
},
|
||||
|
||||
async onZhidingReject(e) {
|
||||
const item = e.currentTarget.dataset.item;
|
||||
if (!item) return;
|
||||
wx.showModal({
|
||||
title: '确认婉拒',
|
||||
content: '婉拒后订单将退回抢单大厅,确定不想接此单吗?',
|
||||
confirmText: '不想接',
|
||||
confirmColor: '#e64340',
|
||||
success: async (res) => {
|
||||
if (!res.confirm) return;
|
||||
wx.showLoading({ title: '提交中...', mask: true });
|
||||
try {
|
||||
const body = await submitZhidingResponse(item.dingdan_id, 2);
|
||||
wx.hideLoading();
|
||||
if (body && (body.code === 200 || body.code === 0)) {
|
||||
wx.showToast({ title: body.msg || '已婉拒', icon: 'none' });
|
||||
this.closeZhidingDetail();
|
||||
await this.loadMyZhidingOrders(true);
|
||||
await this.loadDingdanList(true, true);
|
||||
} else {
|
||||
wx.showToast({ title: body?.msg || '操作失败', icon: 'none' });
|
||||
}
|
||||
} catch (err) {
|
||||
wx.hideLoading();
|
||||
wx.showToast({ title: '网络错误', icon: 'none' });
|
||||
}
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
onZhidingLater(e) {
|
||||
const item = e.currentTarget.dataset.item;
|
||||
if (!item) return;
|
||||
this.setData({
|
||||
showZhidingDetail: false,
|
||||
zhidingDetailOrder: null,
|
||||
showLaterModal: true,
|
||||
laterOrderId: item.dingdan_id,
|
||||
laterNote: item.zhiding_dhj_sm || '',
|
||||
});
|
||||
},
|
||||
|
||||
closeLaterModal() {
|
||||
this.setData({ showLaterModal: false, laterOrderId: '', laterNote: '' });
|
||||
},
|
||||
|
||||
onLaterNoteInput(e) {
|
||||
this.setData({ laterNote: e.detail.value });
|
||||
},
|
||||
|
||||
async confirmZhidingLater() {
|
||||
const { laterOrderId, laterNote } = this.data;
|
||||
if (!laterNote.trim()) {
|
||||
wx.showToast({ title: '请填写预计接待时间', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
wx.showLoading({ title: '提交中...', mask: true });
|
||||
try {
|
||||
const body = await submitZhidingResponse(laterOrderId, 3, laterNote.trim());
|
||||
wx.hideLoading();
|
||||
if (body && (body.code === 200 || body.code === 0)) {
|
||||
const note = laterNote.trim();
|
||||
wx.showToast({ title: `已记录:${note}`, icon: 'none', duration: 3500 });
|
||||
this.closeLaterModal();
|
||||
this.closeZhidingDetail();
|
||||
await this.loadMyZhidingOrders(true);
|
||||
await this.loadDingdanList(true, true);
|
||||
} else {
|
||||
wx.showToast({ title: body?.msg || '操作失败', icon: 'none' });
|
||||
}
|
||||
} catch (e) {
|
||||
wx.hideLoading();
|
||||
wx.showToast({ title: '网络错误', icon: 'none' });
|
||||
}
|
||||
},
|
||||
|
||||
async onZhidingAccept(e) {
|
||||
const item = e.currentTarget.dataset.item;
|
||||
if (!item) return;
|
||||
wx.showLoading({ title: '处理中...', mask: true });
|
||||
try {
|
||||
await submitZhidingResponse(item.dingdan_id, 1);
|
||||
wx.hideLoading();
|
||||
} catch (e) {
|
||||
wx.hideLoading();
|
||||
}
|
||||
const processed = this.processDingdanItem(item);
|
||||
this.onQiangdanTap({ currentTarget: { dataset: { item: processed } } });
|
||||
},
|
||||
|
||||
noop() {},
|
||||
|
||||
onReachBottom() {
|
||||
if (this.data.isLoading || this.data.isLoadingMore) return;
|
||||
if (this.data.hasMore && !this.data.isLoading && this.data.xuanzhongLeixingId) {
|
||||
@@ -744,6 +902,7 @@ Page({
|
||||
await this.loadBankuaiBiaoqian();
|
||||
await this.loadDingdanList(true);
|
||||
}
|
||||
await this.loadMyZhidingOrders(true);
|
||||
this.loadGlobalStatus();
|
||||
this.persistPageCache(banner);
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user