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;
|
}
|
}
|