| | |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="form-item" v-if="showDepartment"> |
| | | <view class="form-label" :class="{ required: departmentRequired }">科室</view> |
| | | <picker |
| | | v-if="selectedHospitalName !== '家中' && departmentOptions.length > 0" |
| | | mode="selector" |
| | | :range="departmentOptions" |
| | | range-key="text" |
| | | @change="onDepartmentChange" |
| | | > |
| | | <view class="form-input picker-input"> |
| | | {{ departmentValue || '请选择科室' }} |
| | | <uni-icons type="arrowright" size="16" color="#999"></uni-icons> |
| | | </view> |
| | | </picker> |
| | | <input |
| | | v-else-if="selectedHospitalName !== '家中'" |
| | | class="form-input" |
| | | placeholder="请输入科室" |
| | | :value="departmentValue" |
| | | @input="onDepartmentInput" |
| | | /> |
| | | <view v-else class="form-input picker-input disabled"> |
| | | 其它 |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="form-item" v-if="showBedNumber"> |
| | | <view class="form-label">床号</view> |
| | | <input |
| | | class="form-input" |
| | | placeholder="请输入床号" |
| | | :value="bedNumberValue" |
| | | @input="onBedNumberInput" |
| | | /> |
| | | </view> |
| | | |
| | | <view class="form-item"> |
| | | <view class="form-label" :class="{ required: required }">{{ addressLabel }}</view> |
| | | <view class="address-input-container" v-if="selectedHospitalName === '家中'"> |
| | |
| | | address: '' |
| | | }) |
| | | }, |
| | | // 是否显示科室 |
| | | showDepartment: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // 科室是否必填 |
| | | departmentRequired: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // 科室选项列表(用于 picker) |
| | | departmentOptions: { |
| | | type: Array, |
| | | default: () => [] |
| | | }, |
| | | // 是否显示床号 |
| | | showBedNumber: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // 部门ID(用于区域过滤) |
| | | deptId: { |
| | | type: [Number, String], |
| | |
| | | computed: { |
| | | addressValue() { |
| | | return this.value.address || '' |
| | | }, |
| | | departmentValue() { |
| | | return this.value.department || '' |
| | | }, |
| | | bedNumberValue() { |
| | | return this.value.bedNumber || '' |
| | | } |
| | | }, |
| | | watch: { |
| | |
| | | const hospitalData = { |
| | | id: hospital.hospId, |
| | | name: hospital.hospName, |
| | | department: this.value.department || '', |
| | | departmentId: this.value.departmentId || null, |
| | | bedNumber: this.value.bedNumber || '', |
| | | address: hospital.hospName === '家中' ? '' : this.buildFullAddress(hospital) |
| | | } |
| | | |
| | | // 如果选择的是"家中",科室设置为"其它" |
| | | if (hospital.hospName === '家中') { |
| | | hospitalData.department = '其它' |
| | | hospitalData.departmentId = null |
| | | } |
| | | |
| | | this.showResults = false |
| | |
| | | ...this.value, |
| | | address: fullAddress |
| | | }) |
| | | this.$emit('address-selected', { |
| | | address: fullAddress, |
| | | location: item.location |
| | | }) |
| | | |
| | | this.showAddressSuggestions = false |
| | | this.addressSuggestions = [] |
| | | }, |
| | | |
| | | // 科室选择变化(picker) |
| | | onDepartmentChange(e) { |
| | | const index = e.detail.value |
| | | const selected = this.departmentOptions[index] |
| | | const updatedValue = { |
| | | ...this.value, |
| | | department: selected.text, |
| | | departmentId: selected.id |
| | | } |
| | | this.$emit('input', updatedValue) |
| | | this.$emit('department-change', { |
| | | department: selected.text, |
| | | departmentId: selected.id |
| | | }) |
| | | }, |
| | | |
| | | // 科室输入(手动输入) |
| | | onDepartmentInput(e) { |
| | | const department = e.detail.value |
| | | this.$emit('input', { |
| | | ...this.value, |
| | | department: department |
| | | }) |
| | | this.$emit('department-change', department) |
| | | }, |
| | | |
| | | // 床号输入 |
| | | onBedNumberInput(e) { |
| | | const bedNumber = e.detail.value |
| | | this.$emit('input', { |
| | | ...this.value, |
| | | bedNumber: bedNumber |
| | | }) |
| | | this.$emit('bed-number-change', bedNumber) |
| | | } |
| | | } |
| | | } |