From 06a17c236d4cb9b8da75fce43af938cb7ea510bf Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期一, 15 十二月 2025 09:50:12 +0800
Subject: [PATCH] feat: 优化企业微信判断,优化gps分断处理

---
 app/pagesTask/edit-emergency.vue |  135 ++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 121 insertions(+), 14 deletions(-)

diff --git a/app/pagesTask/edit-emergency.vue b/app/pagesTask/edit-emergency.vue
index cb0d7dc..4790118 100644
--- a/app/pagesTask/edit-emergency.vue
+++ b/app/pagesTask/edit-emergency.vue
@@ -19,7 +19,8 @@
       />
       
       <view class="form-item">
-        <OrganizationSelector 
+        <OrganizationSelector
+          ref="organizationSelector"
           v-model="selectedOrganizationId"
           :required="true"
           :auto-select-user-dept="false"
@@ -53,6 +54,7 @@
         :required="false"
         :auto-add-current-user="false"
         :current-user-removable="true"
+        :branch-dept-ids="allOrganizationIds"
         @change="onStaffChange"
       />
       
@@ -117,25 +119,61 @@
       
       <view class="form-section-title">杞嚭鍖婚櫌淇℃伅</view>
       <HospitalSelector
-        label="鍖洪櫌鍚嶇О"
+        label="鍖婚櫌鍚嶇О"
         address-label="杞嚭鍦板潃"
         :required="true"
+        :show-department="false"
         v-model="taskForm.hospitalOut"
         :dept-id="selectedOrganizationId"
         @change="onHospitalOutChange"
         @address-selected="onHospitalOutAddressSelected"
       />
+      <DepartmentSelector
+        label="杞嚭绉戝"
+        :required="true"
+        v-model="taskForm.hospitalOut.department"
+        :department-id="taskForm.hospitalOut.departmentId"
+        :is-home="taskForm.hospitalOut.name === '瀹朵腑'"
+        @change="onHospitalOutDepartmentChange"
+      />
+      
+      <view class="form-item">
+        <view class="form-label">搴婂彿</view>
+        <input 
+          class="form-input" 
+          placeholder="璇疯緭鍏ュ簥鍙�" 
+          v-model="taskForm.hospitalOut.bedNumber"
+        />
+      </view>
       
       <view class="form-section-title">杞叆鍖婚櫌淇℃伅</view>
       <HospitalSelector
         label="鍖婚櫌鍚嶇О"
         address-label="杞叆鍦板潃"
         :required="true"
+        :show-department="false"
         v-model="taskForm.hospitalIn"
         :dept-id="selectedOrganizationId"
         @change="onHospitalInChange"
         @address-selected="onHospitalInAddressSelected"
       />
+      <DepartmentSelector
+        label="杞叆绉戝"
+        :required="true"
+        v-model="taskForm.hospitalIn.department"
+        :department-id="taskForm.hospitalIn.departmentId"
+        :is-home="taskForm.hospitalIn.name === '瀹朵腑'"
+        @change="onHospitalInDepartmentChange"
+      />
+      
+      <view class="form-item">
+        <view class="form-label">搴婂彿</view>
+        <input 
+          class="form-input" 
+          placeholder="璇疯緭鍏ュ簥鍙�" 
+          v-model="taskForm.hospitalIn.bedNumber"
+        />
+      </view>
       
       <view class="form-item">
         <view class="form-label">杞繍璺濈</view>
@@ -202,6 +240,7 @@
 import DiseaseSelector from './components/DiseaseSelector.vue'
 import DepartureSelector from './components/DepartureSelector.vue'
 import StaffSelector from './components/StaffSelector.vue'
+import DepartmentSelector from './components/DepartmentSelector.vue'
 import distanceCalculator from '@/mixins/distanceCalculator.js'
 
 export default {
@@ -214,7 +253,8 @@
     HospitalSelector,
     DiseaseSelector,
     DepartureSelector,
-    StaffSelector
+    StaffSelector,
+    DepartmentSelector
   },
   mixins: [distanceCalculator],
   data() {
@@ -224,6 +264,7 @@
       taskDetail: null,
       selectedVehicleId: null,
       selectedOrganizationId: null,
+      allOrganizationIds: [], // 鎵�鏈夊彲閫夋満鏋処D鏁扮粍
       selectedRegion: '',
       mapSelectorType: '',
       // 鎵╁睍 addressCoordinates 鏀寔澶氱閿悕
@@ -292,6 +333,11 @@
       }, 1500)
     }
   },
