Browse Source

fix():修改时段分析等页面测试环境显示问题

tags/PMS_Frontend_v1.0.6-develop
xingjx 1 year ago
parent
commit
86912a9898
  1. 13
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/index.scss
  2. 63
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/loadable.jsx
  3. 17
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkUsageAly/index.scss
  4. 207
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkUsageAly/loadable.jsx
  5. 47
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyOverview/loadable.jsx
  6. 21
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyPeriod/loadable.jsx
  7. 3
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/TemporaryParkStat/loadable.jsx
  8. 10
      src/services/DataAnalysisPrediction/ParkingBusinessAly/index.js

13
src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/index.scss

@ -162,6 +162,19 @@ $color-primary : var(--color-primary);
background: #3e4557;
}
}
.export-btn {
display: inline-block;
text-align: center;
float: right;
width: 68px;
height: 34px;
line-height: 34px;
background: linear-gradient(180deg, #3aa9ff, #59b7ff);
border-radius: 4px;
margin-right: 15px;
margin-top: 10px;
cursor: pointer;
}
.row-head {
height: 32px;
display: flex;

63
src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/loadable.jsx

@ -67,12 +67,13 @@ function NightParkStat() {
},
{
title: '日间',
//width: 300,
children: [
{
title: '日间停车时长',
dataIndex: 'daytime_duration',
key: 'daytime_duration',
//width: 150,
width: 250,
//sorter: (a, b) => a.age - b.age,
},
]
@ -84,16 +85,19 @@ function NightParkStat() {
title: '夜间停车时长',
dataIndex: 'nighttime_duration',
key: 'nighttime_duration',
width: 250,
},
{
title: '纯夜间停车次数(次)',
dataIndex: 'age',
key: 'age',
dataIndex: 'pure_night_count',
key: 'pure_night_count',
width: 250,
},
{
title: '纯夜间停车时长',
dataIndex: 'pure_night_duration',
key: 'pure_night_duration',
width: 250,
},
]
}
@ -125,32 +129,32 @@ function NightParkStat() {
// }, [isAjax]);
//
const getRevenueOption = (data) => {
data = [
{
"date": "2023-11",
"daytime_count": "68086",
"daytime_duration": "267820时16分",
"nighttime_count": "5875",
"nighttime_duration": "74803时19分",
"pure_night_count": "46",
"pure_night_duration": "1683时40分",
daytime_hour: "46",
nighttime_hour: "46",
pure_night_hour: "46",
},
{
"date": "2023-10",
"daytime_count": "29660",
"daytime_duration": "65834时50分",
"nighttime_count": "9",
"nighttime_duration": "1030时07分",
"pure_night_count": "290",
"pure_night_duration": "148时38分",
daytime_hour: "46",
nighttime_hour: "46",
pure_night_hour: "46",
}
]
// data = [
// {
// "date": "2023-11",
// "daytime_count": "68086",
// "daytime_duration": "26782016",
// "nighttime_count": "5875",
// "nighttime_duration": "7480319",
// "pure_night_count": "46",
// "pure_night_duration": "168340",
// daytime_hour: "46",
// nighttime_hour: "46",
// pure_night_hour: "46",
// },
// {
// "date": "2023-10",
// "daytime_count": "29660",
// "daytime_duration": "6583450",
// "nighttime_count": "9",
// "nighttime_duration": "103007",
// "pure_night_count": "290",
// "pure_night_duration": "14838",
// daytime_hour: "46",
// nighttime_hour: "46",
// pure_night_hour: "46",
// }
// ]
//
data.sort((a, b) => {
return new Date(a.date) - new Date(b.date);
@ -585,6 +589,7 @@ function NightParkStat() {
</div>
<div className="paid-result soll-result">
<div className="result">
<div className="export-btn">导出</div>
<div className="result-box">
<div className="result-box-title">日间/夜间停车时长趋势</div>
<Tooltip

17
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkUsageAly/index.scss

@ -113,6 +113,10 @@ $color-primary : var(--color-primary);
}
.usage-result {
overflow: auto;
.result {
display: block !important;
}
}
.paid-result {
width: calc(100% - 375px);
@ -152,6 +156,19 @@ $color-primary : var(--color-primary);
background: #3e4557;
}
}
.export-btn {
display: inline-block;
text-align: center;
float: right;
width: 68px;
height: 34px;
line-height: 34px;
background: linear-gradient(180deg, #3aa9ff, #59b7ff);
border-radius: 4px;
margin-right: 15px;
margin-top: 10px;
cursor: pointer;
}
.row-head {
height: 32px;
display: flex;

207
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkUsageAly/loadable.jsx

@ -2,6 +2,7 @@ import React, { useState, useEffect } from "react";
import { ResultFlowResult } from "@/components";
import { Select, Input, Button, Table, message, Pagination, DatePicker, Modal, Cascader, Tooltip } from "antd";
import { useSessionStorageState } from "ahooks";
import { lineChartOption, ringChartOption } from "../echarts.config";
import { dictionary } from "@/config/common";
import { useNavigate } from "react-router-dom";
import { setTabList } from "@/store/common.js";
@ -16,20 +17,16 @@ import ajax from "@/services";
function ParkUsageAly() {
// session
const [defaultParams, setDefaultParams] = useSessionStorageState(
"formData_parkingAlyPeriod",
"formData_parkUageAly",
{ defaultValue: null }
);
//
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
confirm_start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD HH:mm:ss"),
confirm_end_time: moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),
create_start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD HH:mm:ss"),
create_end_time: moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),
app_name: "", //
app_type: 0, //
pay_merchant_id: 0, //
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD HH:mm:ss"),
end_time: moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),
date_type: '1', //
};
//
const [pageInfo, setPageInfo] = useState({
@ -57,33 +54,33 @@ function ParkUsageAly() {
//
const [revenueData, setRevenueData] = useState({});
const [searchSelectList, setSearchSelectList] = useState([]); //
const [sessionTabList, setSessionTabList] = useSessionStorageState('parkingAlyPeriod', {
const [sessionTabList, setSessionTabList] = useSessionStorageState('parkUageAly', {
value: {
}
})
const columns = [
{
title: '时间',
dataIndex: 'index',
key: 'index',
dataIndex: 'date',
key: 'date',
// width: 100,
// fixed: 'left',
},
{
title: '停车总时长',
dataIndex: 'age',
key: 'age',
dataIndex: 'total_duration',
key: 'total_duration',
},
{
title: '日均泊位停车时长',
dataIndex: 'age',
key: 'age',
dataIndex: 'avg_berth_duration',
key: 'avg_berth_duration',
},
{
title: '日均泊位利用率',
dataIndex: 'age',
key: 'age',
dataIndex: 'berth_utilization',
key: 'berth_utilization',
},
]
@ -92,11 +89,11 @@ function ParkUsageAly() {
setFormData({
...formData, ...sessionTabList
})
getData({
getCheck({
...sessionTabList
})
} else {
getData()
getCheck()
}
}, [isAjax])
useEffect(() => {
@ -116,7 +113,8 @@ function ParkUsageAly() {
const TimeChange = () => {
let e = formData.date_type;
let str = "day";
let mat = "YYYY-MM-DD";
//let mat = "YYYY-MM-DD";
let mat = "YYYY-MM-DD HH:mm:ss";
if (e == 4) {
str = "year";
mat = "YYYY";
@ -153,129 +151,66 @@ function ParkUsageAly() {
end_time: end,
});
};
//
//线
const getRevenueOption = (data) => {
//
data.sort((a, b) => {
return new Date(a.pay_date) - new Date(b.pay_date);
return new Date(a.date) - new Date(b.date);
});
console.log(data);
const areaNames = [...new Set(data.map((item) => item.area_name))];
const areaNames = data[0].name ? [...new Set(data.map((item) => item.name))] : [''];
//
const dates = [...new Set(data.map((item) => item.pay_date))].sort(
(a, b) => a.pay_date - b.pay_date
const dates = [...new Set(data.map((item) => item.date))].sort(
(a, b) => a.date - b.date
);
//
const seriesData = areaNames.map((areaName, index) => {
//
const areaData = data.filter((item) => item.area_name === areaName);
const areaData = data[0].name ? data.filter((item) => item.name === areaName) : data
//
return {
name: areaName,
name: areaNames.length > 1 ? areaName : '',
type: "line",
itemStyle: {
normal: {
label: {
show: true, //
position: 'top', //
textStyle: { //
color: 'white',//
fontSize: 10//
}
},
},
},
data: dates.map((item) => {
for (const { pay_date, income } of areaData) {
console.log(pay_date, income);
if (pay_date === item) return income;
for (const { date, berth_utilization } of areaData) {
if (date === item) return berth_utilization;
}
return 0;
}),
yAxisIndex: index == 1 ? 1 : null,
};
});
console.log(21, areaNames, seriesData)
console.log(seriesData)
// X
const xAxisData = dates.map((date) => {
return {
value: date,
textStyle: {
align: "center",
lineStyle: {
color: "skyblue", // 线
shadowBlur: 6,
},
},
};
});
setRevenueData({
title: {
text: "",
textStyle: {
color: "#fff",
},
},
tooltip: {
trigger: "axis",
},
xAxis: {
data: xAxisData,
type: 'category',
axisLine: {
lineStyle: {
color: "#bbb",
},
},
axisLabel: {
textStyle: {
color: "#bbb",
},
},
},
yAxis: {
type: "value",
name: '泊位利用率',
min: 0,
// /max: 50,
interval: 10,
splitNumber: 6, //
axisLabel: {
formatter: "{value}%",
textStyle: {
color: "#bbb",
},
},
},
color: ["#4DC3FF", "#FFD767"],
//series: seriesData,
series:
{
"name": "西区",
"type": "line",
"data": [
12,
12,
24
]
},
grid: {
x: 50,
y: 55,
x2: 70,
y2: 20,
},
};
});
setRevenueData(lineChartOption(areaNames, xAxisData, "泊位利用率", seriesData));
};
function getParkingIncome() {
ajax
.getParkingIncome()
.getParkUsageAlyLine()
.then((res) => {
if (res.status === 20000) {
console.log(res)
getRevenueOption(res.data);
getRevenueOption(res.data.list);
setResultData(res.data)
}
})
.catch((err) => console.error(err));
@ -295,30 +230,23 @@ function ParkUsageAly() {
);
};
//
const getData = (v) => {
//
const getCheck = (v) => {
let postData = { ...formData };
if (!loading) {
postData = { ...holdData };
}
setDefaultParams({ ...postData, ...pageInfo });
setTabLoading(true);
ajax.getAppList({ ...postData, ...v, ...pageInfo }).then(
(res) => {
if (parseInt(res?.status) === 20000) {
setResultData(res?.data || {});
} else {
message.error(res?.message);
}
setLoading(false);
setTabLoading(false);
},
(err) => {
console.log(err);
if (moment(formData.end_time) - moment(formData.start_time) > 1000 * 31 * 24 * 3600) {
message.error("时间范围限制为31天!")
setLoading(false);
setTabLoading(false);
return
}
);
setTabLoading(true);
let params = { ...postData, ...v, ...pageInfo }
//
getParkingIncome(params)
};
//
@ -349,9 +277,7 @@ function ParkUsageAly() {
message.error("暂无数据");
}
};
useEffect(() => {
getParkingIncome();
}, []);
//
useEffect(() => {
ajax
@ -384,9 +310,9 @@ function ParkUsageAly() {
value: "id",
children: "children",
}}
value={formData.region}
value={formData.area_id}
onChange={(v, option) => {
setFormData({ ...formData, region: v ? v : null });
setFormData({ ...formData, area_id: v ? v : null });
}}
/>
</div>
@ -396,9 +322,9 @@ function ParkUsageAly() {
className="form-con"
placeholder="请选择"
options={searchSelectList?.flow_type_list || []}
value={formData.pay_merchant_id}
value={formData.operator_id}
onChange={(v) =>
setFormData({ ...formData, pay_merchant_id: v })
setFormData({ ...formData, operator_id: v })
}
/>
</div>
@ -421,9 +347,9 @@ function ParkUsageAly() {
value: '2',
},
]}
value={formData.pay_merchant_id}
value={formData.car_parking_type}
onChange={(v) =>
setFormData({ ...formData, pay_merchant_id: v })
setFormData({ ...formData, car_parking_type: v })
}
/>
</div>
@ -432,9 +358,9 @@ function ParkUsageAly() {
<Input
className="form-con"
placeholder="请输入"
value={formData?.park}
value={formData?.road_name}
onChange={(e) =>
setFormData({ ...formData, park: e.target.value })
setFormData({ ...formData, road_name: e.target.value })
}
/>
</div>
@ -489,10 +415,6 @@ function ParkUsageAly() {
value: "3",
label: "月",
},
{
value: "4",
label: "年",
},
]}
onChange={(e) => SetTimeNow(e)}
/>
@ -593,6 +515,7 @@ function ParkUsageAly() {
</div>
<div className="paid-result usage-result">
<div className="result">
<div className="export-btn" onClick={()=>{window.open('')}}>导出</div>
<div className="result-box">
<div className="result-box-title">泊位利用率变化趋势</div>
<Tooltip
@ -609,29 +532,7 @@ function ParkUsageAly() {
<div className="result-box">
<Table
columns={columns}
dataSource={[
{
index: 1,
},
{
index: 1,
},
{
index: 1,
},
{
index: 1,
},
{
index: 1,
},
{
index: 1,
},
{
index: 1,
},
]}
dataSource={resultData.list || []}
bordered
size="middle"
// scroll={{

47
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyOverview/loadable.jsx

@ -26,7 +26,7 @@ function ParkingAlyOverview() {
const defaultData = {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD HH:mm:ss"),
end_time: moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),
date_type: '4',
date_type: '1',
//car_parking_type: '3',
};
//
@ -702,7 +702,14 @@ function ParkingAlyOverview() {
<Tabs
defaultActiveKey="2"
activeKey={tabKey}
onChange={changeKey}
onChange={() => {
changeKey();
setPageInfo({
...pageInfo,
...{ pn: 1 }
});
getListData({})
}}
items={[
{
label: `序号`,
@ -713,8 +720,22 @@ function ParkingAlyOverview() {
label: <div className="tab-title">
<div className="title">区域</div>
<div className="btn">
<div onClick={() => { message.success('升序'); getListData({ sort: 1 }) }}></div>
<div onClick={() => { message.success('降序'); getListData({ sort: 2 }) }}></div>
<div onClick={() => {
message.success('升序');
setPageInfo({
...pageInfo,
...{ pn: 1 }
});
getListData({ sort: 1 })
}}></div>
<div onClick={() => {
message.success('降序');
setPageInfo({
...pageInfo,
...{ pn: 1 }
});
getListData({ sort: 2 })
}}></div>
</div>
</div>,
key: '1',
@ -735,8 +756,22 @@ function ParkingAlyOverview() {
label: <div className="tab-title">
<div className="title">停车场</div>
<div className="btn">
<div onClick={() => { message.success('升序'); getListData({ sort: 1 }) }}></div>
<div onClick={() => { message.success('降序'); getListData({ sort: 2 }) }}></div>
<div onClick={() => {
message.success('升序');
setPageInfo({
...pageInfo,
...{ pn: 1 }
});
getListData({ sort: 1 })
}}></div>
<div onClick={() => {
message.success('降序');
setPageInfo({
...pageInfo,
...{ pn: 1 }
});
getListData({ sort: 2 })
}}></div>
</div>
</div>,
key: '2',

21
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyPeriod/loadable.jsx

@ -250,25 +250,7 @@ function ParkingAlyPeriod() {
);
};
//
const getData = (v) => {
ajax.getAppList({ ...v }).then(
(res) => {
if (parseInt(res?.status) === 20000) {
setResultData(res?.data || {});
} else {
message.error(res?.message);
}
setLoading(false);
setTabLoading(false);
},
(err) => {
console.log(err);
setLoading(false);
setTabLoading(false);
}
);
};
//
const getCheck = (v) => {
let postData = { ...formData };
@ -285,7 +267,6 @@ function ParkingAlyPeriod() {
setTabLoading(true);
let params = { ...postData, ...v, ...pageInfo }
//
getData(params)
getParkingIncome(params)
getParkingData(params)
};

3
src/pages/DataAnalysisPrediction/ParkingBusinessAly/TemporaryParkStat/loadable.jsx

@ -23,7 +23,7 @@ function TemporaryParkStat() {
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
tart_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD HH:mm:ss"),
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD HH:mm:ss"),
end_time: moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),
}
//
@ -245,6 +245,7 @@ function TemporaryParkStat() {
return
}
//setTabLoading(true);
setLoading(false)
let params = { ...postData, ...v, ...pageInfo }
//
getParkingIncome(params)

10
src/services/DataAnalysisPrediction/ParkingBusinessAly/index.js

@ -97,6 +97,14 @@ const getNightParkStatLine = (params) => {
data: params,
});
};
//停车业务分析-泊位利用分析-泊位利用变化趋势
const getParkUsageAlyLine = (params) => {
return ajax({
url: "/api/ana/dataanalysis/show_parking_berth_rate",
type: "post",
data: params,
});
};
export default {
getParkingAlyOverviewBase,
getParkingAlyOverviewLine,
@ -114,4 +122,6 @@ export default {
getTemporaryParkStatData,
getNightParkStatLine,
getParkUsageAlyLine,
}
Loading…
Cancel
Save