dingdanquanliucheng/frontend/mini-app/pages/manager/dashboard/dashboard.js
2026-06-01 11:24:20 +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/approve-list" }); },
goSupplierText: function () { wx.navigateTo({ url: "/pages/manager/supplier-text/supplier-text" }); },
goTaskCreate: function () { wx.navigateTo({ url: "/pages/manager/task-create/task-create" }); },
goOrderList: function () { wx.switchTab({ url: "/pages/manager/order-list/order-list" }); },
handleOrderTap: function (event) {
var id = event.currentTarget.dataset.id;
wx.navigateTo({ url: "/pages/manager/approve-detail/approve-detail?id=" + id });
},
});