dingdanquanliucheng/frontend/mini-driver/pages/order-tracking.js
taiyi 0981617a2e 为前端全部 63 个文件添加中文注释
覆盖四个前端应用:
- web-admin:App.vue、mockApi.js、router.js 等基础设施 + 19 个页面/组件
- web-sales:App.vue、mockApi.js、store.js 等基础设施 + 11 个页面/组件
- mini-driver:小程序框架 + 5 个页面
- mini-manager:小程序框架 + 8 个页面

注释内容:
- 每个文件模块级职责说明
- 每个函数 JSDoc 注释(作用、参数、返回值)
- 路由配置逐项标注用途和权限
- Vue 模板复杂逻辑行内注释

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 07:51:43 +08:00

93 lines
2.9 KiB
JavaScript

/**
* 司机端物流追踪页面
* 职责:展示司机最近的任务列表,支持查看关联订单的物流轨迹详情。
* 支持下拉刷新,点击任务可展开查看物流节点时间线。
*/
var app = getApp();
Page({
/** 页面数据 */
data: {
statusBarHeight: 20,
loading: true,
taskList: [],
selectedTaskId: null,
traceList: [],
showTrace: false,
},
/**
* 页面显示时校验登录状态并加载最近任务列表
*/
onShow: function() {
this.setData({ statusBarHeight: app.globalData.statusBarHeight || 20 });
if (!app.checkLogin()) return;
this.loadRecentTasks();
},
/**
* 下拉刷新回调:重新加载任务列表并停止刷新动画
*/
onPullDownRefresh: function() {
var that = this;
this.loadRecentTasks().then(function() { wx.stopPullDownRefresh(); });
},
/**
* 从后端加载最近任务列表,过滤已取消的任务
* @returns {Promise<void>}
*/
loadRecentTasks: function() {
var that = this;
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" });
});
},
/**
* 查看指定任务关联订单的物流轨迹
* @param {Object} event - 点击事件对象,通过 dataset.orderid 和 dataset.taskid 获取数据
*/
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: [] });
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: [] });
},
});