|
|
@@ -38,7 +38,7 @@
|
|
|
<uni-data-checkbox v-model="baseFormData.has_children" :localdata="yesNoOptions" :wrap="true"/>
|
|
|
</uni-forms-item>
|
|
|
<uni-forms-item label="孩子年龄" required name="children_age" box-width="190rpx" v-if="baseFormData.has_children === 1">
|
|
|
- <uni-easyinput type="number" :value="baseFormData.children_age" @input="baseFormData.children_age = $event" placeholder="请输入" />
|
|
|
+ <uni-easyinput type="number" :value="baseFormData.children_age" @input="onChildrenAgeInput" placeholder="请输入" />
|
|
|
</uni-forms-item>
|
|
|
<uni-forms-item label="职业" required name="profession" box-width="190rpx">
|
|
|
<picker @change="change('profession',$event)" :value="pickerIndexObj.profession" :range="selectData.profession" range-key="text">
|
|
|
@@ -244,6 +244,10 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ onChildrenAgeInput(value) {
|
|
|
+ // 输入过程中就限制,不超过 99
|
|
|
+ this.baseFormData.children_age = (value !== '' && Number(value) > 99) ? '99' : value
|
|
|
+ },
|
|
|
getQueryParams(str) {
|
|
|
const paramsArr = str.split('&');
|
|
|
const paramObj = {};
|
|
|
@@ -358,6 +362,10 @@ export default {
|
|
|
})
|
|
|
this.baseFormData.sex = Number(this.baseFormData.sex);
|
|
|
if(this.baseFormData.sex == '0')this.baseFormData.sex = '';
|
|
|
+ // 有无孩子/工作地点是 uni-data-checkbox 单选,选项值是数字,后台存的是字符串,
|
|
|
+ // 不转成数字类型的话严格比较匹配不上,选择器不会回显(work_address 为空字符串时不转,保持未选中状态)
|
|
|
+ this.baseFormData.has_children = Number(this.baseFormData.has_children);
|
|
|
+ if (this.baseFormData.work_address) this.baseFormData.work_address = Number(this.baseFormData.work_address);
|
|
|
this.baseFormData.profession = Number(this.baseFormData.profession);
|
|
|
this.baseFormData.marriage = Number(this.baseFormData.marriage);
|
|
|
this.baseFormData.type = Number(this.baseFormData.type);
|
|
|
@@ -372,7 +380,9 @@ export default {
|
|
|
this.baseFormData = Object.assign({}, this.baseFormData, res.data);
|
|
|
// 后台没填过的选择类字段存的是字符串 "0"(或者字段压根不存在),跟 age/sex 是同一套"0 代表未填"的约定,
|
|
|
// "0"/undefined 在 JS 里判真值容易漏判,选项列表都是从 value:1 开始编号,统一兜底成 1,否则选择器会显示空白
|
|
|
- ['profession','marriage','type','hospital_id','doctor_id'].forEach((key)=>{
|
|
|
+ // 注意:hospital_id/doctor_id 不能这么处理,它们是数据库里的真实 ID,不是从 1 开始编号,
|
|
|
+ // 硬编码成 1 大概率匹配不到真实医院/医生(见下面 getUserSelect/getDoctor 里"匹配不到就用列表第一个"的处理)
|
|
|
+ ['profession','marriage','type'].forEach((key)=>{
|
|
|
if (!this.baseFormData[key] || this.baseFormData[key] == '0') this.baseFormData[key] = 1
|
|
|
})
|
|
|
if (this.baseFormData.work_address == null || this.baseFormData.work_address == undefined) this.baseFormData.work_address = ''
|
|
|
@@ -385,9 +395,18 @@ export default {
|
|
|
let pickerArr = res.data;
|
|
|
// 只处理表单里实际用到的字段,其余字段(比如 career_type)后台可能还会返回,忽略即可,
|
|
|
// 避免像之前 career_type 那样污染 pickerIndexObj 导致提交校验报错
|
|
|
- ['profession','marriage','type','hospital'].forEach((key)=>{
|
|
|
- if (pickerArr[key]) this.pickerEchoShow(pickerArr[key], this.baseFormData[key === 'hospital' ? 'hospital_id' : key], key)
|
|
|
+ ['profession','marriage','type'].forEach((key)=>{
|
|
|
+ if (pickerArr[key]) this.pickerEchoShow(pickerArr[key], this.baseFormData[key], key)
|
|
|
})
|
|
|
+ if (pickerArr.hospital) {
|
|
|
+ this.pickerEchoShow(pickerArr.hospital, this.baseFormData.hospital_id, 'hospital')
|
|
|
+ // hospital_id 是真实医院 ID,不是从 1 开始编号,匹配不到时(包括原来是 0/空 的情况)默认选中返回的第一家医院
|
|
|
+ if (this.pickerIndexObj.hospital === -1 && pickerArr.hospital.length) {
|
|
|
+ this.pickerIndexObj.hospital = 0
|
|
|
+ this.baseFormData.hospital_id = pickerArr.hospital[0].value
|
|
|
+ this.baseFormData.hospital_name = pickerArr.hospital[0].text
|
|
|
+ }
|
|
|
+ }
|
|
|
this.selectData = Object.assign({}, this.selectData, pickerArr);
|
|
|
this.getDoctor(this.baseFormData.hospital_id)
|
|
|
}
|