99
pages/merchant-staff-audit/merchant-staff-audit.js
Normal file
99
pages/merchant-staff-audit/merchant-staff-audit.js
Normal file
@@ -0,0 +1,99 @@
|
||||
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)}`,
|
||||
});
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user