+  
+  mounted() {
+    // 椤甸潰鎸傝浇鍚庡姞杞芥墍鏈夋満鏋処D
+    this.loadAllOrganizationIds()
+  },
   methods: {
     // 鍔犺浇浠诲姟璇︽儏
     loadTaskDetail() {
@@ -320,8 +366,9 @@
           const info = this.taskDetail.emergencyInfo
           console.log('杞繍浠诲姟淇℃伅:', info)
           
-          // 杞繍鏃堕棿
-          this.taskForm.transferTime = this.taskDetail.plannedStartTime || ''
+          // 杞繍鏃堕棿锛堜慨澶嶏細1900骞寸殑鏃ユ湡鏄剧ず涓虹┖锛�
+          const transferTime = this.taskDetail.plannedStartTime || ''
+          this.taskForm.transferTime = transferTime && transferTime.startsWith('1900') ? '' : transferTime
           
           // 鎮h�呬俊鎭�
           this.taskForm.patient.contact = info.patientContact || ''
@@ -376,7 +423,8 @@
         } else {
           console.warn('浠诲姟璇︽儏涓病鏈塭mergencyInfo瀛楁锛屽皾璇曚粠涓诲璞¤幏鍙栨暟鎹�')
           // 鍏煎澶勭悊锛氬鏋渆mergencyInfo涓嶅瓨鍦紝灏濊瘯浠庝富瀵硅薄鑾峰彇
-          this.taskForm.transferTime = this.taskDetail.plannedStartTime || ''
+          const transferTime = this.taskDetail.plannedStartTime || ''
+          this.taskForm.transferTime = transferTime && transferTime.startsWith('1900') ? '' : transferTime
           this.taskForm.transferDistance = this.taskDetail.estimatedDistance ? String(this.taskDetail.estimatedDistance) : ''
         }
         
@@ -421,16 +469,24 @@
           console.log('璁剧疆鐩爣鍦板潗鏍�:', this.taskDetail.destinationLongitude, this.taskDetail.destinationLatitude)
         }
         
