Browse Source

fix(): 解决大屏收入y轴展示问题

tags/PMS_Frontend_v1.0.6-develop
chenqiang 1 year ago
parent
commit
1b27a824af
  1. 395
      src/config/utils.js
  2. 7
      src/pages/DataAnalysisPrediction/ParkingOverview/loadable.jsx

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

7
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: {

Loading…
Cancel
Save