<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6"> <el-form-item label="年龄" prop="patientAge"> <el-input v-model="formdata.patientAge" placeholder="年龄"> <el-select v-model="formdata.patientAgeUnit" slot="append" @change="ageChange" style="width: 60px;" > <el-option label="岁" value="Y" ></el-option> <el-option label="月" value="M" ></el-option> <el-option label="天" value="D" ></el-option> </el-select> </el-input> </el-form-item> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6"> <el-form-item label="身份证" prop="idCard"> <el-input v-model="formdata.idCard" placeholder="身份证" @change="idCardChange"></el-input> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6"> <el-form-item label="出生日期" prop="birthDate"> <el-date-picker v-model="formdata.birthDate" type="date" placeholder="选择日期" style="width: 100%;" > </el-date-picker> </el-form-item> </el-col>
'formdata': { patientName: '', // 姓名 birthDate: '', // 出生日期 gender: 1, // 性别 值域:0-未知的性别;1-男性;2-女;9-未说明的性别 'address': '', // 联系地址 'patientPhone': '', // 联系电话 organizationCode: this.$store.state.user.hospitalCode, // 档案所属机构 'visitNo': '', // 就诊号 'visitNumber': 0, patientAge: '', // 年龄 21Y/8M/9D/10H patientAgeUnit: 'Y', // 21Y/8M/9D/10H patientSource: 1, // 值域:1-门诊;2-住院;3-体检;5-急诊 'medicalCardNo': '', // 就诊卡号 'medicalRecordNo': '', // 病历号 'clinicCode': '', // 门诊号 'hospizationCode': '', // 住院号 visitDateTime: dateFormatter(new Date()), // 就诊时间 'visitDeparmentCode': '', // 就诊科室代码 'visitDeparment': '', // 就诊科室 'attendDoctorCode': '', // 接诊医生代码 'attendDoctor': '', // 就诊医生 'diagnosis': '', // 诊断 'icD10': '', // icd10 'bedNo': '', // 床号 'wardName': '', // 病区 'wardNo': '', // 病区代码 'roomNo': '', // 病房号 }, rules: { patientId: [{ required: true, message: '请输入患者ID', trigger: 'blur' }], patientName: [{ required: true, message: '请输入姓名', trigger: 'blur' }], patientAge: [{ required: true, message: '请输入年龄', trigger: 'blur' }], birthDate: [{ required: true, message: '请选择出生日期', trigger: 'blur' }], idCard: [{ required: !!window.g.CHECK_QUERY_HR_SHOW, message: '请输入身份证', trigger: 'blur' }], patientSource: [{ required: true, message: '请选择病人类型', trigger: 'blur' }], gender: [{ required: true, message: '请选择性别', trigger: 'blur' }], visitDateTime: [{ required: true, message: '请选择就诊时间', trigger: 'blur' }], applyDepartment: [{ required: true, message: '请选择申请科室', trigger: 'change' }], applyDoctor: [{ required: true, message: '请选择申请医生', trigger: 'change' }], applyCode: [{ required: true, message: '请输入申请单号', trigger: 'blur' }] },
// 根据输入身份证号,自动填写 性别、生日、年龄 idCardChange() { let id = this.formdata.idCard if (id && isIdCard(id)) { this.formdata.gender = sexById(id) this.formdata.birthDate = birthdayById(id) this.setAgeValApply(this.formdata.birthDate) } }, getMonthDay(year, month) { let days = new Date(year, month + 1, 0).getDate() return days }, // 根据出生日期计算年龄 getAgeApply(strAge) { var birArr = strAge.split('-') var birYear = birArr[0] var birMonth = birArr[1] * 1 var birDay = birArr[2] var d = new Date() var nowYear = d.getFullYear() var nowMonth = d.getMonth() + 1 // 记得加1 var nowDay = d.getDate() var returnAge; var errFlag = false; var errMsg = '' if (birArr == null) { return { errFlag: true, errMsg: '', val: '' } } var dBir = new Date(birYear, birMonth - 1, birDay) if (dBir.getFullYear() == birYear && (dBir.getMonth() + 1) == birMonth && dBir.getDate() == birDay) { if (nowYear == birYear) { // 同年 // returnAge = 0; //同年 var MonthDiff = nowMonth - birMonth // 计算月 if (MonthDiff >= 0) { if (nowMonth == birMonth) { let dayDiff = nowDay - birDay // 计算日 if (dayDiff >= 0) { returnAge = dayDiff + '#D' } else { errFlag = true errMsg = '出生日期晚于今天,数据有误' } } else if (nowMonth == birMonth + 1) { var preMonthDays = this.getMonthDay(birYear, birMonth) let dayDiff = nowDay + preMonthDays - birDay // 计算日 if (dayDiff >= 0) { returnAge = dayDiff + '#D' } else { errFlag = true errMsg = '出生日期晚于今天,数据有误' } } else { returnAge = MonthDiff + 1 + '#M' } } else { errFlag = true errMsg = '出生日期晚于今天,数据有误' } return { errFlag: errFlag, errMsg: errMsg, val: returnAge } } else { // 不同年 var ageDiff = nowYear - birYear // 计算年 if (ageDiff > 0) { if (nowMonth == birMonth) { let dayDiff = nowDay - birDay // 计算日 if (dayDiff < 0) { if (ageDiff != 1) { returnAge = (ageDiff - 1) + '#Y' } else { returnAge = 11 + '#M' } } else { returnAge = ageDiff + '#Y' } } else { var monthDiff = nowMonth - birMonth // 计算月 if (monthDiff < 0) { // returnAge = ageDiff - 1; if (ageDiff != 1) { returnAge = (ageDiff - 1) + '#Y' } else { returnAge = Math.abs(nowMonth - birMonth + 12) + '#M' } } else { returnAge = ageDiff + '#Y' } } } else { errFlag = true errMsg = '出生日期晚于今天,数据有误'// 返回-1 表示出生日期输入错误 晚于今天 } return { errFlag: errFlag, errMsg: errMsg, val: returnAge + '#Y' } } } else { return { errFlag: true, errMsg: '输入的日期格式错误!', val: '' } } }, setAgeValApply(strAge) { var ageObj = this.getAgeApply(strAge) if (!ageObj.errFlag) { var ageArr = ageObj.val.split('#') this.formdata.patientAgeUnit = ageArr[1] this.formdata.patientAge = ageArr[0] } else if (ageObj.errMsg != '') { this.$alert(ageObj.errMsg, '提示', { confirmButtonText: '确定', type: 'warning', callback: action => { this.formdata.birthDate = '' } }) return false } }, // 监听年龄变化,计算生日 ageChange() { const bday = birthdayByAge(this.formdata.patientAge, this.formdata.patientAgeUnit) this.formdata.birthDate = bday },