wlzboy
2026-03-19 c5ac97682e3b4ca748541ace97cb37a2295bd81e
app/pages/task/index.vue
@@ -158,7 +158,7 @@
                      ? 'status-cancelled'
                      : task.taskStatus === 'IN_PROGRESS'
                      ? 'status-in-progress'
                      : 'status-default'
                      : 'status-pending'
                  "
                >
                  {{ getStatusText(task.taskStatus) }}
@@ -188,7 +188,7 @@
                <view class="info-row">
                  <view class="info-item">
                    <view class="label">执行人员:</view>
                    <view class="value">{{ task.assignee }}</view>
                    <view class="value">{{ getAssigneesDisplay(task) }}</view>
                  </view>
                </view>
              </view>
@@ -197,7 +197,10 @@
            <!-- 操作按钮 -->
            <view class="task-actions">
              <!-- 待处理状态: 显示出发、取消 -->
              <template v-if="task.taskStatus === 'PENDING'">
              <template v-if="task.taskStatus === 'PENDING'
              || task.taskStatus === 'NOT_DEPARTED'
              || task.taskStatus === 'NOT_CONFIRMED'
              || task.taskStatus === 'PARTIALLY_CONFIRMED'">
                <button
                  class="action-btn primary"
                  @click="handleTaskAction(task, 'depart')"
@@ -300,6 +303,35 @@
import { mapState } from "vuex";
import { formatDateTime } from "@/utils/common";
import { checkTaskCanDepart } from "@/utils/taskValidator";
import { getStatusText as getTaskStatusText, getTaskStatusOptions, getTaskTypeText as getTaskTypeTextUtil } 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 {
  components: {
@@ -315,8 +347,8 @@
        vehicle: "",
        taskNo: "",
      },
      statusOptions: ["全部状态", "待处理", "处理中", "已完成", "已取消"],
      statusValues: ["", "pending", "processing", "completed", "cancelled"],
      statusOptions: ["全部状态", ...getTaskStatusOptions().map(opt => opt.label)],
      statusValues: ["", ...getTaskStatusOptions().map(opt => opt.value)],
      selectedStatus: "",
      selectedStatusText: "",
      startDate: "",
@@ -415,6 +447,9 @@
        queryParams.taskStatus = "PENDING";
      } else if (this.currentFilter === "processing") {
        queryParams.taskStatusList = [
          "NOT_CONFIRMED",
          "NOT_DEPARTED",
          "PARTIALLY_CONFIRMED",
          "DEPARTING",
          "ARRIVED",
          "RETURNING",
@@ -429,6 +464,9 @@
          const statusMap = {
            pending: "PENDING",
            processing: [
              "NOT_CONFIRMED",
              "NOT_DEPARTED",
              "PARTIALLY_CONFIRMED",
              "DEPARTING",
              "ARRIVED",
              "RETURNING",
@@ -533,6 +571,9 @@
        queryParams.taskStatus = "PENDING";
      } else if (this.currentFilter === "processing") {
        queryParams.taskStatusList = [
          "NOT_CONFIRMED",
          "NOT_DEPARTED",
          "PARTIALLY_CONFIRMED",
          "DEPARTING",
          "ARRIVED",
          "RETURNING",
@@ -663,13 +704,36 @@
        // 优先显示转入医院名称
        if (task.emergencyInfo.hospitalInName) {
          if(task.emergencyInfo.hospitalInName.includes("家中")){
            return task.emergencyInfo.destinationAddress;
            return task.emergencyInfo.hospitalInAddress;
          }
          return task.emergencyInfo.hospitalInName;
        }
        }
        // 如果没有转入医院名称,但有转入医院地址,则显示地址
        if (task.emergencyInfo.hospitalInAddress) {
          return task.emergencyInfo.hospitalInAddress;
        }
      }
      // 其他情况使用原来的endLocation
      return this.formatAddress(task.endLocation || "未设置");
    },
    // 获取执行人员显示(从 assignees 数组中提取 userName)
    getAssigneesDisplay(task) {
      // 如果有 assignees 数组且不为空
      if (task.assignees && task.assignees.length > 0) {
        // 提取所有 userName,过滤掉空值
        const userNames = task.assignees
          .map(assignee => assignee.userName)
          .filter(name => name); // 过滤掉 null/undefined/空字符串
        // 如果有有效的用户名,用逗号连接
        if (userNames.length > 0) {
          return userNames.join('、');
        }
      }
      // 如果没有 assignees 数组,使用旧的 assigneeName 或 assignee 字段
      return task.assigneeName || task.assignee || '未分配';
    },
    // 切换查询界面显示/隐藏
@@ -1057,19 +1121,9 @@
      });
    },
    getStatusText(status) {
      const statusMap = {
        PENDING: "待处理",
        DEPARTING: "出发中",
        ARRIVED: "已到达",
        RETURNING: "返程中",
        COMPLETED: "已完成",
        CANCELLED: "已取消",
        IN_PROGRESS: "处理中", // 兼容旧数据
      };
      return statusMap[status] || "未知";
    },
    // 使用 TaskUtil 中的 getStatusText 方法
    // getStatusText 已在 utils/TaskUtil.js 中定义
    // 获取状态样式类
    getStatusClass(status) {
      const statusClassMap = {
@@ -1083,16 +1137,18 @@
      };
      return statusClassMap[status] || "status-default";
    },
    // 使用 TaskUtil 中的 getTaskTypeText 方法
    // getTaskTypeText 已在 utils/TaskUtil.js 中定义
    // 获取任务类型文本
    getTaskTypeText(type) {
      const typeMap = {
        MAINTENANCE: "维修保养",
        FUEL: "加油",
        OTHER: "其他",
        EMERGENCY_TRANSFER: "转运任务",
        WELFARE: "福祉车",
      };
      return typeMap[type] || "未知类型";
      return TASK_TYPE_MAP[type] || "未知类型";
    },
    // 获取任务状态文本
    getStatusText(status) {
      return TASK_STATUS_MAP[status] || "未知";
    },
  },
};
@@ -1434,6 +1490,10 @@
              font-size: 26rpx;
              flex: 1;
              word-break: break-all;
              overflow-wrap: break-word;
              line-height: 1.5;
              max-height: none;
              overflow: visible;
            }
          }
        }