82 lines
2.6 KiB
JavaScript
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: [] });
|
|
},
|
|
});
|