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