- wx:if 改为 hidden,避免 DOM 销毁重建导致的闪烁 - statusBarHeight 去掉 || 20 fallback,避免 header 高度跳变 - empty-card 加 min-height 占位,减少加载到内容的布局跳动 - 修复 sed 替换导致的运算优先级问题(!! 和 !status ===) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
104 lines
3.1 KiB
JavaScript
104 lines
3.1 KiB
JavaScript
/**
|
|
* 管理层创建物流任务页面
|
|
* 职责:选择待发厂的订单,填写信息创建配送任务。
|
|
*/
|
|
|
|
Page({
|
|
data: {
|
|
statusBarHeight: 20,
|
|
loading: true,
|
|
saving: false,
|
|
message: "",
|
|
orderRows: [],
|
|
selectedOrderId: null,
|
|
selectedOrderNo: "",
|
|
driverId: "",
|
|
pickupAddress: "",
|
|
deliveryAddress: "",
|
|
pickupContent: "",
|
|
quantity: "",
|
|
factoryId: "",
|
|
remark: "",
|
|
},
|
|
|
|
onShow: function () {
|
|
var app = getApp();
|
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight });
|
|
this.loadOrders();
|
|
},
|
|
|
|
loadOrders: function () {
|
|
var that = this;
|
|
var app = getApp();
|
|
that.setData({ loading: true, message: "" });
|
|
app.request({ url: "/api/orders?order_status=pending_factory&page_no=1&page_size=50", method: "GET" }).then(function (data) {
|
|
var rows = (data.list || []).map(function (item) {
|
|
return {
|
|
orderId: item.order_id, orderNo: item.order_no,
|
|
customerName: item.customer_name,
|
|
statusText: app.mapOrderStatus(item.order_status),
|
|
orderStatus: item.order_status,
|
|
};
|
|
});
|
|
that.setData({ orderRows: rows });
|
|
}).catch(function (error) {
|
|
that.setData({ message: error.message || "加载待分配订单失败" });
|
|
}).finally(function () {
|
|
that.setData({ loading: false });
|
|
});
|
|
},
|
|
|
|
handleChooseOrder: function (event) {
|
|
var id = event.currentTarget.dataset.id;
|
|
var no = event.currentTarget.dataset.no;
|
|
var customer = event.currentTarget.dataset.customer;
|
|
this.setData({
|
|
selectedOrderId: id, selectedOrderNo: no,
|
|
pickupAddress: "工厂A", deliveryAddress: customer + " 收货地址",
|
|
pickupContent: customer + " 订单货物", quantity: "1",
|
|
message: "已选择订单 " + no,
|
|
});
|
|
},
|
|
|
|
handleInput: function (event) {
|
|
var field = event.currentTarget.dataset.field;
|
|
var obj = {};
|
|
obj[field] = event.detail.value;
|
|
this.setData(obj);
|
|
},
|
|
|
|
handleSave: function () {
|
|
var that = this;
|
|
if (!this.data.selectedOrderId) {
|
|
this.setData({ message: "请先选择一笔订单" });
|
|
return;
|
|
}
|
|
var app = getApp();
|
|
that.setData({ saving: true, message: "" });
|
|
app.request({
|
|
url: "/api/logistics/tasks",
|
|
method: "POST",
|
|
data: {
|
|
order_id: that.data.selectedOrderId,
|
|
driver_id: Number(that.data.driverId),
|
|
pickup_address: that.data.pickupAddress,
|
|
delivery_address: that.data.deliveryAddress,
|
|
pickup_content: that.data.pickupContent,
|
|
quantity: Number(that.data.quantity),
|
|
factory_id: Number(that.data.factoryId),
|
|
remark: that.data.remark,
|
|
},
|
|
}).then(function (data) {
|
|
that.setData({ message: "任务 " + data.task_no + " 创建成功", selectedOrderId: null, selectedOrderNo: "" });
|
|
that.loadOrders();
|
|
wx.navigateTo({ url: "/pages/driver/task-detail/task-detail?id=" + data.task_id });
|
|
}).catch(function (error) {
|
|
that.setData({ message: error.message || "创建失败" });
|
|
}).finally(function () {
|
|
that.setData({ saving: false });
|
|
});
|
|
},
|
|
|
|
handleBack: function () { wx.navigateBack({ delta: 1 }); },
|
|
});
|