之前 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>
120 lines
3.8 KiB
JavaScript
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 });
|
|
},
|
|
});
|