// 只能为数字验证
export function checkNumber(rule, value, callback) {
  var number = /^\d+$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入内容"));
    } else {
      callback();
    }
  } else if (!number.test(value)) {
    callback(new Error("格式有误,只能为数字"));
  } else {
    callback();
  }
}

// 验证流水编号
export const checkFlowNum = (rule, value, callback) => {
  let reg = /^[A-Z][a-zA-Z0-9]{3,32}$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入流水编号"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("格式为大写字母开头,4~32位"));
  } else {
    callback();
  }
};
// 验证身份证(2代18位)
export function checkIdCard(rule, value, callback) {
  let reg =
    /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/;

  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入身份证号码"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("身份证号码格式不正确"));
  } else {
    callback();
  }
}
// 验证英文
export const checkEn = (rule, value, callback) => {
  let reg = /^[a-zA-Z]{2,15}$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入英文名称"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("格式为字母a-z,A-Z,2~15位"));
  } else {
    callback();
  }
};
// 验证账号
export const checkAccount = (rule, value, callback) => {
  let reg = /^[a-zA-Z0-9_-]{4,16}$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入用户名"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("4到16位(字母,数字,下划线,中横线)"));
  } else {
    callback();
  }
};

// 验证密码
export const checkPassWord = (rule, value, callback) => {
  let reg =
    /^\S*(?=\S{8,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*()_+{}|:;<>,.?~])\S*$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入密码"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(
      new Error(
        "最少8位，包括至少1个大写字母，1个小写字母，1个数字，1个特殊字符"
      )
    );
  } else {
    callback();
  }
};
// 验证手机号码
export const checkPhone = (rule, value, callback) => {
  let reg = /^1[3-9]\d{9}$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入手机号"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("手机号码格式不正确"));
  } else {
    callback();
  }
};

// 验证座机号码
export const changeLandline = (rule, value, callback) => {
  let reg = /^[0][1-9]{2,3}-[0-9]{5,10}$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入座机号"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("区号-电话号码"));
  } else {
    callback();
  }
};

// 窗口编号验证（字母加数字 数字不能大于999）
export const checkWindowNumber = (rule, value, callback) => {
  let reg = /^[a-zA-Z]+\d{1,3}$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入窗口编号"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("字母+数字，数字不能大于999"));
  } else {
    callback();
  }
};

// 校验编码
export const checkeCodeNumber = (rule, value, callback) => {
  let reg = /^[a-zA-Z\d]{2,30}$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入编码"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("数字,字母2至30位"));
  } else {
    callback();
  }
};

// 验证mac地址
export const checkMac = (rule, value, callback) => {
  let reg =
    /^(([a-f0-9][0,2,4,6,8,a,c,e]:([a-f0-9]{2}:){4})|([a-f0-9][0,2,4,6,8,a,c,e]-([a-f0-9]{2}-){4}))[a-f0-9]{2}$/i;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入mac地址"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("mac地址格式错误"));
  } else {
    callback();
  }
};

// 验证端口
export const checkPort = (rule, value, callback) => {
  let reg =
    /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入端口号"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("端口号格式错误"));
  } else {
    callback();
  }
};

// 验证ip
export const checkIp = (rule, value, callback) => {
  let reg =
    /^(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入ip"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("ip格式错误"));
  } else {
    callback();
  }
};

// 验证邮箱
export const ckeckEmail = (rule, value, callback) => {
  let reg = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入邮箱"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("邮箱格式不正确"));
  } else {
    callback();
  }
};

// 验证网址
export const ckeckUrl = (rule, value, callback) => {
  let reg =
    /^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/;

  if (!value) {
    if (rule.required) {
      callback(new Error(rule.msg || "请输入网址"));
    } else {
      callback();
    }
  } else if (!reg.test(value)) {
    callback(new Error("网址格式错误"));
  } else {
    callback();
  }
};
