dingdanquanliucheng/frontend/mini-app/pages/manager/approve-list/approve-list.js
wsb1224 dc5a710f12 修复履约取消审批流程:补齐 cancel_fulfillment_pending 状态的审批能力
之前 cancel_fulfillment_pending(履约取消审批中)状态的订单在后台审批中心
和订单详情中无法被正确审批,导致已进入履约阶段的订单取消申请无法处理。

修复内容:
- 审批中心筛选和操作支持 cancel_fulfillment_pending
- 订单详情审批通过/驳回改用 cancel-approve 接口(之前错误使用 changeOrderStatus)
- 订单列表筛选新增履约取消审批选项
- API 层审批列表和仪表盘查询加入 cancel_fulfillment_pending
- mapApproveResult 补充 refuse 结果映射
- 小程序审批列表补充 cancel_fulfillment_pending 状态映射和徽章

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-22 22:03:34 +08:00

120 lines
3.8 KiB
JavaScript

/**
* 管理层待审批订单列表页面
* 职责:展示所有待审批的订单,支持按类型筛选。
*/
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: [],
},
// 提醒事件处理函数
_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();
// 更新TabBar角标
badge.updateTabBadge();
// 监听 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;
if (that.data.approveType === "cancel") { statuses = ["cancel_pending", "cancel_fulfillment_pending"]; }
else if (that.data.approveType === "order") { statuses = ["pending_approve"]; }
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),
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;
wx.navigateTo({ url: "/pages/manager/approve-detail/approve-detail?id=" + id });
},
});