const formatTime = date => { const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() const hour = date.getHours() const minute = date.getMinutes() const second = date.getSeconds() return `${[year, month, day].map(formatNumber).join('-')} ${[hour, minute, second].map(formatNumber).join(':')}` } const formatTime2 = date => { const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() return `${[year, month, day].map(formatNumber).join('-')}` } const formatNumber = n => { n = n.toString() return n[1] ? n : `0${n}` } const app = getApp() const baseURL = app.globalData.url const monitURL = app.globalData.monitUrl function request(method, url, data, cookie) { return new Promise(function (resolve, reject) { let header = { 'content-type': 'application/json', // 'content-type': 'application/x-www-form-urlencoded', 'Cookie': 'JSESSIONID=' + cookie }; wx.request({ url: baseURL + url, method: method, data: method === 'POST' ? JSON.stringify(data) : data, header: header, success(res) { resolve(res.data); }, fail(err) { //请求失败 reject(err.data) } }) }) } function request2(options, loading) { return new Promise(function (resolve, reject) { if (loading) { wx.showLoading({ title: '请稍后...', mask: true }) } wx.request({ url: baseURL + options.url, method: options.method, data: options.data || {}, header: options.header || { 'content-type': 'application/x-www-form-urlencoded' }, success(res) { resolve(res.data); }, fail(err) { //请求失败 reject(err.data) }, complete: function (res) { if (loading) { wx.hideLoading(); } } }) }) } function md5(string) { function md5_RotateLeft(lValue, iShiftBits) { return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)); } function md5_AddUnsigned(lX, lY) { var lX4, lY4, lX8, lY8, lResult; lX8 = (lX & 0x80000000); lY8 = (lY & 0x80000000); lX4 = (lX & 0x40000000); lY4 = (lY & 0x40000000); lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF); if (lX4 & lY4) { return (lResult ^ 0x80000000 ^ lX8 ^ lY8); } if (lX4 | lY4) { if (lResult & 0x40000000) { return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); } else { return (lResult ^ 0x40000000 ^ lX8 ^ lY8); } } else { return (lResult ^ lX8 ^ lY8); } } function md5_F(x, y, z) { return (x & y) | ((~x) & z); } function md5_G(x, y, z) { return (x & z) | (y & (~z)); } function md5_H(x, y, z) { return (x ^ y ^ z); } function md5_I(x, y, z) { return (y ^ (x | (~z))); } function md5_FF(a, b, c, d, x, s, ac) { a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_F(b, c, d), x), ac)); return md5_AddUnsigned(md5_RotateLeft(a, s), b); }; function md5_GG(a, b, c, d, x, s, ac) { a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_G(b, c, d), x), ac)); return md5_AddUnsigned(md5_RotateLeft(a, s), b); }; function md5_HH(a, b, c, d, x, s, ac) { a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_H(b, c, d), x), ac)); return md5_AddUnsigned(md5_RotateLeft(a, s), b); }; function md5_II(a, b, c, d, x, s, ac) { a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_I(b, c, d), x), ac)); return md5_AddUnsigned(md5_RotateLeft(a, s), b); }; function md5_ConvertToWordArray(string) { var lWordCount; var lMessageLength = string.length; var lNumberOfWords_temp1 = lMessageLength + 8; var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64; var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16; var lWordArray = Array(lNumberOfWords - 1); var lBytePosition = 0; var lByteCount = 0; while (lByteCount < lMessageLength) { lWordCount = (lByteCount - (lByteCount % 4)) / 4; lBytePosition = (lByteCount % 4) * 8; lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition)); lByteCount++; } lWordCount = (lByteCount - (lByteCount % 4)) / 4; lBytePosition = (lByteCount % 4) * 8; lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition); lWordArray[lNumberOfWords - 2] = lMessageLength << 3; lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29; return lWordArray; }; function md5_WordToHex(lValue) { var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount; for (lCount = 0; lCount <= 3; lCount++) { lByte = (lValue >>> (lCount * 8)) & 255; WordToHexValue_temp = "0" + lByte.toString(16); WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2); } return WordToHexValue; }; function md5_Utf8Encode(string) { string = string.replace(/\r\n/g, "\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if ((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }; var x = Array(); var k, AA, BB, CC, DD, a, b, c, d; var S11 = 7, S12 = 12, S13 = 17, S14 = 22; var S21 = 5, S22 = 9, S23 = 14, S24 = 20; var S31 = 4, S32 = 11, S33 = 16, S34 = 23; var S41 = 6, S42 = 10, S43 = 15, S44 = 21; string = md5_Utf8Encode(string); x = md5_ConvertToWordArray(string); a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; for (k = 0; k < x.length; k += 16) { AA = a; BB = b; CC = c; DD = d; a = md5_FF(a, b, c, d, x[k + 0], S11, 0xD76AA478); d = md5_FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756); c = md5_FF(c, d, a, b, x[k + 2], S13, 0x242070DB); b = md5_FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE); a = md5_FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF); d = md5_FF(d, a, b, c, x[k + 5], S12, 0x4787C62A); c = md5_FF(c, d, a, b, x[k + 6], S13, 0xA8304613); b = md5_FF(b, c, d, a, x[k + 7], S14, 0xFD469501); a = md5_FF(a, b, c, d, x[k + 8], S11, 0x698098D8); d = md5_FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF); c = md5_FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1); b = md5_FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE); a = md5_FF(a, b, c, d, x[k + 12], S11, 0x6B901122); d = md5_FF(d, a, b, c, x[k + 13], S12, 0xFD987193); c = md5_FF(c, d, a, b, x[k + 14], S13, 0xA679438E); b = md5_FF(b, c, d, a, x[k + 15], S14, 0x49B40821); a = md5_GG(a, b, c, d, x[k + 1], S21, 0xF61E2562); d = md5_GG(d, a, b, c, x[k + 6], S22, 0xC040B340); c = md5_GG(c, d, a, b, x[k + 11], S23, 0x265E5A51); b = md5_GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA); a = md5_GG(a, b, c, d, x[k + 5], S21, 0xD62F105D); d = md5_GG(d, a, b, c, x[k + 10], S22, 0x2441453); c = md5_GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681); b = md5_GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8); a = md5_GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6); d = md5_GG(d, a, b, c, x[k + 14], S22, 0xC33707D6); c = md5_GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87); b = md5_GG(b, c, d, a, x[k + 8], S24, 0x455A14ED); a = md5_GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905); d = md5_GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8); c = md5_GG(c, d, a, b, x[k + 7], S23, 0x676F02D9); b = md5_GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A); a = md5_HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942); d = md5_HH(d, a, b, c, x[k + 8], S32, 0x8771F681); c = md5_HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122); b = md5_HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C); a = md5_HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44); d = md5_HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9); c = md5_HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60); b = md5_HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70); a = md5_HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6); d = md5_HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA); c = md5_HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085); b = md5_HH(b, c, d, a, x[k + 6], S34, 0x4881D05); a = md5_HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039); d = md5_HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5); c = md5_HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8); b = md5_HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665); a = md5_II(a, b, c, d, x[k + 0], S41, 0xF4292244); d = md5_II(d, a, b, c, x[k + 7], S42, 0x432AFF97); c = md5_II(c, d, a, b, x[k + 14], S43, 0xAB9423A7); b = md5_II(b, c, d, a, x[k + 5], S44, 0xFC93A039); a = md5_II(a, b, c, d, x[k + 12], S41, 0x655B59C3); d = md5_II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92); c = md5_II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D); b = md5_II(b, c, d, a, x[k + 1], S44, 0x85845DD1); a = md5_II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F); d = md5_II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0); c = md5_II(c, d, a, b, x[k + 6], S43, 0xA3014314); b = md5_II(b, c, d, a, x[k + 13], S44, 0x4E0811A1); a = md5_II(a, b, c, d, x[k + 4], S41, 0xF7537E82); d = md5_II(d, a, b, c, x[k + 11], S42, 0xBD3AF235); c = md5_II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB); b = md5_II(b, c, d, a, x[k + 9], S44, 0xEB86D391); a = md5_AddUnsigned(a, AA); b = md5_AddUnsigned(b, BB); c = md5_AddUnsigned(c, CC); d = md5_AddUnsigned(d, DD); } return (md5_WordToHex(a) + md5_WordToHex(b) + md5_WordToHex(c) + md5_WordToHex(d)).toLowerCase(); } // const api = { // login: (data) => request('GET', `main/login/toLogin`, data), // list: (data) => request('GET', `main/projectManage/ajaxForWaitOrder`, data), // // 电站详情 // entryDetail: (data) => request('GET', `main/projectManage/entryDetail`, data), // saveOrEditCustomerEntry: (data) => request('GET', `main/projectManage/saveOrEditCustomerEntry`, data), // // 项目列表 // projectList: (data) => request('GET', `main/projectManage/projectList`, data), // // 项目删除 // appletsDelete: (data) => request('GET', `main/projectManage/appletsDelete`, data), // // 安装方式 // installWayList: (data) => request('GET', `main/projectManage/installWayList`, data), // // 获取省 // getProvinceList: (data) => request('GET', `main/redirect/getProvinceList`, data), // // 获取市 // getCitysByProName: (data) => request('GET', `main/redirect/getCitysByProName`, data), // // 获取区 // getAreaByCityName: (data) => request('GET', `main/redirect/getAreaByCityName`, data), // // 信息录入 // saveOrEditCustomerEntry: (data) => request('GET', `main/projectManage/saveOrEditCustomerEntry`, data), // // 系统工程师统计 // statistic: (data) => request('GET', `main/projectManage/statistic`, data), // // 驳回 // appletsFailed: (data) => request('GET', `main/projectManage/appletsFailed`, data), // // 匹配方案 // findAllPlan: (data) => request('GET', `main/projectManage/findAllPlan`, data), // // 审核通过并匹配 // appletsToExamine: (data) => request('GET', `main/projectManage/appletsToExamine`, data), // // 确认下单 // batchOrder: (data) => request('GET', `main/projectManage/batchOrder`, data), // // 确认下单 // batchReceive: (data) => request('GET', `main/projectManage/batchReceive`, data), // // 安装完成 // batchInstall: (data) => request('GET', `main/projectManage/batchInstall`, data), // // 并网验收 // mergeAccept: (data) => request('GET', `main/projectManage/mergeAccept`, data), // // 验收退回 // notAccept: (data) => request('GET', `main/projectManage/notAccept`, data), // // 验收确认 // sureAccept: (data) => request('GET', `main/projectManage/sureAccept`, data), // // 交付 // accept: (data) => request('GET', `main/projectManage/accept`, data), // //并网验收 // mergeAccept: (data) => request('GET', `main/projectManage/mergeAccept`, data), // //电站详情 // entryDetail: (data) => request('GET', `main/projectManage/entryDetail`, data), // //查看方案 // viewMatchedPlan: (data) => request('GET', `main/projectManage/viewMatchedPlan`, data), // //查看验收报告 // toMergeAccept: (data) => request('GET', `main/projectManage/toMergeAccept`, data), // //暂存验收报告 // tempSaveReport: (data) => request('GET', `main/projectManage/tempSaveReport`, data), // //发送短信验证码 // sendMsg: (data) => request('GET', `main/customer/sendMsg`, data), // //提交忘记密码 // checkConfirmCode: (data, cookie) => request('GET', `main/customer/checkConfirmCode`, data, cookie), // //根据规格获取方案类型 // findPlanByAssembly: (data) => request('GET', `main/customer/findPlanByAssembly`, data), // //获取逆变器并网箱 // getElectricPlanAll: (data) => request('GET', `main/projectManage/getElectricPlanAll`, data), // //根据组件总块数 获取逆变器并网箱 // findElectricPlan: (data) => request('GET', `main/projectManage/findElectricPlan`, data), // //申请单列表 // applyOrderList: (data) => request2({ // url: 'main/apply/ajaxForApplyOrderList', // method: 'GET', // data // }, true), // //入库单列表 // inStockList: (data) => request2({ // url: 'main/inStock/inStockList', // method: 'GET', // data // }, true), // //出库单列表 // outStockList: (data) => request2({ // url: 'main/outStock/outStockList', // method: 'POST', // data // }, true), // //调拨单列表 // allocationList: (data) => request2({ // url: 'main/allocation/allocationList', // method: 'GET', // data // }, true), // //盘点单列表 // inventoryList: (data) => request2({ // url: 'main/smInventory/listInventoryOrder', // method: 'POST', // data // }, true), // //订单查询列表 // allLists: (data) => request2({ // url: 'main/allOrder/list', // method: 'GET', // data // }, true), // //仓库列表 // warehouseList: (data) => request('GET', `main/apply/warehouseList`, data), // //调拨单发货方式 // getDelivery: (data) => request('POST', `main/allocation/getDelivery`, data), // //物料统计 // getIndexNumber: (data) => request('GET', `main/allocation/getIndexNumber`, data), // //物料组 // listMaterialGroup: (data) => request('GET', `main/apply/listMaterialGroup`, data), // //物料类型 // listMaterialType: (data) => request('GET', `main/apply/listMaterialType`, data), // //物料列表 // findMaterialAndBom: (data) => request2({ // url: 'main/apply/findMaterialAndBom', // method: 'GET', // data // }, true), // //可出库物料列表 // findMaterialList: (data) => request2({ // url: 'main/apply/findMaterialList', // method: 'GET', // data // }, true), // //保存物料申请单 // saveApplyOrder: (data) => request2({ // url: 'main/apply/saveApplyOrder?userId=' + wx.getStorageSync('userId'), // method: 'POST', // header: { // 'content-type': 'application/json', // }, // data // }, true), // //物料申请单详情 // applyDetail: (data) => request('GET', `main/apply/applyOrderDetail`, data), // //出库单详情 // outStockOrderDetail: (data) => request2({ // url: 'main/outStock/outStockOrderDetail', // method: 'POST', // data // }, true), // //调拨单详情 // allocationDetail: (data) => request2({ // url: 'main/allocation/allocationDetail', // method: 'GET', // data // }, true), // //盘点单详情 // inventoryOrderDetail: (data) => request2({ // url: 'main/smInventory/inventoryOrderDetail', // method: 'POST', // data // }, true), // //订单查询详情 // allOrderDetail: (data) => request2({ // url: 'main/allOrder/orderDetail', // method: 'GET', // data // }, true), // //调拨单入库 // inAllocationOrder: (data) => request2({ // url: 'main/allocation/inAllocationOrder?userId=' + wx.getStorageSync('userId'), // method: 'POST', // header: { // 'content-type': 'application/json', // }, // data // }, true), // //调拨单出库 // outAllocationOrder: (data) => request2({ // url: 'main/allocation/outAllocationOrder?userId=' + wx.getStorageSync('userId'), // method: 'POST', // header: { // 'content-type': 'application/json', // }, // data // }, true), // //新增使用出库单 // saveOutStockOrder: (data) => request2({ // url: 'main/outStock/saveOutStockOrder', // method: 'POST', // header: { // 'content-type': 'application/json', // }, // data // }, true), // //入库单详情 // inStockOrderDetail: (data) => request2({ // url: 'main/inStock/inStockOrderDetail', // method: 'GET', // data // }, true), // //入库单入库 // inStockAdd: (data) => request2({ // url: 'main/inStock/inStock?userId=' + wx.getStorageSync('userId'), // method: 'POST', // header: { // 'content-type': 'application/json', // }, // data // }, true), // //入库单打回 // inStockGiveBack: (data) => request2({ // url: 'main/inStock/giveBack?userId=' + wx.getStorageSync('userId'), // method: 'POST', // data // }, true), // //订单查询删除 // deleteOrder: (data) => request2({ // url: 'main/allOrder/deleteOrder', // method: 'POST', // data // }, true), // findPlanByAssembly: (data) => request('GET', `main/projectManage/findPlanByAssembly`, data), // // 获取民族 // getNationals: (data) => request('GET', `main/projectManage/getNationals`, data), // // 进件申请(第一次) // saveIncomingApplication: (data) => request('POST', `main/projectManage/saveIncomingApplication`, data), // //3、查询征信接口 // lookCreditResult: (data) => request('GET', `main/projectManage/lookCreditResult`, data), // //进件详情 // getOnceIncomingApplication: (data) => request('GET', `main/projectManage/getOnceIncomingApplication`, data), // //获取省 // getProvince: (data) => request('GET', `main/projectManage/getProvince`, data), // //根据省的id 获取市 // getCityByPros: (data) => request('GET', `main/projectManage/getCityByPros`, data), // //根据市的id 获取区 // getAreaByCity: (data) => request('GET', `main/projectManage/getAreaByCity`, data), // //进件结果查询 // lookApplyResult: (data) => request('GET', `main/projectManage/lookApplyResult`, data), // //二次申请 // nextIncomingApplication: (data) => request('POST', `main/projectManage/nextIncomingApplication`, data), // // // uploadTwoAttachment: (data) => request('GET', `main/projectManage/uploadTwoAttachment`, data), // // // } const toast = (title, time, icon) => { wx.showToast({ title: title, duration: time, icon: icon, mask: true }) } const req = (url, data, method, header, contentType) => { let noTokenUrl = ['oauth/miniapp/token','oauth/miniapp/logout']; if(noTokenUrl.some((item)=>{return item== url})){//不需要加token var _header = { 'Content-Type': contentType === '1' ? 'application/json' : 'application/x-www-form-urlencoded', 'Authorization': 'Basic c2FiZXIzOnNhYmVyM19zZWNyZXQ=', 'Tenant-Id': '000000', } }else{//需要加token var _header = { 'Content-Type': contentType === '1' ? 'application/json' : 'application/x-www-form-urlencoded', 'Authorization': 'Basic c2FiZXIzOnNhYmVyM19zZWNyZXQ=', 'Blade-Requested-With':'BladeHttpRequest', 'Blade-Auth': 'bearer ' + wx.getStorageSync('TOKEN'), } } return new Promise((resolve, reject) => { wx.request({ url: monitURL + url, data: data, method: method, header: {..._header,...header}, success: function (res) { resolve(res.data) }, fail: function (res) { reject(res); }, complete: function (res) { if(res.data.code == '401'){//登录失效 console.log('登录失效') wx.showModal({ content: '登录过期,是否重新登录?', success(res) { if (res.cancel) {} else if (res.confirm) { wx.clearStorage() wx.reLaunch({ url: '/pages/index/index', }) } } }) } } }) }) } var turnEmpty = obj => { if (obj == undefined) { return '' } else if (obj == 'undefined') { return '' } else if (obj == null) { return '' } else if (obj == 'null') { return '' } else { return obj } } /* 防抖函数封装 */ function debounce(fn, interval) { let timer; let delay = interval || 1000; // 间隔的时间,如果interval不传,则默认1秒 return function () { let that = this; let args = arguments; // 保存此处的arguments,因为setTimeout是全局的,arguments不是防抖函数需要的。 if (timer) { clearTimeout(timer); } timer = setTimeout(function () { fn.apply(that, args); // 用apply指向调用debounce的对象,相当于this.fn(args); }, delay); }; } /** * 根据身份证号,获取精缺周岁年龄 * @param {Object} idNumber 身份证号 */ function getAgeByPid(idNumber){ var birthYear = idNumber.substr(6,4) var birthMonth = idNumber.substr(10,2) var birthDay = idNumber.substr(12,2) var d = new Date(); var nowYear = d.getFullYear(); var nowMonth = d.getMonth() + 1; var nowDay = d.getDate(); var returnAge = 0 if(nowYear == birthYear){ returnAge = 0;//同年 则为0岁 }else{ var ageDiff = nowYear - birthYear ; //年之差 if(ageDiff > 0){ if(nowMonth == birthMonth){ var dayDiff = nowDay - birthDay;//日之差 if(dayDiff < 0){ returnAge = ageDiff - 1; }else{ returnAge = ageDiff ; } }else{ var monthDiff = nowMonth - birthMonth;//月之差 if(monthDiff < 0){ returnAge = ageDiff - 1; }else{ returnAge = ageDiff ; } } }else{ returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天 } } return returnAge;//返回周岁年龄 } var filterItem = function(key, value, arr){ if (!(arr && arr.length > 0)) { return {} } var item = []; for(var i = 0; i= value){ item.push(arr[i]) } } return item.length ? item[0] : {} } module.exports = { formatTime, formatTime2, // api, toast, req, turnEmpty, debounce, getAgeByPid, md5, idCard(value,rule, param, models) { if (!value || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(value)) { return true; } }, validatePhoneNumber(value,rule, param, models) { if (!value || !/^[1][3-9]\d{9}$/i.test(value)) { return true; } }, validateBankNum(value,rule, param, models) { //长度在15到19位 if (!value || !/^(?:[1-9]\d{14}(?:\d|L|U|C|X|P|S|Q|R|Z|N|G|B|E|K|H|V|W|Y|T)?|\d{15,19})$/.test(value)) { return true; } }, isDate(str){ // 日期字符串的格式:yyyy-mm-dd var datePattern = /^\d{4}-\d{1,2}-\d{1,2}$/; return datePattern.test(str); }, num(rule, value, param, models) { if (!value || !/^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/.test(value)) { return rule.message; } }, filterItem:filterItem, }