Files
Wechat/pages/merchant-staff-audit/merchant-staff-audit.js
XingQue c03d22776f backup: 紫色UI换肤前完整备份(当前橙色逍遥梦主题)
保留改造前全部页面样式与功能代码,便于回滚。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 01:59:42 +08:00

100 lines
2.7 KiB
JavaScript

import request from '../../utils/request.js';
import { STAFF_API } from '../../utils/staff-api.js';
const ORDER_AUDIT_ACTIONS = [
'DISPATCH', 'LINK_GENERATE', 'SETTLE', 'CANCEL', 'REFUND_APPLY',
'CHANGE_PLAYER', 'PENALTY_APPLY', 'PENALTY_MANAGE',
];
Page({
data: {
tab: 'audit',
auditList: [],
rankList: [],
page: 1,
hasMore: true,
loading: false,
total: 0,
},
onLoad(options) {
if (options.tab === 'rank') this.setData({ tab: 'rank' });
wx.setNavigationBarTitle({
title: options.tab === 'rank' ? '客服排行' : '操作日志',
});
this.loadData(true);
},
onPullDownRefresh() {
this.loadData(true).finally(() => wx.stopPullDownRefresh());
},
onReachBottom() {
if (this.data.tab === 'audit' && this.data.hasMore && !this.data.loading) {
this.loadAudit(false);
}
},
switchTab(e) {
const tab = e.currentTarget.dataset.tab;
wx.setNavigationBarTitle({ title: tab === 'rank' ? '客服排行' : '操作日志' });
this.setData({ tab, page: 1, hasMore: true }, () => this.loadData(true));
},
loadData(reset) {
if (this.data.tab === 'audit') return this.loadAudit(reset);
return this.loadRank();
},
async loadAudit(reset) {
if (this.data.loading) return;
const page = reset ? 1 : this.data.page;
this.setData({ loading: true });
try {
const res = await request({
url: STAFF_API.auditList,
method: 'POST',
data: { page, page_size: 20 },
});
if (res.data && res.data.code === 0) {
const d = res.data.data || {};
const list = (d.list || []).map((item) => ({
...item,
canJumpOrder: ORDER_AUDIT_ACTIONS.indexOf(item.action) >= 0 && !!item.resource_id,
}));
this.setData({
auditList: reset ? list : [...this.data.auditList, ...list],
page: page + 1,
hasMore: !!d.has_more,
total: d.total || 0,
loading: false,
});
} else {
this.setData({ loading: false });
wx.showToast({ title: res.data?.msg || '加载失败', icon: 'none' });
}
} catch (e) {
this.setData({ loading: false });
}
},
async loadRank() {
const res = await request({
url: STAFF_API.rank,
method: 'POST',
data: { period: 'month', sort_by: 'dispatch_count' },
});
if (res.data && res.data.code === 0) {
this.setData({ rankList: (res.data.data && res.data.data.list) || [] });
}
},
goOrderDetail(e) {
const item = e.currentTarget.dataset.item;
if (!item || !item.canJumpOrder || !item.resource_id) return;
wx.navigateTo({
url: `/pages/merchant-order-detail/merchant-order-detail?dingdan_id=${encodeURIComponent(item.resource_id)}`,
});
},
});