wlzboy
2026-03-19 c5ac97682e3b4ca748541ace97cb37a2295bd81e
app/pages/index.vue
@@ -107,24 +107,30 @@
              <view
                class="task-status"
                :class="
                  task.taskStatus === 'PENDING'
                  task.taskStatus === TaskStatus.PENDING
                    ? 'status-pending'
                    : task.taskStatus === 'DEPARTING'
                    : task.taskStatus === TaskStatus.NOT_CONFIRMED
                    ? 'status-not-confirmed'
                    : task.taskStatus === TaskStatus.NOT_DEPARTED
                    ? 'status-not-departed'
                    : task.taskStatus === TaskStatus.PARTIALLY_CONFIRMED
                    ? 'status-partially-confirmed'
                    : task.taskStatus === TaskStatus.DEPARTING
                    ? 'status-departing'
                    : task.taskStatus === 'ARRIVED'
                    : task.taskStatus === TaskStatus.ARRIVED
                    ? 'status-arrived'
                    : task.taskStatus === 'RETURNING'
                    : task.taskStatus === TaskStatus.RETURNING
                    ? 'status-returning'
                    : task.taskStatus === 'COMPLETED'
                    : task.taskStatus === TaskStatus.COMPLETED
                    ? 'status-completed'
                    : task.taskStatus === 'CANCELLED'
                    : task.taskStatus === TaskStatus.CANCELLED
                    ? 'status-cancelled'
                    : task.taskStatus === 'IN_PROGRESS'
                    : task.taskStatus === TaskStatus.IN_PROGRESS
                    ? 'status-in-progress'
                    : 'status-default'
                    : 'status-pending'
                "
              >
                {{ getStatusText(task.status) }}
                {{ getStatusText(task.taskStatus) }}
              </view>
            </view>
@@ -161,8 +167,8 @@
          <!-- 操作按钮 -->
          <view class="task-actions">
            <!-- 待处理状态: 显示出发、取消 -->
            <template v-if="task.taskStatus === 'PENDING'">
            <!-- 待处理状态:显示出发、取消 -->
            <template v-if="task.taskStatus === TaskStatus.PENDING || task.taskStatus === TaskStatus.NOT_DEPARTED || task.taskStatus === TaskStatus.NOT_CONFIRMED || task.taskStatus === TaskStatus.PARTIALLY_CONFIRMED">
              <button
                class="action-btn primary"
                @click="handleTaskAction(task, 'depart')"
@@ -177,8 +183,8 @@
              </button>
            </template>
            <!-- 出发中状态: 显示已到达、强制结束 -->
            <template v-else-if="task.taskStatus === 'DEPARTING'">
            <!-- 出发中状态:显示已到达、强制结束 -->
            <template v-else-if="task.taskStatus === TaskStatus.DEPARTING">
              <button
                class="action-btn primary"
                @click="handleTaskAction(task, 'arrive')"
@@ -193,8 +199,8 @@
              </button>
            </template>
            <!-- 已到达状态: 显示已返程 -->
            <template v-else-if="task.taskStatus === 'ARRIVED'">
            <!-- 已到达状态:显示已返程 -->
            <template v-else-if="task.taskStatus === TaskStatus.ARRIVED">
              <button
                class="action-btn primary"
                @click="handleTaskAction(task, 'return')"
@@ -203,8 +209,8 @@
              </button>
            </template>
            <!-- 返程中状态: 显示已完成 -->
            <template v-else-if="task.taskStatus === 'RETURNING'">
            <!-- 返程中状态:显示已完成 -->
            <template v-else-if="task.taskStatus === TaskStatus.RETURNING">
              <button
                class="action-btn primary"
                @click="handleTaskAction(task, 'complete')"
