dingdanquanliucheng/frontend/mini-app/pages/manager/approve-list/approve-list.js

120 lines
3.8 KiB
JavaScript
Raw Normal View History

/**
* 管理层待审批订单列表页面
* 职责展示所有待审批的订单支持按类型筛选
*/
2026-06-15 14:24:25 +08:00
var badge = require("../../../utils/badge");
function mapOrderStatus(status) {
var statusMap = { pending_approve: "待审批", cancel_pending: "待取消审批", cancel_fulfillment_pending: "履约取消审批中", approved: "已审批", rejected: "已驳回", canceled: "已取消" };
return statusMap[status] || status || "-";
}
function getStatusBadge(status) {
var map = { pending_approve: "badge-orange", cancel_pending: "badge-orange", cancel_fulfillment_pending: "badge-orange", approved: "badge-green", rejected: "badge-red", canceled: "badge-red" };
return map[status] || "badge-gray";
}
Page({
data: {
statusBarHeight: 20,
loading: true,
message: "",
approveType: "all",
orderRows: [],
},
2026-06-20 09:19:16 +08:00
// 提醒事件处理函数
_onReminder: null,
onPullDownRefresh: function () {
var that = this;
this.loadOrders().then(function () { wx.stopPullDownRefresh(); });
},
onShow: function () {
var app = getApp();
this.setData({ statusBarHeight: app.globalData.statusBarHeight });
var tab = this.getTabBar();
if (tab) {
tab.setData({ selected: 1 });
tab.updateRole(app.globalData.userRole);
}
this.loadOrders();
2026-06-15 14:24:25 +08:00
// 更新TabBar角标
badge.updateTabBadge();
2026-06-20 09:19:16 +08:00
// 监听 WebSocket 提醒事件
var that = this;
this._onReminder = function () {
console.log("[ApproveList] 收到提醒,刷新数据");
that.loadOrders();
badge.updateTabBadge();
};
app.on("reminder", this._onReminder);
},
onHide: function () {
// 页面隐藏时移除监听
var app = getApp();
if (this._onReminder) {
app.off("reminder", this._onReminder);
this._onReminder = null;
}
},
onUnload: function () {
// 页面卸载时移除监听
var app = getApp();
if (this._onReminder) {
app.off("reminder", this._onReminder);
this._onReminder = null;
}
},
loadOrders: function () {
var that = this;
var app = getApp();
that.setData({ loading: true, message: "" });
var statuses;
2026-06-22 14:59:51 +08:00
if (that.data.approveType === "cancel") { statuses = ["cancel_pending", "cancel_fulfillment_pending"]; }
else if (that.data.approveType === "order") { statuses = ["pending_approve"]; }
2026-06-22 14:59:51 +08:00
else { statuses = ["pending_approve", "cancel_pending", "cancel_fulfillment_pending"]; }
var promises = statuses.map(function (status) {
return app.request({ url: "/api/orders?order_status=" + status + "&page_no=1&page_size=50", method: "GET" });
});
return Promise.all(promises).then(function (responseList) {
var rows = [];
responseList.forEach(function (data) {
(data.list || []).forEach(function (item) {
rows.push({
orderId: item.order_id,
orderNo: item.order_no,
customerName: item.customer_name,
customerMobile: item.customer_mobile,
orderStatus: item.order_status,
statusText: mapOrderStatus(item.order_status),
badgeClass: getStatusBadge(item.order_status),
2026-06-20 09:19:16 +08:00
amount: Number(item.contract_amount || item.sale_price_total || 0).toFixed(2),
});
});
});
that.setData({ orderRows: rows });
}).catch(function (error) {
that.setData({ message: error.message || "加载待审批订单失败" });
}).finally(function () {
that.setData({ loading: false });
});
},
handleChangeType: function (event) {
this.setData({ approveType: event.currentTarget.dataset.type });
this.loadOrders();
},
handleOpenDetail: function (event) {
var id = event.currentTarget.dataset.id;
2026-06-01 11:24:20 +08:00
wx.navigateTo({ url: "/pages/manager/approve-detail/approve-detail?id=" + id });
},
});