diff --git a/components/hospital-picker/hospital-picker.vue b/components/hospital-picker/hospital-picker.vue
new file mode 100644
index 0000000..5b3abe5
--- /dev/null
+++ b/components/hospital-picker/hospital-picker.vue
@@ -0,0 +1,289 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ selectedProvince ? selectedProvince.provinceName : '请选择省份' }}
+
+
+ {{ selectedCity ? selectedCity.cityName : '请选择城市' }}
+
+
+ {{ selectedDistrict ? selectedDistrict.districtName : '请选择区县' }}
+
+
+ {{ selectedHospital ? selectedHospital.name : '请选择医院' }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ {{ item.regionText || '地区未设置' }}
+
+
+
+
+
+
+
+ {{ item.provinceName }}
+
+
+
+
+
+
+ {{ item.cityName }}
+
+
+
+
+
+
+ {{ item.districtName }}
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/config/env.js b/config/env.js
index 43c7ad5..c98ce7b 100644
--- a/config/env.js
+++ b/config/env.js
@@ -1,8 +1,8 @@
const envConf = {
// 开发版-本地环境
develop: {
- // BASE_URL: 'http://192.168.10.8:8361',
- BASE_URL: 'https://cytx.csybhelp.com',
+ BASE_URL: 'http://192.168.10.8:8361',
+ // BASE_URL: 'https://cytx.csybhelp.com',
},
// 体验版-测试环境
trial: {
diff --git a/pages/myinfo/myinfo.vue b/pages/myinfo/myinfo.vue
index 90a7161..8aeab59 100644
--- a/pages/myinfo/myinfo.vue
+++ b/pages/myinfo/myinfo.vue
@@ -51,12 +51,10 @@
医院名称
-
-
- {{ form.hospital || '请选择医院' }}
+
+ {{ form.hospital || '请选择就诊医院' }}
›
-
癌种
@@ -154,42 +152,8 @@
-
-
-
-
-
-
-
-
-
+
+
@@ -218,6 +182,9 @@ const form = reactive({
district_code: '',
address: '',
hospital: '',
+ hospital_province_code: '',
+ hospital_city_code: '',
+ hospital_district_code: '',
emergency_contact: '',
emergency_phone: '',
tag: '',
@@ -236,51 +203,30 @@ const agreed = ref(false)
// 瘤种选项
const tagOptions = ref([])
-const showReturnRegionPicker = ref(false)
-const returnRegionDefaultIndex = ref([0, 0, 0])
-
-// 医院选项
-const hospitalOptions = ref([])
-const showHospitalPopup = ref(false)
-const hospitalKeywords = ref('')
-const showManualHospital = ref(false)
-const manualHospitalName = ref('')
-
-const filteredHospitals = computed(() => {
- const kw = hospitalKeywords.value.trim()
- if (!kw) return hospitalOptions.value
- return hospitalOptions.value.filter(h => h.name.includes(kw))
-})
-const openHospitalPopup = () => {
- hospitalKeywords.value = ''
- showHospitalPopup.value = true
-}
-
-const searchHospital = () => {
- // 本地过滤,filteredHospitals 自动响应
-}
-
-const onSelectHospital = (item) => {
- form.hospital = item.name
- showHospitalPopup.value = false
-}
-
-const manualInputHospital = () => {
- // 关闭搜索弹窗,打开手动输入弹窗,带入搜索框内容
- manualHospitalName.value = hospitalKeywords.value.trim()
- showHospitalPopup.value = false
- showManualHospital.value = true
-}
+// 医院选择器
+const hospitalTree = ref([])
+const hospitalPickerRef = ref(null)
-const confirmManualHospital = () => {
- const name = manualHospitalName.value.trim()
- if (!name) {
- uni.showToast({ title: '请输入医院名称', icon: 'none' })
+const openHospitalPicker = () => {
+ if (!hospitalTree.value.length) {
+ uni.showToast({ title: '医院列表加载中,请稍候', icon: 'none' })
+ loadHospitalTree()
return
}
- form.hospital = name
- showManualHospital.value = false
+ hospitalPickerRef.value && hospitalPickerRef.value.open({
+ hospital: form.hospital,
+ province_code: form.hospital_province_code,
+ city_code: form.hospital_city_code,
+ district_code: form.hospital_district_code
+ })
+}
+
+const onHospitalConfirm = (data) => {
+ form.hospital = data.hospitalName || ''
+ form.hospital_province_code = data.province_code || ''
+ form.hospital_city_code = data.city_code || ''
+ form.hospital_district_code = data.district_code || ''
}
// 签署时的额外信息(用于重签回显)
@@ -407,7 +353,7 @@ onLoad(async () => {
await loadInfo()
loadSubscribeConfig()
loadTagOptions()
- loadHospitals()
+ loadHospitalTree()
})
onBeforeUnmount(() => {
@@ -496,6 +442,9 @@ const loadInfo = async () => {
form.district_code = res.data.district_code || ''
form.address = res.data.address || ''
form.hospital = res.data.hospital || ''
+ form.hospital_province_code = res.data.hospital_province_code || ''
+ form.hospital_city_code = res.data.hospital_city_code || ''
+ form.hospital_district_code = res.data.hospital_district_code || ''
form.emergency_contact = res.data.emergency_contact || ''
form.emergency_phone = res.data.emergency_phone || ''
form.tag = res.data.tag || ''
@@ -532,10 +481,10 @@ const loadTagOptions = async () => {
} catch (e) {}
}
-const loadHospitals = async () => {
+const loadHospitalTree = async () => {
try {
- const res = await get('/common/hospitals')
- hospitalOptions.value = res.data || []
+ const res = await get('/common/hospitalTree')
+ hospitalTree.value = res.data || []
} catch (e) {}
}
@@ -628,6 +577,9 @@ const doSubmit = async () => {
district_code: form.district_code,
address: form.address.trim(),
hospital: form.hospital,
+ hospital_province_code: form.hospital_province_code,
+ hospital_city_code: form.hospital_city_code,
+ hospital_district_code: form.hospital_district_code,
emergency_contact: form.emergency_contact,
emergency_phone: form.emergency_phone,
tag: form.tag,
@@ -984,73 +936,4 @@ const doSubmit = async () => {
gap: 24rpx;
}
-.hospital-popup {
- padding: 32rpx;
- display: flex;
- flex-direction: column;
- height: 70vh;
-}
-
-.popup-title {
- font-size: 32rpx;
- font-weight: 600;
- color: #333;
- text-align: center;
- margin-bottom: 24rpx;
-}
-
-.search-bar {
- margin-bottom: 16rpx;
-}
-
-.hospital-list {
- flex: 1;
- overflow: hidden;
-}
-
-.hospital-item {
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: 28rpx 16rpx;
- border-bottom: 1rpx solid #f0f0f0;
- font-size: 28rpx;
- color: #333;
-
- &:active {
- background: #f5f7fa;
- }
-}
-
-.empty-tip {
- text-align: center;
- padding: 60rpx 0;
- font-size: 26rpx;
- color: #999;
-}
-
-.add-hospital-link {
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 8rpx;
- padding: 28rpx 0;
- font-size: 28rpx;
- color: #0e63e3;
- border-top: 1rpx solid #f0f0f0;
-}
-
-.manual-hospital-popup {
- padding: 48rpx 40rpx 40rpx;
- width: 560rpx;
-}
-
-.manual-input {
- margin-bottom: 40rpx;
-}
-
-.manual-btns {
- display: flex;
- gap: 24rpx;
-}