From 8b005a808d6ab8fae1480ed57bdfd68af2dafcd4 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 01 十一月 2025 23:07:49 +0800
Subject: [PATCH] feat:输入出入地址时,会自动计算距离
---
app/pages/task/detail.vue | 120 ++++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 85 insertions(+), 35 deletions(-)
diff --git a/app/pages/task/detail.vue b/app/pages/task/detail.vue
index f58d624..8598db2 100644
--- a/app/pages/task/detail.vue
+++ b/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,16 +106,20 @@
<view class="description">{{ taskDetail.remark }}</view>
</view>
- <!-- 鎬ユ晳杞繍浠诲姟鐗规湁淇℃伅 -->
+ <!-- 杞繍浠诲姟鐗规湁淇℃伅 -->
<view class="detail-section" v-if="taskDetail.taskType === 'EMERGENCY_TRANSFER' && taskDetail.emergencyInfo">
<view class="section-title">鎮h�呬俊鎭�</view>
- <view class="info-item" v-if="taskDetail.emergencyInfo.patientName">
- <view class="label">鎮h�呭鍚�</view>
- <view class="value">{{ taskDetail.emergencyInfo.patientName }}</view>
+ <view class="info-item">
+ <view class="label">鑱旂郴浜�</view>
+ <view class="value">{{ taskDetail.emergencyInfo.patientContact || '鏈缃�' }}</view>
</view>
- <view class="info-item" v-if="taskDetail.emergencyInfo.patientPhone">
+ <view class="info-item">
+ <view class="label">鎮h�呭鍚�</view>
+ <view class="value">{{ taskDetail.emergencyInfo.patientName || '鏈缃�' }}</view>
+ </view>
+ <view class="info-item">
<view class="label">鑱旂郴鐢佃瘽</view>
- <view class="value">{{ taskDetail.emergencyInfo.patientPhone }}</view>
+ <view class="value">{{ taskDetail.emergencyInfo.patientPhone || '鏈缃�' }}</view>
</view>
<view class="info-item" v-if="taskDetail.emergencyInfo.patientGender">
<view class="label">鎬у埆</view>
@@ -135,7 +139,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 +160,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 +181,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 +319,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,9 +399,11 @@
getTask(this.taskId).then(response => {
this.taskDetail = response.data || response
// 璋冭瘯锛氭墦鍗拌繑鍥炵殑鏁版嵁
- console.log('浠诲姟璇︽儏鏁版嵁:', this.taskDetail)
- console.log('鍑哄彂鍦板潃:', this.taskDetail.departureAddress)
- console.log('鐩殑鍦板潃:', this.taskDetail.destinationAddress)
+ // 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 => {
console.error('鍔犺浇浠诲姟璇︽儏澶辫触:', error)
this.$modal.showToast('鍔犺浇浠诲姟璇︽儏澶辫触')
@@ -374,7 +437,7 @@
// 鑾峰彇璺濈淇℃伅锛氭牴鎹换鍔$被鍨嬭繑鍥炰笉鍚屽瓧娈�
getDistanceInfo(task) {
- // 鎬ユ晳杞繍锛氫紭鍏堜娇鐢╰ransferDistance
+ // 杞繍锛氫紭鍏堜娇鐢╰ransferDistance
if (task.taskType === 'EMERGENCY_TRANSFER' && task.emergencyInfo && task.emergencyInfo.transferDistance) {
return task.emergencyInfo.transferDistance
}
@@ -389,19 +452,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 +474,7 @@
'MAINTENANCE': '缁翠慨淇濆吇',
'FUEL': '鍔犳补',
'OTHER': '鍏朵粬',
- 'EMERGENCY_TRANSFER': '鎬ユ晳杞繍',
+ 'EMERGENCY_TRANSFER': '杞繍浠诲姟',
'WELFARE': '绂忕杞�'
}
return typeMap[type] || '鏈煡绫诲瀷'
--
Gitblit v1.9.1