wlzboy
2025-12-06 5d75fcaea0a3774052b7484a4ffe755258502363
app/pagesTask/components/HospitalSelector.vue
@@ -27,42 +27,6 @@
      </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 === '家中'">
@@ -136,26 +100,6 @@
        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],
@@ -186,12 +130,6 @@
  computed: {
    addressValue() {
      return this.value.address || ''
    },
    departmentValue() {
      return this.value.department || ''
    },
    bedNumberValue() {
      return this.value.bedNumber || ''
    }
  },
  watch: {
@@ -292,16 +230,7 @@
      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
@@ -388,45 +317,13 @@
        ...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)
    }
  }
}