import  dataSupportConfig  from "/@/views/dataSupport/config/filed";

class Commom{
  colPropsSpanMax=6;
  currentSpan=6;
  /**
   * 补全formList配置默认的参数
  */
  getInitInputList(inputList){
    if(inputList instanceof Array){
      const MaxSpan=16;
      const tempData:any=[];
      if(MaxSpan/inputList.length>6){
        this.currentSpan=this.colPropsSpanMax;
      }else{
        this.currentSpan=Math.floor(MaxSpan/inputList.length);
      }
      for(let i=0;i<inputList.length;i++){
        tempData.push(this.getInitInput(inputList[i]));
      }
      inputList=tempData;
    }else{
      inputList=this.getInitInput(inputList);
    }
    return inputList
  }

  /**
   * 补全form配置默认的参数
  */
  getInitInput(inputItem){
    //默认的提示
    let placeholder="请输入";
    //默认的长度校验
    let maxLength=50;//可输入长度
    let dynamicRules:any=() => {
      return [
        {
          required: false,
          validator: (_, value) => {
            if (String(value).length > maxLength) {
              return Promise.reject('字数不超过'+maxLength+'个字');
            }
            return Promise.resolve();
          },
        },
      ];
    };
    //如果是输入框则提示为"请输入",否则提示为“请选择”，并且不对输入的长度进行校验
    if(this.valueIsEmpty(inputItem.component)&&inputItem.component!="Input"&&inputItem.component!="InputTextArea"){
      placeholder="请选择";
      dynamicRules=true;
    }
    //通过字段获取字段名称
    if(!this.valueIsEmpty(inputItem.label)){
      inputItem.label=this.getInputFiled(inputItem.field);
    }
    //input默认的方式
    let defaultValue={
      component:"Input",
      colProps: { span: this.currentSpan },
      labelWidth:inputItem.label.length*16+10,
      componentProps: {
        maxLength: maxLength,
        placeholder: placeholder+inputItem.label,
      },
      dynamicRules: dynamicRules,
    };
    //删除defaultValue中已在inputItem存在的设置
    for(let item in defaultValue){
      if(inputItem.hasOwnProperty(item)){
        delete defaultValue[item];
      };
    };
    //补全inputItem;
    inputItem=Object.assign(inputItem,defaultValue);
    return inputItem;
  }

  /**
   * 补全columns配置默认的参数
   * */
  getInitColumns(columnsList){
    if(columnsList instanceof Array){
      for(let i=0;i<columnsList.length;i++){
        const defaultValue={
          width:120,
        }
        if(typeof columnsList[i]=="object"){ //对象的补全
          for(let item in defaultValue){
            if(columnsList[i].hasOwnProperty(item)){
              delete defaultValue[item];
            };
            columnsList[i]=Object.assign(columnsList[i],defaultValue);
          }
        }else if(typeof columnsList[i]=="string"){ //字符的补全
          defaultValue['dataIndex']=columnsList[i];
          defaultValue['title']=this.getColumnsFiled(columnsList[i]);
          columnsList[i]=defaultValue;
        }
      }
    };
    return columnsList;
  }

  /**
   * 通过本子系统设置的字段，获取对应的字段名称
   * */
  getInputFiled(filed){
    return dataSupportConfig.basinInformation[filed]||"";
  }

  
  /**
   * 通过本子系统设置的字段，获取对应的字段名称
   * */
  getColumnsFiled(filed){
    return dataSupportConfig.tableColumns[filed]||"";
  }
  
  /**
   * 本方法用于判断传入值是否有效，为null、undefined、""返回false
   * */
  valueIsEmpty(vale) {
    let typeValue = typeof vale;
    if (typeValue == "undefined") {
      return false
    } else if (typeValue == "object" || typeValue == "string") {
      if (!vale) {
        return false
      } else {
        return true
      }
    } else {
      return true
    }
  }
}
const commom=new Commom();
export default commom;