@@ -265,10 +271,40 @@
import { formatDateTime } from "@/utils/common";
import subscribeManager from "@/utils/subscribe";
import { checkTaskCanDepart } from "@/utils/taskValidator";
import { getStatusText as getTaskStatusText, TaskStatus } from "@/utils/TaskUtil";
// 任务类型映射(临时定义,避免导入问题)
const TASK_TYPE_MAP = {
  MAINTENANCE: "维修保养",
  FUEL: "加油",
  OTHER: "其他",
  EMERGENCY_TRANSFER: "转运任务",
  WELFARE: "福祉车",
  maintenance: "维修保养",
  refuel: "加油",
  inspection: "巡检",
  emergency: "转运任务",
  welfare: "福祉车"
};
// 任务状态映射(临时定义,避免导入问题)
const TASK_STATUS_MAP = {
  PENDING: "待处理",
  NOT_CONFIRMED: "完全未确认",
  NOT_DEPARTED: "待出发",
  PARTIALLY_CONFIRMED: "部分确认",
  DEPARTING: "出发中",
  ARRIVED: "已到达",
  RETURNING: "返程中",
  COMPLETED: "已完成",
  CANCELLED: "已取消",
  IN_PROGRESS: "任务中"
};
export default {
  data() {
    return {
      TaskStatus, // 暴露 TaskStatus 给模板使用
      // 用户绑定的车辆信息
      boundVehicle: "",
      boundVehicleId: null,
@@ -307,13 +343,17 @@
    runningTasks() {
      return this.displayedTaskList.filter((task) => {
        // 包含待处理、出发中、已到达、返程中等所有未完成的状态
        return [
          "PENDING",
          "DEPARTING",
          "ARRIVED",
          "RETURNING",
          "IN_PROGRESS",
        ].includes(task.taskStatus);
        const activeStatuses = [
          TaskStatus.NOT_CONFIRMED,
          TaskStatus.NOT_DEPARTED,
          TaskStatus.PARTIALLY_CONFIRMED,
          TaskStatus.PENDING,
          TaskStatus.DEPARTING,
          TaskStatus.ARRIVED,
          TaskStatus.RETURNING,
          TaskStatus.IN_PROGRESS,
        ];
        return activeStatuses.includes(task.taskStatus);
      });
    },
    
@@ -651,6 +691,10 @@
    convertStatus(dbStatus) {
      const statusMap = {
        PENDING: "pending",
        NOT_CONFIRMED: "pending",
        NOT_DEPARTED: "pending",
        PARTIALLY_CONFIRMED: "pending",
        DEPARTING: "processing",
        ARRIVED: "processing",
        RETURNING: "processing",
@@ -754,7 +798,7 @@
            this.$modal
              .confirm("确定要出发吗?")
              .then(() => {
                this.updateTaskStatus(task.taskId, "DEPARTING", "任务已出发");
                this.updateTaskStatus(task.taskId, TaskStatus.DEPARTING, "任务已出发");
              })
              .catch(() => {});
          } catch (error) {
@@ -764,7 +808,7 @@
            this.$modal
              .confirm("检查任务状态失败,是否继续出发?")
              .then(() => {
                this.updateTaskStatus(task.taskId, "DEPARTING", "任务已出发");
                this.updateTaskStatus(task.taskId, TaskStatus.DEPARTING, "任务已出发");
              })
              .catch(() => {});
          }
@@ -781,7 +825,7 @@
          this.$modal
            .confirm("确认已到达目的地?")
            .then(() => {
              this.updateTaskStatus(task.taskId, "ARRIVED", "已到达目的地");
              this.updateTaskStatus(task.taskId, TaskStatus.ARRIVED, "已到达目的地");
            })
            .catch(() => {});
          break;
@@ -791,7 +835,7 @@
          this.$modal
            .confirm("确定要强制结束此任务吗?")
            .then(() => {
              this.updateTaskStatus(task.taskId, "CANCELLED", "任务已强制结束");
              this.updateTaskStatus(task.taskId, TaskStatus.CANCELLED, "任务已强制结束");
            })
            .catch(() => {});
          break;
@@ -801,7 +845,7 @@
          this.$modal
            .confirm("确认开始返程?")
            .then(() => {
              this.updateTaskStatus(task.taskId, "RETURNING", "已开始返程");
              this.updateTaskStatus(task.taskId, TaskStatus.RETURNING, "已开始返程");
            })
            .catch(() => {});
          break;
@@ -809,7 +853,7 @@
        case "complete":
          // 已完成 -> 状态变为已完成
          // 需要检查是否上传了知情同意书
          this.checkConsentAttachmentAndThen(task.taskId, "COMPLETED", "任务已完成");
          this.checkConsentAttachmentAndThen(task.taskId, TaskStatus.COMPLETED, "任务已完成");
          break;
      }
    },
@@ -990,55 +1034,14 @@
      });
    },
    // 获取状态样式类
    getStatusClass(status) {
      const statusClassMap = {
        PENDING: "status-pending",
        DEPARTING: "status-departing",
        ARRIVED: "status-arrived",
        RETURNING: "status-returning",
        COMPLETED: "status-completed",
        CANCELLED: "status-cancelled",
        IN_PROGRESS: "status-in-progress",
      };
      return statusClassMap[status] || "status-default";
    },
    getStatusText(status) {
      // 支持新旧两种状态格式
      const statusMap = {
        // 新格式(数据库状态)
        PENDING: "待处理",
        DEPARTING: "出发中",
        ARRIVED: "已到达",
        RETURNING: "返程中",
        COMPLETED: "已完成",
        CANCELLED: "已取消",
        IN_PROGRESS: "处理中",
        // 旧格式(UI状态)
        pending: "待处理",
        processing: "处理中",
        completed: "已完成",
      };
      return statusMap[status] || "未知";
    },
    // 获取任务类型文本
    getTaskTypeText(type) {
      const typeMap = {
        // 新格式(数据库类型)
        MAINTENANCE: "维修保养",
        FUEL: "加油",
        OTHER: "其他",
        EMERGENCY_TRANSFER: "转运任务",
        WELFARE: "福祉车",
        // 旧格式(UI类型)
        maintenance: "维修保养",
        refuel: "加油",
        inspection: "巡检",
        emergency: "转运任务",
        welfare: "福祉车",
      };
      return typeMap[type] || "未知类型";
      return TASK_TYPE_MAP[type] || "未知类型";
    },
    // 获取任务状态文本
    getStatusText(status) {
      return TASK_STATUS_MAP[status] || "未知";
    },
    clickConfirmsubscribeTaskNotify() {
@@ -1328,6 +1331,18 @@
              background-color: #fff3e0;
              color: #ff9500;
            }
            &.status-not-confirmed {
              background-color: #fff3e0;
              color: #ff9500;
            }
            &.status-not-departed {
              background-color: #fff3e0;
              color: #ff9500;
            }
            &.status-partially-confirmed {
              background-color: #fff3e0;
              color: #ff9500;
            }
            // 出发中 - 蓝色
            &.status-departing {