From d3fd4b0ab851bab89c30c199e27245f7f45f1c0e Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 08 十一月 2025 08:01:12 +0800
Subject: [PATCH] feat:实现了微信上传图片

---
 ruoyi-ui/src/views/task/general/detail.vue |  143 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 139 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..0450def 100644
--- a/ruoyi-ui/src/views/task/general/detail.vue
+++ b/ruoyi-ui/src/views/task/general/detail.vue
@@ -30,6 +30,121 @@
         <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="鑱旂郴浜�">
+          <span v-if="taskDetail.emergencyInfo.contactPerson">{{ taskDetail.emergencyInfo.contactPerson }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鑱旂郴鐢佃瘽">
+          <span v-if="taskDetail.emergencyInfo.contactPhone">{{ taskDetail.emergencyInfo.contactPhone }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鎮h�呭鍚�">
+          <span v-if="taskDetail.emergencyInfo.patientName">{{ taskDetail.emergencyInfo.patientName }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鎮h�呮�у埆">
+          <dict-tag v-if="taskDetail.emergencyInfo.patientGender" :options="dict.type.sys_user_sex" :value="taskDetail.emergencyInfo.patientGender"/>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="韬唤淇℃伅" :span="2">
+          <span v-if="taskDetail.emergencyInfo.patientIdCard">{{ taskDetail.emergencyInfo.patientIdCard }}</span>
+          <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>
+
+      <!-- 鏃х郴缁熷悓姝ヤ俊鎭紙浠呮�ユ晳杞繍浠诲姟鏄剧ず锛� -->
+      <el-descriptions v-if="taskDetail.taskType === 'EMERGENCY_TRANSFER' && taskDetail.emergencyInfo" title="鏃х郴缁熷悓姝ヤ俊鎭�" :column="2" border style="margin-top: 20px;">
+        <el-descriptions-item label="鏈嶅姟鍗曞悓姝ョ姸鎬�">
+          <el-tag v-if="taskDetail.emergencyInfo.syncStatus === 0" type="info" size="small">
+            <i class="el-icon-warning"></i> 鏈悓姝�
+          </el-tag>
+          <el-tag v-else-if="taskDetail.emergencyInfo.syncStatus === 1" type="warning" size="small">
+            <i class="el-icon-loading"></i> 鍚屾涓�
+          </el-tag>
+          <el-tag v-else-if="taskDetail.emergencyInfo.syncStatus === 2" type="success" size="small">
+            <i class="el-icon-success"></i> 鍚屾鎴愬姛
+          </el-tag>
+          <el-tag v-else-if="taskDetail.emergencyInfo.syncStatus === 3" type="danger" size="small">
+            <i class="el-icon-error"></i> 鍚屾澶辫触
+          </el-tag>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏈嶅姟鍗曞彿">
+          <span v-if="taskDetail.emergencyInfo.legacyServiceOrdId">
+            <el-tag type="primary" size="small">{{ taskDetail.emergencyInfo.legacyServiceOrdId }}</el-tag>
+          </span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏈嶅姟鍗曞悓姝ユ椂闂�">
+          <span v-if="taskDetail.emergencyInfo.syncTime">{{ parseTime(taskDetail.emergencyInfo.syncTime) }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="鏈嶅姟鍗曞悓姝ラ敊璇�" :span="1">
+          <span v-if="taskDetail.emergencyInfo.syncErrorMsg" style="color: #F56C6C;">{{ taskDetail.emergencyInfo.syncErrorMsg }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="璋冨害鍗曞悓姝ョ姸鎬�">
+          <el-tag v-if="taskDetail.emergencyInfo.dispatchSyncStatus === 0" type="info" size="small">
+            <i class="el-icon-warning"></i> 鏈悓姝�
+          </el-tag>
+          <el-tag v-else-if="taskDetail.emergencyInfo.dispatchSyncStatus === 1" type="warning" size="small">
+            <i class="el-icon-loading"></i> 鍚屾涓�
+          </el-tag>
+          <el-tag v-else-if="taskDetail.emergencyInfo.dispatchSyncStatus === 2" type="success" size="small">
+            <i class="el-icon-success"></i> 鍚屾鎴愬姛
+          </el-tag>
+          <el-tag v-else-if="taskDetail.emergencyInfo.dispatchSyncStatus === 3" type="danger" size="small">
+            <i class="el-icon-error"></i> 鍚屾澶辫触
+          </el-tag>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="璋冨害鍗曞彿">
+          <span v-if="taskDetail.emergencyInfo.legacyDispatchOrdId">
+            <el-tag type="primary" size="small">{{ taskDetail.emergencyInfo.legacyDispatchOrdId }}</el-tag>
+          </span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="璋冨害鍗曞悓姝ユ椂闂�">
+          <span v-if="taskDetail.emergencyInfo.dispatchSyncTime">{{ parseTime(taskDetail.emergencyInfo.dispatchSyncTime) }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </el-descriptions-item>
+        <el-descriptions-item label="璋冨害鍗曞悓姝ラ敊璇�" :span="1">
+          <span v-if="taskDetail.emergencyInfo.dispatchSyncErrorMsg" style="color: #F56C6C;">{{ taskDetail.emergencyInfo.dispatchSyncErrorMsg }}</span>
+          <span v-else style="color: #C0C4CC;">--</span>
+        </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 +357,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 +414,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 +678,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