export function _debounce(fn, delay) {
  let timer = null;
  delay = delay || 200;

  return function() {
    const args = arguments;

    if (timer) {
      clearTimeout(timer);
    }

    timer = setTimeout(
      function() {
        timer = null;
        fn.apply(this, args);
      }.bind(this),
      delay
    );
  };
}

export function _throttle(fn, interval) {
  let last = null;
  let timer = null;
  interval = interval || 200;
  return function() {
    const self = this;
    const args = arguments;
    const now = +new Date();
    if (last && now - last < interval) {
      clearTimeout(timer);
      timer = setTimeout(function() {
        last = now;
        fn.apply(self, args);
      }, interval);
    } else {
      last = now;
      fn.apply(self, args);
    }
  };
}
export function emailValidata(rule, value, callback) {
  const field = rule.field;
  const reg = rule.pattern;
  switch (field) {
    case 'receiveEmail':
      if (!value) {
        this.tip = true;
        this.isDisable = false;
        callback(new Error('收件人不能为空'));
      } else if (rule.pattern && !rule.pattern.test(value)) {
        this.tip = true;
        this.isDisable = false;
        callback(new Error('请输入正确收件人地址'));
      } else {
        this.tip = false;
        this.isDisable = true;
        callback();
      }
      break;
    case 'theme':
      if (!value) {
        this.isDisable = false;
        callback(new Error('主题能为空'));
      } else {
        this.isDisable = true;
        callback();
      }
      break;
    case 'copyname':
      if (value && reg && !reg.test(value)) {
        this.isDisable = false;
        callback(new Error('请输入正确抄送地址'));
      } else {
        this.isDisable = true;
        callback();
      }
      break;
    case 'UpdateOWER':
      if (!value) {
        this.isDisable = false;
        callback(new Error('邀约人不能为空'));
      } else {
        this.isDisable = true;
        callback();
      }
      break;
    case 'UpdateTIME':
      if (!value) {
        this.isDisable = false;
        callback(new Error('面试时间不能为空'));
      } else {
        this.isDisable = true;
        callback();
      }
      break;
    case 'UpdateVIEW':
      if (!value) {
        this.isDisable = false;
        callback(new Error('面试官不能为空'));
      } else {
        this.isDisable = true;
        callback();
      }
      break;
    default:
      callback();
      break;
  }
}
export const emailRule = /^((([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6}\;))*(([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})))$/;
export function vidte(rule, value, callback) {
  if (this.emailMassage == true) {
    callback(new Error('你尚未选择简历，请先选择简历'));
  } else if (this.allEmailVilitor == true) {
    callback(new Error('不能选择多份简历，请选择单份简历'));
  } else {
    callback();
  }
}
export function validator(rule, value, callback) {
  if (!value) this.$Notice.warning({ title: '提示', desc: '请输入您要通知的面试官' });
  callback();
}
