| | |
| | | import { getUnreadCount } from "@/api/message"; |
| | | import { formatDateTime } from "@/utils/common"; |
| | | import subscribeManager from "@/utils/subscribe"; |
| | | import { checkTaskCanDepart } from "@/utils/taskValidator"; |
| | | |
| | | export default { |
| | | data() { |
| | |
| | | }, |
| | | |
| | | // 处理任务操作 |
| | | handleTaskAction(task, action) { |
| | | async handleTaskAction(task, action) { |
| | | switch (action) { |
| | | case "depart": |
| | | // 出发 -> 状态变为出发中 |
| | | this.$modal |
| | | .confirm("确定要出发吗?") |
| | | .then(() => { |
| | | this.updateTaskStatus(task.taskId, "DEPARTING", "任务已出发"); |
| | | }) |
| | | .catch(() => {}); |
| | | // 显示加载提示 |
| | | uni.showLoading({ |
| | | title: "检查任务状态...", |
| | | }); |
| | | |
| | | try { |
| | | // 调用工具类检查任务是否可以出发(包含基本校验和冲突检查) |
| | | const checkResult = await checkTaskCanDepart(task); |
| | | |
| | | uni.hideLoading(); |
| | | |
| | | console.log("出发检查结果:", checkResult); |
| | | console.log("valid:", checkResult.valid); |
| | | console.log("conflicts:", checkResult.conflicts); |
| | | |
| | | if (!checkResult.valid) { |
| | | // 校验失败,显示提示信息并提供跳转选项 |
| | | const conflicts = checkResult.conflicts || []; |
| | | const conflictInfo = conflicts.length > 0 ? conflicts[0] : null; |
| | | |
| | | console.log("冲突信息:", conflictInfo); |
| | | |
| | | // 如果有冲突任务信息,提供跳转按钮 |
| | | if (conflictInfo && conflictInfo.taskId) { |
| | | console.log( |
| | | "显示带跳转按钮的弹窗,任务ID:", |
| | | conflictInfo.taskId |
| | | ); |
| | | |
| | | const conflictTaskId = conflictInfo.taskId; |
| | | const message = |
| | | checkResult.message || conflictInfo.message || "存在冲突任务"; |
| | | |
| | | uni.showModal({ |
| | | title: "提示", |
| | | content: message, |
| | | confirmText: "去处理", |
| | | cancelText: "知道了", |
| | | success: function (res) { |
| | | console.log("弹窗点击结果:", res); |
| | | if (res.confirm) { |
| | | // 用户点击"现在去处理",跳转到冲突任务详情页 |
| | | console.log("准备跳转到任务详情页:", conflictTaskId); |
| | | uni.navigateTo({ |
| | | url: `/pagesTask/detail?id=${conflictTaskId}`, |
| | | }); |
| | | } |
| | | }, |
| | | fail: function (err) { |
| | | console.error("显示弹窗失败:", err); |
| | | }, |
| | | }); |
| | | } else { |
| | | // 没有冲突任务ID,只显示提示 |
| | | console.log("显示普通提示弹窗"); |
| | | uni.showModal({ |
| | | title: "提示", |
| | | content: checkResult.message || "任务校验失败", |
| | | showCancel: false, |
| | | confirmText: "知道了", |
| | | fail: function (err) { |
| | | console.error("显示弹窗失败:", err); |
| | | }, |
| | | }); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | // 所有检查通过,可以出发 |
| | | this.$modal |
| | | .confirm("确定要出发吗?") |
| | | .then(() => { |
| | | this.updateTaskStatus(task.taskId, "DEPARTING", "任务已出发"); |
| | | }) |
| | | .catch(() => {}); |
| | | } catch (error) { |
| | | uni.hideLoading(); |
| | | console.error("检查任务状态失败:", error); |
| | | // 检查失败时,仍然允许出发 |
| | | this.$modal |
| | | .confirm("检查任务状态失败,是否继续出发?") |
| | | .then(() => { |
| | | this.updateTaskStatus(task.taskId, "DEPARTING", "任务已出发"); |
| | | }) |
| | | .catch(() => {}); |
| | | } |
| | | break; |
| | | |
| | | case "cancel": |