// import sysConfig from "./mm"; // import { getapi, postapi, putapi, deletapi } from "@/api/api"; const sysConfig = require('./mm'); const { getapi, postapi, putapi, deletapi } = require('../api/api'); //多级联动选择数据处理 add by pengjun function tcdate(date) { for (var i = 0; i < date.length; i++) { if (date[i].treeChildren.length == 0) { date[i].treeChildren = undefined; } else { tcdate(date[i].treeChildren); } } }; exports.tcdate = tcdate; //json 对像赋值 只从 provide/提供 对象 赋值到 receive/接收 中有的 key 项 add by pengjun receive provide function objCopy(provide, receive) { if (provide && receive) { let keys = Object.keys(receive); for (let key in keys) { if (provide[keys[key]] !== undefined) { receive[keys[key]] = provide[keys[key]]; } } } }; exports.objCopy = objCopy; //对象深拷贝 function deepCopy(obj) { if (obj == null || typeof obj != 'object') { return obj; } let copy; if (Array.isArray(obj)) { copy = []; for (let i = 0; i < obj.length; i++) { copy[i] = deepCopy(obj[i]); } } else { copy = {}; for (let key in obj) { copy[key] = deepCopy(obj[key]); } } return copy; }; exports.deepCopy = deepCopy; //类似PB中的dddw的功能 add by pengjun function dddw(arrayData, key, value, display) { //console.log(arrayData,key,value,display) let ret = value; if (arrayData) { for (let i = 0; i < arrayData.length; i++) { if (arrayData[i][key] == value) { ret = arrayData[i][display]; break; } } } return ret; }; exports.dddw = dddw; //一般uuid字段为空时,需设置为null值 function setNull(obj, arrayKeys) { if (arrayKeys) { for (let i = 0; i < arrayKeys.length; i++) { if (!obj[arrayKeys[i]] || obj[arrayKeys[i]].length < 1) { obj[arrayKeys[i]] = null; } } } }; exports.setNull = setNull; //将字符串转换成二进制形式,中间用空格隔开 function strToBinary(str) { let result = []; let list = str.split(""); for (var i = 0; i < list.length; i++) { if (i != 0) { result.push(" "); } let item = list[i]; let binaryStr = item.charCodeAt().toString(2); result.push(binaryStr); } return result.join(""); }; exports.strToBinary = strToBinary; //将二进制字符串转换成Unicode字符串 function binaryToStr(str) { var result = []; var list = str.split(" "); for (var i = 0; i < list.length; i++) { var item = list[i]; var asciiCode = parseInt(item, 2); var charValue = String.fromCharCode(asciiCode); result.push(charValue); } return result.join(""); }; exports.binaryToStr = binaryToStr; //数组过滤出符合条件的 function arrayFilter(arr, key, value) { let result = []; for (let i = 0; i < arr.length; i++) { if (arr[i][key] == value) { result.push(arr[i]); } } return result; }; exports.arrayFilter = arrayFilter; //数组相减 arrFront = arrFront - reduceArr ; function arrayReduce(arrFront, reduceArr, key) { let keys = key.split("="); let keyF = keys[0]; let keyR = keys.length > 1 ? keys[1] : keys[0]; //console.log(arrFront, reduceArr) if (!arrFront || arrFront.length < 1 || !reduceArr || reduceArr.length < 1) { return arrFront; } //console.log(arrFront.length, reduceArr.length) for (let i = 0; i < reduceArr.length; i++) { //console.log('i', i) for (let j = 0; j < arrFront.length; j++) { //console.log('j', j) if (reduceArr[i][keyR] == arrFront[j][keyF]) { arrFront.splice(j, 1); } } } return arrFront; }; exports.arrayReduce = arrayReduce; //判断数组中 是否存在 某个值的对象记录 如不存在返回 - 1,存在返回相应的 序列 function arrayExistObj(arr, key, value) { let ret = - 1 for (let i = 0; i < arr.length; i++) { if (arr[i][key] == value) { ret = i break } } return ret }; exports.arrayExistObj = arrayExistObj; //判断身份证是否合法 function checkIDCode(IDCode) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X let ret = false; let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if (reg.test(IDCode)) { ret = true; } if (!ret) return ret if (IDCode.length == 15) { if (IDCode.substring(8, 10).parseInt > 12 || IDCode.substring(8, 10).parseInt == 0) return false if (IDCode.substring(10, 12).parseInt > 31 || IDCode.substring(10, 12).parseInt == 0) return false } else { if (IDCode.substring(10, 12).parseInt > 12 || IDCode.substring(10, 12).parseInt == 0) return false if (IDCode.substring(12, 14).parseInt > 31 || IDCode.substring(12, 14).parseInt == 0) return false } return ret }; exports.checkIDCode = checkIDCode; //根据身份证号判断出生日期(yyyy-MM-DD),当前年龄与性别 粗犷式,不精确判断闰年平年 function parseID(id) { let ret = { birthday: null, age: null, sex: 'U', } if (!checkIDCode(id)) return ret let yearInMs = 1000 * 60 * 60 * 24 * 365.2425; //出生日期 ret.birthday = id.substring(6, 10) + '-' + id.substring(10, 12) + '-' + id.substring(12, 14) //年龄 ret.age = Math.floor((new Date().getTime() - new Date(ret.birthday).getTime()) / yearInMs) //奇数 男, 偶数 女 if (id.substring(16, 17) % 2 == 0) { ret.sex = 'F' } else { ret.sex = 'M' } return ret }; exports.parseID = parseID; //根据出生日期,计算当前年龄 粗犷式,不精确判断闰年平年 function birthdayToAge(birthday) { let yearInMs = 1000 * 60 * 60 * 24 * 365.2425; //年龄 return Math.floor((new Date().getTime() - new Date(birthday).getTime()) / yearInMs) }; exports.birthdayToAge = birthdayToAge; function ageToBirthday(age) { let yearInMs = 1000 * 60 * 60 * 24 * 365.2425 * Number(age); //年龄 return new Date(new Date().getTime() - yearInMs) }; exports.ageToBirthday = ageToBirthday; //分析身份证数据 function parsIcCardtoLocal(idNos, dictSex, dictNation) { let local = deepCopy(idNos); // { // "Code": "Success", // "Name": "刘滔", // "Sex": "男", // "Nation": "汉", // "Birthday": "1986-01-22", // "Address": "湖南省长沙县春华镇九木村新元组367号", // "DepartmentIC": "长沙县公安局", // "StartDateIC": "2019-11-25", // "EndDateIC": "2039-11-25", // "IDCode": "430121198601223693", // "Photo": "" // } //console.log(local, dictSex, dictNation) let lfind = -1; lfind = arrayExistObj(dictSex, 'displayName', local.Sex) // console.log(lfind,local.Sex) if (lfind > -1) local.sexId = dictSex[lfind].id; lfind = arrayExistObj(dictNation, 'displayName', local.Nation + '族') // console.log(lfind,local.Nation) if (lfind > -1) local.nationId = dictNation[lfind].nationId; local.birthDate = new Date(local.Birthday) local.age = birthdayToAge(local.Birthday) return local }; exports.parsIcCardtoLocal = parsIcCardtoLocal; function photoParse(photo) { //console.log(sysConfig,photo) let lphoto = '' //data:image、UpLoad/、/pic/Photo.jpg if (!photo) return '/pic/Photo.jpg' if (photo.indexOf("UpLoad/") > - 1) { lphoto = sysConfig.apiurl + '/' + photo + '?' + new Date().getTime() } else { lphoto = photo } //console.log(lphoto) return lphoto }; exports.photoParse = photoParse; async function savePeoplePhoto(peopleId, photoBase64) { let lres = { code: -1, msg: '' } if (!peopleId) return { code: -1, msg: '人员ID不能为空' } if (!photoBase64 || photoBase64.indexOf('data:image') < 0) return { code: -1, msg: '图像数据不是合法的base64编码数据' } let uploadPhoto = { patientRegisterId: peopleId, photo: photoBase64.split(",")[1], }; try { lres = await postapi(`/api/app/patient-register/up-load-img`, uploadPhoto) let body = { patientRegisterId: peopleId, photo: lres.data, } await postapi(`/api/app/patient-register/update-photo`, body) } catch (error) { lres = { code: -1, msg: error } } return lres }; exports.savePeoplePhoto = savePeoplePhoto; // 获取当前用户,当前界面的权限 // roteUrlorPageName 路由或需要控制权限的组件界面名称 function getPagePriv(routeUrlorPageName) { let priv = [] let userPriv = window.sessionStorage.getItem('userPriv') if (userPriv) priv = JSON.parse(userPriv) priv = priv.filter(e => { return e.routeUrl == routeUrlorPageName }) return priv }; exports.getPagePriv = getPagePriv; // 检查权限是否具有某个权限 // privs 权限集合; displayName 待验证的权限节点名称,有权限返回 true ,否则返回 false function checkPagePriv(privs, displayName) { let ret = false if (!(Array.isArray(privs) && privs.length > 0)) return ret let lfind = arrayExistObj(privs, 'displayName', displayName) if (lfind > -1) ret = true return ret }; exports.checkPagePriv = checkPagePriv; // 通用设置对象值 const setData = (obj, item, v) => { if (!(Array.isArray(item) && item.length > 0)) { this.$message.warning('调用父组件 setData 函数失败,原因:参数错误!') return } switch (item.length) { case 1: obj[item[0]] = v break; case 2: obj[item[0]][item[1]] = v break; case 3: obj[item[0]][item[1]][item[2]] = v break; case 4: obj[item[0]][item[1]][item[2]][item[3]] = v break; case 5: obj[item[0]][item[1]][item[2]][item[3]][item[4]] = v break; case 6: obj[item[0]][item[1]][item[2]][item[3]][item[4]][item[5]] = v break; case 7: obj[item[0]][item[1]][item[2]][item[3]][item[4]][item[5]][item[6]] = v break; default: this.$message.warning('调用父组件 setData 函数失败,原因:item 参数级超过7级!') break; } } exports.setData = setData; // 总检界面 按钮 可用控制 const sumBtnDisabled = (btnFlagName, patientRegister) => { let ret = false //' 请选择体检人员' if (!patientRegister.id) return true // '人员已锁定,不可执行此操作' if (!patientRegister.isLock) return true switch (btnFlagName) { case 'save': if (patientRegister.completeFlag == '3' || patientRegister.isAudit == 'Y') ret = true break; case 'edit': case 'del': case 'audit': if (patientRegister.completeFlag != '3' || patientRegister.isAudit == 'Y') ret = true break; case 'unAudit': case 'report': if (patientRegister.completeFlag != '3' || patientRegister.isAudit == 'N') ret = true break; default: break; } console.log('sumBtnDisabled btnFlagName, patientRegister,ret',btnFlagName, patientRegister,ret) return ret } exports.sumBtnDisabled = sumBtnDisabled;