wlzboy
2025-10-26 1626d13ec8b1a63676e63cf95c5004c4118da3b3
app/pages/task/detail.vue
@@ -16,12 +16,12 @@
        </view>
        <view class="info-item">
          <view class="label">任务类型</view>
          <view class="value">{{ getTaskTypeText(taskDetail.taskType) }}</view>
          <view class="value">{{ displayTaskType }}</view>
        </view>
        <view class="info-item">
          <view class="label">任务状态</view>
          <view class="value status" :class="taskDetail.taskStatus === 'PENDING' ? 'pending' : taskDetail.taskStatus === 'DEPARTING' ? 'in_progress' : taskDetail.taskStatus === 'ARRIVED' ? 'in_progress' : taskDetail.taskStatus === 'RETURNING' ? 'in_progress' : taskDetail.taskStatus === 'IN_PROGRESS' ? 'in_progress' : taskDetail.taskStatus === 'COMPLETED' ? 'completed' : taskDetail.taskStatus === 'CANCELLED' ? 'cancelled' : ''">
            {{ getStatusText(taskDetail.taskStatus) }}
          <view class="value status" :class="statusClass">
            {{ displayTaskStatus }}
          </view>
        </view>
        <view class="info-item">
@@ -38,25 +38,25 @@
        <view class="section-title">时间信息</view>
        <view class="info-item">
          <view class="label">计划开始时间</view>
          <view class="value">{{ formatDateTime(taskDetail.plannedStartTime) }}</view>
          <view class="value">{{ displayPlannedStartTime }}</view>
        </view>
        <view class="info-item">
          <view class="label">计划结束时间</view>
          <view class="value">{{ formatDateTime(taskDetail.plannedEndTime) }}</view>
          <view class="value">{{ displayPlannedEndTime }}</view>
        </view>
        <view class="info-item" v-if="taskDetail.actualStartTime">
          <view class="label">实际开始时间</view>
          <view class="value">{{ formatDateTime(taskDetail.actualStartTime) }}</view>
          <view class="value">{{ displayActualStartTime }}</view>
        </view>
        <view class="info-item" v-if="taskDetail.actualEndTime">
          <view class="label">实际结束时间</view>
          <view class="value">{{ formatDateTime(taskDetail.actualEndTime) }}</view>
          <view class="value">{{ displayActualEndTime }}</view>
        </view>
      </view>
      
      <view class="detail-section">
        <view class="section-title">位置信息</view>
        <!-- 急救转运任务:显示转出/转入医院地址 -->
        <!-- 转运任务:显示转出/转入医院地址 -->
        <template v-if="taskDetail.taskType === 'EMERGENCY_TRANSFER' && taskDetail.emergencyInfo">
          <view class="info-item" v-if="taskDetail.emergencyInfo.hospitalOutAddress">
            <view class="label">转出医院</view>
@@ -106,7 +106,7 @@
        <view class="description">{{ taskDetail.remark }}</view>
      </view>
      
      <!-- 急救转运任务特有信息 -->
      <!-- 转运任务特有信息 -->
      <view class="detail-section" v-if="taskDetail.taskType === 'EMERGENCY_TRANSFER' && taskDetail.emergencyInfo">
        <view class="section-title">患者信息</view>
        <view class="info-item" v-if="taskDetail.emergencyInfo.patientName">
@@ -135,7 +135,7 @@
        </view>
      </view>
      
      <!-- 急救转运 - 转出医院信息 -->
      <!-- 转运 - 转出医院信息 -->
      <view class="detail-section" v-if="taskDetail.taskType === 'EMERGENCY_TRANSFER' && taskDetail.emergencyInfo">
        <view class="section-title">转出医院信息</view>
        <view class="info-item" v-if="taskDetail.emergencyInfo.hospitalOutName">
@@ -156,7 +156,7 @@
        </view>
      </view>
      
      <!-- 急救转运 - 转入医院信息 -->
      <!-- 转运 - 转入医院信息 -->
      <view class="detail-section" v-if="taskDetail.taskType === 'EMERGENCY_TRANSFER' && taskDetail.emergencyInfo">
        <view class="section-title">转入医院信息</view>
        <view class="info-item" v-if="taskDetail.emergencyInfo.hospitalInName">
@@ -177,7 +177,7 @@
        </view>
      </view>
      
      <!-- 急救转运 - 费用信息 -->
      <!-- 转运 - 费用信息 -->
      <view class="detail-section" v-if="taskDetail.taskType === 'EMERGENCY_TRANSFER' && taskDetail.emergencyInfo">
        <view class="section-title">费用信息</view>
        <view class="info-item" v-if="taskDetail.emergencyInfo.transferDistance">
