|
|
@ -27,7 +27,6 @@ function ParkingFalseAlarms() { |
|
|
|
}; |
|
|
|
const [operation, setOperation] = useState([]) |
|
|
|
const [total, setTotal] = useState() |
|
|
|
const [tag, setTag] = useState(0) |
|
|
|
// 分页数据 |
|
|
|
const [pageInfo, setPageInfo] = useState({ |
|
|
|
pn: 1, |
|
|
@ -199,18 +198,24 @@ function ParkingFalseAlarms() { |
|
|
|
const color = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#fc8452', '#3ba272', '#9a60b4', '#ee7ccc'] |
|
|
|
//停车饱和趋势分析分析 折线图 hour 时间对比 |
|
|
|
const getParkOption = (data) => { |
|
|
|
// if (!data?.list || data?.list.length <= 0) { |
|
|
|
// setHourData({}) |
|
|
|
// return |
|
|
|
// } |
|
|
|
if (!data || data?.length <= 0) { |
|
|
|
setHourData({}) |
|
|
|
return |
|
|
|
} |
|
|
|
let areaNames = data[0].road_name ? [...new Set(data.map((item) => item.road_name))].sort() : ['']; |
|
|
|
let dates, seriesData, xAxisData, tooltip |
|
|
|
data?.map((item) => { |
|
|
|
// 获取所有日期 |
|
|
|
const dates = [...new Set(item.list.map((item) => item.name))].sort( |
|
|
|
dates = [...new Set(item.list.map((item) => item.name))].sort( |
|
|
|
(a, b) => a.name - b.name |
|
|
|
); |
|
|
|
// 构建数据对象 |
|
|
|
let seriesData = { |
|
|
|
name: item.name, |
|
|
|
|
|
|
|
}) |
|
|
|
// 构建数据对象 |
|
|
|
seriesData = data?.map((item) => { |
|
|
|
let color2 = color[Math.round(Math.random() * 10)] |
|
|
|
return { |
|
|
|
name: item.road_name, |
|
|
|
type: "line", |
|
|
|
itemStyle: { |
|
|
|
label: { |
|
|
@ -219,40 +224,39 @@ function ParkingFalseAlarms() { |
|
|
|
color: 'white',//字体颜色 |
|
|
|
fontSize: 10//字体大小 |
|
|
|
}, |
|
|
|
// normal: { |
|
|
|
// color: color2, //改变折线点的颜色 |
|
|
|
// lineStyle: { |
|
|
|
// color: color2, |
|
|
|
// } |
|
|
|
// //改变折线颜色 |
|
|
|
// } |
|
|
|
normal: { |
|
|
|
color: color2, //改变折线点的颜色 |
|
|
|
lineStyle: { |
|
|
|
color: color2, |
|
|
|
} |
|
|
|
//改变折线颜色 |
|
|
|
} |
|
|
|
}, |
|
|
|
data: item.list |
|
|
|
}; |
|
|
|
|
|
|
|
// 构建X轴数据 |
|
|
|
const xAxisData = dates.map((date) => { |
|
|
|
return { |
|
|
|
value: date, |
|
|
|
align: "center", |
|
|
|
lineStyle: { |
|
|
|
color: "skyblue", // 设置线的颜色为天蓝色 |
|
|
|
shadowBlur: 6, |
|
|
|
}, |
|
|
|
|
|
|
|
}; |
|
|
|
}); |
|
|
|
let tooltip = { |
|
|
|
formatter: (params) => { |
|
|
|
console.log(params) |
|
|
|
return `<div class="tooltip-box"> |
|
|
|
${params[0].axisValue}<br/> |
|
|
|
误报次数:${params[0]?.data?.value}(次)<br/> |
|
|
|
</div>` |
|
|
|
} |
|
|
|
} |
|
|
|
setHourData({ ...lineChartOption([], xAxisData, "误报数量(次)", seriesData),...tooltip }); |
|
|
|
}) |
|
|
|
// 构建X轴数据 |
|
|
|
xAxisData = dates.map((date) => { |
|
|
|
return { |
|
|
|
value: date, |
|
|
|
align: "center", |
|
|
|
lineStyle: { |
|
|
|
color: "skyblue", // 设置线的颜色为天蓝色 |
|
|
|
shadowBlur: 6, |
|
|
|
}, |
|
|
|
|
|
|
|
}; |
|
|
|
}); |
|
|
|
tooltip = { |
|
|
|
formatter: (params) => { |
|
|
|
console.log(params) |
|
|
|
return `<div class="tooltip-box"> |
|
|
|
${params[0].axisValue}<br/> |
|
|
|
误报数量:${params[0]?.data?.value}(次)<br/> |
|
|
|
</div>` |
|
|
|
} |
|
|
|
} |
|
|
|
setHourData({ ...lineChartOption(areaNames, xAxisData, "误报数量(次)", seriesData,areaNames), ...tooltip }); |
|
|
|
}; |
|
|
|
function getData(data) { |
|
|
|
ajax |
|
|
@ -271,61 +275,21 @@ function ParkingFalseAlarms() { |
|
|
|
ajax |
|
|
|
.getParkingFalseAlarmsLine(data) |
|
|
|
.then((res) => { |
|
|
|
res = { |
|
|
|
"status": 20000, |
|
|
|
"message": "成功", |
|
|
|
"data": { |
|
|
|
"road_list": [{ |
|
|
|
"road_name": "武当山路", |
|
|
|
"list": [ |
|
|
|
{ |
|
|
|
"name": "2023-12-11", |
|
|
|
"value": "26" |
|
|
|
}, |
|
|
|
{ |
|
|
|
"name": "2023-12-12", |
|
|
|
"value": "58" |
|
|
|
}, |
|
|
|
{ |
|
|
|
"name": "2023-12-13", |
|
|
|
"value": "50" |
|
|
|
} |
|
|
|
] |
|
|
|
}], |
|
|
|
"device_list": [{ |
|
|
|
"road_name": "地磁设备", |
|
|
|
"list": [ |
|
|
|
{ |
|
|
|
"name": "2023-12-11", |
|
|
|
"value": "303" |
|
|
|
}, |
|
|
|
{ |
|
|
|
"name": "2023-12-12", |
|
|
|
"value": "469" |
|
|
|
}, |
|
|
|
{ |
|
|
|
"name": "2023-12-13", |
|
|
|
"value": "309" |
|
|
|
} |
|
|
|
] |
|
|
|
}] |
|
|
|
} |
|
|
|
} |
|
|
|
if (res.status === 20000) { |
|
|
|
setLineData(res.data) |
|
|
|
//getParkOption(res.data); |
|
|
|
getParkOption(res.data.device_list); |
|
|
|
setLoading(false) |
|
|
|
} |
|
|
|
}) |
|
|
|
.catch((err) => console.error(err)); |
|
|
|
} |
|
|
|
useEffect(() => { |
|
|
|
if (tag) { |
|
|
|
getParkOption(lineData.device_list) |
|
|
|
} else { |
|
|
|
getParkOption(lineData.road_list) |
|
|
|
} |
|
|
|
}, [lineData, tag]); |
|
|
|
// useEffect(() => { |
|
|
|
// if () { |
|
|
|
// getParkOption(lineData.device_list) |
|
|
|
// } else { |
|
|
|
// getParkOption(lineData.road_list) |
|
|
|
// } |
|
|
|
// }, [lineData]); |
|
|
|
// 获取下拉数据 |
|
|
|
const getSelectList = () => { |
|
|
|
ajax.getOperator().then((e) => { |
|
|
@ -352,7 +316,6 @@ function ParkingFalseAlarms() { |
|
|
|
setLoading(false); |
|
|
|
setTabLoading(false); |
|
|
|
let params = { ...postData, ...v, ...pageInfo } |
|
|
|
setTag(0) |
|
|
|
//请求接口 |
|
|
|
getParkingData(params) |
|
|
|
getData(params) |
|
|
@ -386,6 +349,7 @@ function ParkingFalseAlarms() { |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
//下拉数据,商户 |
|
|
|
const operationName = () => { |
|
|
|
ajax.getAllOperator().then(res => { |
|
|
|
if (res.status == 20000) { |
|
|
@ -415,7 +379,7 @@ function ParkingFalseAlarms() { |
|
|
|
placeholder="请选择" |
|
|
|
options={[ |
|
|
|
{ value: "0", label: "全部" }, |
|
|
|
{ value: "1", label: "地磁" } |
|
|
|
{ value: "1", label: "地磁设备" } |
|
|
|
]} |
|
|
|
value={formData.device_type} |
|
|
|
onChange={(v) => |
|
|
@ -594,17 +558,17 @@ function ParkingFalseAlarms() { |
|
|
|
<div className="result-box"> |
|
|
|
<div className="result-box-title">误报情况分析</div> |
|
|
|
<div className="result-box-child"> |
|
|
|
<div className="result-hd"> |
|
|
|
<div className="result-header rea" onClick={() => { setTag(0) }}> |
|
|
|
<div className="result-hdr"> |
|
|
|
<div className="result-header rea" > |
|
|
|
<div className="result-content"> |
|
|
|
<div className="title">频繁误报路段</div> |
|
|
|
<div className="time">{lineData?.road_list?.road_name || "--"}</div> |
|
|
|
<div className="time">{lineData?.road_name || "--"}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div className="result-header reb" onClick={() => { setTag(1) }}> |
|
|
|
<div className="result-header reb" > |
|
|
|
<div className="result-content"> |
|
|
|
<div className="title">频繁误报设备</div> |
|
|
|
<div className="time">{lineData?.road_list?.road_name || "--"}</div> |
|
|
|
<div className="time">{lineData?.device_name || "--"}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -617,7 +581,7 @@ function ParkingFalseAlarms() { |
|
|
|
/> |
|
|
|
</div> |
|
|
|
: |
|
|
|
<div className="no-data-box">{loading ? "加载中" : "暂无数据"}</div> |
|
|
|
<div className="no-data-box-fas">{loading ? "加载中" : "暂无数据"}</div> |
|
|
|
} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|