/**
 * Created by jiachenpan on 16/11/18.
 */

export function isvalidUsername(str) {
  const valid_map = ['admin', 'editor']
  return valid_map.indexOf(str.trim()) >= 0
}

/* 合法uri*/
export function validateURL(textval) {
  const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  return urlregex.test(textval)
}

/* 小写字母*/
export function validateLowerCase(str) {
  const reg = /^[a-z]+$/
  return reg.test(str)
}

/* 大写字母*/
export function validateUpperCase(str) {
  const reg = /^[A-Z]+$/
  return reg.test(str)
}

/* 大小写字母*/
export function validatAlphabets(str) {
  const reg = /^[A-Za-z]+$/
  return reg.test(str)
}

//
export function validateTyshxydm(rule, value, callback) {
  const reg =  /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g
  // /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g
  // /^([0-9ABCDEFGHJKLMNPQRTUWXY]{2})([0-9]{6})([0-9ABCDEFGHJKLMNPQRTUWXY]{9})([0-9Y])$/;
  if (value == '' || value == undefined || value == null) {
    callback(new Error('统一社会信用代码不能为空'));
  } else {
    if (!reg.test(value)) {
      callback(new Error('请输入正确的统一社会信用代码'));
    } else {
      callback();
    }
  }
}


export function validatePhone(rule, value, callback) {
  const reg = /^1[3|4|5|7|8][0-9]\d{8}$/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if ((!reg.test(value)) && value != '') {
      callback(new Error('请输入正确的手机号码'));
    } else {
      callback();
    }
  }
}



/* 是否邮箱*/
export function validateEMail(rule, value, callback) {
  const reg = /^([a-zA-Z0-9]+[-_\.]?)+@[a-zA-Z0-9]+\.[a-z]+$/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if (!reg.test(value)) {
      callback(new Error('请输入正确的邮箱地址'));
    } else {
      callback();
    }
  }
}

/*是否传真 */
export function validateTelphone(rule, value, callback) {
  const reg = /^(\d{3,4}-)?\d{7,8}$/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if ((!reg.test(value)) && value != '') {
      callback(new Error('请输入正确的电话号码'));
    } else {
      callback();
    }
  }
}


export function validateTelphone1(rule, value, callback) {
  const reg = /^(\d{3,4}-)?\d{7,8}$/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if ((!reg.test(value)) && value != '') {
      callback(new Error('请输入正确的传真号码'));
    } else {
      callback();
    }
  }
}



// 限制字符6
export function validateSix (rule, value, callback){
  if (value!=null && value.length > 6) {
    callback(new Error("输入字符个数最大6个"));
  } else {
    callback();
  }
};


// 限制字符18
export function validateEigthteen (rule, value, callback){
  if (value!=null && value.length > 18) {
    callback(new Error("输入字符个数最大18个"));
  } else {
    callback();
  }
};

// 限制字符20
export function validateTwo (rule, value, callback){
  if (value!=null && value.length > 20) {
    callback(new Error("输入字符个数最大20个"));
  } else {
    callback();
  }
};

// 限制字符100
export function validateTwos(rule, value, callback) {
  if (value!=null && value.length > 100) {
    callback(new Error("输入字符个数最大100个"));
  } else {
    callback();
  }
};

// 限制字符50
export function validateFive(rule, value, callback){
  if (value!=null && value.length > 50) {
    callback(new Error("输入字符个数最大50个"));
  } else {
    callback();
  }
};


// 限制字符200
export function validateTwoBai(rule, value, callback){
  if (value!=null && value.length > 200) {
    callback(new Error("输入字符个数最大200个"));
  } else {
    callback();
  }
};



// 限制字符500
export function validateFiveBai(rule, value, callback){
  if (value!=null && value.length > 500) {
    callback(new Error("输入字符个数最大500个"));
  } else {
    callback();
  }
};

// 限制字符1000
export function validateTenBai(rule, value, callback){
  if (value!=null && value.length > 1000) {
    callback(new Error("输入字符个数最大1000个"));
  } else {
    callback();
  }
};

/* 是否数据类型为正整数*/
export function validateCheckRate(rule, value, callback) {
  const reg = /^\+?[1-9][0-9]*$/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if (!reg.test(value)) {
      callback(new Error('请输入正整数'));
    } else {
      callback();
    }
  }
};


export function  isPriceVlidator (rule, value, callback) {
  var pattern = /^\d+.?\d{0,2}$/;
  if(value > 1000){
    return callback(new Error("输入数字过大!"))
  }else if (value <= 1000 && !pattern.test(value)) {
    return callback(new Error("小数点后最多只能输入两位"))
  }else return callback()
};



//是否为邮政编码
export function validatePostcode(rule, value, callback) {
  const reg = /^[0-9][0-9]{5}$/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if ((!reg.test(value)) && value != '') {
      callback(new Error('请输入正确的邮政编码'));
    } else {
      callback();
    }
  }
};

/* 是否数据类型为num*/
export function validateIsNum(rule, value, callback) {
  const reg = /^[0-9]+.?[0-9]*$/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if (!reg.test(value)) {
      callback(new Error('请输入数字'));
    } else {
      callback();
    }
  }
}

export function validateIdNumber(rule, value, callback) {
  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  if (value == '' || value == undefined || value == null) {

    callback();
  } else {
    if ((!reg.test(value)) && value != '') {
      callback(new Error('请输入正确的身份证号码'));
    } else {
      callback();
    }
  }
}

//只能是数值（不为0的整数、小数都可以）
export function validateNumber(rule, value, callback) {
  const reg = /(^[1-9](\d+)?(\.\d{1,2})?$)|(^[1-9]$)|(^\d\.[1-9]{1,2}$)|(^\d\.[0]{1}[1-9]{1}$|(^\d\.[1-9]{1}[0]{1}$)$)/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if (!reg.test(value)) {
      callback(new Error('请输入正确的格式'));
    } else {
      callback();
    }
  }
}


//只能输入正数，负数，0，正小数，负小数
export function isNumber(rule, value, callback) {
  const reg =/^[-+]?[0-9]+(\.[0-9]+)?$/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if ((!reg.test(value))) {
      callback(new Error('请输入数值类型'));
    } else {
      callback();
    }
  }
}

//只能输入正数，负数，0，正小数，负小数
export function isHundred(rule, value, callback) {
  const reg =/^[-+]?[0-9]+(\.[0-9]+)?$/;
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if ((!reg.test(value))) {
      callback(new Error('请输入数值类型'));
    } else {
      if(value>100 || value<=0){
        callback(new Error('考核评分权重，不能大于100或小于等于0'));
      }else{
        callback();
      }
    }
  }
}



//输入的只能是数字或者字母
export function validateNumLetter(rule, value, callback) {
  const reg = /^[0-9a-zA-Z]+$/
  if (value == '' || value == undefined || value == null) {
    callback();
  } else {
    if ((!reg.test(value)) && value != '') {
      callback(new Error('请输入正确的格式'));
    } else {
      callback();
    }
  }
}
