|
@@ -1,193 +1,193 @@
|
|
|
-import { ElMessage } from 'element-plus'
|
|
|
-import { baseinfo } from '@/data/inpatient'
|
|
|
+import {ElMessage} from 'element-plus'
|
|
|
+import {baseinfo} from '@/data/inpatient'
|
|
|
|
|
|
export function nullPatient() {
|
|
|
- const patient = baseinfo()
|
|
|
- if (patient.inpatientNo && patient.admissTimes) {
|
|
|
- return false
|
|
|
- } else {
|
|
|
- ElMessage({
|
|
|
- message: '请先选择患者!',
|
|
|
- type: 'warning',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- return true
|
|
|
- }
|
|
|
+ const patient = baseinfo()
|
|
|
+ if (patient.inpatientNo && patient.admissTimes) {
|
|
|
+ return false
|
|
|
+ } else {
|
|
|
+ ElMessage({
|
|
|
+ message: '请先选择患者!',
|
|
|
+ type: 'warning',
|
|
|
+ duration: 2500,
|
|
|
+ showClose: true,
|
|
|
+ })
|
|
|
+ return true
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-function isValidPhone(phone) {
|
|
|
- const myreg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/
|
|
|
- return myreg.test(phone)
|
|
|
+export function isValidPhone(phone) {
|
|
|
+ const myreg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/
|
|
|
+ return myreg.test(phone)
|
|
|
}
|
|
|
|
|
|
function isValidIdcard(card) {
|
|
|
- const provinces = {
|
|
|
- 11: '北京',
|
|
|
- 12: '天津',
|
|
|
- 13: '河北',
|
|
|
- 14: '山西',
|
|
|
- 15: '内蒙古',
|
|
|
- 21: '辽宁',
|
|
|
- 22: '吉林',
|
|
|
- 23: '黑龙江',
|
|
|
- 31: '上海',
|
|
|
- 32: '江苏',
|
|
|
- 33: '浙江',
|
|
|
- 34: '安徽',
|
|
|
- 35: '福建',
|
|
|
- 36: '江西',
|
|
|
- 37: '山东',
|
|
|
- 41: '河南',
|
|
|
- 42: '湖北',
|
|
|
- 43: '湖南',
|
|
|
- 44: '广东',
|
|
|
- 45: '广西',
|
|
|
- 46: '海南',
|
|
|
- 50: '重庆',
|
|
|
- 51: '四川',
|
|
|
- 52: '贵州',
|
|
|
- 53: '云南',
|
|
|
- 54: '西藏',
|
|
|
- 61: '陕西',
|
|
|
- 62: '甘肃',
|
|
|
- 63: '青海',
|
|
|
- 64: '宁夏',
|
|
|
- 65: '新疆',
|
|
|
- 71: '台湾',
|
|
|
- 81: '香港',
|
|
|
- 82: '澳门',
|
|
|
- 91: '国外',
|
|
|
- }
|
|
|
+ const provinces = {
|
|
|
+ 11: '北京',
|
|
|
+ 12: '天津',
|
|
|
+ 13: '河北',
|
|
|
+ 14: '山西',
|
|
|
+ 15: '内蒙古',
|
|
|
+ 21: '辽宁',
|
|
|
+ 22: '吉林',
|
|
|
+ 23: '黑龙江',
|
|
|
+ 31: '上海',
|
|
|
+ 32: '江苏',
|
|
|
+ 33: '浙江',
|
|
|
+ 34: '安徽',
|
|
|
+ 35: '福建',
|
|
|
+ 36: '江西',
|
|
|
+ 37: '山东',
|
|
|
+ 41: '河南',
|
|
|
+ 42: '湖北',
|
|
|
+ 43: '湖南',
|
|
|
+ 44: '广东',
|
|
|
+ 45: '广西',
|
|
|
+ 46: '海南',
|
|
|
+ 50: '重庆',
|
|
|
+ 51: '四川',
|
|
|
+ 52: '贵州',
|
|
|
+ 53: '云南',
|
|
|
+ 54: '西藏',
|
|
|
+ 61: '陕西',
|
|
|
+ 62: '甘肃',
|
|
|
+ 63: '青海',
|
|
|
+ 64: '宁夏',
|
|
|
+ 65: '新疆',
|
|
|
+ 71: '台湾',
|
|
|
+ 81: '香港',
|
|
|
+ 82: '澳门',
|
|
|
+ 91: '国外',
|
|
|
+ }
|
|
|
|
|
|
- //检查号码是否符合规范,包括长度,类型
|
|
|
- const isCardNo = function (card) {
|
|
|
- //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
|
|
|
- const reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/
|
|
|
- return reg.test(card)
|
|
|
- }
|
|
|
+ //检查号码是否符合规范,包括长度,类型
|
|
|
+ const isCardNo = function (card) {
|
|
|
+ //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
|
|
|
+ const reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/
|
|
|
+ return reg.test(card)
|
|
|
+ }
|
|
|
|
|
|
- //取身份证前两位,校验省份
|
|
|
- const checkProvince = function (card) {
|
|
|
- const provinceCode = card.substr(0, 2)
|
|
|
- return provinces[provinceCode]
|
|
|
- }
|
|
|
+ //取身份证前两位,校验省份
|
|
|
+ const checkProvince = function (card) {
|
|
|
+ const provinceCode = card.substr(0, 2)
|
|
|
+ return provinces[provinceCode]
|
|
|
+ }
|
|
|
|
|
|
- //检查生日是否正确
|
|
|
- const checkBirthday = function (card) {
|
|
|
- const len = card.length
|
|
|
- //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
|
|
|
- if (len === 15) {
|
|
|
- const re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/
|
|
|
- let arr_data = card.match(re_fifteen)
|
|
|
- let year = arr_data[2]
|
|
|
- let month = arr_data[3]
|
|
|
- let day = arr_data[4]
|
|
|
- let birthday = new Date('19' + year + '/' + month + '/' + day)
|
|
|
- return verifyBirthday('19' + year, month, day, birthday)
|
|
|
- }
|
|
|
- //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
|
|
|
- if (len === 18) {
|
|
|
- const re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/
|
|
|
- let arr_data = card.match(re_eighteen)
|
|
|
- let year = arr_data[2]
|
|
|
- let month = arr_data[3]
|
|
|
- let day = arr_data[4]
|
|
|
- let birthday = new Date(year + '/' + month + '/' + day)
|
|
|
- return verifyBirthday(year, month, day, birthday)
|
|
|
- }
|
|
|
- return false
|
|
|
- }
|
|
|
+ //检查生日是否正确
|
|
|
+ const checkBirthday = function (card) {
|
|
|
+ const len = card.length
|
|
|
+ //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
|
|
|
+ if (len === 15) {
|
|
|
+ const re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/
|
|
|
+ let arr_data = card.match(re_fifteen)
|
|
|
+ let year = arr_data[2]
|
|
|
+ let month = arr_data[3]
|
|
|
+ let day = arr_data[4]
|
|
|
+ let birthday = new Date('19' + year + '/' + month + '/' + day)
|
|
|
+ return verifyBirthday('19' + year, month, day, birthday)
|
|
|
+ }
|
|
|
+ //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
|
|
|
+ if (len === 18) {
|
|
|
+ const re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/
|
|
|
+ let arr_data = card.match(re_eighteen)
|
|
|
+ let year = arr_data[2]
|
|
|
+ let month = arr_data[3]
|
|
|
+ let day = arr_data[4]
|
|
|
+ let birthday = new Date(year + '/' + month + '/' + day)
|
|
|
+ return verifyBirthday(year, month, day, birthday)
|
|
|
+ }
|
|
|
+ return false
|
|
|
+ }
|
|
|
|
|
|
- //校验日期
|
|
|
- const verifyBirthday = function (year, month, day, birthday) {
|
|
|
- const now = new Date()
|
|
|
- var now_year = now.getFullYear()
|
|
|
- //年月日是否合理
|
|
|
- if (birthday.getFullYear() == year && birthday.getMonth() + 1 == month && birthday.getDate() == day) {
|
|
|
- //判断年份的范围(3岁到120岁之间)
|
|
|
- var time = now_year - year
|
|
|
- return time >= 3 && time <= 120
|
|
|
- }
|
|
|
- return false
|
|
|
- }
|
|
|
+ //校验日期
|
|
|
+ const verifyBirthday = function (year, month, day, birthday) {
|
|
|
+ const now = new Date()
|
|
|
+ var now_year = now.getFullYear()
|
|
|
+ //年月日是否合理
|
|
|
+ if (birthday.getFullYear() == year && birthday.getMonth() + 1 == month && birthday.getDate() == day) {
|
|
|
+ //判断年份的范围(3岁到120岁之间)
|
|
|
+ var time = now_year - year
|
|
|
+ return time >= 3 && time <= 120
|
|
|
+ }
|
|
|
+ return false
|
|
|
+ }
|
|
|
|
|
|
- //校验位的检测
|
|
|
- const checkParity = function (card) {
|
|
|
- //15位转18位
|
|
|
- card = changeFivteenToEighteen(card)
|
|
|
- const len = card.length
|
|
|
- if (len === 18) {
|
|
|
- const arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)
|
|
|
- const arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2')
|
|
|
- var cardTemp = 0,
|
|
|
- i,
|
|
|
- valnum
|
|
|
- for (i = 0; i < 17; i++) {
|
|
|
- cardTemp += card.substr(i, 1) * arrInt[i]
|
|
|
- }
|
|
|
- valnum = arrCh[cardTemp % 11]
|
|
|
- return valnum == card.substr(17, 1)
|
|
|
- }
|
|
|
- return false
|
|
|
- }
|
|
|
+ //校验位的检测
|
|
|
+ const checkParity = function (card) {
|
|
|
+ //15位转18位
|
|
|
+ card = changeFivteenToEighteen(card)
|
|
|
+ const len = card.length
|
|
|
+ if (len === 18) {
|
|
|
+ const arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)
|
|
|
+ const arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2')
|
|
|
+ var cardTemp = 0,
|
|
|
+ i,
|
|
|
+ valnum
|
|
|
+ for (i = 0; i < 17; i++) {
|
|
|
+ cardTemp += card.substr(i, 1) * arrInt[i]
|
|
|
+ }
|
|
|
+ valnum = arrCh[cardTemp % 11]
|
|
|
+ return valnum == card.substr(17, 1)
|
|
|
+ }
|
|
|
+ return false
|
|
|
+ }
|
|
|
|
|
|
- //15位转18位身份证号
|
|
|
- const changeFivteenToEighteen = function (card) {
|
|
|
- if (card.length === 15) {
|
|
|
- const arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)
|
|
|
- const arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2')
|
|
|
- var cardTemp = 0,
|
|
|
- i
|
|
|
- card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6)
|
|
|
- for (i = 0; i < 17; i++) {
|
|
|
- cardTemp += card.substr(i, 1) * arrInt[i]
|
|
|
- }
|
|
|
- card += arrCh[cardTemp % 11]
|
|
|
- return card
|
|
|
- }
|
|
|
- return card
|
|
|
- }
|
|
|
+ //15位转18位身份证号
|
|
|
+ const changeFivteenToEighteen = function (card) {
|
|
|
+ if (card.length === 15) {
|
|
|
+ const arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)
|
|
|
+ const arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2')
|
|
|
+ var cardTemp = 0,
|
|
|
+ i
|
|
|
+ card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6)
|
|
|
+ for (i = 0; i < 17; i++) {
|
|
|
+ cardTemp += card.substr(i, 1) * arrInt[i]
|
|
|
+ }
|
|
|
+ card += arrCh[cardTemp % 11]
|
|
|
+ return card
|
|
|
+ }
|
|
|
+ return card
|
|
|
+ }
|
|
|
|
|
|
- if (!card) {
|
|
|
- return false
|
|
|
- }
|
|
|
+ if (!card) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
|
|
|
- card = card.trim()
|
|
|
+ card = card.trim()
|
|
|
|
|
|
- return card !== '' && isCardNo(card) && checkProvince(card) && checkBirthday(card) && checkParity(card)
|
|
|
+ return card !== '' && isCardNo(card) && checkProvince(card) && checkBirthday(card) && checkParity(card)
|
|
|
}
|
|
|
|
|
|
export function validateCovidAnswer(answer) {
|
|
|
- if (!answer.name) {
|
|
|
- return '请填写姓名!'
|
|
|
- }
|
|
|
- if (!isValidPhone(answer.phone)) {
|
|
|
- return '请填写正确的手机号!'
|
|
|
- }
|
|
|
- if (!answer.patientId) {
|
|
|
- if (!isValidIdcard(answer.idcard)) {
|
|
|
- return '请填写正确的身份证号!'
|
|
|
- }
|
|
|
- }
|
|
|
- if (!answer.temperature) {
|
|
|
- return '请选择体温选项!'
|
|
|
- }
|
|
|
- if (answer.temperature === '2' && !answer.feverNumber) {
|
|
|
- return '体温为发烧时请填写具体温度!'
|
|
|
- }
|
|
|
- if (answer.item5 === 51 && answer.symptoms.length < 1) {
|
|
|
- return '请选择症状!'
|
|
|
- }
|
|
|
- let count = 0
|
|
|
- for (let key in answer) {
|
|
|
- if (key.indexOf('item') !== -1) {
|
|
|
- count++
|
|
|
- }
|
|
|
- }
|
|
|
- if (count < 5) {
|
|
|
- return '有未选择的选项!'
|
|
|
- }
|
|
|
- answer.addrAdditional = ''
|
|
|
- return ''
|
|
|
+ if (!answer.name) {
|
|
|
+ return '请填写姓名!'
|
|
|
+ }
|
|
|
+ if (!isValidPhone(answer.phone)) {
|
|
|
+ return '请填写正确的手机号!'
|
|
|
+ }
|
|
|
+ if (!answer.patientId) {
|
|
|
+ if (!isValidIdcard(answer.idcard)) {
|
|
|
+ return '请填写正确的身份证号!'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!answer.temperature) {
|
|
|
+ return '请选择体温选项!'
|
|
|
+ }
|
|
|
+ if (answer.temperature === '2' && !answer.feverNumber) {
|
|
|
+ return '体温为发烧时请填写具体温度!'
|
|
|
+ }
|
|
|
+ if (answer.item5 === 51 && answer.symptoms.length < 1) {
|
|
|
+ return '请选择症状!'
|
|
|
+ }
|
|
|
+ let count = 0
|
|
|
+ for (let key in answer) {
|
|
|
+ if (key.indexOf('item') !== -1) {
|
|
|
+ count++
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (count < 5) {
|
|
|
+ return '有未选择的选项!'
|
|
|
+ }
|
|
|
+ answer.addrAdditional = ''
|
|
|
+ return ''
|
|
|
}
|