| | |
| | | </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"> |
| | |
| | | <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> |
| | |
| | | <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"> |
| | |
| | | </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"> |
| | |
| | | </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"> |
| | |
| | | </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"> |
| | |
| | | |
| | | <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) { |
| | |
| | | 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 => { |
| | |
| | | |
| | | // 获取距离信息:根据任务类型返回不同字段 |
| | | getDistanceInfo(task) { |
| | | // 急救转运:优先使用transferDistance |
| | | // 转运:优先使用transferDistance |
| | | if (task.taskType === 'EMERGENCY_TRANSFER' && task.emergencyInfo && task.emergencyInfo.transferDistance) { |
| | | return task.emergencyInfo.transferDistance |
| | | } |
| | |
| | | // 返回上一页 |
| | | 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' |
| | | }) |
| | | }, |
| | | |
| | | // 获取状态文本 |
| | |
| | | 'MAINTENANCE': '维修保养', |
| | | 'FUEL': '加油', |
| | | 'OTHER': '其他', |
| | | 'EMERGENCY_TRANSFER': '急救转运', |
| | | 'EMERGENCY_TRANSFER': '转运任务', |
| | | 'WELFARE': '福祉车' |
| | | } |
| | | return typeMap[type] || '未知类型' |