dingdanquanliucheng/frontend/mini-app/pages/driver/order-tracking/order-tracking.js
2026-06-01 11:24:20 +08:00

82 lines
2.6 KiB
JavaScript

/**
* 司机端物流追踪页面
* 职责:展示司机最近的任务列表,支持查看关联订单的物流轨迹详情。
*/
var auth = require("../../../utils/auth");
Page({
data: {
statusBarHeight: 20,
loading: true,
taskList: [],
selectedTaskId: null,
traceList: [],
showTrace: false,
},
onShow: function () {
var app = getApp();
this.setData({ statusBarHeight: app.globalData.statusBarHeight || 20 });
if (!app.checkLogin()) return;
var tab = this.getTabBar();
if (tab) {
tab.setData({ selected: 1 });
tab.updateRole(app.globalData.userRole);
}
this.loadRecentTasks();
},
onPullDownRefresh: function () {
var that = this;
this.loadRecentTasks().then(function () { wx.stopPullDownRefresh(); });
},
loadRecentTasks: function () {
var that = this;
var app = getApp();
that.setData({ loading: true });
return app.request({ url: "/api/driver/tasks", method: "GET" }).then(function (data) {
var list = (data.list || []).filter(function (t) { return t.status !== "canceled"; }).map(function (item) {
return {
taskId: item.task_id,
taskNo: item.task_no,
orderNo: item.order_no,
orderId: item.order_id,
status: item.status,
statusText: app.mapTaskStatus(item.status),
pickupAddress: item.pickup_address || "-",
deliveryAddress: item.delivery_address || "-",
};
});
that.setData({ taskList: list, loading: false });
}).catch(function (err) {
that.setData({ loading: false });
wx.showToast({ title: err.message || "加载失败", icon: "none" });
});
},
handleViewTrace: function (event) {
var that = this;
var orderId = event.currentTarget.dataset.orderid;
if (!orderId) {
wx.showToast({ title: "该任务暂无关联订单", icon: "none" });
return;
}
that.setData({ selectedTaskId: Number(event.currentTarget.dataset.taskid), showTrace: true, traceList: [] });
var app = getApp();
app.request({ url: "/api/logistics/" + orderId + "/trace", method: "GET" }).then(function (data) {
var traces = (data.trace_list || []).map(function (item) {
item.node_time = item.node_time || item.created_at || "-";
return item;
});
that.setData({ traceList: traces });
}).catch(function (err) {
wx.showToast({ title: err.message || "加载轨迹失败", icon: "none" });
});
},
handleBack: function () {
this.setData({ showTrace: false, selectedTaskId: null, traceList: [] });
},
});