From 2c86a8bd60deed0dd0e044bad6fb83f75d19a332 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 26 十月 2025 15:05:50 +0800
Subject: [PATCH] Merge branch 'feature-task'

---
 ruoyi-ui/src/views/task/general/detail.vue |   96 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 92 insertions(+), 4 deletions(-)

diff --git a/ruoyi-ui/src/views/task/general/detail.vue b/ruoyi-ui/src/views/task/general/detail.vue
index 99fd176..b1b7527 100644
--- a/ruoyi-ui/src/views/task/general/detail.vue
+++ b/ruoyi-ui/src/views/task/general/detail.vue
@@ -30,6 +30,74 @@
         <el-descriptions-item label="澶囨敞" :span="2">{{ taskDetail.remark }}</el-descriptions-item>
       </el-descriptions>
 
+      <!-- 鎬ユ晳杞繍浠诲姟鎵╁睍淇℃伅 -->
+      <el-descriptions v-if="taskDetail.taskType === 'EMERGENCY_TRANSFER' && taskDetail.emergencyInfo" title="鎬ユ晳杞繍淇℃伅" :column="2" border style="margin-top: 20px;">
+        <el-descriptions-item label="鎮h�呭鍚�">{{ taskDetail.emergencyInfo.patientName }}</el-descriptions-item>
+        <el-descriptions-item label="鎮h�呮�у埆">
+          <dict-tag :options="dict.type.sys_user_sex" :value="taskDetail.emergencyInfo.patientGender"/>
+        </el-descriptions-item>
+        <el-descriptions-item label="鎮h�呭勾榫�">{{ taskDetail.emergencyInfo.patientAge }}</el-descriptions-item>
+        <el-descriptions-item label="鑱旂郴鐢佃瘽">{{ taskDetail.emergencyInfo.contactPhone }}</el-descriptions-item>
+        <el-descriptions-item label="鎺ラ�佸尰闄�" :span="2">{{ taskDetail.emergencyInfo.hospitalName }}</el-descriptions-item>
+        <el-descriptions-item label="灏辫瘖绉戝" :span="2">
+          <dict-tag v-if="taskDetail.emergencyInfo.hospitalDepartment" :options="dict.type.hospital_department" :value="taskDetail.emergencyInfo.hospitalDepartment"/>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鐥呮儏鎻忚堪" :span="2">
+          <span v-if="taskDetail.emergencyInfo.illnessDescription">{{ taskDetail.emergencyInfo.illnessDescription }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鐗规畩闇�姹�" :span="2">
+          <span v-if="taskDetail.emergencyInfo.specialRequirements">{{ taskDetail.emergencyInfo.specialRequirements }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏄惁闇�瑕佹媴鏋�">
+          <el-tag v-if="taskDetail.emergencyInfo.needsStretcher == 1" type="success" size="small">鏄�</el-tag>
+          <el-tag v-else type="info" size="small">鍚�</el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏄惁闇�瑕佽疆妞�">
+          <el-tag v-if="taskDetail.emergencyInfo.needsWheelchair == 1" type="success" size="small">鏄�</el-tag>
+          <el-tag v-else type="info" size="small">鍚�</el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏄惁闇�瑕佹哀姘�">
+          <el-tag v-if="taskDetail.emergencyInfo.needsOxygen == 1" type="success" size="small">鏄�</el-tag>
+          <el-tag v-else type="info" size="small">鍚�</el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="绱ф�ョ▼搴�">
+          <el-tag v-if="taskDetail.emergencyInfo.urgencyLevel === 'HIGH'" type="danger" size="small">绱ф��</el-tag>
+          <el-tag v-else-if="taskDetail.emergencyInfo.urgencyLevel === 'MEDIUM'" type="warning" size="small">涓�鑸�</el-tag>
+          <el-tag v-else-if="taskDetail.emergencyInfo.urgencyLevel === 'LOW'" type="info" size="small">涓嶆��</el-tag>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="闄悓浜烘暟">{{ taskDetail.emergencyInfo.companionCount || 0 }} 浜�</el-descriptions-item>
+        <el-descriptions-item label="棰勪及璐圭敤">{{ taskDetail.emergencyInfo.estimatedCost || '--' }} 鍏�</el-descriptions-item>
+      </el-descriptions>
+
+      <!-- 绂忕杞︿换鍔℃墿灞曚俊鎭� -->
+      <el-descriptions v-if="taskDetail.taskType === 'WELFARE' && taskDetail.welfareInfo" title="绂忕杞︽湇鍔′俊鎭�" :column="2" border style="margin-top: 20px;">
+        <el-descriptions-item label="涔樺濮撳悕">{{ taskDetail.welfareInfo.passengerName }}</el-descriptions-item>
+        <el-descriptions-item label="涔樺鎬у埆">
+          <dict-tag :options="dict.type.sys_user_sex" :value="taskDetail.welfareInfo.passengerGender"/>
+        </el-descriptions-item>
+        <el-descriptions-item label="涔樺骞撮緞">{{ taskDetail.welfareInfo.passengerAge }}</el-descriptions-item>
+        <el-descriptions-item label="鑱旂郴鐢佃瘽">{{ taskDetail.welfareInfo.contactPhone }}</el-descriptions-item>
+        <el-descriptions-item label="鏈嶅姟绫诲瀷" :span="2">
+          <span v-if="taskDetail.welfareInfo.serviceType">{{ taskDetail.welfareInfo.serviceType }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鐗规畩闇�姹�" :span="2">
+          <span v-if="taskDetail.welfareInfo.specialRequirements">{{ taskDetail.welfareInfo.specialRequirements }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏄惁闇�瑕佽疆妞�">
+          <el-tag v-if="taskDetail.welfareInfo.needsWheelchair == 1" type="success" size="small">鏄�</el-tag>
+          <el-tag v-else type="info" size="small">鍚�</el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="闄悓浜烘暟">{{ taskDetail.welfareInfo.companionCount || 0 }} 浜�</el-descriptions-item>
+        <el-descriptions-item label="棰勪及璐圭敤">{{ taskDetail.welfareInfo.estimatedCost || '--' }} 鍏�</el-descriptions-item>
+        <el-descriptions-item label="瀹為檯璐圭敤">{{ taskDetail.welfareInfo.actualCost || '--' }} 鍏�</el-descriptions-item>
+      </el-descriptions>
+
       <!-- 鎿嶄綔鎸夐挳 -->
       <div style="margin-top: 20px; text-align: center;">
         <el-button type="primary" @click="handleEdit" v-hasPermi="['task:general:edit']">缂栬緫浠诲姟</el-button>
@@ -242,13 +310,24 @@
     <el-dialog title="鍒嗛厤杞﹁締" :visible.sync="vehicleAssignOpen" width="600px" append-to-body>
       <el-form ref="vehicleAssignForm" :model="vehicleAssignForm" :rules="vehicleAssignRules" label-width="80px">
         <el-form-item label="杞﹁締" prop="vehicleIds">
-          <el-select v-model="vehicleAssignForm.vehicleIds" placeholder="璇烽�夋嫨杞﹁締" multiple clearable>
+          <el-select v-model="vehicleAssignForm.vehicleIds" placeholder="璇烽�夋嫨杞﹁締" multiple clearable style="width: 100%">
             <el-option
               v-for="vehicle in availableVehicles"
               :key="vehicle.vehicleId"
-              :label="vehicle.vehicleNo + ' (' + vehicle.vehicleType + ')'"
+              :label="vehicle.vehicleNo + ' - ' + vehicle.deptName"
               :value="vehicle.vehicleId"
-            />
+            >
+              <div style="display: flex; justify-content: space-between; align-items: center;">
+                <div>
+                  <div style="font-weight: bold; color: #303133;">{{ vehicle.vehicleNo }}</div>
+                  <div style="font-size: 12px; color: #909399;">ID: {{ vehicle.vehicleId }}</div>
+                </div>
+                <div style="text-align: right;">
+                  <div style="color: #67C23A; font-size: 13px;">{{ getVehicleTypeName(vehicle.vehicleType) }}</div>
+                  <div style="color: #8492a6; font-size: 12px;">{{ vehicle.vehicleBrand }} {{ vehicle.vehicleModel }}</div>
+                </div>
+              </div>
+            </el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="澶囨敞" prop="remark">
@@ -288,7 +367,7 @@
 
 export default {
   name: "TaskDetail",
-  dicts: ['sys_task_type', 'sys_task_status', 'sys_vehicle_type', 'sys_task_vehicle_status'],
+  dicts: ['sys_task_type', 'sys_task_status', 'sys_vehicle_type', 'sys_task_vehicle_status', 'sys_user_sex', 'hospital_department'],
   data() {
     return {
       // 浠诲姟璇︽儏
@@ -552,6 +631,15 @@
       } else {
         return (size / 1024 / 1024).toFixed(2) + ' MB';
       }
+    },
+    /** 鑾峰彇杞﹁締绫诲瀷鍚嶇О */
+    getVehicleTypeName(vehicleType) {
+      const typeDict = this.dict.type.sys_vehicle_type;
+      if (typeDict && typeDict.length > 0) {
+        const typeItem = typeDict.find(item => item.value === vehicleType);
+        return typeItem ? typeItem.label : vehicleType;
+      }
+      return vehicleType;
     }
   }
 };

--
Gitblit v1.9.1