From a062db35a946c65352467a473990548987cd8b9e Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期二, 11 十一月 2025 09:59:25 +0800
Subject: [PATCH] fix:更新登录

---
 app/pages/task/create-emergency.vue |  336 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 227 insertions(+), 109 deletions(-)

diff --git a/app/pages/task/create-emergency.vue b/app/pages/task/create-emergency.vue
index 7d96be1..a5876c9 100644
--- a/app/pages/task/create-emergency.vue
+++ b/app/pages/task/create-emergency.vue
@@ -189,7 +189,10 @@
               :key="hospital.hospId"
               @click="selectHospitalOut(hospital)"
             >
-              <view class="hospital-name">{{ hospital.hospName }}</view>
+              <view class="hospital-name">
+                {{ hospital.hospName }}
+                <text class="hospital-short" v-if="hospital.hospShort">{{ hospital.hospShort }}</text>
+              </view>
               <view class="hospital-address">{{ buildFullAddress(hospital) }}</view>
             </view>
           </view>
@@ -198,12 +201,21 @@
       
       <view class="form-item">
         <view class="form-label required">绉戝</view>
-        <picker mode="selector" :range="departmentOptions" range-key="text" @change="onHospitalOutDepartmentChange">
+        <picker 
+          v-if="taskForm.hospitalOut.name !== '瀹朵腑'"
+          mode="selector" 
+          :range="departmentOptions" 
+          range-key="text" 
+          @change="onHospitalOutDepartmentChange"
+        >
           <view class="form-input picker-input">
             {{ taskForm.hospitalOut.department || '璇烽�夋嫨绉戝' }}
             <uni-icons type="arrowright" size="16" color="#999"></uni-icons>
           </view>
         </picker>
+        <view v-else class="form-input picker-input disabled">
+          鍏跺畠
+        </view>
       </view>
       
       <view class="form-item">
@@ -259,7 +271,10 @@
               :key="hospital.hospId"
               @click="selectHospitalIn(hospital)"
             >
-              <view class="hospital-name">{{ hospital.hospName }}</view>
+              <view class="hospital-name">
+                {{ hospital.hospName }}
+                <text class="hospital-short" v-if="hospital.hospShort">{{ hospital.hospShort }}</text>
+              </view>
               <view class="hospital-address">{{ buildFullAddress(hospital) }}</view>
             </view>
           </view>
@@ -268,12 +283,21 @@
       
       <view class="form-item">
         <view class="form-label required">绉戝</view>
-        <picker mode="selector" :range="departmentOptions" range-key="text" @change="onHospitalInDepartmentChange">
+        <picker 
+          v-if="taskForm.hospitalIn.name !== '瀹朵腑'"
+          mode="selector" 
+          :range="departmentOptions" 
+          range-key="text" 
+          @change="onHospitalInDepartmentChange"
+        >
           <view class="form-input picker-input">
             {{ taskForm.hospitalIn.department || '璇烽�夋嫨绉戝' }}
             <uni-icons type="arrowright" size="16" color="#999"></uni-icons>
           </view>
         </picker>
+        <view v-else class="form-input picker-input disabled">
+          鍏跺畠
+        </view>
       </view>
       
       <view class="form-item">
@@ -318,6 +342,7 @@
           type="digit" 
           placeholder="璇疯緭鍏ヨ浆杩愬叕閲屾暟" 
           v-model="taskForm.transferDistance"
+          @blur="onDistanceChange"
         />
       </view>
       
@@ -482,9 +507,10 @@
 import { addTask } from "@/api/task"
 import { listAvailableVehicles, getUserBoundVehicle } from "@/api/vehicle"
 import { calculateDistance, baiduDistanceByAddress, baiduPlaceSuggestion } from "@/api/map"
-import { searchHospitals, getFrequentOutHospitals, getFrequentInHospitals } from "@/api/hospital"
-import { listUser } from "@/api/system/user"
+import { searchHospitals, getFrequentOutHospitals, getFrequentInHospitals, searchHospitalsByDeptRegion } from "@/api/hospital"
+import { listBranchUsers } from "@/api/system/user"
 import { searchIcd10 } from "@/api/icd10"
+import { calculateTransferPrice } from "@/api/price"
 
 import { getDicts } from "@/api/dict"
 import { getServiceOrdAreaTypes, getServiceOrderTypes, getHospitalDepartments } from "@/api/dictionary"
