Files
renjianbo 805ed0298b feat: 新增多角色系统(派单/分润/推广/区域)
- 后端:RlzDispatch/Profit/Promotion/Region 控制器、服务、Mapper、领域模型
- 权限:MethodSecurityConfig + PermissionInterceptor
- 管理后台:派单/分润/推广/区域 页面与 API
- Android 陪护端:派单/运营/退款 Fragment 及布局
- 小程序:推广员子包、派单/运营/退款/检索子包、自定义 tabBar
- 文档:多角色系统方案、角色权限矩阵、用户操作手册等

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-10-12 00:09:45 +08:00

92 lines
2.5 KiB
JavaScript

var { request } = require('../../../utils/request');
var app = getApp();
Page({
data: {
orders: [],
caregivers: [],
orderLoading: false,
selectedOrder: null,
selectedCaregiverId: null,
showDialog: false,
history: [],
historyLoading: false
},
onShow() {
this.loadPending();
this.loadCaregivers();
this.loadHistory();
},
onPullDownRefresh() {
Promise.all([this.loadPending(), this.loadCaregivers(), this.loadHistory()])
.finally(function() { wx.stopPullDownRefresh(); });
},
async loadPending() {
this.setData({ orderLoading: true });
try {
var res = await request({ url: '/system/dispatch/pending', method: 'GET', loading: false });
if (res.code === 200) {
this.setData({ orders: res.data || [], orderLoading: false });
}
} catch (e) { this.setData({ orderLoading: false }); }
},
async loadCaregivers() {
try {
var res = await request({ url: '/system/dispatch/caregivers', method: 'GET', loading: false });
if (res.code === 200) {
this.setData({ caregivers: res.data || [] });
}
} catch (e) {}
},
async loadHistory() {
this.setData({ historyLoading: true });
try {
var res = await request({ url: '/system/dispatch/history', method: 'GET', loading: false });
if (res.code === 200) {
this.setData({ history: res.data || [], historyLoading: false });
}
} catch (e) { this.setData({ historyLoading: false }); }
},
showAssignDialog(e) {
var order = e.currentTarget.dataset.item;
this.setData({ selectedOrder: order, selectedCaregiverId: null, showDialog: true });
},
async doAssign() {
if (!this.data.selectedCaregiverId || !this.data.selectedOrder) return;
try {
var res = await request({
url: '/system/dispatch/assign/' + this.data.selectedOrder.orderId + '/' + this.data.selectedCaregiverId,
method: 'POST',
loading: true,
loadingText: '派单中...'
});
if (res.code === 200) {
wx.showToast({ title: '派单成功', icon: 'success' });
this.setData({ showDialog: false });
this.loadPending();
this.loadCaregivers();
this.loadHistory();
}
} catch (e) {}
},
selectCaregiver(e) {
this.setData({ selectedCaregiverId: e.currentTarget.dataset.id });
},
closeDialog() {
this.setData({ showDialog: false, selectedOrder: null, selectedCaregiverId: null });
},
getStatusLabel(s) {
return app.getStatusLabel(s);
}
});