@@ -315,12 +315,69 @@
<script>
  import { getTask, changeTaskStatus } from '@/api/task'
  import { formatDateTime } from '@/utils/common'
  
  export default {
    data() {
      return {
        taskDetail: null,
        taskId: null
      }
    },
    computed: {
      // 显示任务类型
      displayTaskType() {
        if (!this.taskDetail || !this.taskDetail.taskType) {
          return '未设置'
        }
        return this.getTaskTypeText(this.taskDetail.taskType)
      },
      // 显示任务状态
      displayTaskStatus() {
        if (!this.taskDetail || !this.taskDetail.taskStatus) {
          return '未设置'
        }
        return this.getStatusText(this.taskDetail.taskStatus)
      },
      // 状态样式类
      statusClass() {
        if (!this.taskDetail || !this.taskDetail.taskStatus) {
          return ''
        }
        const status = this.taskDetail.taskStatus
        if (status === 'PENDING') return 'pending'
        if (['DEPARTING', 'ARRIVED', 'RETURNING', 'IN_PROGRESS'].includes(status)) return 'in_progress'
        if (status === 'COMPLETED') return 'completed'
        if (status === 'CANCELLED') return 'cancelled'
        return ''
      },
      // 显示计划开始时间
      displayPlannedStartTime() {
        if (!this.taskDetail || !this.taskDetail.plannedStartTime) {
          return '未设置'
        }
        return formatDateTime(this.taskDetail.plannedStartTime, 'YYYY-MM-DD HH:mm')
      },
      // 显示计划结束时间
      displayPlannedEndTime() {
        if (!this.taskDetail || !this.taskDetail.plannedEndTime) {
          return '未设置'
        }
        return formatDateTime(this.taskDetail.plannedEndTime, 'YYYY-MM-DD HH:mm')
      },
      // 显示实际开始时间
      displayActualStartTime() {
        if (!this.taskDetail || !this.taskDetail.actualStartTime) {
          return '未设置'
        }
        return formatDateTime(this.taskDetail.actualStartTime, 'YYYY-MM-DD HH:mm')
      },
      // 显示实际结束时间
      displayActualEndTime() {
        if (!this.taskDetail || !this.taskDetail.actualEndTime) {
          return '未设置'
        }
        return formatDateTime(this.taskDetail.actualEndTime, 'YYYY-MM-DD HH:mm')
      }
    },
    onLoad(options) {
@@ -338,7 +395,9 @@
        getTask(this.taskId).then(response => {
          this.taskDetail = response.data || response
          // 调试:打印返回的数据
          console.log('任务详情数据:', this.taskDetail)
          console.log('任务详情完整数据:', JSON.stringify(this.taskDetail, null, 2))
          console.log('任务类型字段值:', this.taskDetail.taskType)
          console.log('任务状态字段值:', this.taskDetail.taskStatus)
          console.log('出发地址:', this.taskDetail.departureAddress)
          console.log('目的地址:', this.taskDetail.destinationAddress)
        }).catch(error => {
@@ -374,7 +433,7 @@
      
      // 获取距离信息:根据任务类型返回不同字段
      getDistanceInfo(task) {
        // 急救转运:优先使用transferDistance
        // 转运:优先使用transferDistance
        if (task.taskType === 'EMERGENCY_TRANSFER' && task.emergencyInfo && task.emergencyInfo.transferDistance) {
          return task.emergencyInfo.transferDistance
        }
@@ -389,19 +448,6 @@
      // 返回上一页
      goBack() {
        uni.navigateBack()
      },
      // 格式化日期时间
      formatDateTime(dateTime) {
        if (!dateTime) return '未设置'
        const date = new Date(dateTime)
        return date.toLocaleString('zh-CN', {
          year: 'numeric',
          month: '2-digit',
          day: '2-digit',
          hour: '2-digit',
          minute: '2-digit'
        })
      },
      
      // 获取状态文本
@@ -424,7 +470,7 @@
          'MAINTENANCE': '维修保养',
          'FUEL': '加油',
          'OTHER': '其他',
          'EMERGENCY_TRANSFER': '急救转运',
          'EMERGENCY_TRANSFER': '转运任务',
          'WELFARE': '福祉车'
        }
        return typeMap[type] || '未知类型'