dingdanquanliucheng/frontend/mini-app/pages/driver/task-list/task-list.js
taiyi c04d0cb347 fix: 修复小程序页面跳转闪烁问题
- 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>
2026-06-07 00:37:58 +08:00

97 lines
3.0 KiB
JavaScript

/**
* 司机端任务列表页面
* 职责:展示司机的所有配送任务,支持按状态筛选,点击可查看任务详情。
*/
function mapTaskStatus(status) {
var statusMap = { pending: "待接单", accepted: "已接单", picked_up: "已揽货", delivered: "已送达", canceled: "已取消" };
return statusMap[status] || status || "-";
}
function getStatusBadge(status) {
var map = { pending: "badge-orange", accepted: "badge-blue", picked_up: "badge-blue", delivered: "badge-green", canceled: "badge-red" };
return map[status] || "badge-gray";
}
var filterTabs = [
{ key: "", label: "全部" },
{ key: "pending", label: "待接单" },
{ key: "accepted", label: "进行中" },
{ key: "delivered", label: "已送达" },
];
Page({
data: {
statusBarHeight: 20,
loading: true,
message: "",
filterTabs: filterTabs,
activeFilter: "",
taskRows: [],
},
onPullDownRefresh: function () {
var that = this;
this.loadTasks().then(function () { wx.stopPullDownRefresh(); });
},
onShow: function () {
var app = getApp();
this.setData({ statusBarHeight: app.globalData.statusBarHeight });
if (!app.checkLogin()) return;
var tab = this.getTabBar();
if (tab) {
tab.setData({ selected: 0 });
tab.updateRole(app.globalData.userRole);
}
this.loadTasks();
},
loadTasks: function () {
var that = this;
var app = getApp();
that.setData({ loading: true, message: "" });
var url = "/api/driver/tasks";
if (that.data.activeFilter && that.data.activeFilter !== "accepted") {
url += "?status=" + encodeURIComponent(that.data.activeFilter);
}
return app.request({ url: url, method: "GET" }).then(function (data) {
var list = (data.list || []).map(function (item) {
return {
taskId: item.task_id,
taskNo: item.task_no,
orderNo: item.order_no,
driverName: item.driver_name || "-",
factoryName: item.factory_name || "-",
pickupAddress: item.pickup_address,
deliveryAddress: item.delivery_address,
pickupContent: item.pickup_content,
quantity: item.quantity || 0,
status: item.status,
statusText: mapTaskStatus(item.status),
badgeClass: getStatusBadge(item.status),
createdAt: item.created_at || "-",
};
});
if (that.data.activeFilter === "accepted") {
list = list.filter(function (t) { return t.status === "accepted" || t.status === "picked_up"; });
}
that.setData({ taskRows: list });
}).catch(function (error) {
that.setData({ message: error.message || "加载任务失败" });
}).finally(function () {
that.setData({ loading: false });
});
},
handleFilterTap: function (event) {
this.setData({ activeFilter: event.currentTarget.dataset.key });
this.loadTasks();
},
handleOpenDetail: function (event) {
var id = event.currentTarget.dataset.id;
wx.navigateTo({ url: "/pages/driver/task-detail/task-detail?id=" + id });
},
});