dingdanquanliucheng/frontend/mini-app/pages/manager/dashboard/dashboard.js
taiyi 24bcf68d8e feat: 融合司机端和管理层端为统一小程序 mini-app
将 mini-driver 和 mini-manager 两个独立小程序合并为 frontend/mini-app,
通过自定义 tabBar 根据登录角色动态切换界面:
- 后端登录接口 role_type 改为可选,支持自动识别角色
- 统一登录页根据 role_code 自动跳转对应首页
- 统一"我的"页通过 wx:if 切换司机/管理层内容
- 自定义 tabBar 组件按角色渲染不同 tab 项
- 提取公共 utils(auth/request/status)消除重复代码
- 原有两个项目保留不动,待验证后清理

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 19:04:06 +08:00

88 lines
3.0 KiB
JavaScript

/**
* 管理层仪表盘页面
* 职责:展示待审批和待发厂订单数量统计,以及最近订单列表。
*/
function mapOrderStatus(status) {
var app = getApp();
return app.mapOrderStatus(status);
}
function getStatusBadge(status) {
var map = {
pending_approve: "badge-orange", cancel_pending: "badge-orange",
approved: "badge-green", pending_factory: "badge-blue",
pending_driver: "badge-blue", accepted: "badge-blue",
picked_up: "badge-blue", delivered: "badge-green",
rejected: "badge-red", canceled: "badge-red",
};
return map[status] || "badge-gray";
}
Page({
data: {
statusBarHeight: 20,
loading: true,
message: "",
summary: { pendingApproveCount: 0, pendingFactoryCount: 0, pendingDriverCount: 0 },
recentOrders: [],
},
onPullDownRefresh: function () {
this.loadDashboard().then(function () { wx.stopPullDownRefresh(); });
},
async onShow() {
var app = getApp();
this.setData({ statusBarHeight: app.globalData.statusBarHeight || 20 });
var tab = this.getTabBar();
if (tab) {
tab.setData({ selected: 0 });
tab.updateRole(app.globalData.userRole);
}
await this.loadDashboard();
},
async loadDashboard() {
var app = getApp();
this.setData({ loading: true, message: "" });
try {
var results = await Promise.all([
app.request({ url: "/api/orders?order_status=pending_approve&page_no=1&page_size=50", method: "GET" }),
app.request({ url: "/api/orders?order_status=pending_factory&page_no=1&page_size=50", method: "GET" }),
]);
var pendingList = results[0].list || [];
var factoryList = results[1].list || [];
var recentOrders = pendingList.concat(factoryList).slice(0, 8).map(function (item) {
return {
orderId: item.order_id,
orderNo: item.order_no,
customerName: item.customer_name,
statusText: mapOrderStatus(item.order_status),
badgeClass: getStatusBadge(item.order_status),
amount: Number(item.sale_price_total || 0).toFixed(2),
createdAt: item.created_at ? item.created_at.slice(0, 10) : "",
};
});
this.setData({
summary: { pendingApproveCount: pendingList.length, pendingFactoryCount: factoryList.length, pendingDriverCount: 0 },
recentOrders: recentOrders,
});
} catch (error) {
this.setData({ message: error.message || "加载失败" });
} finally {
this.setData({ loading: false });
}
},
goApproveList: function () { wx.switchTab({ url: "/pages/manager/approve-list" }); },
goSupplierText: function () { wx.navigateTo({ url: "/pages/manager/supplier-text" }); },
goTaskCreate: function () { wx.navigateTo({ url: "/pages/manager/task-create" }); },
goOrderList: function () { wx.switchTab({ url: "/pages/manager/order-list" }); },
handleOrderTap: function (event) {
var id = event.currentTarget.dataset.id;
wx.navigateTo({ url: "/pages/manager/approve-detail?id=" + id });
},
});