export default { //判断字符串是否能转成json isJsonStr(str) { if (typeof str === 'string') { try { const myStr = str.replace(/^\s*/, ''); const obj = JSON.parse(str); if (myStr[0] === '{') { return true; } else { return false; } } catch (e) { return false; } } }, //获取两个时间间隔天数 getTimeRangeDay(timeArr) { if(!timeArr||timeArr.length==0){ return null; } return (new Date(timeArr[1]) - new Date(timeArr[0])) / (1000 * 60 * 60 * 24); }, //导出接口返回流下载 downloadExportedData(data, fileName) { var blob = new Blob([data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'}); //application/vnd.openxmlformats-officedocument.spreadsheetml.sheet这里表示xlsx类型 var downloadElement = document.createElement('a'); var href = window.URL.createObjectURL(blob); //创建下载的链接 downloadElement.href = href; downloadElement.download = fileName; //下载后文件名 document.body.appendChild(downloadElement); downloadElement.click(); //点击下载 document.body.removeChild(downloadElement); //下载完成移除元素 window.URL.revokeObjectURL(href); }, emailReg: /^([a-zA-Z0-9_\.-]+)@([\da-zA-Z\.-]+)\.([a-z\.]{2,6})$/, // pswReg: /^(?![0-9]+$)(?![a-zA-Z]+$)/, pswReg: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z\W_]{6,16}$/,//与后台保持一致 phoneReg: new RegExp(/^((13|14|15|16|17|18|19)\d{9})$/), url:/[a-zA-z]+:\/\/[^\s]*/, getDateStr(string,str){ var str_before = string.split(str)[0]; var str_after = string.split(str)[1]; }, exportCondition(time){ const rangeDay = this.getTimeRangeDay(time); if (!time||time.length==0) { return '请先选择导出时间'; } if (rangeDay > 30) { return '目前只能导出30天内数据,请重新筛选时间'; } return true; }, /** * * @param {arr} 被操作的数组 * @param {val} 需要剔除或者判断的值 * @param {type} 是剔除(1)还是判断(2)是否存在,不存在返回[] * @param {des} 1数組元素是对象 * */ filterArr(arr,val,type,des){ //数组剔除指定元素 if(type == 1){ if(des){ return arr.filter(item => item.id != val) //判断id }else{ return arr.filter(item => item != val) //判断值 } }else{ let tmp = arr.filter(item => JSON.stringify(item) == JSON.stringify(val)) //判读是否存在 if(JSON.stringify(tmp) == '[]'){ return false; }else{ return true; } } }, /** * * @param {dataArr} 右侧选中的数据二维数组 * @param {type} 填写单类型 */ dataRecombination(dataArr,type){ // console.log(dataArr,type) let tmpArr = []; for(let i = 0;i < dataArr.length;i++){ let tmpData = dataArr[i]; let mapping = { "sonQuestion": "", "position": 0, //默认值,传0 "formPosition": 1, // 填写单显示位置(0:左, 1:上) "exclusionType": 1, //互斥:1 "text": "", //如果有文本内容,上面的值都置空 "symptomType": 0, //0:默认值 1:主症状特有 2:伴随症状特有 } let sonQuestionMap = { //目前只在既往史中用到,同层数据置空 "id": "", "questionMappings": [] } if(type == 6 && tmpData.length > 0){//既往史 let sonMappingArr=[]; for(let j = 0; j < tmpData.length;j++){ //多个标签 let sonMappingObj = {}; if(i == 0){ mapping.formPosition = 1; mapping.exclusionType = 1; mapping.sonQuestion = tmpData[j]; }else if(i == 1){ mapping.formPosition = 0; mapping.exclusionType = 0; mapping.sonQuestion = tmpData[j]; }else{ mapping.formPosition = 0; mapping.exclusionType = 0; sonMappingObj.sonQuestion = tmpData[j]; //{sonQuestion:18} sonQuestionMap.questionMappings = sonMappingArr; //{id:"",[{sonQuestion:18},{sonQuestion:18}]} mapping.questionMappingSon = sonQuestionMap; } sonMappingArr.push(sonMappingObj); //[{sonQuestion:18},{sonQuestion:19}] } tmpArr.push(mapping) }else if(type == 2 && tmpData.length > 0){//杂音 if(i == 0){ mapping.formPosition = 1; mapping.exclusionType = 1; }else{ mapping.formPosition = 0; mapping.exclusionType = 0; } mapping.sonQuestion = tmpData[0]; //{sonQuestion:18} tmpArr.push(mapping) }else if (type == 4 || type == 3 || type == 7) { //横铺展开(如咳嗽) mapping.formPosition = 0; mapping.exclusionType = 0; mapping.symptomType = dataArr[i].symptomType if(dataArr[i].type === 'input') { if(dataArr[i].text) { //过滤掉输入框未输入内容项 mapping.text = dataArr[i].text tmpArr.push(mapping) } } else { mapping.sonQuestion = dataArr[i].id tmpArr.push(mapping) } } else if(type == 11) { //推送症状类型(添加症状) mapping.sonQuestion = dataArr[i].id tmpArr.push(mapping) } } return tmpArr; }, /** * 单选数据转换提交 * **/ simpleOptionData(data){ let arr = []; data.map((it,i)=>{ let code = ''; let abnormal = 0 if(it.isError){ abnormal = 1; } if(it.isNone){ code = '2'; } if(it.isBan){ code = '1'; } if(it.name){ arr.push({name:it.name,defaultSelect:it.defaultSelect?'1':'0',code,abnormal,remark:'单选项-'+it.name}); } }); return arr; }, /** *将提交的参数转换成对应的组件form中的key * */ transformKeys(data, tagFlag){ //tagFlag:独立标签还是标签组 (2是标签组) const maps = { "controlType": 'region2', //控件类型(0:默认值 1:下拉单选 2:下拉多选 6:文本框 7:数字键盘文本框 99:联合推送) // "tagType": 'region2',(这个注释掉,不要解开了!!!!) "id": "id", //新增id置空 "type": 'region1', //标签归属 "tagName": 'region3', //系统名称 "name": 'region4', //界面名称 "joint": 'region5', //标签间的连接符 "subType": 'region6', //0:可以,1:不可以(当项目检索) "sexType": 'region7', //1:男,2:女,3:通用 "ageBegin": 'region8', //最小年龄 "ageEnd": 'region9', //最大年龄 "copyType":'region10', //是否复制主标签 "showAdd":'region11', //是否复制当前模块 "itemType": 'region12', "labelPrefix":'prefix', //前缀 "labelSuffix":'suffix', //后缀 "maxValue":'maxNormalVal', //前缀 "minValue":'minNormalVal' //后缀 }; if (tagFlag == 2) { maps["tagType"] = 'region2' } let obj = {}; for(let it in maps){ obj[maps[it]] = typeof data[it]=='number'?data[it]+'':data[it]; } return obj; }, /** * 模板数据提交转化函数 */ orderTemplateData(data){ let tmpArr = []; for(let i =0;i