import rangeJson from './rangConfig';

// 这个方法，是用户在选择随访轮次（6个月，12个月）后续操作
let checkNeedRule = (val) => {
  const needRule = localStorage.getItem('needRule');
  if(( (!val||val=='') && (!needRule || needRule=='true') )){
    return true;
  }
  return false;
}

// 校验范围通用方法
export const checkRange = (rule, value, callback) => {
  let min,max;
  let val = Number(value);
  rangeJson.forEach((item)=>{
    if(item.field == rule.field){
      min = item.min;
      max = item.max;
    }
  })
  if(((val >= min) && (val <= max)) || checkNeedRule(val)){
    callback()
  }else{
    callback(new Error(`输入范围${min}~${max}`))
  }
}

// 校验手机号
export const checkMobile = (rule, value, callback) => {
  const reg = /^1[3|4|5|7|8|9][0-9]{9}$/; //验证规则
  const flag = reg.test(value);
  if(flag){
    callback()
  }else{
    callback(new Error(`请输入正确的手机号码`))
  }
}

// 校验是否是整数
export const checkIsInteger = (rule, value, callback) => {
  const num = Number.isInteger(parseFloat(value));
  const val = parseFloat(value);
  if(num || checkNeedRule(val)){
    callback()
  }else{
    callback(new Error(`输入整数`))
  }
}

// 校验是否是一位小数
export const checkNumberIsToFixed = (rule, value, callback) => {
  const isNum = /^(([1-9][0-9]*)|(([0]\.\d{1,1}|[1-9][0-9]*\.\d{1,1})))$/;
  const val = Number(value);
  if(isNum.test(val)  || checkNeedRule(val)){
    callback()
  }else{
    callback(new Error(`最多输入1位小数`))
  }
}

// 大于0的正整数
export const checkNormalInt = (rule, value, callback) => {
  const isInteger = Number.isInteger(parseFloat(value));
  const val = parseFloat(value);
  if((isInteger && val > 0) || checkNeedRule(val)){
    callback()
  }else{
    callback(new Error(`请输入大于0的正整数`))
  }
}

// 校验是否是两位小数
export const checkNumberIsToFixedTwo = (rule, value, callback) => {
  const isNum = /^(-)?(0|[1-9]\d*)(\s|$|\.\d{1,2}\b)/;
  const val = Number(value);
  if(isNum.test(val)  || checkNeedRule(val)){
    callback()
  }else{
    callback(new Error(`最多输入2位小数`))
  }
}
