123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- 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<data.length;i++){
- let obj={
- "flag": '',
- "questionId": '',
- "relationModule": '',
- "text": ""
- };
- if(data[i].type == 'sub'){ //这是子模板
- obj.relationModule = parseInt(data[i].id)
- }else if(data[i].type == 'input'){ //这个是输入框文字
- if(data[i].text){ //去掉空输入框
- obj.text = data[i].text
- }
- }else{ //这个是标签
- obj.questionId = data[i].id
- }
- obj.flag = data[i].flag || ''
- tmpArr.push(obj)
- }
- return tmpArr;
- }
- }
|