diff --git a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/index.scss b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/index.scss index 08b2559..2803378 100644 --- a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/index.scss +++ b/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; diff --git a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/loadable.jsx index 159351d..24a91e6 100644 --- a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/loadable.jsx +++ b/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,37 +129,37 @@ 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": "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.sort((a, b) => { return new Date(a.date) - new Date(b.date); }); - const areaNames = data[0].name ? [...new Set(data.map((item) => item.name))] : ['日间停车时长','夜间停车时长','纯夜间停车时长']; + const areaNames = data[0].name ? [...new Set(data.map((item) => item.name))] : ['日间停车时长', '夜间停车时长', '纯夜间停车时长']; // 获取所有日期 const dates = [...new Set(data.map((item) => item.date))].sort( (a, b) => a.date - b.date @@ -163,15 +167,15 @@ function NightParkStat() { // 构建数据对象 const seriesData = areaNames.map((areaName, index) => { let newsave = '' - if(areaName=="日间停车时长") { - newsave = data.map((item) => {return item.daytime_hour}) + if (areaName == "日间停车时长") { + newsave = data.map((item) => { return item.daytime_hour }) console.log(newsave) } - if(areaName=="夜间停车时长") { - newsave = data.map((item) => {return item.nighttime_hour}) + if (areaName == "夜间停车时长") { + newsave = data.map((item) => { return item.nighttime_hour }) } - if(areaName=="纯夜间停车时长") { - newsave =data.map((item) => {return item.pure_night_hour}) + if (areaName == "纯夜间停车时长") { + newsave = data.map((item) => { return item.pure_night_hour }) } // 获取数据 @@ -585,6 +589,7 @@ function NightParkStat() {
+
导出
日间/夜间停车时长趋势
{ @@ -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//字体大小 - } - }, + label: { + show: true, //开启显示 + position: 'top', //在上方显示 + 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, - }, + 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 }); + if (moment(formData.end_time) - moment(formData.start_time) > 1000 * 31 * 24 * 3600) { + message.error("时间范围限制为31天!") + setLoading(false); + setTabLoading(false); + return + } 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); - setLoading(false); - setTabLoading(false); - } - ); + 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 }); }} />
@@ -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 }) } />
@@ -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 }) } />
@@ -432,9 +358,9 @@ function ParkUsageAly() { - setFormData({ ...formData, park: e.target.value }) + setFormData({ ...formData, road_name: e.target.value }) } /> @@ -489,10 +415,6 @@ function ParkUsageAly() { value: "3", label: "月", }, - { - value: "4", - label: "年", - }, ]} onChange={(e) => SetTimeNow(e)} /> @@ -593,6 +515,7 @@ function ParkUsageAly() {
+
{window.open('')}}>导出
泊位利用率变化趋势
{ + changeKey(); + setPageInfo({ + ...pageInfo, + ...{ pn: 1 } + }); + getListData({}) + }} items={[ { label: `序号`, @@ -713,8 +720,22 @@ function ParkingAlyOverview() { label:
区域
-
{ message.success('升序'); getListData({ sort: 1 }) }}>▲
-
{ message.success('降序'); getListData({ sort: 2 }) }}>▼
+
{ + message.success('升序'); + setPageInfo({ + ...pageInfo, + ...{ pn: 1 } + }); + getListData({ sort: 1 }) + }}>▲
+
{ + message.success('降序'); + setPageInfo({ + ...pageInfo, + ...{ pn: 1 } + }); + getListData({ sort: 2 }) + }}>▼
, key: '1', @@ -735,8 +756,22 @@ function ParkingAlyOverview() { label:
停车场
-
{ message.success('升序'); getListData({ sort: 1 }) }}>▲
-
{ message.success('降序'); getListData({ sort: 2 }) }}>▼
+
{ + message.success('升序'); + setPageInfo({ + ...pageInfo, + ...{ pn: 1 } + }); + getListData({ sort: 1 }) + }}>▲
+
{ + message.success('降序'); + setPageInfo({ + ...pageInfo, + ...{ pn: 1 } + }); + getListData({ sort: 2 }) + }}>▼
, key: '2', diff --git a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyPeriod/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyPeriod/loadable.jsx index 25d1ad6..ca403a2 100644 --- a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyPeriod/loadable.jsx +++ b/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) }; diff --git a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/TemporaryParkStat/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/TemporaryParkStat/loadable.jsx index 40d7623..3bfb95a 100644 --- a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/TemporaryParkStat/loadable.jsx +++ b/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) diff --git a/src/services/DataAnalysisPrediction/ParkingBusinessAly/index.js b/src/services/DataAnalysisPrediction/ParkingBusinessAly/index.js index 679bc3a..499f99a 100644 --- a/src/services/DataAnalysisPrediction/ParkingBusinessAly/index.js +++ b/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, }