123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- 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
- }
- }
- 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 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 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 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
- }
- if (!card) {
- return false
- }
- card = card.trim()
- 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 ''
- }
|