281 lines
7.1 KiB
JavaScript
281 lines
7.1 KiB
JavaScript
import request from '~/api/request';
|
|
|
|
let mode = ''
|
|
let modeText = ''
|
|
|
|
Page({
|
|
data: {
|
|
personInfo: {
|
|
username: '',
|
|
sex: 1,
|
|
id_number: '',
|
|
birthday: '',
|
|
operative_date: '',
|
|
delivery_type: '',
|
|
prenatal_check_type: '',
|
|
gestational_week: '',
|
|
conception_type: '',
|
|
birth_number: '',
|
|
parity_number: '',
|
|
birth_weight: '',
|
|
prenatal_check_remark: ''
|
|
},
|
|
genderOptions: [
|
|
{
|
|
label: '男',
|
|
value: 1,
|
|
},
|
|
{
|
|
label: '女',
|
|
value: 2,
|
|
}
|
|
|
|
],
|
|
|
|
birthVisible: false,
|
|
birthStart: '1970-01-01',
|
|
birthEnd: new Date().toISOString().split('T')[0],
|
|
birthTime: 0,
|
|
birthFilter: (type, options) => (type === 'year' ? options.sort((a, b) => b.value - a.value) : options),
|
|
addressText: '',
|
|
addressVisible: false,
|
|
provinces: [],
|
|
cities: [],
|
|
|
|
gridConfig: {
|
|
column: 3,
|
|
width: 160,
|
|
height: 160,
|
|
},
|
|
timeValue: '',
|
|
timePicker:new Date().toISOString().split('T')[0],
|
|
idError: false,
|
|
numberError: false,
|
|
weekError: false,
|
|
numberFormat: (v) => {
|
|
const isNumber = /^\d+(\.\d+)?$/.test(v);
|
|
if (isNumber) {
|
|
return parseFloat(v).toFixed(2);
|
|
}
|
|
return v;
|
|
},
|
|
// 下拉
|
|
selectList: [],
|
|
selectValue: '',
|
|
selectVisible: false,
|
|
deliveryList:[{label: '顺产', value: 1},{label: '剖腹产', value: 2}],
|
|
prenatal_checkList: [{label: '有', value: 1},{label: '无', value: 2}],
|
|
parity_numberList: [{label: '1胎', value: 1},{label: '2胎', value: 2},{label: '3胎', value: 3},{label: '大于等于4胎', value: 4}],
|
|
birth_numberList:[{label: '1产', value: 1},{label: '2产', value: 2},{label: '大于等于3产', value: 3}],
|
|
conception_typeList: [{label: '自然受孕', value: 1},{label: '辅助生殖技术', value: 2}]
|
|
},
|
|
|
|
onLoad() {
|
|
// this.initAreaData();
|
|
this.getPersonalInfo()
|
|
},
|
|
async getPersonalInfo() {
|
|
const info = await request('patient/basic/0')
|
|
this.setData({
|
|
personInfo: {
|
|
username: info.username,
|
|
sex: info.sex,
|
|
id_number: info.id_number,
|
|
birthday: info.birthday || '',
|
|
operative_date: info.operative_date,
|
|
delivery_type: info.delivery_type,
|
|
prenatal_check_type: info.prenatal_check_type,
|
|
gestational_week: info.gestational_week,
|
|
conception_type: info.conception_type,
|
|
birth_number: info.birth_number,
|
|
parity_number: info.parity_number,
|
|
birth_weight: info.birth_weight,
|
|
prenatal_check_remark: info.prenatal_check_remark
|
|
}
|
|
})
|
|
},
|
|
|
|
|
|
getAreaOptions(data, filter) {
|
|
const res = Object.keys(data).map((key) => ({ value: key, label: data[key] }));
|
|
return typeof filter === 'function' ? res.filter(filter) : res;
|
|
},
|
|
|
|
getCities(provinceValue) {
|
|
return this.getAreaOptions(
|
|
areaList.cities,
|
|
(city) => `${city.value}`.slice(0, 2) === `${provinceValue}`.slice(0, 2),
|
|
);
|
|
},
|
|
|
|
initAreaData() {
|
|
const provinces = this.getAreaOptions(areaList.provinces);
|
|
const cities = this.getCities(provinces[0].value);
|
|
this.setData({ provinces, cities });
|
|
},
|
|
|
|
onAreaPick(e) {
|
|
const { column, index } = e.detail;
|
|
const { provinces } = this.data;
|
|
|
|
// 更改省份则更新城市列表
|
|
if (column === 0) {
|
|
const cities = this.getCities(provinces[index].value);
|
|
this.setData({ cities });
|
|
}
|
|
},
|
|
|
|
showPicker(e) {
|
|
mode = e.currentTarget.dataset.mode;
|
|
if(mode == "birth"){
|
|
this.setData({
|
|
birthVisible: true,
|
|
timePicker: this.data.personInfo.birthday ? this.data.personInfo.birthday : new Date().toISOString().split('T')[0]
|
|
});
|
|
} else {
|
|
this.setData({
|
|
birthVisible: true,
|
|
timePicker: this.data.personInfo.operative_date ? this.data.personInfo.operative_date : new Date().toISOString().split('T')[0]
|
|
});
|
|
}
|
|
|
|
|
|
},
|
|
|
|
hidePicker(e) {
|
|
const { mode } = e.currentTarget.dataset;
|
|
this.setData({
|
|
[`${mode}Visible`]: false,
|
|
});
|
|
},
|
|
|
|
onPickerChange(e) {
|
|
const { value, label } = e.detail;
|
|
console.log(mode, mode == 'birth')
|
|
if(mode == 'birth'){
|
|
this.setData({
|
|
['personInfo.birthday']: value
|
|
})
|
|
}else{
|
|
this.setData({
|
|
['personInfo.operative_date']:value
|
|
})
|
|
}
|
|
|
|
},
|
|
|
|
personInfoFieldChange(field, e) {
|
|
const { value } = e.detail;
|
|
this.setData({
|
|
[`personInfo.${field}`]: value,
|
|
});
|
|
},
|
|
|
|
onNameChange(e) {
|
|
this.personInfoFieldChange('username', e);
|
|
},
|
|
|
|
onGenderChange(e) {
|
|
this.personInfoFieldChange('sex', e);
|
|
},
|
|
// onYearChange(e) {
|
|
// this.personInfoFieldChange('yearType', e);
|
|
// },
|
|
|
|
onIntroductionChange(e) {
|
|
this.personInfoFieldChange('introduction', e);
|
|
},
|
|
|
|
onPhotosRemove(e) {
|
|
const { index } = e.detail;
|
|
// const { photos } = this.data.personInfo;
|
|
|
|
// photos.splice(index, 1);
|
|
// this.setData({
|
|
// 'personInfo.photos': photos,
|
|
// });
|
|
},
|
|
|
|
onPhotosSuccess(e) {
|
|
const { files } = e.detail;
|
|
// this.setData({
|
|
// 'personInfo.photos': files,
|
|
// });
|
|
},
|
|
|
|
onPhotosDrop(e) {
|
|
const { files } = e.detail;
|
|
// this.setData({
|
|
// 'personInfo.photos': files,
|
|
// });
|
|
},
|
|
|
|
async onSaveInfo() {
|
|
// console.log(this.data.personInfo);
|
|
const res = await request('patient/set_personal_information', 'get', {
|
|
data: this.data.personInfo
|
|
})
|
|
wx.switchTab({
|
|
url: `/pages/my/index`,
|
|
});
|
|
},
|
|
onIdInput(e){
|
|
// 18位身份证正则
|
|
const { idError } = this.data;
|
|
const reg18 = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(e.detail.value);
|
|
if (idError == reg18) {
|
|
this.setData({
|
|
idError: !reg18,
|
|
});
|
|
}
|
|
this.personInfoFieldChange('id_number', e);
|
|
},
|
|
onWeightInput(e){
|
|
const { numberError } = this.data;
|
|
const isNumber = /^\d+(\.\d+)?$/.test(e.detail.value);
|
|
if (numberError === isNumber) {
|
|
this.setData({
|
|
numberError: !isNumber,
|
|
});
|
|
}
|
|
this.personInfoFieldChange('birth_weight', e);
|
|
},
|
|
onWeekInput(e){
|
|
const { weekError } = this.data;
|
|
const isNumber = /^\d+(\.\d+)?$/.test(e.detail.value);
|
|
if (weekError === isNumber) {
|
|
this.setData({
|
|
weekError: !isNumber,
|
|
});
|
|
}
|
|
this.personInfoFieldChange('gestational_week', e);
|
|
},
|
|
showSelect(e){
|
|
const { mode, list } = e.currentTarget.dataset;
|
|
modeText = mode
|
|
this.setData({
|
|
selectVisible: true,
|
|
selectValue: this.data.personInfo[mode] ? this.data.personInfo[mode] : '',
|
|
selectList: list
|
|
})
|
|
},
|
|
onSelectChange(e){
|
|
const { value, label } = e.detail;
|
|
this.setData({
|
|
[`personInfo.${modeText}`]: value[0]
|
|
})
|
|
},
|
|
|
|
|
|
onSaveInfo(){
|
|
console.log(this.data.personInfo)
|
|
let obj = this.data.personInfo
|
|
obj.birth_weight = Number(obj.birth_weight)
|
|
obj.gestational_week = Number(obj.gestational_week)
|
|
if( obj.prenatal_check_type == 2){
|
|
obj.prenatal_check_remark = '无'
|
|
}
|
|
request('patient/set_personal_information', 'post', obj)
|
|
}
|
|
});
|