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 mapping = {
        "sonQuestion": "",
        "position": 0,               //默认值，传0
        "formPosition": 1,          // 填写单显示位置(0：左， 1：上)
        "exclusionType": 1,         //互斥：1
        "text": "",                 //如果有文本内容，上面的值都置空
        "symptomType": 0,           //0：默认值 1：主症状特有 2：伴随症状特有
      }
      let sonQuestionMap = {     //目前只在既往史中用到，同层数据置空
          "id": "",
          "questionMappings": []
      }
      let tmpData = dataArr[i];
  
      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;
          }else{
            mapping.formPosition = 0;
            mapping.exclusionType = 0;
          }
          sonMappingObj.sonQuestion = tmpData[j];    //{sonQuestion:18}
          sonMappingArr.push(sonMappingObj);         //[{sonQuestion:18},{sonQuestion:19}]
          
          sonQuestionMap.questionMappings = sonMappingArr;    //{id:"",[{sonQuestion:18},{sonQuestion:18}]}
          mapping.questionMappingSon = sonQuestionMap;
        }
        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';
      }
      return {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',           //是否复制当前模块
      "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{
          return;
        }
      }else{    //这个是标签
        obj.questionId = data[i].id
      }
      tmpArr.push(obj)
    }
    return tmpArr;
  }
}

