zhaoxiaoqiang1
2026-01-04 f1d30d03186c79ca2cbcfe60d6d2ce7d73fba97b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
const SIGN_REGEXP = /([yMdhsm])(\1*)/g;
const DEFAULT_PATTERN = 'yyyy-MM-dd-hh:mm:ss';
function padding(s, len) {
  len = len - (s + '').length;
  for (let i = 0; i < len; i++) {
    s = '0' + s;
  }
  return s;
};
 
export default {
  format: function (date, pattern) {
    pattern = pattern || DEFAULT_PATTERN;
    return pattern.replace(SIGN_REGEXP, function ($0) {
      switch ($0.charAt(0)) {
        case 'y':
          return padding(date.getFullYear(), $0.length);
        case 'M':
          return padding(date.getMonth() + 1, $0.length);
        case 'd':
          return padding(date.getDate(), $0.length);
        case 'w':
          return date.getDay() + 1;
        case 'h':
          return padding(date.getHours(), $0.length);
        case 'm':
          return padding(date.getMinutes(), $0.length);
        case 's':
          return padding(date.getSeconds(), $0.length);
      }
    });
  },
  // 银行卡校验
  bankAccountValid: (rule, value, callback) => {
    value = value.replace(/\s+/g,"")
    const strBin = '10,18,30,35,37,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,62,65,68,69,84,87,88,94,95,98,99'
    if (!value) {
      return callback(new Error('请输入'))
    } else if (!Number.isInteger(+value)) {
      callback(new Error('银行卡号必须全为数字'))
    } else if (value.trim().length < 12 || value.trim().length > 19) {
      callback(new Error('银行卡号长度必须在12到19之间'))
    }
    // else if (strBin.indexOf(value.substring(0, 2)) === -1) {
    //   callback(new Error('银行卡号开头6位不符合规范'))
    // }
    else {
      callback()
    }
  },
  // 身份证号校验
  checkIdCode: (rule, value, callback) => {
    var p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
    var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
    var code = value.substring(17);
    if (p.test(value)) {
      var sum = 0;
      for (var i = 0; i < 17; i++) {
        sum += value[i] * factor[i];
      }
      if (parity[sum % 11] == code.toUpperCase()) {
        callback()
        // return true;
      }
    }
    callback(new Error('请输入合法身份证号'))
    // return false;
  },
 
  // 金额格式化
  formatMoney: (value) => {
    if (value) {
      value =
        parseFloat((value + "").replace(/[^\d\.-]/g, "")).toFixed(2) + "";
      if (value == "NaN") return;
      let l = value
        .split(".")[0]
        .split("")
        .reverse();
      let r = value.split(".")[1];
      let t = "";
      for (let i = 0; i < l.length; i++) {
        t += l[i] + ((i + 1) % 3 === 0 && i + 1 !== l.length ? "," : "");
      }
 
      return (
        t
          .split("")
          .reverse()
          .join("") +
        "." +
        r
      );
    }
  },
  // 银行卡号格式化-4位一空格
  formatBC: (val) => {
    if (val && val.length > 8) {
      // return `${val.substring(0, 4)} ${val.replace(/(.{4})/g, `$1 `)}${val.length % 4 ? " " : ""}${val.slice(-4)}`;
      return `${val.replace(/\s/g,'').replace(/(\d{4})(?=\d)/g,"$1 ")}`
    }
    return val;
  }
}