-        // 璁剧疆鎵ц浜哄憳锛堜慨澶嶏細纭繚 assignees 涓嶄负 null锛�
+        // 璁剧疆鎵ц浜哄憳锛堜慨澶嶏細纭繚 assignees 涓嶄负 null锛屽苟姝g‘鏄犲皠瀛楁锛�
         if (this.taskDetail.assignees && Array.isArray(this.taskDetail.assignees) && this.taskDetail.assignees.length > 0) {
           console.log('鍘熷鎵ц浜哄憳鏁版嵁:', this.taskDetail.assignees)
-          this.selectedStaff = this.taskDetail.assignees.map(assignee => ({
-            userId: assignee.userId,
-            nickName: assignee.userName,
-            type: assignee.userType || 'driver',
-            phonenumber: '',
-            deptName: ''
-          }))
+          this.selectedStaff = this.taskDetail.assignees.map(assignee => {
+            console.log('澶勭悊鎵ц浜哄憳:', assignee)
+            console.log('  - userName:', assignee.userName)
+            console.log('  - nickName:', assignee.nickName)
+            console.log('  - phonenumber:', assignee.phonenumber)
+            console.log('  - phone:', assignee.phone)
+            
+            return {
+              userId: assignee.userId,
+              nickName: assignee.userName || assignee.nickName || '',
+              type: assignee.userType || 'driver',
+              phonenumber: assignee.phonenumber || assignee.phone || '',
+              deptName: assignee.deptName || ''
+            }
+          })
           console.log('澶勭悊鍚庣殑鎵ц浜哄憳鍒楄〃:', this.selectedStaff)
         } else {
           console.warn('浠诲姟娌℃湁鍒嗛厤鎵ц浜哄憳鎴朼ssignees涓虹┖')
@@ -453,6 +509,23 @@
     // 杞﹁締閫夋嫨鍙樺寲
     onVehicleChange(vehicle) {
       console.log('閫変腑杞﹁締:', vehicle)
+    },
+    
+    // 鍔犺浇鎵�鏈夋満鏋処D
+    loadAllOrganizationIds() {
+      // 閫氳繃 OrganizationSelector 缁勪欢鑾峰彇鎵�鏈夋満鏋�
+      const orgSelector = this.$refs.organizationSelector
+      if (orgSelector) {
+        orgSelector.reload().then(organizations => {
+          this.allOrganizationIds = organizations.map(org => org.deptId)
+          console.log('鎵�鏈夋満鏋処D:', this.allOrganizationIds)
+        })
+      } else {
+        // 濡傛灉缁勪欢杩樻湭鎸傝浇,绋嶅悗閲嶈瘯
+        setTimeout(() => {
+          this.loadAllOrganizationIds()
+        }, 100)
+      }
     },
     
     // 褰掑睘鏈烘瀯閫夋嫨鍙樺寲
@@ -491,6 +564,12 @@
       console.log('杞嚭鍖婚櫌鍙樺寲:', hospitalData)
       // 缁勪欢宸茬粡閫氳繃 v-model 鏇存柊浜� taskForm.hospitalOut
       
+      // 濡傛灉閫夋嫨鐨勬槸"瀹朵腑"锛岃嚜鍔ㄨ缃瀹や负"鍏跺畠"
+      if (hospitalData.name === '瀹朵腑') {
+        this.taskForm.hospitalOut.department = '鍏跺畠'
+        this.taskForm.hospitalOut.departmentId = null
+      }
+      
       // 濡傛灉杞叆鍦板潃宸插~鍐�,鑷姩璁$畻璺濈
       if (this.taskForm.hospitalIn.address) {
         // 濡傛灉涓や釜閮戒笉鏄�"瀹朵腑",浣跨敤鍖婚櫌璺濈璁$畻
@@ -515,6 +594,12 @@
       console.log('杞叆鍖婚櫌鍙樺寲:', hospitalData)
       // 缁勪欢宸茬粡閫氳繃 v-model 鏇存柊浜� taskForm.hospitalIn
       
+      // 濡傛灉閫夋嫨鐨勬槸"瀹朵腑"锛岃嚜鍔ㄨ缃瀹や负"鍏跺畠"
+      if (hospitalData.name === '瀹朵腑') {
+        this.taskForm.hospitalIn.department = '鍏跺畠'
+        this.taskForm.hospitalIn.departmentId = null
+      }
+      
       // 濡傛灉杞嚭鍦板潃宸插~鍐�,鑷姩璁$畻璺濈
       if (this.taskForm.hospitalOut.address) {
         // 濡傛灉涓や釜閮戒笉鏄�"瀹朵腑",浣跨敤鍖婚櫌璺濈璁$畻
@@ -534,6 +619,28 @@
       }
     },
     
+    // 杞嚭绉戝鍙樺寲
+    onHospitalOutDepartmentChange(data) {
+      if (data && typeof data === 'object') {
+        this.taskForm.hospitalOut.department = data.department
+        this.taskForm.hospitalOut.departmentId = data.departmentId
+      } else {
+        this.taskForm.hospitalOut.department = data
+        this.taskForm.hospitalOut.departmentId = null
+      }
+    },
+    
+    // 杞叆绉戝鍙樺寲
+    onHospitalInDepartmentChange(data) {
+      if (data && typeof data === 'object') {
+        this.taskForm.hospitalIn.department = data.department
+        this.taskForm.hospitalIn.departmentId = data.departmentId
+      } else {
+        this.taskForm.hospitalIn.department = data
+        this.taskForm.hospitalIn.departmentId = null
+      }
+    },
+    
     // 鐥呮儏鍙樺寲
     onDiseaseChange(diseases) {
       console.log('鐥呮儏鍙樺寲:', diseases)

--
Gitblit v1.9.1