/**
 *  带小数点的数字输入 - 默认4为小数
 *  例如：FC.numDxsCheck(form, 3,'phone')
 *  form:表单对象，其中包括phone
 *  ws:几位小数，默认2位小数，传1代表1位小数
 *  key:键名不叫phone时需要传入新的键名
 * */
export function numDxsCheck(form, ws, key) {
  if (key === undefined) {
    key = "cost";
  }
  form[key] = form[key] + "";

  //先把非数字的都替换掉，除了数字和.
  form[key] = form[key].replace(/[^\d.]/g, "");
  //必须保证第一个为数字而不是.
  form[key] = form[key].replace(/^\./g, "");
  //保证只有出现一个.而没有多个.
  form[key] = form[key].replace(/\.{2,}/g, ".");
  //保证.只出现一次，而不能出现两次以上
  form[key] = form[key].replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");

  //只能输入4个小数
  let c = null;
  switch (ws) {
    case 1:
      c = /^(\-)*(\d+)\.(\d).*$/;
      break;
    case 2:
      c = /^(\-)*(\d+)\.(\d\d).*$/;
      break;
    case 3:
      c = /^(\-)*(\d+)\.(\d\d\d).*$/;
      break;
    case 4:
      c = /^(\-)*(\d+)\.(\d\d\d\d).*$/;
      break;
    default:
      c = /^(\-)*(\d+)\.(\d\d).*$/;
  }
  //只能输入两个小数
  form[key] = form[key].replace(c, "$1$2.$3");
}

/**
 *  只能输入数字
 *  例如：FC.numCheck(form,'num')
 *  form:表单对象，其中包括num
 *  key:键名不叫num时需要传入新的键名
 * */
export function numCheck(form, key) {
  if (key === undefined) {
    key = "num";
  }
  form[key] = form[key].replace(/[^\d]/g, "");
}

/**
 *  只能输入：英文字母或数字
 *  例如：FC.numEnCheck(form,'num')
 *  form:表单对象，其中包括num
 *  key:键名不叫num时需要传入新的键名
 * */
export function numEnCheck(form, key) {
  if (key === undefined) {
    key = "num";
  }
  form[key] = form[key].replace(/[^\w\.\/]/gi, "");
}

/*
 *  手机号 长度
 *  处理手机号长度，默认对象内手机号的字段名称为phone
 *  form:表单对象，其中包括phone
 *  key:键名不叫phone时需要传入新的键名
 * */
export function phoneMaxLength(form, key) {
  if (key === undefined) {
    key = "phone";
  }
  if (form[key].length > 11) {
    form[key] = form[key].substring(0, 11);
  }
}

/*
 *  禁止选择的日期区间
 *  禁止选择今天以后的日期 - 今天可选
 *  num: 天，0：今天可选，1：今天不可选，2：昨天也不可选，-1：明天可选，-2：后天也可选，类推
 * */
export function rangePickerDisabledDate(current, num) {
  return current && current > new Date().getTime() - 3600 * 1000 * 24 * num;
}

export default {
  rangePickerDisabledDate,
  numCheck,
  numEnCheck,
  phoneMaxLength,
  numDxsCheck,
};
