From 5f2ee03958a1a16dc27195c76ea7cffb422c95d1 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期五, 19 十二月 2025 22:40:34 +0800
Subject: [PATCH] feat: 任务修改接口,删除一些不要的字段同步
---
app/pagesTask/edit-emergency.vue | 595 ++++++++++++++++++++---------------------------------------
1 files changed, 201 insertions(+), 394 deletions(-)
diff --git a/app/pagesTask/edit-emergency.vue b/app/pagesTask/edit-emergency.vue
index 4b133bf..24f3a97 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"
@@ -47,27 +48,15 @@
/>
</view>
- <view class="form-item">
- <view class="form-label">鎵ц浠诲姟浜哄憳</view>
- <view class="staff-list">
- <view class="staff-item" v-for="(staff, index) in selectedStaff" :key="staff.userId">
- <view class="staff-info">
- <text class="staff-name">{{ staff.nickName }}</text>
- <text class="staff-role">({{ getUserTypeName(staff.type) || '鏈煡鑱屼綅' }})</text>
- </view>
- <uni-icons
- type="closeempty"
- size="20"
- color="#ff4d4f"
- @click="removeStaff(index)"
- ></uni-icons>
- </view>
- <view class="add-staff" @click="showStaffSelector">
- <uni-icons type="plusempty" size="20" color="#007AFF"></uni-icons>
- <text>娣诲姞浜哄憳</text>
- </view>
- </view>
- </view>
+ <StaffSelector
+ v-model="selectedStaff"
+ label="鎵ц浠诲姟浜哄憳"
+ :required="false"
+ :auto-add-current-user="false"
+ :current-user-removable="true"
+ :branch-dept-ids="allOrganizationIds"
+ @change="onStaffChange"
+ />
<view class="form-section-title">鎮h�呬俊鎭�</view>
<view class="form-item">
@@ -130,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>
@@ -198,80 +223,6 @@
></map-selector>
</view>
</uni-popup>
-
- <!-- 浜哄憳閫夋嫨鍣ㄥ脊绐� -->
- <uni-popup ref="staffPopup" type="bottom" :mask-click="false">
- <view class="staff-popup-container">
- <view class="popup-header">
- <view class="popup-title">閫夋嫨鎵ц浜哄憳</view>
- <view class="close-btn" @click="closeStaffSelector">
- <uni-icons type="closeempty" size="20" color="#999"></uni-icons>
- </view>
- </view>
-
- <view class="search-bar">
- <input
- class="search-input"
- placeholder="鎼滅储濮撳悕鎴栫數璇�"
- v-model="staffSearchKeyword"
- @input="onStaffSearch"
- />
- </view>
-
- <view class="filter-tabs">
- <view
- class="filter-tab"
- :class="{ active: staffFilterType === 'driver' }"
- @click="filterStaff('driver')"
- >
- 鍙告満
- </view>
- <view
- class="filter-tab"
- :class="{ active: staffFilterType === 'doctor' }"
- @click="filterStaff('doctor')"
- >
- 鍖荤敓
- </view>
- <view
- class="filter-tab"
- :class="{ active: staffFilterType === 'nurse' }"
- @click="filterStaff('nurse')"
- >
- 鎶ゅ+
- </view>
- </view>
-
- <scroll-view class="staff-list-scroll" scroll-y="true">
- <view
- class="staff-list-item"
- v-for="staff in filteredStaffList"
- :key="staff.userId"
- @click="toggleStaffSelection(staff)"
- >
- <view class="staff-item-info">
- <text class="staff-item-name">{{ staff.nickName }}</text>
- <text class="staff-item-dept">{{ staff.deptName }}</text>
- </view>
- <view class="staff-item-check">
- <uni-icons
- v-if="isStaffSelected(staff.userId)"
- type="checkmarkempty"
- size="24"
- color="#007AFF"
- ></uni-icons>
- </view>
- </view>
- <view v-if="filteredStaffList.length === 0" class="empty-tip">
- 鏆傛棤浜哄憳鏁版嵁
- </view>
- </scroll-view>
-
- <view class="popup-footer">
- <button class="confirm-btn" @click="confirmStaffSelection">纭畾(宸查�墈{ selectedStaff.length }})</button>
- </view>
- </view>
- </uni-popup>
</scroll-view>
</template>
@@ -280,8 +231,7 @@
import uniDatetimePicker from '@/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue'
import uniPopup from '@/uni_modules/uni-popup/components/uni-popup/uni-popup.vue'
import { getTask, updateTask } from "@/api/task"
-import { listBranchUsers } from "@/api/system/user"
-import { baiduDistanceByAddress } from "@/api/map"
+import { tiandituDistanceByAddress } from "@/api/map"
import { calculateTransferPrice } from "@/api/price"
import MapSelector from './components/map-selector.vue'
import VehicleSelector from './components/VehicleSelector.vue'
@@ -289,6 +239,8 @@
import HospitalSelector from './components/HospitalSelector.vue'
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 {
@@ -300,7 +252,9 @@
OrganizationSelector,
HospitalSelector,
DiseaseSelector,
- DepartureSelector
+ DepartureSelector,
+ StaffSelector,
+ DepartmentSelector
},
mixins: [distanceCalculator],
data() {
@@ -310,6 +264,7 @@
taskDetail: null,
selectedVehicleId: null,
selectedOrganizationId: null,
+ allOrganizationIds: [], // 鎵�鏈夊彲閫夋満鏋処D鏁扮粍
selectedRegion: '',
mapSelectorType: '',
// 鎵╁睍 addressCoordinates 鏀寔澶氱閿悕
@@ -325,10 +280,6 @@
departureLatitude: null,
selectedDiseases: [], // 宸查�夋嫨鐨勭梾鎯呭垪琛紙纭繚鍒濆鍖栦负绌烘暟缁勶級
selectedStaff: [], // 宸查�夋嫨鐨勪汉鍛樺垪琛紙纭繚鍒濆鍖栦负绌烘暟缁勶級
- allStaffList: [], // 鎵�鏈変汉鍛樺垪琛�
- filteredStaffList: [], // 杩囨护鍚庣殑浜哄憳鍒楄〃
- staffSearchKeyword: '', // 浜哄憳鎼滅储鍏抽敭璇�
- staffFilterType: 'driver', // 浜哄憳绛涢�夌被鍨�
taskForm: {
transferTime: '',
patient: {
@@ -375,13 +326,17 @@
if (options.id) {
this.taskId = options.id
this.loadTaskDetail()
- this.loadDeptStaff() // 鍔犺浇浜哄憳鍒楄〃
} else {
this.$modal.showToast('浠诲姟ID涓嶈兘涓虹┖')
setTimeout(() => {
uni.navigateBack()
}, 1500)
}
+ },
+
+ mounted() {
+ // 椤甸潰鎸傝浇鍚庡姞杞芥墍鏈夋満鏋処D
+ this.loadAllOrganizationIds()
},
methods: {
// 鍔犺浇浠诲姟璇︽儏
@@ -411,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 || ''
@@ -429,8 +385,10 @@
this.taskForm.hospitalOut.id = info.hospitalOutId || null
this.taskForm.hospitalOut.name = info.hospitalOutName || ''
this.taskForm.hospitalOut.department = info.hospitalOutDepartment || ''
+ this.taskForm.hospitalOut.departmentId = info.hospitalOutDepartmentId || null
this.taskForm.hospitalOut.bedNumber = info.hospitalOutBedNumber || ''
this.taskForm.hospitalOut.address = info.hospitalOutAddress || ''
+ console.log('杞嚭鍖婚櫌绉戝ID:', info.hospitalOutDepartmentId)
// 鍔犺浇杞嚭鍖婚櫌GPS鍧愭爣锛堜笉鏄剧ず锛屼絾淇濆瓨鍦ㄦ暟鎹腑锛�
if (info.hospitalOutLongitude && info.hospitalOutLatitude) {
@@ -445,8 +403,10 @@
this.taskForm.hospitalIn.id = info.hospitalInId || null
this.taskForm.hospitalIn.name = info.hospitalInName || ''
this.taskForm.hospitalIn.department = info.hospitalInDepartment || ''
+ this.taskForm.hospitalIn.departmentId = info.hospitalInDepartmentId || null
this.taskForm.hospitalIn.bedNumber = info.hospitalInBedNumber || ''
this.taskForm.hospitalIn.address = info.hospitalInAddress || ''
+ console.log('杞叆鍖婚櫌绉戝ID:', info.hospitalInDepartmentId)
// 鍔犺浇杞叆鍖婚櫌GPS鍧愭爣锛堜笉鏄剧ず锛屼絾淇濆瓨鍦ㄦ暟鎹腑锛�
if (info.hospitalInLongitude && info.hospitalInLatitude) {
@@ -463,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) : ''
}
@@ -508,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涓虹┖')
@@ -540,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)
+ }
},
// 褰掑睘鏈烘瀯閫夋嫨鍙樺寲
@@ -578,6 +564,13 @@
console.log('杞嚭鍖婚櫌鍙樺寲:', hospitalData)
// 缁勪欢宸茬粡閫氳繃 v-model 鏇存柊浜� taskForm.hospitalOut
+ // 濡傛灉閫夋嫨鐨勬槸"瀹朵腑"锛岃嚜鍔ㄨ缃瀹や负"鍏跺畠"
+ if (hospitalData.name === '瀹朵腑') {
+ this.taskForm.hospitalOut.department = '鍏跺畠'
+ this.taskForm.hospitalOut.departmentId = null
+ }
+ // 娉ㄦ剰锛氶�夋嫨鏂扮殑鍖婚櫌鏃讹紝涓嶈嚜鍔ㄦ洿鏂扮瀹や俊鎭紝淇濇寔鐢ㄦ埛宸查�夋嫨鐨勭瀹�
+
// 濡傛灉杞叆鍦板潃宸插~鍐�,鑷姩璁$畻璺濈
if (this.taskForm.hospitalIn.address) {
// 濡傛灉涓や釜閮戒笉鏄�"瀹朵腑",浣跨敤鍖婚櫌璺濈璁$畻
@@ -602,6 +595,13 @@
console.log('杞叆鍖婚櫌鍙樺寲:', hospitalData)
// 缁勪欢宸茬粡閫氳繃 v-model 鏇存柊浜� taskForm.hospitalIn
+ // 濡傛灉閫夋嫨鐨勬槸"瀹朵腑"锛岃嚜鍔ㄨ缃瀹や负"鍏跺畠"
+ if (hospitalData.name === '瀹朵腑') {
+ this.taskForm.hospitalIn.department = '鍏跺畠'
+ this.taskForm.hospitalIn.departmentId = null
+ }
+ // 娉ㄦ剰锛氶�夋嫨鏂扮殑鍖婚櫌鏃讹紝涓嶈嚜鍔ㄦ洿鏂扮瀹や俊鎭紝淇濇寔鐢ㄦ埛宸查�夋嫨鐨勭瀹�
+
// 濡傛灉杞嚭鍦板潃宸插~鍐�,鑷姩璁$畻璺濈
if (this.taskForm.hospitalOut.address) {
// 濡傛灉涓や釜閮戒笉鏄�"瀹朵腑",浣跨敤鍖婚櫌璺濈璁$畻
@@ -621,160 +621,40 @@
}
},
+ // 杞嚭绉戝鍙樺寲
+ onHospitalOutDepartmentChange(data) {
+ console.log('杞嚭绉戝鍙樺寲:', 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) {
+ console.log('杞叆绉戝鍙樺寲:', 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)
// 缁勪欢宸茬粡閫氳繃 v-model 鏇存柊浜� selectedDiseases
},
- // 鍔犺浇褰撳墠鐢ㄦ埛鎵�鍦ㄥ垎鍏徃鐨勬墍鏈変汉鍛�
- loadDeptStaff() {
- console.log('寮�濮嬪姞杞戒汉鍛樺垪琛�')
-
- 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,
- phonenumber: user.phonenumber,
- deptName: user.dept?.deptName || '',
- postName: user.posts && user.posts.length > 0 ? user.posts[0].postName : '',
- roleName: user.roles && user.roles.length > 0 ? user.roles[0].roleName : '',
- type: this.getUserType(user)
- }))
-
- console.log('澶勭悊鍚庣殑浜哄憳鍒楄〃:', this.allStaffList, '鏁伴噺:', this.allStaffList.length)
-
- this.filterStaffList()
- }).catch(error => {
- console.error('鍔犺浇浜哄憳鍒楄〃澶辫触:', error)
- this.$modal.showToast('鍔犺浇浜哄憳鍒楄〃澶辫触')
- })
- },
-
- // 鏍规嵁鐢ㄦ埛鐨勫矖浣嶆垨瑙掕壊鍒ゆ柇绫诲瀷
- getUserType(user) {
- const postName = user.posts && user.posts.length > 0 ? user.posts[0].postName : ''
- const roleName = user.roles && user.roles.length > 0 ? user.roles[0].roleName : ''
- const deptName = user.dept?.deptName || ''
-
- if (postName.includes('鍙告満') || roleName.includes('鍙告満') || deptName.includes('杞﹂槦') || deptName.includes('鍙告満')) {
- return 'driver'
- }
- 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'
- },
-
- getUserTypeName(staffType) {
- switch(staffType) {
- case 'nurse':
- return '鎶ゅ+'
- case 'doctor':
- return '鍖荤敓'
- case 'driver':
- return '鍙告満'
- default:
- return '鍙告満'
- }
- },
-
- // 鏄剧ず浜哄憳閫夋嫨寮圭獥
- showStaffSelector() {
- this.$refs.staffPopup.open()
- this.filterStaffList()
- },
-
- // 鍏抽棴浜哄憳閫夋嫨寮圭獥
- closeStaffSelector() {
- this.$refs.staffPopup.close()
- this.staffSearchKeyword = ''
- this.staffFilterType = 'driver'
- },
-
- // 浜哄憳鎼滅储
- onStaffSearch(e) {
- this.staffSearchKeyword = e.detail.value
- this.filterStaffList()
- },
-
- // 绛涢�変汉鍛樼被鍨�
- filterStaff(type) {
- this.staffFilterType = type
- this.filterStaffList()
- },
-
- // 杩囨护浜哄憳鍒楄〃
- filterStaffList() {
- console.log('寮�濮嬭繃婊や汉鍛樺垪琛紝鍘熷鏁伴噺:', this.allStaffList.length)
- let list = [...this.allStaffList]
-
- // 鎸夌被鍨嬭繃婊�
- if (this.staffFilterType === 'driver') {
- list = list.filter(staff => staff.type === 'driver')
- } else if (this.staffFilterType === 'doctor') {
- list = list.filter(staff => staff.type === 'doctor')
- } else if (this.staffFilterType === 'nurse') {
- 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()
- list = list.filter(staff => {
- return staff.nickName.toLowerCase().includes(keyword) ||
- (staff.phonenumber && staff.phonenumber.includes(keyword))
- })
- }
-
- console.log('鎸夊叧閿瘝杩囨护鍚庯紝鏁伴噺:', list.length)
-
- this.filteredStaffList = list
- },
-
- // 鍒囨崲浜哄憳閫変腑鐘舵��
- toggleStaffSelection(staff) {
- const index = this.selectedStaff.findIndex(s => s.userId === staff.userId)
-
- if (index > -1) {
- // 宸查�変腑锛岀Щ闄�
- this.selectedStaff.splice(index, 1)
- } else {
- // 鏈�変腑锛屾坊鍔�
- this.selectedStaff.push(staff)
- }
- },
-
- // 鍒ゆ柇浜哄憳鏄惁宸查�変腑
- isStaffSelected(userId) {
- return this.selectedStaff.some(staff => staff.userId === userId)
- },
-
- // 纭浜哄憳閫夋嫨
- confirmStaffSelection() {
- if (this.selectedStaff.length === 0) {
- this.$modal.showToast('璇疯嚦灏戦�夋嫨涓�鍚嶄汉鍛�')
- return
- }
- this.closeStaffSelector()
- },
-
- // 绉婚櫎浜哄憳
- removeStaff(index) {
- this.selectedStaff.splice(index, 1)
+ // 浜哄憳鍙樺寲
+ onStaffChange(staff) {
+ console.log('閫変腑浜哄憳鍙樺寲:', staff)
+ // 缁勪欢宸茬粡閫氳繃 v-model 鏇存柊浜� selectedStaff
},
// 瑙f瀽鐥呮儏淇℃伅锛堜粠瀛楃涓茶В鏋愬嚭ICD-10鐤剧梾鍒楄〃锛�- 淇锛氫笌鍒涘缓鐣岄潰淇濇寔涓�鑷�
@@ -950,6 +830,12 @@
return false
}
+ // 楠岃瘉鑱旂郴鐢佃瘽鏍煎紡
+ if (this.taskForm.patient.phone && !/^1[3-9]\d{9}$/.test(this.taskForm.patient.phone)) {
+ this.$modal.showToast('璇疯緭鍏ユ纭殑鎵嬫満鍙风爜')
+ return false
+ }
+
if (!this.taskForm.hospitalOut.name) {
this.$modal.showToast('璇疯緭鍏ヨ浆鍑哄尰闄㈠悕绉�')
return false
@@ -960,6 +846,11 @@
return false
}
+ if (!this.taskForm.hospitalOut.department) {
+ this.$modal.showToast('璇烽�夋嫨杞嚭绉戝')
+ return false
+ }
+
if (!this.taskForm.hospitalIn.name) {
this.$modal.showToast('璇疯緭鍏ヨ浆鍏ュ尰闄㈠悕绉�')
return false
@@ -967,6 +858,46 @@
if (!this.taskForm.hospitalIn.address) {
this.$modal.showToast('璇烽�夋嫨杞叆鍖婚櫌鍦板潃')
+ return false
+ }
+
+ if (!this.taskForm.hospitalIn.department) {
+ this.$modal.showToast('璇烽�夋嫨杞叆绉戝')
+ return false
+ }
+
+ // 楠岃瘉鎴愪氦浠峰繀濉�
+ if (!this.taskForm.price || this.taskForm.price.trim() === '') {
+ this.$modal.showToast('璇疯緭鍏ユ垚浜や环')
+ return false
+ }
+
+ // 楠岃瘉鎴愪氦浠锋牸寮忥紙蹇呴』鏄暟瀛楋級
+ if (isNaN(this.taskForm.price) || parseFloat(this.taskForm.price) < 0) {
+ this.$modal.showToast('璇疯緭鍏ユ湁鏁堢殑鎴愪氦浠�')
+ return false
+ }
+
+ // 楠岃瘉鎮h�呰韩浠借瘉鏍煎紡锛堝鏋滃~鍐欎簡锛�
+ if (this.taskForm.patient.idCard && this.taskForm.patient.idCard.trim() !== '') {
+ const idCard = this.taskForm.patient.idCard.trim()
+ // 绠�鍗曢獙璇�18浣嶈韩浠借瘉
+ if (!/^\d{17}[\dXx]$/.test(idCard)) {
+ this.$modal.showToast('璇疯緭鍏ユ纭殑18浣嶈韩浠借瘉鍙风爜')
+ return false
+ }
+ }
+
+ // 楠岃瘉鐥呮儏鑷冲皯閫夋嫨涓�椤规垨濉啓鍏朵粬鎻忚堪
+ if ((!this.selectedDiseases || this.selectedDiseases.length === 0) &&
+ (!this.taskForm.patient.otherCondition || this.taskForm.patient.otherCondition.trim() === '')) {
+ this.$modal.showToast('璇烽�夋嫨鐥呮儏鎴栧~鍐欏叾浠栫梾鎯呮弿杩�')
+ return false
+ }
+
+ // 楠岃瘉鎵ц浜哄憳鑷冲皯閫夋嫨涓�涓�
+ if (!this.selectedStaff || this.selectedStaff.length === 0) {
+ this.$modal.showToast('璇疯嚦灏戦�夋嫨涓�涓墽琛屼汉鍛�')
return false
}
@@ -1089,6 +1020,9 @@
this.loading = true
const submitData = this.buildSubmitData()
+ console.log('鎻愪氦鏁版嵁 - 杞嚭鍖婚櫌绉戝ID:', submitData.hospitalOut.departmentId)
+ console.log('鎻愪氦鏁版嵁 - 杞叆鍖婚櫌绉戝ID:', submitData.hospitalIn.departmentId)
+
updateTask(submitData).then(response => {
this.loading = false
console.log('浠诲姟鏇存柊鍝嶅簲:', response)
@@ -1129,7 +1063,8 @@
// 璋冪敤鐧惧害鍦板浘API璁$畻璺濈
const region = this.selectedRegion || '骞垮窞'
- baiduDistanceByAddress(fromAddress, region, toAddress, region)
+ //baiduDistanceByAddress(fromAddress, region, toAddress, region)
+ tiandituDistanceByAddress(fromAddress,toAddress)
.then(response => {
uni.hideLoading()
@@ -1454,132 +1389,4 @@
}
}
}
-
- .staff-popup-container {
- height: 80vh;
- background-color: white;
- border-top-left-radius: 20rpx;
- border-top-right-radius: 20rpx;
- display: flex;
- flex-direction: column;
-
- .popup-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 20rpx 30rpx;
- border-bottom: 1rpx solid #f0f0f0;
-
- .popup-title {
- font-size: 32rpx;
- font-weight: bold;
- color: #333;
- }
-
- .close-btn {
- width: 50rpx;
- height: 50rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- }
-
- .search-bar {
- padding: 20rpx 30rpx;
- border-bottom: 1rpx solid #f0f0f0;
-
- .search-input {
- height: 70rpx;
- padding: 0 20rpx;
- background-color: #f5f5f5;
- border-radius: 10rpx;
- font-size: 28rpx;
- }
- }
-
- .filter-tabs {
- display: flex;
- padding: 20rpx 30rpx;
- gap: 20rpx;
- border-bottom: 1rpx solid #f0f0f0;
-
- .filter-tab {
- flex: 1;
- height: 60rpx;
- line-height: 60rpx;
- text-align: center;
- background-color: #f5f5f5;
- border-radius: 10rpx;
- font-size: 28rpx;
- color: #666;
-
- &.active {
- background-color: #007AFF;
- color: white;
- }
- }
- }
-
- .staff-list-scroll {
- flex: 1;
- padding: 20rpx 30rpx;
-
- .staff-list-item {
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 20rpx;
- margin-bottom: 15rpx;
- background-color: #f8f8f8;
- border-radius: 10rpx;
-
- .staff-item-info {
- flex: 1;
-
- .staff-item-name {
- display: block;
- font-size: 30rpx;
- color: #333;
- margin-bottom: 8rpx;
- }
-
- .staff-item-dept {
- display: block;
- font-size: 24rpx;
- color: #999;
- }
- }
-
- .staff-item-check {
- width: 50rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- }
-
- .empty-tip {
- text-align: center;
- padding: 100rpx 0;
- color: #999;
- font-size: 28rpx;
- }
- }
-
- .popup-footer {
- padding: 20rpx 30rpx;
- border-top: 1rpx solid #f0f0f0;
-
- .confirm-btn {
- width: 100%;
- height: 80rpx;
- background-color: #007AFF;
- color: white;
- border-radius: 10rpx;
- font-size: 32rpx;
- }
- }
- }
-}
-</style>
\ No newline at end of file
+}
\ No newline at end of file
--
Gitblit v1.9.1