diff --git a/src/config/utils.js b/src/config/utils.js index e470742..f49d834 100644 --- a/src/config/utils.js +++ b/src/config/utils.js @@ -1,39 +1,42 @@ const utils = { - isObject: (params) => Object.prototype.toString.call(params) === "[object Object]", - isArray: (params) => Object.prototype.toString.call(params) === "[object Array]", - isFunction: (params) => Object.prototype.toString.call(params) === "[object Function]", + isObject: (params) => + Object.prototype.toString.call(params) === "[object Object]", + isArray: (params) => + Object.prototype.toString.call(params) === "[object Array]", + isFunction: (params) => + Object.prototype.toString.call(params) === "[object Function]", toSizeText: (size) => { - let num = 0 - let unit = "" + let num = 0; + let unit = ""; if (size / 1024 < 1000) { - num = size / 1024 - unit = "KB" + num = size / 1024; + unit = "KB"; } else if (size / 1024 / 1024 < 1000) { - num = size / 1024 / 1024 - unit = "MB" + num = size / 1024 / 1024; + unit = "MB"; } else { - num = size / 1024 / 1024 / 1024 - unit = "GB" + num = size / 1024 / 1024 / 1024; + unit = "GB"; } - num = Math.floor(num * 100) / 100 - return `${num}${unit}` + num = Math.floor(num * 100) / 100; + return `${num}${unit}`; }, // 获取localStorage的已存容量 getLocalSurplus: () => { if (!window.localStorage) { - console.log("浏览器不支持localStorage") + console.log("浏览器不支持localStorage"); } - var size = 0 + var size = 0; for (let item in window.localStorage) { if (window.localStorage.hasOwnProperty(item)) { - size += window.localStorage.getItem(item).length + size += window.localStorage.getItem(item).length; } } if (parseInt((size / 1024).toFixed(2)) > 4000) { - window.localStorage.clear() + window.localStorage.clear(); } - console.log("当前localStorage已存容量为" + (size / 1024).toFixed(2) + "KB") + console.log("当前localStorage已存容量为" + (size / 1024).toFixed(2) + "KB"); }, // parseFormatNum: (number) => { @@ -47,60 +50,60 @@ const utils = { // return vn.split("").reverse().join("") // }, parseFormatNum: (number) => { - if (!number) return 0 - let arr = number.toString().split(".") - let hasXiaoShu = arr.length > 1 // 有小数 - const a = arr[0].split("") - let v = a.reverse() - let vn = "" + if (!number) return 0; + let arr = number.toString().split("."); + let hasXiaoShu = arr.length > 1; // 有小数 + const a = arr[0].split(""); + let v = a.reverse(); + let vn = ""; for (let i = 0; i < v.length; i++) { - vn += v[i] + ((i + 1) % 3 == 0 && i + 1 != v.length ? "," : "") + vn += v[i] + ((i + 1) % 3 == 0 && i + 1 != v.length ? "," : ""); } - return vn.split("").reverse().join("") + (hasXiaoShu ? `.${arr[1]}` : '') + return vn.split("").reverse().join("") + (hasXiaoShu ? `.${arr[1]}` : ""); }, idCardTest: (value) => { - let re = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/ - return re.test(value) + let re = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; + return re.test(value); }, imsiTest: (value) => { - let re = /(^\d{15}$)/ - return re.test(value) + let re = /(^\d{15}$)/; + return re.test(value); }, getQueryString: (str, name) => { - let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)") - let r = str.substr(1).match(reg) - if (r != null) return decodeURIComponent(r[2]) - return null + let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); + let r = str.substr(1).match(reg); + if (r != null) return decodeURIComponent(r[2]); + return null; }, updateTreeData: (data) => { - let item = [] + let item = []; data.map(({ id, text, nodes }) => { item.push({ key: id, value: id, title: text, children: nodes ? utils.updateTreeData(nodes) : [], - }) - }) - return item + }); + }); + return item; }, changeObjToQuery: (obj) => { - let arr = [] + let arr = []; Object.keys(obj).forEach((elem) => { if (obj[elem] && Array.isArray(obj[elem])) { - arr.push(`${elem}=${obj[elem].join(",")}`) + arr.push(`${elem}=${obj[elem].join(",")}`); } else { - arr.push(`${elem}=${obj[elem] ? obj[elem] : ""}`) + arr.push(`${elem}=${obj[elem] ? obj[elem] : ""}`); } - }) - return arr.join("&") + }); + return arr.join("&"); }, // openNewWindow: (url, id) => { // window.location = window.location.href.split("#")[0] + "#" + url // }, openNewWindow: (url) => { if (url) { - window.open(url, "_self") + window.open(url, "_self"); } }, // 打开自定义窗口 @@ -115,42 +118,46 @@ const utils = { //window.screen.height获得屏幕的高,window.screen.width获得屏幕的宽 var iTop = (window.screen.height - 30 - customHeight) / 2; //获得窗口的垂直位置; var iLeft = (window.screen.width - 10 - customWidth) / 2; //获得窗口的水平位置; - window.open(url, "_blank", `height=${customHeight},innerHeight=${customHeight},width=${customWidth},innerWidth=${customWidth},top=${iTop},left=${iLeft},toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no`) + window.open( + url, + "_blank", + `height=${customHeight},innerHeight=${customHeight},width=${customWidth},innerWidth=${customWidth},top=${iTop},left=${iLeft},toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no` + ); }, toFindRegion: (pro, city, county) => { - let cityData = JSON.parse(localStorage.getItem("_cityData")) + let cityData = JSON.parse(localStorage.getItem("_cityData")); if (cityData) { - let region = [] + let region = []; for (let i = 0; i < cityData.length; i++) { - let elem = cityData[i] + let elem = cityData[i]; if (elem.label === pro) { - region.push(elem.value) + region.push(elem.value); if (elem.children) { if (city.length && county) { for (let j = 0; j < elem.children.length; j++) { - let node = elem.children[j] + let node = elem.children[j]; if (node.label === city) { - region.push(node.value) + region.push(node.value); if (node.children) { for (let k = 0; k < node.children.length; k++) { - let child = node.children[k] + let child = node.children[k]; if (child.label === county) { - region.push(child.value) - break + region.push(child.value); + break; } } } } } } else if (!city.length && county) { - let node = elem.children[0] - region.push(node.value) + let node = elem.children[0]; + region.push(node.value); if (node.children) { for (let k = 0; k < node.children.length; k++) { - let child = node.children[k] + let child = node.children[k]; if (child.label === county) { - region.push(child.value) - break + region.push(child.value); + break; } } } @@ -158,165 +165,190 @@ const utils = { } } } - return region + return region; } else { - return [] + return []; } }, // 生成列表序号 toSerialNumber: (number) => { - let result = number + let result = number; switch (number.toString().length) { case 1: - result = `00${number}` - break + result = `00${number}`; + break; case 2: - result = `0${number}` - break + result = `0${number}`; + break; default: - result += "" - break + result += ""; + break; } - return result + return result; }, // 获取地址栏搜索参数 search 格式,如: ?deal_status=2 generateParams: (search) => { - let result = {} - let searchParamsStr = search.split("?")[1] + let result = {}; + let searchParamsStr = search.split("?")[1]; if (searchParamsStr) { - let searchParams = searchParamsStr.split("&") + let searchParams = searchParamsStr.split("&"); searchParams.forEach((elem) => { - let arr = elem.split("=") - let key = arr[0] - let value = arr[1] + let arr = elem.split("="); + let key = arr[0]; + let value = arr[1]; if (key) { - result[key] = decodeURIComponent(value) + result[key] = decodeURIComponent(value); } - }) + }); } - return result + return result; }, // 生成一个唯一随机数 createRandom: () => { - return new Date().getTime() + "-" + Math.random() + "-" + Math.random() + return new Date().getTime() + "-" + Math.random() + "-" + Math.random(); }, // 输入框输入整数处理 integerHandle: (value) => { if (isNaN(parseInt(value))) { - return "" + return ""; } else { - return parseInt(value) + return parseInt(value); } }, // 判断时间段是否包含 validationTime: function (obj) { //如果没有第二个时间段直接通过 - if (!obj.start_date2) return true + if (!obj.start_date2) return true; - let start_date = new Date(obj.start_date.replace(/-/g, "/")).getTime() - let end_date = new Date(obj.end_date.replace(/-/g, "/")).getTime() - let start_date2 = new Date(obj.start_date2.replace(/-/g, "/")).getTime() - let end_date2 = new Date(obj.end_date2.replace(/-/g, "/")).getTime() + let start_date = new Date(obj.start_date.replace(/-/g, "/")).getTime(); + let end_date = new Date(obj.end_date.replace(/-/g, "/")).getTime(); + let start_date2 = new Date(obj.start_date2.replace(/-/g, "/")).getTime(); + let end_date2 = new Date(obj.end_date2.replace(/-/g, "/")).getTime(); //如果时间段不互相包含 直接通过 if ( - (start_date > start_date2 && end_date > start_date2 && start_date > end_date2) || - (start_date < start_date2 && end_date < start_date2 && end_date < start_date2) + (start_date > start_date2 && + end_date > start_date2 && + start_date > end_date2) || + (start_date < start_date2 && + end_date < start_date2 && + end_date < start_date2) ) { - return true + return true; } - return false + return false; }, // 开始时间不可以大于结束时间 validationTime2: function (obj) { if (obj.start_date && obj.end_date) { - let start_date = new Date(obj.start_date.replace(/-/g, "/")).getTime() - let end_date = new Date(obj.end_date.replace(/-/g, "/")).getTime() + let start_date = new Date(obj.start_date.replace(/-/g, "/")).getTime(); + let end_date = new Date(obj.end_date.replace(/-/g, "/")).getTime(); if (start_date > end_date) { - return false + return false; } } if (obj.start_date2 && obj.end_date2) { - let start_date2 = new Date(obj.start_date2.replace(/-/g, "/")).getTime() - let end_date2 = new Date(obj.end_date2.replace(/-/g, "/")).getTime() + let start_date2 = new Date(obj.start_date2.replace(/-/g, "/")).getTime(); + let end_date2 = new Date(obj.end_date2.replace(/-/g, "/")).getTime(); if (start_date2 > end_date2) { - return false + return false; } } - return true + return true; }, // 时间范围不能超过多少天 validationTime3: function (obj, max) { - let maxTime = (parseInt(max) + 1) * 24 * 60 * 60 * 1000 + let maxTime = (parseInt(max) + 1) * 24 * 60 * 60 * 1000; if (obj.start_date && obj.end_date) { - let start_date = new Date(obj.start_date.replace(/-/g, "/")).getTime() - let end_date = new Date(obj.end_date.replace(/-/g, "/")).getTime() + let start_date = new Date(obj.start_date.replace(/-/g, "/")).getTime(); + let end_date = new Date(obj.end_date.replace(/-/g, "/")).getTime(); if (end_date - start_date > maxTime) { - return false + return false; } } if (obj.start_date2 && obj.end_date2) { - let start_date2 = new Date(obj.start_date2.replace(/-/g, "/")).getTime() - let end_date2 = new Date(obj.end_date2.replace(/-/g, "/")).getTime() + let start_date2 = new Date(obj.start_date2.replace(/-/g, "/")).getTime(); + let end_date2 = new Date(obj.end_date2.replace(/-/g, "/")).getTime(); if (end_date2 - start_date2 > maxTime) { - return false + return false; } } - return true + return true; }, // 车牌号校验 plate 车牌号 accurate 是否是精确的 validationPlate: function (plate, accurate) { - let value = plate.toUpperCase().trim().replace(/\s/g, "") + let value = plate.toUpperCase().trim().replace(/\s/g, ""); // 精准车牌不能有这两个字符 - if (accurate && (!value || value.indexOf("*") !== -1 || value.indexOf("?") !== -1)) { - return false + if ( + accurate && + (!value || value.indexOf("*") !== -1 || value.indexOf("?") !== -1) + ) { + return false; } // 车牌号不能大于8 if (value.length > 8) { - return false + return false; } // 车牌号不能有特殊字符 let containSpecial = RegExp( /[(\ )(\~)(\!)(\@)(\#)(\$)(\%)(\¥)(\^)(\&)(\()(\))(\-)(\_)(\+)(\=)(\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\')(\")(\,)(\.)(\/)(\<)(\>)(\)]+/ - ) - let ft = containSpecial.test(value) + ); + let ft = containSpecial.test(value); if (ft == true) { - return false + return false; } if (value !== "" && value.indexOf("*") == -1 && value.indexOf("?") == -1) { //let re=/^[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}$/; let re = - /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领军空A-Z]{1}[A-Z]{1}[警京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼]{0,1}[A-Z0-9]{3,5}[A-Z0-9挂学警港澳使领]{1}$/ + /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领军空A-Z]{1}[A-Z]{1}[警京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼]{0,1}[A-Z0-9]{3,5}[A-Z0-9挂学警港澳使领]{1}$/; // let re = /^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/ if (value.search(re) == -1) { - return false + return false; } } else { if (value !== "" && value.indexOf("*") == -1) { if (value.length != 6 && value.length != 7 && value.length != 8) { - return false + return false; } } } - return true + return true; }, // 数字格式格式化 亿、万 numberFormat: function (num) { if (!num) { - return "0" + return "0"; + } + let str = JSON.stringify(num); + let len = str.length; + if (len > 8) { + let str1 = str.substring(0, len - 8); + let str2 = str.substring(str1.length, str1.length + 2); + str = str1 + "." + str2 + "亿"; + } else if (len > 4 && len <= 8) { + let str1 = str.substring(0, len - 4); + let str2 = str.substring(str1.length, str1.length + 2); + str = str1 + "." + str2 + "万"; + } + return str; + }, + // 数字格式格式化 亿、万,echarts要个毛线 .00,y轴放不下 + noonenumberFormat: function (num) { + if (!num) { + return "0"; } - let str = JSON.stringify(num) - let len = str.length + let str = JSON.stringify(num); + let len = str.length; if (len > 8) { - let str1 = str.substring(0, len - 8) - let str2 = str.substring(str1.length, str1.length + 2) - str = str1 + "." + str2 + "亿" + let str1 = str.substring(0, len - 8); + let str2 = str.substring(str1.length, str1.length + 2); + str = str1 + "亿"; } else if (len > 4 && len <= 8) { - let str1 = str.substring(0, len - 4) - let str2 = str.substring(str1.length, str1.length + 2) - str = str1 + "." + str2 + "万" + let str1 = str.substring(0, len - 4); + let str2 = str.substring(str1.length, str1.length + 2); + str = str1 + "万"; } - return str + return str; }, // 加入暂存架数据转换 transformData: (data) => { @@ -327,7 +359,9 @@ const utils = { temporaryId: data.temporary_id, pic_id: data.pic_id, detection: data.detection ? JSON.stringify(data.detection) : "", - vehicle_detection: data.vehicle_detection ? JSON.stringify(data.vehicle_detection) : "", + vehicle_detection: data.vehicle_detection + ? JSON.stringify(data.vehicle_detection) + : "", imgURL: data.big_pic, jcryUrl: data.jcry_url, time: data.capture_time, @@ -350,76 +384,103 @@ const utils = { car_color: data.color_name, car_info: data.car_info, }, - } + }; } catch (e) { - return {} + return {}; } }, validatePlate: (str) => { return /^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/.test( str - ) + ); }, // 千位加逗号 toThousands: function (num) { var num = (num || 0).toString(), - result = "" + result = ""; while (num.length > 3) { - result = "," + num.slice(-3) + result - num = num.slice(0, num.length - 3) + result = "," + num.slice(-3) + result; + num = num.slice(0, num.length - 3); } if (num) { - result = num + result + result = num + result; } - return result + return result; }, // 验证经度 validatorLongitude: (value) => { - const reg = /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,15})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,15}|180)$/ + const reg = + /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,15})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,15}|180)$/; if (!reg.test(value)) { - return false + return false; } else { - return true + return true; } }, // 验证纬度 validatorLatitude: (value) => { - const reg = /^(\-|\+)?([0-8]?\d{1}\.\d{0,15}|90\.0{0,15}|[0-8]?\d{1}|90)$/ + const reg = /^(\-|\+)?([0-8]?\d{1}\.\d{0,15}|90\.0{0,15}|[0-8]?\d{1}|90)$/; if (!reg.test(value)) { - return false + return false; } else { - return true + return true; } }, - createTimeRange: (limit)=>{ - let date = new Date(), dateBefore = new Date(date.getTime() - limit * 86400* 1000) - let str = date.getFullYear()+"-" + ('0' + (date.getMonth() + 1)).slice(-2) +"-"+ ("0"+ date.getDate()).slice(-2), - strBefore = dateBefore.getFullYear() +"-"+ ('0' + (dateBefore.getMonth() + 1)).slice(-2) +"-"+ ("0"+ dateBefore.getDate()).slice(-2); - if(limit > 0){ - return strBefore + ' 00:00:00' + ',' + str + ' 23:59:59' - } - return str + ' 00:00:00' + ',' + strBefore+ ' 23:59:59' + createTimeRange: (limit) => { + let date = new Date(), + dateBefore = new Date(date.getTime() - limit * 86400 * 1000); + let str = + date.getFullYear() + + "-" + + ("0" + (date.getMonth() + 1)).slice(-2) + + "-" + + ("0" + date.getDate()).slice(-2), + strBefore = + dateBefore.getFullYear() + + "-" + + ("0" + (dateBefore.getMonth() + 1)).slice(-2) + + "-" + + ("0" + dateBefore.getDate()).slice(-2); + if (limit > 0) { + return strBefore + " 00:00:00" + "," + str + " 23:59:59"; + } + return str + " 00:00:00" + "," + strBefore + " 23:59:59"; }, - createTimeStr: (minusOrAdd)=>{ + createTimeStr: (minusOrAdd) => { let num = Number.isInteger(minusOrAdd) ? minusOrAdd : 0; - let date = new Date(new Date().getTime() - num * 86400* 1000) - let str = date.getFullYear()+"-" + ('0' + (date.getMonth() + 1)).slice(-2) +"-"+ ("0"+ date.getDate()).slice(-2) + ' ' + - ('0' + date.getHours()).slice(-2) + ':' + ('0' +date.getMinutes() ).slice(-2) + ":" + ('0' + date.getSeconds()).slice(-2) - return str + let date = new Date(new Date().getTime() - num * 86400 * 1000); + let str = + date.getFullYear() + + "-" + + ("0" + (date.getMonth() + 1)).slice(-2) + + "-" + + ("0" + date.getDate()).slice(-2) + + " " + + ("0" + date.getHours()).slice(-2) + + ":" + + ("0" + date.getMinutes()).slice(-2) + + ":" + + ("0" + date.getSeconds()).slice(-2); + return str; }, - createDateStr: (minusOrAdd)=>{ + createDateStr: (minusOrAdd) => { let num = Number.isInteger(minusOrAdd) ? minusOrAdd : 0; - let date = new Date(new Date().getTime() - num * 86400* 1000) - let str = date.getFullYear()+"-" + ('0' + (date.getMonth() + 1)).slice(-2) +"-"+ ("0"+ date.getDate()).slice(-2) - return str + let date = new Date(new Date().getTime() - num * 86400 * 1000); + let str = + date.getFullYear() + + "-" + + ("0" + (date.getMonth() + 1)).slice(-2) + + "-" + + ("0" + date.getDate()).slice(-2); + return str; + }, + validateTimeStr: (str) => { + let reg = /^20\d{2}-\d{1,2}-\d{1,2}/; + if (reg.test(str)) { + return true; + } + return false; }, - validateTimeStr : (str)=>{ - let reg = /^20\d{2}-\d{1,2}-\d{1,2}/ - if(reg.test(str)){ - return true - } - return false - } -} +}; -export default utils +export default utils; diff --git a/src/pages/DataAnalysisPrediction/ParkingOverview/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingOverview/loadable.jsx index 98e250a..fe5a52d 100644 --- a/src/pages/DataAnalysisPrediction/ParkingOverview/loadable.jsx +++ b/src/pages/DataAnalysisPrediction/ParkingOverview/loadable.jsx @@ -798,7 +798,10 @@ const ParkingOverview = connect(function mapStateToProps(state) { // interval: 10, // splitNumber: 6, //设置坐标轴的分割段数 axisLabel: { - //formatter: "{value}元", + formatter: (value) => { + return utils.noonenumberFormat(value); + }, + textStyle: { color: "#bbb", }, @@ -824,7 +827,7 @@ const ParkingOverview = connect(function mapStateToProps(state) { color: "rgba(13,225,250, .31)", }, - data: data.map((ele) => utils.numberFormat(ele.value)), + data: data.map((ele) => ele.value), }, ], grid: {