123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989 |
- /*
- * @Description: In User Settings Edit
- * @Author: your name
- * @Date: 2019-03-30 12:32:39
- * @LastEditTime: 2019-08-14 11:23:06
- * @LastEditors: Please set LastEditors
- */
- /*
- * rule
- * {"trigger":"change","max":10,"min":20,"field":"telegrpNo","fullField":"telegrpNo","type":"string", ...}
- * 可自定义属性
- */
- // 定义默认中文所占字符长度,由个项目使用的数据库决定
- // 正常 utf-8以三个字节存储中文;gbk以二个字节存储中文。
- const _chineseLength = 3;
- // number校验
- /*
- 处理属性:
- length tip isPositive: 是否为正数
- */
- export const checkNumber = (rule, value, callback) => {
- if (typeof value === 'number') {
- value = value.toString().trim()
- }
- if (value) {
- if (isNaN(value) || value.toString().trim() === '') {
- return callback(new Error('请输入数字'));
- }
- if (typeof rule.length === 'undefined') {
- if (typeof rule.isPositive !== 'undefined') {
- if (value < 0) {
- return callback(new Error('请输入正数'))
- }
- }
- return callback()
- }
- let arry = rule.length.toString().split('.')
- let integer = arry[0]
- let decimal = arry[1]
- let str = null, reg = null
- if (typeof decimal === 'undefined') {
- str = '\\d{0,' + integer + '}'
- if (rule.negative) {
- str = '-?\\d{0,' + integer + '}'
- }
- reg = new RegExp('^' + str + '$', 'g');
- if (!reg.test(value)) {
- return callback(new Error(integer + ' 位整数'));
- }
- } else {
- integer = integer - decimal;
- str = '(([1-9]{1}\\d{0,' + (integer - 1) + '}(\\.\\d{1,' + decimal + '})?)|(0(\\.\\d{1,' + decimal + '})?))'
- if (rule.negative) {
- str = '-?(([1-9]{1}\\d{0,' + (integer - 1) + '}(\\.\\d{1,' + decimal + '})?)|(0(\\.\\d{1,' + decimal + '})?))'
- }
- reg = new RegExp('^' + str + '$', 'g');
- if (!reg.test(value)) {
- return callback(new Error(integer + ' 位整数,小数点后' + decimal + '位'));
- }
- }
- } else {
- if (rule.required) {
- return callback(new Error('不能为空'));
- }
- }
- callback();
- };
- export const checkcntNumber = (rule, value, callback) => {
- if (typeof value === 'number') {
- value = value.toString().trim()
- }
- if (value) {
- if (isNaN(value) || value.toString().trim() === '') {
- return callback(new Error('请输入数字'));
- }
- if (typeof rule.length === 'undefined') {
- if (typeof rule.isPositive !== 'undefined') {
- if (value < 0) {
- return callback(new Error('请输入正数'))
- }
- }
- return callback()
- }
- let arry = rule.length.toString().split('.')
- let integer = arry[0]
- let decimal = arry[1]
- let str = null, reg = null
- if (typeof decimal === 'undefined') {
- str = '\\d{0,' + integer + '}'
- if (rule.negative) {
- str = '-?\\d{0,' + integer + '}'
- }
- reg = new RegExp('^' + str + '$', 'g');
- if (!reg.test(value)) {
- return callback(new Error(integer + ' 位整数'));
- }
- } else {
- integer = integer - decimal;
- str = '(([1-9]{1}\\d{0,' + (integer - 1) + '}(\\.\\d{1,' + decimal + '})?)|(0(\\.\\d{1,' + decimal + '})?))'
- if (rule.negative) {
- str = '-?(([1-9]{1}\\d{0,' + (integer - 1) + '}(\\.\\d{1,' + decimal + '})?)|(0(\\.\\d{1,' + decimal + '})?))'
- }
- reg = new RegExp('^' + str + '$', 'g');
- if (!reg.test(value)) {
- return callback(new Error(integer + ' 位整数,小数点后' + decimal + '位'));
- }
- }
- } else {
- if (rule.required) {
- return callback(new Error('请输入件数'));
- }
- }
- callback();
- };
- export const checkPercent = (rule, value, callback) => {
- if (value) {
- if (value) {
- if (isNaN(value)) {
- return callback(new Error('请输入数字'));
- }
- let exact = rule.exact
- let item = '100'
- let max = '100|'
- if (exact) {
- item += '.'
- }
- for (let i = 0; i < exact; i++) {
- item += '0'
- max += item + '|'
- }
- let str = '((100(\\.0{1,' + exact + '})?)|(0(\\.\\d{1,' + exact + '})?)|([1-9]?\\d{0,1}(\\.\\d{1,' + exact + '})?))'
- let reg = new RegExp('^' + str + '$', 'g');
- if (!reg.test(value)) {
- return callback(new Error('0~100,可保留' + exact + '位小数'))
- }
- }
- } else {
- if (rule.required) {
- return callback(new Error('请输入'));
- }
- }
- callback();
- }
- export const checkPercent2 = (rule, value, callback) => {
- if (value) {
- if (value) {
- if (isNaN(value)) {
- return callback(new Error('请输入数字'));
- }
- let exact = rule.exact
- let item = '1000'
- let max = '1000|'
- if (exact) {
- item += '.'
- }
- for (let i = 0; i < exact; i++) {
- item += '0'
- max += item + '|'
- }
- let str = '((1000(\\.0{1,' + exact + '})?)|(0(\\.\\d{1,' + exact + '})?)|([1-9]?\\d{0,2}(\\.\\d{1,' + exact + '})?))'
- let reg = new RegExp('^' + str + '$', 'g');
- if (!reg.test(value)) {
- return callback(new Error('0~1000,可保留' + exact + '位小数'))
- }
- }
- } else {
- if (rule.required) {
- return callback(new Error('请输入'));
- }
- }
- callback();
- }
- // 是否为整数包含0
- export const checkInteger = (rule, value, callback) => {
- if (value) {
- if (isNaN(value)) {
- return callback(new Error('请输入数字'));
- }
- let str = /^([1-9][0-9]*)$|^0$/
- if (!str.test(value)) {
- return callback(new Error('请输入自然数'))
- }
- }
- callback();
- }
- // 电话手机号码验证
- export const checkTel = (rule, value, callback) => {
- if (value) {
- let reg = /^1[3|7|8]\d{9}$|^19[8-9]\d{8}$|^166\d{8}|^15[0-3|5-9]\d{8}|^14[5|7]\d{8}$/
- let reg1 = /^[0][1-9]{2,3}-[0-9]{5,10}$/
- let result = false, result1 = false
- if (reg.test(value)) {
- result = true
- }
- if (reg1.test(value)) {
- result1 = true
- }
- if (result || result1) {
- callback()
- } else {
- return callback(new Error('手机(固定电话)格式有误...'))
- }
- } else {
- if (rule.required) {
- return callback(new Error('请输入'));
- }
- }
- callback()
- }
- // 传真验证
- export const checkFax = (rule, value, callback) => {
- if (value) {
- let reg1 = /^(\d{3,4}|\d{3,4}-)?\d{7,8}$/
- let result1 = false
- if (reg1.test(value)) {
- result1 = true
- }
- if (result1) {
- return callback()
- } else {
- return callback(new Error('格式验证有误...'))
- }
- }
- callback()
- }
- // 校验身份证号
- export const checkCardNo = (rule, value, callback) => {
- if (value) {
- let str = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/
- if (!str.test(value)) {
- return callback(new Error('请输入正确的身份证格式'))
- }
- if (value.length !== 18) {
- callback(new Error('请输入18位'));
- }
- }
- callback();
- };
- export const chekPercent = (rule, value, callback) => {
- if (value) {
- let reg = new RegExp('^(\\d|[1-9]\\d|100)$');
- if (!reg.test(value)) {
- return callback(new Error('数值在0~100之间'))
- }
- }
- callback()
- }
- // 校验只能输入英文 和 数字
- export const checkEnglish = (rule, value, callback) => {
- if (value) {
- let reg = /^[A-Za-z0-9\s]+$/
- if (!reg.test(value)) {
- return callback(new Error('请输入英文和数字'));
- }
- if (rule.max < value.length) {
- return callback(new Error('最多输入' + rule.max + '个字符'));
- }
- } else {
- if (rule.required) {
- return callback(new Error('请输入'));
- }
- }
- callback();
- };
- // 以英文字母开头,只能包含英文字母、数字、下划线
- export const checkStart = (rule, value, callback) => {
- if (value) {
- let reg = /^[a-zA-Z][a-zA-Z0-9_]*$/
- if (!reg.test(value)) {
- return callback(new Error('以英文字母开头,只能包含英文字母、数字、下划线'));
- }
- } else {
- if (rule.required) {
- return callback(new Error('请输入'));
- }
- }
- callback();
- };
- // 价格校验(大于0)
- export const checkPositiveNumber = (rule, value, callback) => {
- if (value) {
- if (isNaN(value)) {
- return callback(new Error('请输入数字'));
- } else if (!(value > 0)) {
- return callback(new Error('请输入正数'));
- }
- }
- callback();
- };
- // 文本校验(综合)
- /*
- * 处理属性:
- * required max min fieldName chineseLength
- */
- export const checkText = (rule, value, callback) => {
- if (value) {
- let reg = /^[-_a-zA-Z0-9\u4e00-\u9fa5]+$/;
- if (!reg.test(value)) {
- return callback(new Error('请输入中文、英文字母、数字、下划线(_)或横线(-)的组合'));
- }
- let chineseLen = _chineseLength;
- if (rule.chineseLength && rule.chineseLength > 0) {
- chineseLen = rule.chineseLength;
- }
- let iLen = chineseLen > 1 ? _charLength(value, chineseLen) : value.length;
- if (rule.min && rule.min > 0 && iLen < rule.min) {
- return callback(new Error('最少输入' + rule.min + '个字符(一个中文占' + chineseLen + '个字符)'));
- }
- if (rule.max && rule.max > 0 && iLen > rule.max) {
- return callback(new Error('最多输入' + rule.max + '个字符(一个中文占' + chineseLen + '个字符)'));
- }
- } else {
- if (rule.required) {
- let sfield = rule.fieldName ? rule.fieldName : '';
- return callback(new Error('请输入' + sfield));
- }
- }
- callback();
- };
- /*
- * 处理属性:
- * required max min fieldName chineseLength
- */
- export const checkComplexText = (rule, value, callback) => {
- if (value) {
- let chineseLen = _chineseLength;
- if (rule.chineseLength && rule.chineseLength > 0) {
- chineseLen = rule.chineseLength;
- }
- let iLen = chineseLen > 1 ? _charLength(value, chineseLen) : value.length;
- if (rule.min && rule.min > 0 && iLen < rule.min) {
- return callback(new Error('最少输入' + rule.min + '个字符(一个中文占' + chineseLen + '个字符)'));
- }
- if (rule.max && rule.max > 0 && iLen > rule.max) {
- return callback(new Error('最多输入' + rule.max + '个字符(一个中文占' + chineseLen + '个字符)'));
- }
- } else {
- if (rule.required) {
- let sfield = rule.fieldName ? rule.fieldName : '';
- return callback(new Error('请输入' + sfield));
- }
- }
- callback();
- };
- // 中文校验
- export const checkChinese = (rule, value, callback) => {
- let reg = /^[\u4e00-\u9fa5./?#:'"_=+-]+$/;
- if (!reg.test(value)) {
- return callback(new Error('请输入中文'));
- }
- callback();
- };
- // 字符校验(含中文)
- export const checkChar = (rule, value, callback) => {
- let reg = /^[-_a-zA-Z0-9\u4e00-\u9fa5 ]+$/;
- if (!reg.test(value) && value) {
- return callback(new Error('请输入中文、英文字母、数字、下划线(_)或横线(-)的组合'));
- }
- callback();
- };
- // 字符校验(不含中文)
- export const checkCharNoChinese = (rule, value, callback) => {
- let reg = /^[-_a-zA-Z0-9]+$/;
- if (value && !reg.test(value)) {
- return callback(new Error('请输入英文字母、数字、下划线(_)或横线(-)的组合'));
- }
- callback();
- };
- export const checkCharNoChinese2 = (rule, value, callback) => {
- let reg = /^[\w-./#:]+$/;
- if (value && !reg.test(value)) {
- return callback(new Error('请输入英文字母、数字、下划线(_)或横线(-)的组合'));
- }
- callback();
- };
- export const checkCharNoChinese3 = (rule, value, callback) => {
- let reg = /^[-a-zA-Z0-9]+$/;
- if (value && !reg.test(value)) {
- return callback(new Error('请输入英文字母、数字、- 的组合'));
- }
- callback();
- };
- export const checkCharNoChinese4 = (rule, value, callback) => {
- let reg = /^[-_a-z0-9]+$/;
- if (value && !reg.test(value)) {
- return callback(new Error('请输入小写英文字母、数字、- 、_ 的组合'));
- }
- callback();
- };
- export const checkCharNoChinese5 = (rule, value, callback) => {
- let reg = /^[-_a-z0-9${}.]+$/;
- if (value && !reg.test(value)) {
- return callback(new Error('请输入英文字母、数字、- 、_ 、$、{}、. 的组合'));
- }
- callback();
- };
- export const checkCode = (rule, value, callback) => {
- let reg = /^[-a-z0-9]+$/;
- if (value && !reg.test(value)) {
- return callback(new Error('请输入英文字母、数字 - 的组合'));
- }
- callback();
- };
- export const checkVersion = (rule, value, callback) => {
- let reg = /^[-_0-9.]+$/;
- if (value && !reg.test(value)) {
- return callback(new Error('请输入数字、- _的组合'));
- }
- callback();
- };
- // 字符长度校验(包含对中文的处理)rule需至少有 min 或 max
- export const checkCharLength = (rule, value, callback) => {
- if (value) {
- let chineseLen = _chineseLength;
- if (rule.chineseLength && rule.chineseLength > 0) {
- chineseLen = rule.chineseLength;
- }
- let iLen = chineseLen > 1 ? _charLength(value, chineseLen) : value.length;
- if (rule.min && rule.min > 0 && iLen < rule.min) {
- return callback(new Error('最少输入' + rule.min + '个字符(一个中文占' + chineseLen + '个字符)'));
- }
- if (rule.max && rule.max > 0 && iLen > rule.max) {
- return callback(new Error('最多输入' + rule.max + '个字符(一个中文占' + chineseLen + '个字符)'));
- }
- } else {
- if (rule.required) {
- return callback(new Error('请输入'));
- }
- }
- callback();
- };
- export const checkCharLength2 = (rule, value, callback) => {
- if (value) {
- let chineseLen = _chineseLength;
- if (rule.chineseLength && rule.chineseLength > 0) {
- chineseLen = rule.chineseLength;
- }
- let iLen = chineseLen > 1 ? _charLength(value, chineseLen) : value.length;
- if (rule.min && rule.min > 0 && iLen < rule.min) {
- return callback(new Error('最少输入' + rule.min + '个字符'));
- }
- if (rule.max && rule.max > 0 && iLen > rule.max) {
- return callback(new Error('最多输入' + rule.max + '个字符'));
- }
- } else {
- if (rule.required) {
- return callback(new Error('请输入'));
- }
- }
- callback();
- };
- // 校验邮编
- export const checkZIP = (rule, value, callback) => {
- if (value) {
- let reg = /^\d{6}$/;
- if (reg.test(value)) {
- callback();
- } else {
- return callback(new Error('请输入邮编(6位数字)'));
- }
- }
- callback();
- }
- // 校验internet URL
- export const checkURL = (rule, value, callback) => {
- if (value) {
- let reg = /(((^https?:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@.\w_]*)#?(?:[\w]*))?)$/g
- if (reg.test(value)) {
- callback();
- } else {
- return callback(new Error('请输入网址'));
- }
- }
- callback()
- }
- // 校验邮箱
- export const checkEmail = (rule, value, callback) => {
- var re = /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/;
- if (value) {
- if (re.test(value)) {
- callback();
- } else {
- return callback(new Error('请输入正确的邮箱'));
- }
- } else {
- if (rule.required) {
- return callback(new Error('请输入'));
- }
- }
- callback();
- }
- /**
- * 字符长度,处理中文
- * utf-8以三个字节存储中文;gbk以二个字节存储中文。
- */
- export function _charLength (str, chineseLen) {
- if (!str || str.length <= 0) { return 0; };
- // str = mytrim(str);
- let chineseLength = 3; // utf-8编码,中文长度
- if (chineseLen && chineseLen > 0) {
- chineseLength = chineseLen
- }
- let objValue = str;
- let objLength = 0;
- let compareChar = '';
- let regExp = new RegExp("^[A-Za-z0-9 -_`~!@#$%^&*()-+=|,<.>/?;:'\\\"]$");
- for (let count = 0; count < objValue.length; count++) {
- compareChar = objValue.substring(count, count + 1);
- if (regExp.test(compareChar)) {
- objLength += 1;
- } else if (compareChar === '\\') {
- objLength += 1;
- } else {
- objLength += chineseLength;
- }
- }
- return objLength;
- }
- // 外部引用
- export const checkCNLen = (str, chineseLen) => {
- if (!str || str.length <= 0) { return 0; };
- // str = mytrim(str);
- let chineseLength = 3; // utf-8编码,中文长度
- if (chineseLen && chineseLen > 0) {
- chineseLength = chineseLen
- }
- let objValue = str;
- let objLength = 0;
- let compareChar = '';
- let regExp = new RegExp("^[A-Za-z0-9 -_`~!@#$%^&*()-+=|,<.>/?;:'\\\"]$");
- for (let count = 0; count < objValue.length; count++) {
- compareChar = objValue.substring(count, count + 1);
- if (regExp.test(compareChar)) {
- objLength += 1;
- } else if (compareChar === '\\') {
- objLength += 1;
- } else {
- objLength += chineseLength;
- }
- }
- return objLength;
- }
- /**
- * 判断不能为数字
- */
- export const checkDigital = (rule, value, callback) => {
- var re = /^[0-9]+.?[0-9]*/; // 判断字符串是否为数字//判断正整数/[1−9]+[0−9]∗]∗/
- if (re.test(value)) {
- return callback(new Error('不能全部输入数字'));
- }
- callback();
- }
- // 检验数据
- export const checkNumber1 = (rule, value, callback) => {
- if (typeof value === 'number') {
- value = value.toString().trim()
- }
- if (value) {
- if (isNaN(value) || value.toString().trim() === '') {
- return callback(new Error('请输入数字'));
- }
- if (typeof rule.length === 'undefined') {
- if (typeof rule.isPositive !== 'undefined') {
- if (value < 0) {
- return callback(new Error('请输入正数'))
- }
- }
- return callback()
- }
- let arry = rule.length.toString().split('.')
- let integer = arry[0]
- let decimal = arry[1]
- let str = null, reg = null
- if (typeof decimal === 'undefined') {
- str = '\\d{0,' + integer + '}'
- if (rule.negative) {
- str = '-?\\d{0,' + integer + '}'
- }
- reg = new RegExp('^' + str + '$', 'g');
- if (!reg.test(value)) {
- return callback(new Error('最多 ' + integer + ' 位整数'));
- }
- } else {
- integer = integer - decimal;
- str = '(([1-9]{1}\\d{0,' + (integer - 1) + '}(\\.\\d{1,' + decimal + '})?)|(0(\\.\\d{1,' + decimal + '})?))'
- if (rule.negative) {
- str = '-?(([1-9]{1}\\d{0,' + (integer - 1) + '}(\\.\\d{1,' + decimal + '})?)|(0(\\.\\d{1,' + decimal + '})?))'
- }
- reg = new RegExp('^' + str + '$', 'g');
- if (!reg.test(value)) {
- return callback(new Error('最多' + integer + '位整数,' + decimal + '位小数'));
- }
- }
- } else {
- if (rule.required) {
- return callback(new Error('不能为空'));
- }
- }
- callback();
- };
- /**
- * @summary 设置cookie
- * @param {string} name cookie名称
- * @param {string} value cookie值
- * @param {int} expires 保存时间(单位:小时)
- * @param {string} path
- * @param {string} domain
- * @param {string} secure
- */
- export const setCookie = (name, value, expires, path, domain, secure) => {
- let str = name + '=' + encodeURIComponent(value);
- if (expires > 0) {
- let date = new Date();
- date.setTime(date.getTime() + expires * 3600 * 1000);
- str += ';expires=' + date.toGMTString();
- }
- if (path) { str += ';path=' + path; }
- if (domain) { str += ';domain=' + domain; }
- if (secure) { str += ';secure=' + secure; }
- document.cookie = str;
- };
- /**
- * @summary 读取cookie
- * @param {string} name cookie名称
- * @retrun {string} value cookie值
- * @example
- */
- export const getCookie = (name) => {
- let start = document.cookie.indexOf(name + '=');
- if ((!start) && (name !== document.cookie.substring(0, name.length))) { return ''; }
- if (start === -1) { return ''; }
- let len = start + name.length + 1;
- let end = document.cookie.indexOf(';', len);
- if (end === -1) { end = document.cookie.length; }
- return decodeURIComponent(document.cookie.substring(len, end));
- };
- /**
- * 存储localStorage
- * @param {string} sName
- * @param {string} sCntent
- * @example setLocalStore('name', '测试');
- */
- export const setLocalStore = (sName, sCntent) => {
- if (!sName) return;
- window.top.localStorage.setItem(sName, sCntent);
- };
- /**
- * @summary 根据时间及格式获取时间的字符串
- * @param {int} iDate 时间
- * @param {string} sFormat 格式,默认:yyyy-MM-dd HH:mm:ss
- * @return {string} 格式化后的日期字符串
- * @example
- * formatDate(new Date(),'yyyy-MM-dd HH:mm:ss SSS');// 2017-6-6 11:11:11
- */
- export const formatDate = (iDate, sFormat = 'yyyy-MM-dd HH:mm:ss') => {
- if (!iDate) { return ''; }
- let dDate = new Date(iDate);
- let year = dDate.getFullYear();// 年
- let month = dDate.getMonth() + 1;// 月
- if (month < 10) { month = '0' + month; }
- let date = dDate.getDate();// 日
- if (date < 10) { date = '0' + date; }
- let hour = dDate.getHours();// 时
- if (hour < 10) { hour = '0' + hour; }
- let minute = dDate.getMinutes();// 分
- if (minute < 10) { minute = '0' + minute; }
- let second = dDate.getSeconds();// 秒
- if (second < 10) { second = '0' + second; }
- let millisecond = dDate.getMilliseconds();// 毫秒
- if (sFormat.indexOf('yyyy') >= 0) { sFormat = sFormat.replace('yyyy', year + ''); }
- if (sFormat.indexOf('MM') >= 0) { sFormat = sFormat.replace('MM', month + ''); }
- if (sFormat.indexOf('dd') >= 0) { sFormat = sFormat.replace('dd', date + ''); }
- if (sFormat.indexOf('HH') >= 0) { sFormat = sFormat.replace('HH', hour + ''); }
- if (sFormat.indexOf('mm') >= 0) { sFormat = sFormat.replace('mm', minute + ''); }
- if (sFormat.indexOf('ss') >= 0) { sFormat = sFormat.replace('ss', second + ''); }
- if (sFormat.indexOf('SSS') >= 0) { sFormat = sFormat.replace('SSS', millisecond + ''); }
- return sFormat;
- };
- /**
- * 格式化时间
- * @param {String} str
- * @returns 格式化后的时间
- */
- export const formatDate1 = (iDate = new Date().getTime(), sFormat = 'yyyy-MM-dd HH:mm:ss') => {
- let dDate = new Date(iDate);
- let year = dDate.getFullYear();// 年
- let month = dDate.getMonth() + 1;// 月
- if (month < 10) { month = '0' + month; }
- let date = dDate.getDate();// 日
- if (date < 10) { date = '0' + date; }
- let hour = dDate.getHours();// 时
- if (hour < 10) { hour = '0' + hour; }
- let minute = dDate.getMinutes();// 分
- if (minute < 10) { minute = '0' + minute; }
- let second = dDate.getSeconds();// 秒
- if (second < 10) { second = '0' + second; }
- let millisecond = dDate.getMilliseconds();// 毫秒
- if (sFormat.indexOf('yyyy') >= 0) {
- sFormat = sFormat.replace('yyyy', year + '');
- }
- if (sFormat.indexOf('MM') >= 0) {
- sFormat = sFormat.replace('MM', month + '');
- }
- if (sFormat.indexOf('dd') >= 0) {
- sFormat = sFormat.replace('dd', date + '');
- }
- if (sFormat.indexOf('HH') >= 0) {
- sFormat = sFormat.replace('HH', hour + '');
- }
- if (sFormat.indexOf('mm') >= 0) {
- sFormat = sFormat.replace('mm', minute + '');
- }
- if (sFormat.indexOf('ss') >= 0) {
- sFormat = sFormat.replace('ss', second + '');
- }
- if (sFormat.indexOf('SSS') >= 0) {
- sFormat = sFormat.replace('SSS', millisecond + '');
- }
- return sFormat;
- };
- export const formatTime = (data) => {
- let {H, M, S} = 0;
- let second = parseInt(data / 1000);
- S = second % 60;
- if (second / 60 > 60) {
- M = parseInt(second / 60) % 60;
- H = parseInt(M / 60);
- } else {
- M = parseInt(second / 60);
- }
- let str = '';
- if (H || M) {
- str = H ? M + '小时' + M + '分钟' + S + '秒' : M + '分钟' + S + '秒';
- } else {
- if (S === 0) {
- str = '-'
- } else {
- str = S + '秒'
- }
- }
- return str
- }
- /**
- * @summary 删除数组对象的某个成员(或添加成员)
- * @param {array} arrayObj 数组对象
- * @param {object} obj 需要删除的对象
- * @param {string} attrName 比对的参数名(如ID)
- * @return {array} 新的数组对象
- */
- export const removeOrAddEleFormArrayObj = (arrayObj = [], obj, attrName) => {
- let iIndex = -1;
- for (let i = 0; i < arrayObj.length; i++) {
- if (arrayObj[i][attrName] && arrayObj[i][attrName] === obj[attrName]) {
- iIndex = i;
- break;
- }
- }
- if (iIndex >= 0) {
- arrayObj.splice(iIndex, 1);
- } else {
- // arrayObj.splice(0, 0, obj);
- arrayObj.push(obj);
- }
- return arrayObj;
- };
- /**
- * @summary 获取B数组中存在A数组值的自身索引
- * @param {array} A 已存在数组对象
- * @param {array} B 待比较数组对象
- * @param {array} str 待比较数组的id
- * **/
- export const compareArray = (A, B, str) => {
- let indexs = []; // 获取比较后的索引数组
- for (let i = 0; i < A.length; i++) {
- for (let j = 0; j < B.length; j++) {
- // console.log(A[i][str], B[j][str], A[i][str] === B[j][str]);
- if (A[i][str] === B[j][str]) {
- indexs.push(j);
- break;
- }
- }
- }
- return indexs
- };
- /**
- * @summary 内控模块使用,校验上、下限值的正确性
- * @param: min: 下限值
- * @param: max: 上限值
- * @param: len: 字符限制长度
- * @param: decimal: 小数位数
- * @return: Object 0:不弹出错误信息,1:只能填写正实数,最多保留四位小数!,2:数字的长度不能大于' + len + '位,3:下限值不能大于上限值
- * 如果只传了min没有传max,则为单个数字的校验
- * */
- export const validOrder = (len, min, max, decimal) => {
- let obj = {
- state: '',
- msg: ''
- };
- let reg = /^(0|[1-9][0-9]*)(\.[0-9]{1,4})?$/;
- if (decimal) {
- let str = '^(0|[1-9][0-9]*)(\\.[0-9]{1,' + decimal + '})?$';
- reg = new RegExp(str);
- }
- if (len && min) {
- if (reg.test(min)) {
- // 判断数字的长度
- if (min.length > len) {
- obj.state = '2';
- obj.msg = '数字的长度不能大于' + len + '位';
- return obj;
- } else {
- if (max) {
- if (reg.test(max)) {
- // 上下限都有值,则比较大小
- if (max.length <= len) {
- // 长度符合要求,比较大小
- if (parseFloat(min) > parseFloat(max)) {
- // 下限值大于上限值,报错
- obj.state = '3';
- obj.msg = '下限值不能大于上限值';
- return obj;
- } else {
- // 两个数字都校验通过
- obj.state = '0';
- obj.msg = '';
- return obj;
- }
- } else {
- obj.state = '2';
- obj.msg = '数字的长度不能大于' + len + '位';
- return obj;
- }
- } else {
- obj.state = '1';
- obj.msg = '只能填写正实数,最多保留四位小数!';
- return obj;
- }
- } else {
- // 没有传第二个数字,则为单个数字的校验,这个时候已经证明参数min是一个正实数且长度不大于len,校验通过
- obj.state = '0';
- obj.msg = '';
- return obj;
- }
- }
- } else {
- obj.state = '1';
- obj.msg = '只能填写正实数,最多保留四位小数!';
- return obj;
- }
- }
- };
- export const isStartEndDate = (startDate, endDate) => {
- let start = new Date(startDate);
- let end = new Date(endDate);
- if (start > end) {
- return true;
- }
- return false;
- };
- /*
- *解析cookie值
- */
- export const getUserName = function (str) {
- let arr = str.split(';');
- let arr1 = [];
- let obj = {};
- for (let item of arr) {
- arr1 = item.split('=');
- obj[arr1[0].trim()] = arr1[1].trim();
- }
- return obj;
- };
- /**
- * @summary 比较一个对象前后的属性值是否相同
- * @param: before: 未改变的对象(备份)
- * @param: after: 可能改变了的对象
- * @return: Boolean true: 相同(未改变),false: 对象的属性值已经改变了
- * */
- export const compareObj = (before, after) => {
- let flag = true;
- // 首先获取对象的所有属性
- let propList = Object.keys(before);
- for (let item of propList) {
- if (before[item] !== after[item]) {
- flag = false;
- break;
- }
- }
- return flag;
- };
- /*
- * 千分表达式转换
- * num 要格式化的数字 n 保留小数位
- */
- export const formatNum = function (num, n) {
- if (!n) {
- n = 2;
- }
- if (num === null || num === 'null' || num === undefined || num === 'undefined') { return ''; }
- if (isNaN(num)) { return num; }
- let data = (num + '').split('.');
- num = data[0];
- if (n) {
- num = Number(num);
- num.toFixed(n);
- }
- num = String(num);
- var re = /(-?\d+)(\d{3})/;
- while (re.test(num)) {
- num = num.replace(re, '$1,$2');
- console.log('num: ', num);
- }
- if (data[1] !== '' && data[1] !== null && data[1] !== undefined) {
- num = num + '.' + data[1];
- }
- return num;
- };
- // 正整数校验 max:最大值 min: 最小值
- export const checkPositiveInteger = (rule, value, callback) => {
- if (value) {
- console.log(rule)
- let st = /^[1-9][0-9]*$/;
- if (!st.test(value)) {
- return callback(new Error('请输入正整数'));
- }
- if (rule.max && value > rule.max) {
- return callback(new Error('最大值' + rule.max));
- }
- if (rule.min && value < rule.min) {
- return callback(new Error('最小值' + rule.min));
- }
- }
- callback();
- };
- export const checkObjectNo = (rule, value, callback) => {
- let str = /^([A-Z][0-9]{2})-([0-9a-zA-Z]{5})\.([1-9][0-9]{0,5})\.([1-9][0-9]{0,2})$/;
- if (!str.test(value)) {
- callback(new Error('块序号格式错误'));
- }
- callback();
- };
- // ip地址校验
- export const checkIpAddress = (rule, value, callback) => {
- let reg = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/;
- if (!reg.test(value) && value) {
- callback(new Error('IP地址格式错误'))
- }
- callback()
- }
- // 端口校验
- export const checkProt = (rule, value, callback) => {
- let reg = /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/;
- if ((!reg.test(value) && value) || value === 0) {
- callback(new Error('端口号格式错误'));
- }
- callback()
- }
|