@@ -696,11 +722,14 @@
       this.selectedOrganizationServiceOrderClass = selected.serviceOrderClass || '' // 淇濆瓨鏈嶅姟鍗曠紪鐮�
       // 浠庡綊灞炴満鏋勪腑鎻愬彇鍦板煙鍏抽敭璇嶏紙鍘婚櫎鈥滃垎鍏徃鈥濆悗缂�锛�
       // 渚嬪锛氣�滃箍宸炲垎鍏徃鈥� -> 鈥滃箍宸炩��
-      this.selectedRegion = selected.deptName.replace(/鍒嗗叕鍙�$/g, '').trim()
+      //濡傛灉鍑虹幇骞垮窞鎬诲叕鍙革紝涔熻鍘婚櫎鈥滄�诲叕鍙糕�濆悗缂�
+      this.selectedRegion = this.replaceRegion(selected.deptName);
       // 閲嶆柊鍔犺浇鍖婚櫌鍒楄〃锛堝甫鍦板煙杩囨护锛�
       this.loadDefaultHospitals()
     },
-    
+    replaceRegion(region){
+		return region.replace(/(鍒嗗叕鍙竱鎬诲叕鍙竱鎬婚儴)$/g, '').trim();
+	},
     // 鍔犺浇鍒嗗叕鍙告暟鎹紙parent_id=100鐨勯儴闂級
     loadBranchCompanies() {
       listBranchCompany().then(response => {
@@ -720,7 +749,7 @@
             this.selectedOrganizationId = this.organizationOptions[index].deptId // 淇濆瓨閮ㄩ棬ID
             this.selectedOrganizationServiceOrderClass = this.organizationOptions[index].serviceOrderClass || '' // 淇濆瓨鏈嶅姟鍗曠紪鐮�
             // 鎻愬彇鍦板煙鍏抽敭璇�
-            this.selectedRegion = this.selectedOrganization.replace(/鍒嗗叕鍙�$/g, '').trim()
+            this.selectedRegion =this.replaceRegion(this.selectedOrganization);
             console.log('榛樿閫変腑褰掑睘鏈烘瀯:', this.selectedOrganization, '閮ㄩ棬ID:', this.selectedOrganizationId, '鏈嶅姟鍗曠紪鐮�:', this.selectedOrganizationServiceOrderClass, '鍦板煙:', this.selectedRegion)
             // 鍔犺浇鍖婚櫌鍒楄〃锛堝甫鍦板煙杩囨护锛�
             this.loadDefaultHospitals()
@@ -783,7 +812,7 @@
       switch(staffType){
         case "nurse":
           return "鎶ゅ+";
-        case "doctor":
+        case "doctor":          
           return "鍖荤敓";
         case "driver":
           return "鍙告満";
@@ -841,57 +870,17 @@
     
     // 鍔犺浇榛樿鍖婚櫌鍒楄〃锛堝父鐢ㄥ尰闄級
     loadDefaultHospitals() {
-      // 妫�鏌ユ槸鍚︽湁鏈嶅姟鍗曠紪鐮�
-      if (!this.selectedOrganizationServiceOrderClass) {
-        console.warn('鏈壘鍒版湇鍔″崟缂栫爜锛屾棤娉曞姞杞藉父鐢ㄥ尰闄�')
-        // 濡傛灉娌℃湁鏈嶅姟鍗曠紪鐮侊紝闄嶇骇涓烘櫘閫氭悳绱紙鎸夊湴鍩熻繃婊わ級
-        this.loadDefaultHospitalsByRegion()
+      // 妫�鏌ユ槸鍚︽湁褰掑睘鏈烘瀯ID
+      if (!this.selectedOrganizationId) {
+        console.warn('鏈�夋嫨褰掑睘鏈烘瀯锛屾棤娉曞姞杞藉尰闄㈠垪琛�')
         return
       }
       
-      // 杞嚭鍖婚櫌锛氬姞杞藉綋鍓嶅垎鍏徃鐨勫父鐢ㄨ浆鍑哄尰闄�
-      getFrequentOutHospitals(this.selectedOrganizationServiceOrderClass, this.selectedRegion).then(response => {
-        this.hospitalOutResults = response.data || []
-        console.log('鍔犺浇甯哥敤杞嚭鍖婚櫌锛�', this.selectedOrganizationServiceOrderClass, '鍦板煙:', this.selectedRegion, '鏁伴噺:', this.hospitalOutResults.length)
-        
-        // 濡傛灉娌℃湁甯哥敤鍖婚櫌锛岄檷绾т负鏅�氭悳绱�
-        if (this.hospitalOutResults.length === 0) {
-          console.log('鏈壘鍒板父鐢ㄨ浆鍑哄尰闄紝闄嶇骇涓哄湴鍩熸悳绱�')
-          searchHospitals('', this.selectedRegion).then(res => {
-            this.hospitalOutResults = res.data || []
-          })
-        }
-      }).catch(error => {
-        console.error('鍔犺浇甯哥敤杞嚭鍖婚櫌澶辫触:', error)
-        // 澶辫触鍚庨檷绾т负鏅�氭悳绱�
-        searchHospitals('', this.selectedRegion).then(res => {
-          this.hospitalOutResults = res.data || []
-        })
-      })
+      // 杞嚭鍖婚櫌锛氭牴鎹綊灞炴満鏋勭殑鍖哄煙閰嶇疆鍔犺浇
+      this.loadHospitalsByDeptRegion('out')
       
-      // 杞叆鍖婚櫌锛氬姞杞藉綋鍓嶅垎鍏徃鐨勫父鐢ㄨ浆鍏ュ尰闄紙鏈湴鍖哄煙浼樺厛锛�
-      getFrequentInHospitals(this.selectedOrganizationServiceOrderClass, '').then(response => {
-        const allHospitals = response.data || []
-        // 灏嗗尰闄㈡寜鍦板煙鎺掑簭锛氭湰鍦板尯鍩熶紭鍏�
-        this.hospitalInResults = this.sortHospitalsByRegion(allHospitals)
-        console.log('鍔犺浇甯哥敤杞叆鍖婚櫌锛�', this.selectedOrganizationServiceOrderClass, '鏁伴噺:', this.hospitalInResults.length)
-        
-        // 濡傛灉娌℃湁甯哥敤鍖婚櫌锛岄檷绾т负鏅�氭悳绱�
-        if (this.hospitalInResults.length === 0) {
-          console.log('鏈壘鍒板父鐢ㄨ浆鍏ュ尰闄紝闄嶇骇涓哄叏閮ㄥ尰闄�')
-          searchHospitals('', '').then(res => {
-            const allHospitals = res.data || []
-            this.hospitalInResults = this.sortHospitalsByRegion(allHospitals)
-          })
-        }
-      }).catch(error => {
-        console.error('鍔犺浇甯哥敤杞叆鍖婚櫌澶辫触:', error)
-        // 澶辫触鍚庨檷绾т负鏅�氭悳绱�
-        searchHospitals('', '').then(res => {
-          const allHospitals = res.data || []
-          this.hospitalInResults = this.sortHospitalsByRegion(allHospitals)
-        })
-      })
+      // 杞叆鍖婚櫌锛氭牴鎹綊灞炴満鏋勭殑鍖哄煙閰嶇疆鍔犺浇
+      this.loadHospitalsByDeptRegion('in')
     },
     
     // 闄嶇骇鍔犺浇鍖婚櫌锛堟寜鍦板煙杩囨护锛�
@@ -917,22 +906,57 @@
       })
     },
     
-    // 鎸夊湴鍩熸帓搴忓尰闄細鏈湴鍖哄煙浼樺厛
+    // 鏍规嵁閮ㄩ棬鍖哄煙閰嶇疆鍔犺浇鍖婚櫌
+    loadHospitalsByDeptRegion(type) {
+      const deptId = this.selectedOrganizationId
+      if (!deptId) {
+        console.warn('閮ㄩ棬ID涓嶅瓨鍦�')
+        return
+      }
+      
+      // 璋冪敤鍚庣鎺ュ彛锛屾牴鎹儴闂ㄧ殑鍖哄煙閰嶇疆鏌ヨ鍖婚櫌
+      searchHospitalsByDeptRegion('', deptId).then(response => {
+        const hospitals = response.data || []
+        
+        if (type === 'out') {
+          this.hospitalOutResults = hospitals
+          console.log('鍔犺浇杞嚭鍖婚櫌锛堝尯鍩熼厤缃級锛氶儴闂�', deptId, '鏁伴噺:', this.hospitalOutResults.length)
+        } else if (type === 'in') {
+          // 杞叆鍖婚櫌鎸夊湴鍩熸帓搴�
+          this.hospitalInResults = this.sortHospitalsByRegion(hospitals)
+          console.log('鍔犺浇杞叆鍖婚櫌锛堝尯鍩熼厤缃級锛氶儴闂�', deptId, '鏁伴噺:', this.hospitalInResults.length)
+        }
+      }).catch(error => {
+        console.error('鍔犺浇鍖婚櫌澶辫触锛堝尯鍩熼厤缃級:', error)
+        // 澶辫触鍚庨檷绾т负鏅�氭悳绱�
+        this.loadDefaultHospitalsByRegion()
+      })
+    },
+    
+    // 鎸夊湴鍩熸帓搴忓尰闄細鏈湴鍖哄煙浼樺厛锛�"瀹朵腑"濮嬬粓鍦ㄦ渶鍓嶉潰
     sortHospitalsByRegion(hospitals) {
-      if (!this.selectedRegion || !hospitals || hospitals.length === 0) {
+      if (!hospitals || hospitals.length === 0) {
         return hospitals
       }
       
       const region = this.selectedRegion
-      const localHospitals = []
-      const otherHospitals = []
+      const homeHospital = []  // "瀹朵腑"
+      const localHospitals = []  // 鏈湴鍖婚櫌
+      const otherHospitals = []  // 鍏朵粬鍖婚櫌
       
       hospitals.forEach(hospital => {
+        // "瀹朵腑"浼樺厛澶勭悊锛屾斁鍦ㄦ渶鍓嶉潰
+        if (hospital.hospName === '瀹朵腑') {
+          homeHospital.push(hospital)
+          return
+        }
+        
         // 鍒ゆ柇鍖婚櫌鏄惁鍦ㄦ湰鍦板尯鍩燂紙鐪併�佸競銆佸尯浠讳竴鍖呭惈鍦板煙鍏抽敭璇嶏級
-        const isLocal = 
+        const isLocal = region && (
           (hospital.hopsProvince && hospital.hopsProvince.includes(region)) ||
           (hospital.hopsCity && hospital.hopsCity.includes(region)) ||
           (hospital.hopsArea && hospital.hopsArea.includes(region))
+        )
         
         if (isLocal) {
           localHospitals.push(hospital)
@@ -941,8 +965,8 @@
         }
       })
       
-      // 鏈湴鍖婚櫌鍦ㄥ墠锛屽叾浠栧尰闄㈠湪鍚�
-      return [...localHospitals, ...otherHospitals]
+      // "瀹朵腑"鍦ㄦ渶鍓嶏紝鏈湴鍖婚櫌鍏舵锛屽叾浠栧尰闄㈠湪鍚�
+      return [...homeHospital, ...localHospitals, ...otherHospitals]
     },
     
     // 杞嚭鍖婚櫌杈撳叆妗嗚幏寰楃劍鐐�
@@ -958,23 +982,28 @@
         // 鍚﹀垯閲嶆柊鍔犺浇甯哥敤鍖婚櫌
         if (this.selectedOrganizationServiceOrderClass) {
           getFrequentOutHospitals(this.selectedOrganizationServiceOrderClass, this.selectedRegion).then(response => {
-            this.hospitalOutResults = response.data || []
+            const hospitals = response.data || []
+            // 纭繚"瀹朵腑"鍦ㄦ渶鍓嶉潰
+            this.hospitalOutResults = this.sortHospitalsByRegion(hospitals)
             // 濡傛灉娌℃湁甯哥敤鍖婚櫌锛岄檷绾т负鏅�氭悳绱�
             if (this.hospitalOutResults.length === 0) {
-              searchHospitals('', this.selectedRegion).then(res => {
-                this.hospitalOutResults = res.data || []
+              searchHospitals('', this.selectedOrganizationId).then(res => {
+                const hospitals = res.data || []
+                this.hospitalOutResults = this.sortHospitalsByRegion(hospitals)
               })
             }
           }).catch(error => {
             console.error('鍔犺浇甯哥敤杞嚭鍖婚櫌澶辫触:', error)
-            searchHospitals('', this.selectedRegion).then(res => {
-              this.hospitalOutResults = res.data || []
+            searchHospitals('', this.selectedOrganizationId).then(res => {
+              const hospitals = res.data || []
+              this.hospitalOutResults = this.sortHospitalsByRegion(hospitals)
             })
           })
         } else {
           // 娌℃湁鏈嶅姟鍗曠紪鐮侊紝浣跨敤鏅�氭悳绱�
-          searchHospitals('', this.selectedRegion).then(response => {
-            this.hospitalOutResults = response.data || []
+          searchHospitals('', this.selectedOrganizationId).then(response => {
+            const hospitals = response.data || []
+            this.hospitalOutResults = this.sortHospitalsByRegion(hospitals)
           }).catch(error => {
             console.error('鍔犺浇杞嚭鍖婚櫌澶辫触:', error)
             this.hospitalOutResults = []
@@ -994,10 +1023,12 @@
         clearTimeout(this.searchTimer)
       }
       
-      // 濡傛灉鍏抽敭璇嶄负绌猴紝鍙樉绀哄綋鍓嶅尯鍩熺殑鍖婚櫌
+      // 濡傛灉鍏抽敭璇嶄负绌猴紝鏄剧ず褰撳墠鍖哄煙鐨勫尰闄�
       if (!keyword || keyword.trim() === '') {
-        searchHospitals('', this.selectedRegion).then(response => {
-          this.hospitalOutResults = response.data || []
+        searchHospitals('', this.selectedOrganizationId).then(response => {
+          const hospitals = response.data || []
+          // 纭繚"瀹朵腑"鍦ㄦ渶鍓嶉潰
+          this.hospitalOutResults = this.sortHospitalsByRegion(hospitals)
         }).catch(error => {
           console.error('鍔犺浇杞嚭鍖婚櫌澶辫触:', error)
           this.hospitalOutResults = []
@@ -1014,11 +1045,13 @@
     
     // 鎼滅储杞嚭鍖婚櫌锛堜粎闄愬綋鍓嶅尯鍩燂級
     searchHospitalOut(keyword) {
-      // 浼犲叆鍏抽敭璇嶅拰鍦板煙杩囨护锛屽彧鎼滅储褰撳墠鍖哄煙鐨勫尰闄�
-      searchHospitals(keyword, this.selectedRegion).then(response => {
-        this.hospitalOutResults = response.data || []
+      // 浼犲叆鍏抽敭璇嶅拰閮ㄩ棬ID锛屽彧鎼滅储褰撳墠鍖哄煙鐨勫尰闄�
+      searchHospitals(keyword, this.selectedOrganizationId).then(response => {
+        const hospitals = response.data || []
+        // 纭繚"瀹朵腑"鍦ㄦ渶鍓嶉潰
+        this.hospitalOutResults = this.sortHospitalsByRegion(hospitals)
         this.showHospitalOutResults = true
-        console.log('鎼滅储杞嚭鍖婚櫌:', keyword, '鍖哄煙:', this.selectedRegion, '缁撴灉鏁�:', this.hospitalOutResults.length)
+        console.log('鎼滅储杞嚭鍖婚櫌:', keyword, '閮ㄩ棬ID:', this.selectedOrganizationId, '缁撴灉鏁�:', this.hospitalOutResults.length)
       }).catch(error => {
         console.error('鎼滅储杞嚭鍖婚櫌澶辫触:', error)
         this.hospitalOutResults = []
@@ -1032,10 +1065,18 @@
       // 濡傛灉閫夋嫨鐨勬槸"瀹朵腑"锛屾竻绌哄湴鍧�璁╃敤鎴锋墜鍔ㄨ緭鍏ワ紱鍚﹀垯鑷姩濉厖鍦板潃
       if (hospital.hospName === '瀹朵腑') {
         this.taskForm.hospitalOut.address = ''
+        // 绉戝鑷姩璁剧疆涓�"鍏跺畠"
+        this.taskForm.hospitalOut.department = '鍏跺畠'
+        this.taskForm.hospitalOut.departmentId = null
       } else {
         // 鍚堝苟鐪佸競鍖� + 璇︾粏鍦板潃
         const fullAddress = this.buildFullAddress(hospital)
         this.taskForm.hospitalOut.address = fullAddress
+        // 娓呯┖绉戝锛岃鐢ㄦ埛閲嶆柊閫夋嫨
+        if (this.taskForm.hospitalOut.department === '鍏跺畠') {
+          this.taskForm.hospitalOut.department = ''
+          this.taskForm.hospitalOut.departmentId = null
+        }
       }
       this.hospitalOutSearchKeyword = hospital.hospName
       this.showHospitalOutResults = false
@@ -1074,21 +1115,21 @@
             this.hospitalInResults = this.sortHospitalsByRegion(allHospitals)
             // 濡傛灉娌℃湁甯哥敤鍖婚櫌锛岄檷绾т负鏅�氭悳绱�
             if (this.hospitalInResults.length === 0) {
-              searchHospitals('', '').then(res => {
+              searchHospitals('', null).then(res => {
                 const allHospitals = res.data || []
                 this.hospitalInResults = this.sortHospitalsByRegion(allHospitals)
               })
             }
           }).catch(error => {
             console.error('鍔犺浇甯哥敤杞叆鍖婚櫌澶辫触:', error)
-            searchHospitals('', '').then(res => {
+            searchHospitals('', null).then(res => {
               const allHospitals = res.data || []
               this.hospitalInResults = this.sortHospitalsByRegion(allHospitals)
             })
           })
         } else {
           // 娌℃湁鏈嶅姟鍗曠紪鐮侊紝浣跨敤鏅�氭悳绱�
-          searchHospitals('', '').then(response => {
+          searchHospitals('', null).then(response => {
             const allHospitals = response.data || []
             // 鎸夊湴鍩熸帓搴忥細鏈湴鍖哄煙浼樺厛
             this.hospitalInResults = this.sortHospitalsByRegion(allHospitals)
@@ -1113,9 +1154,9 @@
       
       // 濡傛灉鍏抽敭璇嶄负绌猴紝鏄剧ず鎵�鏈夊尰闄紙鏈湴鍖哄煙浼樺厛锛�
       if (!keyword || keyword.trim() === '') {
-        searchHospitals('', '').then(response => {
+        searchHospitals('', null).then(response => {
           const allHospitals = response.data || []
-          // 鎸夊湴鍩熸帓搴忥細鏈湴鍖哄煙浼樺厛
+          // 鎸夊湴鍩熸帓搴忥細"瀹朵腑"鏈�鍓嶏紝鏈湴鍖哄煙浼樺厛
           this.hospitalInResults = this.sortHospitalsByRegion(allHospitals)
         }).catch(error => {
           console.error('鍔犺浇杞叆鍖婚櫌澶辫触:', error)
@@ -1133,10 +1174,10 @@
     
     // 鎼滅储杞叆鍖婚櫌锛堜笉闄愬尯鍩燂紝浣嗘湰鍦板尯鍩熶紭鍏堬級
     searchHospitalIn(keyword) {
-      // 浼犲叆鍏抽敭璇嶏紝涓嶄紶鍦板煙杩囨护锛堟悳绱㈡墍鏈夊尯鍩燂級
-      searchHospitals(keyword, '').then(response => {
+      // 浼犲叆鍏抽敭璇嶏紝涓嶄紶閮ㄩ棬ID锛堟悳绱㈡墍鏈夊尯鍩燂級
+      searchHospitals(keyword, null).then(response => {
         const allHospitals = response.data || []
-        // 鎸夊湴鍩熸帓搴忥細鏈湴鍖哄煙浼樺厛
+        // 鎸夊湴鍩熸帓搴忥細"瀹朵腑"鏈�鍓嶏紝鏈湴鍖哄煙浼樺厛
         this.hospitalInResults = this.sortHospitalsByRegion(allHospitals)
         this.showHospitalInResults = true
         console.log('鎼滅储杞叆鍖婚櫌:', keyword, '缁撴灉鏁�:', this.hospitalInResults.length)
@@ -1153,10 +1194,18 @@
       // 濡傛灉閫夋嫨鐨勬槸"瀹朵腑"锛屾竻绌哄湴鍧�璁╃敤鎴锋墜鍔ㄨ緭鍏ワ紱鍚﹀垯鑷姩濉厖鍦板潃
       if (hospital.hospName === '瀹朵腑') {
         this.taskForm.hospitalIn.address = ''
+        // 绉戝鑷姩璁剧疆涓�"鍏跺畠"
+        this.taskForm.hospitalIn.department = '鍏跺畠'
+        this.taskForm.hospitalIn.departmentId = null
       } else {
         // 鍚堝苟鐪佸競鍖� + 璇︾粏鍦板潃
         const fullAddress = this.buildFullAddress(hospital)
         this.taskForm.hospitalIn.address = fullAddress
+        // 娓呯┖绉戝锛岃鐢ㄦ埛閲嶆柊閫夋嫨
+        if (this.taskForm.hospitalIn.department === '鍏跺畠') {
+          this.taskForm.hospitalIn.department = ''
+          this.taskForm.hospitalIn.departmentId = null
+        }
       }
       this.hospitalInSearchKeyword = hospital.hospName
       this.showHospitalInResults = false
@@ -1199,24 +1248,14 @@
     
     // 鍔犺浇褰撳墠鐢ㄦ埛鎵�鍦ㄥ垎鍏徃鐨勬墍鏈変汉鍛�
     loadDeptStaff() {
-      const deptId = this.currentUser.deptId
-      if (!deptId) {
-        console.error('鏃犳硶鑾峰彇褰撳墠鐢ㄦ埛鎵�鍦ㄩ儴闂�')
-        this.$modal.showToast('鏃犳硶鑾峰彇鎵�鍦ㄩ儴闂ㄤ俊鎭�')
-        return
-      }
+      console.log('寮�濮嬪姞杞戒汉鍛樺垪琛�')
       
-      // 鐩存帴鏌ヨ褰撳墠鐢ㄦ埛閮ㄩ棬涓嬬殑鎵�鏈夌敤鎴�
-      // 鍚庣SQL浼氳嚜鍔ㄥ鐞嗭細濡傛灉浼犲叆鐨勬槸瀛愰儴闂紝浼氭煡鎵惧叾鎵�灞炵殑鍒嗗叕鍙稿強鍏舵墍鏈夊瓙閮ㄩ棬鐨勭敤鎴�
-      const queryParams = {
-        deptId: deptId,
-        status: '0', // 鍙煡璇㈡甯哥姸鎬佺殑鐢ㄦ埛
-        pageNum: 1,
-        pageSize: 10000 // 璁剧疆瓒冲澶х殑椤甸潰澶у皬锛岃幏鍙栨墍鏈夌敤鎴�
-      }
-      
-      listUser(queryParams).then(response => {
-        const userList = response.rows || response.data || []
+      // 璋冪敤鏂版帴鍙o紝鑷姩鏍规嵁褰撳墠鐢ㄦ埛鐨刼aOrderClass鑾峰彇鍒嗗叕鍙镐笅鐨勭敤鎴�
+      listBranchUsers().then(response => {
+        console.log('浜哄憳鍒楄〃API鍝嶅簲:', response)
+        const userList = response.data || []
+        console.log('瑙f瀽鍑虹殑鐢ㄦ埛鍒楄〃:', userList, '鏁伴噺:', userList.length)
+        
         this.allStaffList = userList.map(user => ({
           userId: user.userId,
           nickName: user.nickName,
@@ -1227,6 +1266,8 @@
           // 鏍规嵁宀椾綅鍚嶇О鎴栬鑹插悕绉板垽鏂被鍨�
           type: this.getUserType(user)
         }))
+        
+        console.log('澶勭悊鍚庣殑浜哄憳鍒楄〃:', this.allStaffList, '鏁伴噺:', this.allStaffList.length)
         
         // 鍒濆鍖栬繃婊ゅ垪琛�
         this.filterStaffList()
@@ -1246,14 +1287,18 @@
       if (postName.includes('鍙告満') || roleName.includes('鍙告満') || deptName.includes('杞﹂槦') || deptName.includes('鍙告満')) {
         return 'driver'
       }
-      // 鍒ゆ柇鏄惁涓哄尰鐢�
-      if (postName.includes('鍖荤敓') || roleName.includes('鍖荤敓') || deptName.includes('鍖荤敓')) {
-        return 'doctor'
-      }
       // 鍒ゆ柇鏄惁涓烘姢澹�
       if (postName.includes('鎶ゅ+') || roleName.includes('鎶ゅ+') || deptName.includes('鎶ゅ+')) {
         return 'nurse'
       }
+      // 鍒ゆ柇鏄惁涓哄尰鐢�
+      if (postName.includes('鍖荤敓') || roleName.includes('鍖荤敓') || deptName.includes('鍖荤敓') ) {
+        return 'doctor'
+      }
+      if( deptName.includes("鍖绘姢")){
+        return 'doctor'
+      }
+      
       // 鍏朵粬绫诲瀷锛岄粯璁や负鍙告満
       return 'driver'
     },
@@ -1285,6 +1330,7 @@
     
     // 杩囨护浜哄憳鍒楄〃
     filterStaffList() {
+      console.log('寮�濮嬭繃婊や汉鍛樺垪琛紝鍘熷鏁伴噺:', this.allStaffList.length)
       let list = [...this.allStaffList]
       
       // 鎸夌被鍨嬭繃婊�
@@ -1296,6 +1342,8 @@
         list = list.filter(staff => staff.type === 'nurse')
       }
       
+      console.log('鎸夌被鍨嬭繃婊ゅ悗:', this.staffFilterType, '鏁伴噺:', list.length)
+      
       // 鎸夊叧閿瘝鎼滅储
       if (this.staffSearchKeyword && this.staffSearchKeyword.trim() !== '') {
         const keyword = this.staffSearchKeyword.trim().toLowerCase()
@@ -1305,7 +1353,10 @@
         })
       }
       
+      console.log('鎸夊叧閿瘝杩囨护鍚庯紝鏁伴噺:', list.length)
+      
       this.filteredStaffList = list
+      console.log('鏈�缁堣繃婊ょ粨鏋�:', this.filteredStaffList)
     },
     
     // 鍒囨崲浜哄憳閫変腑鐘舵��
@@ -1543,6 +1594,9 @@
             
             console.log('璺濈璁$畻鎴愬姛:', distanceInKm, 'km')
             this.$modal.showToast(`璺濈: ${distanceInKm}鍏噷`)
+            
+            // 璺濈璁$畻鎴愬姛鍚庯紝鑷姩璁$畻鎴愪氦浠�
+            this.calculatePrice()
           } else {
             console.error('璺濈璁$畻澶辫触:', response.msg)
             this.$modal.showToast('璺濈璁$畻澶辫触,璇锋墜鍔ㄨ緭鍏�')
@@ -1553,6 +1607,52 @@
           console.error('璺濈璁$畻澶辫触:', error)
           this.$modal.showToast('璺濈璁$畻澶辫触,璇锋墜鍔ㄨ緭鍏�')
         })
+    },
+    
+    // 璺濈杈撳叆妗嗗け鐒︽椂瑙﹀彂鎴愪氦浠疯绠�
+    onDistanceChange() {
+      this.calculatePrice()
+    },
+    
+    // 璁$畻鎴愪氦浠�
+    calculatePrice() {
+      const fromAddress = this.taskForm.hospitalOut.address
+      const toAddress = this.taskForm.hospitalIn.address
+      const distance = this.taskForm.transferDistance
+      
+      // 濡傛灉鍦板潃鎴栬窛绂讳笉瀹屾暣锛屼笉杩涜璁$畻
+      if (!fromAddress || !toAddress || !distance || parseFloat(distance) <= 0) {
+        console.log('鍦板潃鎴栬窛绂讳俊鎭笉瀹屾暣锛岃烦杩囨垚浜や环璁$畻')
+        return
+      }
+      
+      console.log('寮�濮嬭绠楁垚浜や环:', fromAddress, '->', toAddress, '璺濈:', distance)
+      
+      // 璋冪敤鎴愪氦浠疯绠楁帴鍙�
+      calculateTransferPrice({
+        fromAddress: fromAddress,
+        toAddress: toAddress,
+        distance: parseFloat(distance),
+        region: this.selectedRegion || ''
+      }).then(response => {
+        if (response.code === 200 && response.data) {
+          const price = response.data.price
+          
+          // 鍙湁褰撹繑鍥炵殑浠锋牸澶т簬0鏃讹紝鎵嶈嚜鍔ㄥ~鍏呮垚浜や环
+          if (price && price > 0) {
+            this.taskForm.price = price.toFixed(2)
+            console.log('鎴愪氦浠疯绠楁垚鍔�:', price)
+            this.$modal.showToast(`鎴愪氦浠�: 楼${price.toFixed(2)}`)
+          } else {
+            console.log('鎴愪氦浠蜂负0锛屼笉鑷姩濉厖')
+          }
+        } else {
+          console.log('鎴愪氦浠疯绠楀け璐ワ紝淇濇寔鎵嬪姩杈撳叆')
+        }
+      }).catch(error => {
+        console.error('鎴愪氦浠疯绠楀け璐�:', error)
+        // 璁$畻澶辫触鏃朵笉鎻愮ず鐢ㄦ埛锛屽厑璁哥敤鎴锋墜鍔ㄨ緭鍏�
+      })
     },
     
     // ==================== 鐥呮儏閫夋嫨鐩稿叧鏂规硶 ====================
@@ -1831,11 +1931,18 @@
         addTask(submitData).then(response => {
           this.loading = false
           this.$modal.showToast('浠诲姟鍒涘缓鎴愬姛')
+          
+          // 寤惰繜璺宠浆锛岃鐢ㄦ埛鐪嬪埌鎴愬姛鎻愮ず
           setTimeout(() => {
+            // 璺宠浆鍒颁换鍔″垪琛ㄥ苟瑙﹀彂鍒锋柊
             uni.switchTab({
-              url: '/pages/task/index'
+              url: '/pages/task/index',
+              success: () => {
+                // 浣跨敤浜嬩欢鎬荤嚎閫氱煡浠诲姟鍒楄〃椤甸潰鍒锋柊
+                uni.$emit('refreshTaskList')
+              }
             })
-          }, 1500)
+          }, 1000)
         }).catch(error => {
           this.loading = false
           console.error('浠诲姟鍒涘缓澶辫触:', error)
@@ -1898,6 +2005,9 @@
             
             console.log('璺濈璁$畻鎴愬姛:', distanceInKm, 'km')
             // this.$modal.showToast(`璺濈璁$畻鎴愬姛: ${distanceInKm}鍏噷`)
+            
+            // 璺濈璁$畻鎴愬姛鍚庯紝鑷姩璁$畻鎴愪氦浠�
+            this.calculatePrice()
           } else {
             console.error('璺濈璁$畻澶辫触:', response.msg)
             this.$modal.showToast('璺濈璁$畻澶辫触锛岃鎵嬪姩杈撳叆')
@@ -2006,6 +2116,14 @@
               color: #333;
               font-weight: bold;
               margin-bottom: 8rpx;
+              
+              .hospital-short {
+                display: block;
+                font-size: 22rpx;
+                color: #999;
+                font-weight: normal;
+                margin-top: 6rpx;
+              }
             }
             
             .hospital-address {

--
Gitblit v1.9.1