wlzboy
2026-03-19 c5ac97682e3b4ca748541ace97cb37a2295bd81e
app/pagesTask/detail.vue
@@ -71,7 +71,7 @@
            </view>
            <!-- 当前登录人是该执行人且未就绪时显示就绪按钮 -->
            <view 
              v-if="showAssigneeReadyFeature() && isAssigneeSelf(assignee) && !isAssigneeReady(assignee) && taskDetail.taskStatus === 'PENDING'"
              v-if="showAssigneeReadyFeature() && isAssigneeSelf(assignee) && !isAssigneeReady(assignee) && taskDetail.taskStatus === TaskStatus.PENDING"
              class="assignee-ready-btn"
              :data-user-id="assignee.userId || assignee.oaUserId"
              :data-user-name="assignee.userName"
@@ -275,7 +275,7 @@
      </view>
      
      <!-- 取消信息(仅在任务已取消且有取消原因时显示) -->
      <view class="detail-section" v-if="taskDetail.taskStatus === 'CANCELLED' && taskDetail.emergencyInfo && taskDetail.emergencyInfo.cancelReason">
      <view class="detail-section" v-if="taskDetail.taskStatus === TaskStatus.CANCELLED && taskDetail.emergencyInfo && taskDetail.emergencyInfo.cancelReason">
        <view class="section-title">取消信息</view>
        <view class="info-item">
          <view class="label">取消原因</view>
@@ -465,8 +465,11 @@
    
    <!-- 操作按钮区域 -->
    <view class="action-buttons" v-if="taskDetail">
      <!-- 待处理状态: 显示出发、取消、强制完成 -->
      <template v-if="taskDetail.taskStatus === 'PENDING' ">
      <!-- 待处理状态:显示出发、取消、强制完成 -->
      <template v-if="taskDetail.taskStatus === TaskStatus.PENDING
      || taskDetail.taskStatus === TaskStatus.NOT_DEPARTED
      || taskDetail.taskStatus === TaskStatus.NOT_CONFIRMED
      || taskDetail.taskStatus === TaskStatus.PARTIALLY_CONFIRMED">
        <button 
          v-if="canOperateTask()"
          class="action-btn primary" 
@@ -488,9 +491,9 @@
          强制完成
        </button>
      </template>
      <!-- 出发中状态: 显示已到达、强制结束、强制完成 -->
      <template v-else-if="taskDetail.taskStatus === 'DEPARTING'">
      <!-- 出发中状态:显示已到达、强制结束、强制完成 -->
      <template v-else-if="taskDetail.taskStatus === TaskStatus.DEPARTING">
        <template v-if="canOperateTask()">
          <button 
            class="action-btn primary" 
@@ -514,8 +517,8 @@
        </template>
      </template>
      
      <!-- 已到达状态: 显示已返程 -->
      <template v-else-if="taskDetail.taskStatus === 'ARRIVED'">
      <!-- 已到达状态:显示已返程 -->
      <template v-else-if="taskDetail.taskStatus === TaskStatus.ARRIVED">
        <template v-if="canOperateTask()">
          <button 
            class="action-btn primary" 
@@ -526,8 +529,8 @@
        </template>
      </template>
      
      <!-- 返程中状态: 显示已完成 -->
      <template v-else-if="taskDetail.taskStatus === 'RETURNING'">
      <!-- 返程中状态:显示已完成 -->
      <template v-else-if="taskDetail.taskStatus === TaskStatus.RETURNING">
        <template v-if="canOperateTask()">
          <button 
            class="action-btn primary" 
@@ -538,8 +541,8 @@
        </template>
      </template>
      
      <!-- 处理中状态: 显示强制完成、取消 -->
      <template v-else-if="taskDetail.taskStatus === 'IN_PROGRESS'">
      <!-- 处理中状态:显示强制完成、取消 -->
      <template v-else-if="taskDetail.taskStatus === TaskStatus.IN_PROGRESS">
        <template v-if="canOperateTask()">
           <button 
            class="action-btn primary" 
@@ -579,6 +582,7 @@
  import { checkTaskInvoice } from '@/api/invoice'
  import { formatDateTime } from '@/utils/common'
  import { validateTaskForDepart, validateTaskForSettlement, getTaskVehicleId, checkTaskCanDepart } from '@/utils/taskValidator'
  import { getStatusText as getTaskStatusText, getTaskTypeText as getTaskTypeTextUtil, TaskStatus } from '@/utils/TaskUtil'
  import AttachmentUpload from './components/AttachmentUpload.vue'
  import config from '@/config'
  
@@ -588,6 +592,7 @@
    },
    data() {
      return {
        TaskStatus, // 暴露 TaskStatus 给模板使用
        taskDetail: null,
        taskId: null,
        paymentInfo: null, // 支付信息
@@ -663,10 +668,10 @@
          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'
        if (status === TaskStatus.PENDING || status === TaskStatus.NOT_CONFIRMED || status === TaskStatus.NOT_DEPARTED || status === TaskStatus.PARTIALLY_CONFIRMED) return 'pending'
        if ([TaskStatus.DEPARTING, TaskStatus.ARRIVED, TaskStatus.RETURNING, TaskStatus.IN_PROGRESS].includes(status)) return 'in_progress'
        if (status === TaskStatus.COMPLETED) return 'completed'
        if (status === TaskStatus.CANCELLED) return 'cancelled'
        return ''
      },
      // 显示计划开始时间
@@ -895,28 +900,12 @@
      
      // 获取状态文本
      getStatusText(status) {
        const statusMap = {
          'PENDING': '待处理',
          'DEPARTING': '出发中',
          'ARRIVED': '已到达',
          'RETURNING': '返程中',
          'COMPLETED': '已完成',
          'CANCELLED': '已取消',
          'IN_PROGRESS': '处理中' // 兼容旧数据
        }
        return statusMap[status] || '未知'
        return getTaskStatusText(status)
      },
      
      // 获取任务类型文本
      getTaskTypeText(type) {
        const typeMap = {
          'MAINTENANCE': '维修保养',
          'FUEL': '加油',
          'OTHER': '其他',
          'EMERGENCY_TRANSFER': '转运任务',
          'WELFARE': '福祉车'
        }
        return typeMap[type] || '未知类型'
        return getTaskTypeTextUtil(type)
      },
      
      // 获取用户类型标签