import rangeJson from './rangConfig'

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

// 校验范围通用方法
export const checkRange = (rule, value, callback) => {
  let min, max
  let val = parseFloat(value)
  let res
  // 处理 诸如 01 这种情况
  if (value && value.length > 1 && value.indexOf('.') < 0) {
    res = new RegExp(/^[1-9]\d*$/g).test(value)
  } else {
    res = true
  }

  rangeJson.forEach((item) => {
    if (item.field == rule.field) {
      min = item.min
      max = item.max
    }
  })
  const ruless = val >= min && val <= max && res
  // if(ruless || checkNeedRule(val)){
  if (!value || ruless) {
    callback()
  } else {
    callback(new Error(`输入范围${min}~${max}`))
  }
}

// 校验手机号
export const checkMobile = (rule, value, callback) => {
  const reg = /^1[3|4|5|6|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 val = parseFloat(value)
  const num = Number.isInteger(val)

  // const val = Number.parseInt(value);
  // const num =  /^[0-9]*[1-9][0-9]*$/.test(value);
  // if(num || checkNeedRule(val)){
  if (!value || num) {
    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)){
  if (!value || isNum.test(val)) {
    callback()
  } else {
    callback(new Error(`最多输入1位小数`))
  }
}

// 大于0的正整数
export const checkNormalInt = (rule, value, callback) => {
  const val = parseFloat(value)
  const isInteger = Number.isInteger(val)
  // if((isInteger && val > 0) || checkNeedRule(val)){
  if (!value || (isInteger && val > 0)) {
    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)){
  if (!value || isNum.test(val)) {
    callback()
  } else {
    callback(new Error(`最多输入2位小数`))
  }
}
