Browse Source
Merge branch 'develop' of http://120.27.195.166:3000/chenglb/PMS_Frontend_v1.0.0.git into develop
Merge branch 'develop' of http://120.27.195.166:3000/chenglb/PMS_Frontend_v1.0.0.git into develop
# Conflicts: # src/pages/DataAnalysisPrediction/ParkingOverview/loadable.jsxtags/PMS_Frontend_v1.0.6-develop
38 changed files with 1363 additions and 493 deletions
-
2src/components/DataSelect/index.jsx
-
117src/components/MapComponets/ParkingViewMarkers/index.jsx
-
39src/components/MapComponets/ParkingViewMarkers/index.scss
-
38src/components/TableModule/index.jsx
-
1src/pages/DataAnalysisPrediction/MemberStat/ParkingAly/loadable.jsx
-
2src/pages/DataAnalysisPrediction/MemberStat/PayAly/loadable.jsx
-
1src/pages/DataAnalysisPrediction/MemberStat/RegisterAly/loadable.jsx
-
8src/pages/DataAnalysisPrediction/ParkingBusinessAly/CarTypeAly/loadable.jsx
-
2src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/loadable.jsx
-
3src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkBerthAly/index.scss
-
9src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkBerthAly/loadable.jsx
-
2src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkTurnoverAly/loadable.jsx
-
2src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkUsageAly/loadable.jsx
-
2src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyDuration/loadable.jsx
-
3src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyOverview/loadable.jsx
-
244src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyPeriod/loadable.jsx
-
381src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyReport/index.scss
-
172src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyReport/loadable copy.jsx
-
522src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyReport/loadable.jsx
-
4src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingLiveData/loadable.jsx
-
2src/pages/DataAnalysisPrediction/ParkingBusinessAly/TemporaryParkStat/loadable.jsx
-
4src/pages/DataAnalysisPrediction/ParkingBusinessAly/echarts.config.js
-
2src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageRecoverAly/loadable.jsx
-
2src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityArrearageAly/loadable.jsx
-
2src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeAly/loadable.jsx
-
2src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeStat/loadable.jsx
-
2src/pages/DataAnalysisPrediction/ParkingIncomeAly/OrderArrearageAly/loadable.jsx
-
2src/pages/DataAnalysisPrediction/ParkingIncomeAly/PriceAly/loadable.jsx
-
20src/pages/DataAnalysisPrediction/ParkingOverview/Map.jsx
-
77src/pages/DataAnalysisPrediction/ParkingOverview/loadable.jsx
-
14src/pages/OperationCenter/CarMgm/CarInfo/loadable.jsx
-
50src/pages/OperationCenter/CustomerServieMgm/CallbackSuggestion/index.scss
-
84src/pages/OperationCenter/CustomerServieMgm/CallbackSuggestion/loadable.jsx
-
5src/pages/OperationCenter/UserMgm/UserInfo/index.scss
-
13src/pages/OperationCenter/UserMgm/UserInfo/loadable.jsx
-
10src/services/DataAnalysisPrediction/ParkingBusinessAly/index.js
-
9src/services/OperationCenter/CustomerManage/index.js
-
2src/services/ParkingOverview/index.js
@ -1,5 +1,386 @@ |
|||||
@import "@/assets/css/mixin.scss"; |
@import "@/assets/css/mixin.scss"; |
||||
|
|
||||
$color-container-bg : var(--color-container-bg); |
$color-container-bg : var(--color-container-bg); |
||||
$color-user-list-bg : var(--color-user-list-bg); |
$color-user-list-bg : var(--color-user-list-bg); |
||||
$color-text : var(--color-text); |
$color-text : var(--color-text); |
||||
$color-primary : var(--color-primary); |
$color-primary : var(--color-primary); |
||||
|
|
||||
|
.edit-order-inquiry { |
||||
|
display: flex; |
||||
|
padding-top: 10px; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
overflow-y: auto; |
||||
|
@include scrollBar(var(--color-user-list-bg), #3B97FF); |
||||
|
|
||||
|
.paid-search { |
||||
|
display: block; |
||||
|
width: 375px; |
||||
|
padding: 10px 10px 20px 20px; |
||||
|
|
||||
|
.title { |
||||
|
width: 100%; |
||||
|
font-size: 16px; |
||||
|
font-family: Microsoft YaHei, Microsoft YaHei-Bold; |
||||
|
font-weight: 700; |
||||
|
text-align: left; |
||||
|
color: var(--color-text); |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.form-Wrap { |
||||
|
height: calc(100% - 45px); |
||||
|
overflow-y: auto; |
||||
|
scrollbar-width: none; |
||||
|
-ms-overflow-style: none; |
||||
|
|
||||
|
&::-webkit-scrollbar { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-select-selector, |
||||
|
.ant-picker, |
||||
|
.ant-input { |
||||
|
background-color: var(--color-search-list-item-bg) !important; |
||||
|
box-shadow: none !important; |
||||
|
color: var(--color-search-list-item-value); |
||||
|
border-color: var(--color-search-list-item-bd) !important; |
||||
|
} |
||||
|
|
||||
|
.yisa-search { |
||||
|
width: 100%; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
margin-bottom: 24px; |
||||
|
|
||||
|
label { |
||||
|
color: var(--color-search-list-item-text); |
||||
|
flex: 0 0 27%; |
||||
|
max-width: 27%; |
||||
|
text-align: right; |
||||
|
padding-right: 8px; |
||||
|
|
||||
|
.daf { |
||||
|
display: inline-block; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.form-con { |
||||
|
flex: 1; |
||||
|
width: 220px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.form-btn { |
||||
|
display: flex; |
||||
|
flex-flow: row nowrap; |
||||
|
justify-content: space-between; |
||||
|
margin: 40px 0px 0px; |
||||
|
padding: 0 3px; |
||||
|
|
||||
|
.ant-btn+.ant-btn { |
||||
|
margin-left: 10px; |
||||
|
} |
||||
|
|
||||
|
.ant-btn span { |
||||
|
font-size: 16px; |
||||
|
font-family: Microsoft YaHei, Microsoft YaHei-Regular; |
||||
|
font-weight: 400; |
||||
|
text-align: center; |
||||
|
color: #ffffff; |
||||
|
} |
||||
|
|
||||
|
.reset { |
||||
|
width: 90px; |
||||
|
height: 36px; |
||||
|
background: var(--button-default-bg); |
||||
|
} |
||||
|
|
||||
|
.submit { |
||||
|
width: calc(100% - 100px); |
||||
|
height: 36px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-btn+.ant-btn { |
||||
|
margin-left: 10px; |
||||
|
} |
||||
|
|
||||
|
.green { |
||||
|
background-color: #67c23a; |
||||
|
border-color: #67c23a; |
||||
|
} |
||||
|
|
||||
|
.soll-result { |
||||
|
overflow: auto; |
||||
|
|
||||
|
.result { |
||||
|
display: block !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.paid-result { |
||||
|
width: calc(100% - 375px); |
||||
|
padding-bottom: 15px; |
||||
|
padding: 20px; |
||||
|
background: var(--color-user-list-bg); |
||||
|
border-top-left-radius: 20px; |
||||
|
box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.08); |
||||
|
|
||||
|
.result-hd-overview { |
||||
|
color: #ffffff; |
||||
|
//background: #3e4557; |
||||
|
border-radius: 4px; |
||||
|
margin-bottom: 20px; |
||||
|
display: flex; |
||||
|
|
||||
|
.result-header { |
||||
|
height: 108px; |
||||
|
width: 33%; |
||||
|
margin: 0 10px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
|
||||
|
.result-content { |
||||
|
margin: auto; |
||||
|
|
||||
|
.title { |
||||
|
height: 19px; |
||||
|
font-size: 14px; |
||||
|
font-family: Microsoft YaHei, Microsoft YaHei-Regular; |
||||
|
font-weight: 400; |
||||
|
text-align: center; |
||||
|
color: #DBE5FF; |
||||
|
display: inline-block; |
||||
|
} |
||||
|
|
||||
|
i { |
||||
|
border: 1px solid; |
||||
|
border-radius: 22px; |
||||
|
display: inline-block; |
||||
|
text-align: center; |
||||
|
font-size: 10px; |
||||
|
width: 15px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.num { |
||||
|
height: 27px; |
||||
|
font-size: 20px; |
||||
|
font-family: Alibaba PuHuiTi, Alibaba PuHuiTi-Bold; |
||||
|
font-weight: 700; |
||||
|
text-align: left; |
||||
|
color: #ffffff; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.rea { |
||||
|
background: url("../../../../assets/images/red.png"); |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
|
||||
|
.reb { |
||||
|
background: url("../../../../assets/images/blue.png"); |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
|
||||
|
.rec { |
||||
|
background: url("../../../../assets/images/green.png"); |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
|
||||
|
.red { |
||||
|
background: url("../../../../assets/images/yellow.png"); |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.result { |
||||
|
@include flex-columns; |
||||
|
|
||||
|
.result-box { |
||||
|
color: #ffffff; |
||||
|
background: #3e4557; |
||||
|
border-radius: 4px; |
||||
|
margin-bottom: 20px; |
||||
|
|
||||
|
.result-box-title { |
||||
|
height: 21px; |
||||
|
font-size: 16px; |
||||
|
font-family: Microsoft YaHei, Microsoft YaHei-Bold; |
||||
|
font-weight: 700; |
||||
|
text-align: left; |
||||
|
margin: 18px 0 18px 18px; |
||||
|
display: inline-block; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
i { |
||||
|
border: 1px solid; |
||||
|
border-radius: 22px; |
||||
|
display: inline-block; |
||||
|
text-align: center; |
||||
|
font-size: 12px; |
||||
|
width: 22px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.ant-table .ant-table-thead tr th { |
||||
|
background: #3e4557; |
||||
|
} |
||||
|
} |
||||
|
.result-title { |
||||
|
display: inline-block; |
||||
|
p { |
||||
|
display: inline; |
||||
|
margin: 0 5px; |
||||
|
color: #3aa9ff; |
||||
|
font-size: 18px; |
||||
|
} |
||||
|
} |
||||
|
.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-bottom: 10px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.row-head { |
||||
|
height: 32px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
margin-bottom: 13px; |
||||
|
|
||||
|
.number-wrapper { |
||||
|
display: inline-flex; |
||||
|
align-items: center; |
||||
|
font-size: 14px; |
||||
|
|
||||
|
.letter { |
||||
|
color: var(--color-text); |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
.total-number { |
||||
|
color: var(--color-primary); |
||||
|
font-weight: bold; |
||||
|
margin: 0 4px; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.cc-result-flow { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 34px - 13px); |
||||
|
|
||||
|
.yisa-table { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 32px - 15px); |
||||
|
overflow-y: auto !important; |
||||
|
@include scrollBar(var(--color-user-list-bg), #3B97FF); |
||||
|
|
||||
|
.ant-table-thead { |
||||
|
th { |
||||
|
background: #616b83 !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-table-tbody { |
||||
|
td { |
||||
|
background: #3E4557 !important; |
||||
|
border-bottom-color: var(--color-table-border-bottom-color); |
||||
|
} |
||||
|
|
||||
|
tr:nth-child(even) { |
||||
|
td { |
||||
|
background: #3E4557 !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.modal-pay-configuration { |
||||
|
|
||||
|
.submitBtn { |
||||
|
text-align: center; |
||||
|
margin: 20px 0 0; |
||||
|
|
||||
|
.ant-btn { |
||||
|
width: 80px; |
||||
|
height: 35px; |
||||
|
border: none; |
||||
|
border-radius: 4px; |
||||
|
|
||||
|
span { |
||||
|
color: #ffffff; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.submit { |
||||
|
background: #409eff; |
||||
|
} |
||||
|
|
||||
|
.cancel { |
||||
|
background: var(--button-default-bg); |
||||
|
margin-left: 20px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.tab-title { |
||||
|
display: flex; |
||||
|
|
||||
|
.title { |
||||
|
height: 30px; |
||||
|
line-height: 30px; |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
|
||||
|
.btn { |
||||
|
font-size: 10px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.edit-order-inquiry { |
||||
|
/*定义滚动条高宽及背景 |
||||
|
高宽分别对应横竖滚动条的尺寸*/ |
||||
|
::-webkit-scrollbar { |
||||
|
width: 6px; |
||||
|
height: 16px; |
||||
|
background-color: #5c5c5c; |
||||
|
} |
||||
|
|
||||
|
/*定义滚动条轨道 |
||||
|
内阴影+圆角*/ |
||||
|
::-webkit-scrollbar-track { |
||||
|
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); |
||||
|
border-radius: 10px; |
||||
|
background-color: #9da2ab; |
||||
|
} |
||||
|
|
||||
|
/*定义滑块 |
||||
|
内阴影+圆角*/ |
||||
|
::-webkit-scrollbar-thumb { |
||||
|
border-radius: 10px; |
||||
|
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); |
||||
|
background-color: #3b97ff; |
||||
|
} |
||||
|
} |
@ -0,0 +1,172 @@ |
|||||
|
import React, { useState, useRef, useEffect } from "react"; |
||||
|
import { |
||||
|
message, |
||||
|
Pagination, |
||||
|
Table, |
||||
|
Input, |
||||
|
Space, |
||||
|
Modal, |
||||
|
Button, |
||||
|
Select, |
||||
|
Tabs, |
||||
|
Descriptions, |
||||
|
Timeline |
||||
|
} from "antd"; |
||||
|
import moment from "moment"; |
||||
|
import ajax from '@/services' |
||||
|
import { TableModule } from "@/components"; |
||||
|
import { dictionary } from "@/config/common.js"; |
||||
|
import "./index.scss"; |
||||
|
function ParkingAlyReport() { |
||||
|
const [resultData, setResultData] = useState([]) |
||||
|
const [total, setTotal] = useState(0); |
||||
|
const [searchSelectList, setSearchSelectList] = useState([]); //搜索下拉数据 |
||||
|
const columns = [ |
||||
|
{ |
||||
|
title: "停车场名称", |
||||
|
dataIndex: "road_name", |
||||
|
key: "road_name", |
||||
|
align: "center", |
||||
|
fixed: "right", |
||||
|
}, |
||||
|
{ |
||||
|
title: "泊位总数", |
||||
|
dataIndex: "total_berths", |
||||
|
key: "total_berths", |
||||
|
align: "center", |
||||
|
fixed: "right", |
||||
|
}, |
||||
|
{ |
||||
|
title: "停车记录数(次)", |
||||
|
dataIndex: "record_count", |
||||
|
key: "record_count", |
||||
|
align: "center", |
||||
|
fixed: "right", |
||||
|
}, |
||||
|
{ |
||||
|
title: "订单应收金额(元)", |
||||
|
dataIndex: "receivable_amount", |
||||
|
key: "receivable_amount", |
||||
|
align: "center", |
||||
|
fixed: "right", |
||||
|
}, |
||||
|
{ |
||||
|
title: "日均泊位周转次数(次)", |
||||
|
dataIndex: "average_turn_times", |
||||
|
key: "average_turn_times", |
||||
|
align: "center", |
||||
|
fixed: "right", |
||||
|
}, |
||||
|
{ |
||||
|
title: "平均泊位利用率", |
||||
|
dataIndex: "average_use_rate", |
||||
|
key: "average_use_rate", |
||||
|
align: "center", |
||||
|
fixed: "right", |
||||
|
}, |
||||
|
{ |
||||
|
title: "平均停车时长", |
||||
|
dataIndex: "average_park_time", |
||||
|
key: "average_park_time", |
||||
|
align: "center", |
||||
|
fixed: "right", |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
//检索条件 |
||||
|
const formSearch = [ |
||||
|
{ |
||||
|
name: "area_id", |
||||
|
type: "TreeSelect", |
||||
|
label: "区域", |
||||
|
}, |
||||
|
{ |
||||
|
name: "operator_id", |
||||
|
type: "Select", |
||||
|
label: "运营商", |
||||
|
options: searchSelectList || [], |
||||
|
}, |
||||
|
{ |
||||
|
name: "car_parking_type", |
||||
|
type: "Select", |
||||
|
label: "车场类型", |
||||
|
options: [ |
||||
|
{ |
||||
|
label: '全部', |
||||
|
value: '3', |
||||
|
}, |
||||
|
{ |
||||
|
label: '路内车场', |
||||
|
value: '1', |
||||
|
}, |
||||
|
{ |
||||
|
label: '路外车场', |
||||
|
value: '2', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
name: "road_name", |
||||
|
type: "Input", |
||||
|
label: "停车场", |
||||
|
placeholder: "请输入停车场名称", |
||||
|
}, |
||||
|
{ |
||||
|
name: "timePeriod", |
||||
|
type: "RangePicker", |
||||
|
label: "时间段", |
||||
|
defaultValue: [moment().startOf("day"), moment()], |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
//列表数据 |
||||
|
function search(e) { |
||||
|
ajax.getParkingAlyReportList(e).then((res) => { |
||||
|
let { status, data, total } = res |
||||
|
if (status == 20000) { |
||||
|
if (data.list) { |
||||
|
setResultData(data.list) |
||||
|
setTotal(data.total_records) |
||||
|
} else { |
||||
|
setResultData(data) |
||||
|
setTotal(total) |
||||
|
} |
||||
|
} else { |
||||
|
setResultData([]) |
||||
|
message.error(res.message) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 获取下拉数据 |
||||
|
const getSelectList = () => { |
||||
|
ajax.getOperator().then((e) => { |
||||
|
setSearchSelectList([ |
||||
|
...searchSelectList, |
||||
|
...e.data |
||||
|
]) |
||||
|
}) |
||||
|
}; |
||||
|
|
||||
|
useEffect(() => { |
||||
|
getSelectList(); |
||||
|
}, []); |
||||
|
|
||||
|
return ( |
||||
|
<> |
||||
|
<TableModule |
||||
|
columns={columns} |
||||
|
tableData={resultData} |
||||
|
formSearch={formSearch} |
||||
|
search={search} |
||||
|
total={total} |
||||
|
rowKey={"road_name"} |
||||
|
exportUrl={'/api/ana/dataanalysis/parking_total_analysis_export'} |
||||
|
initFormData={{}} |
||||
|
pageName={'parkingAlyReport'} |
||||
|
/> |
||||
|
</> |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
export default ParkingAlyReport; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue