Browse Source

feat():增加设备运维模块

tags/PMS_Frontend_v1.0.6-develop
guoxin 1 year ago
parent
commit
06d1ba1037
  1. 1521
      demon.json
  2. 23
      src/assets/fonts/font_pda/demo_index.html
  3. 4
      src/pages/InRoadMgm/BusinessMgm/ChargeRules/loadable.jsx
  4. 6
      src/pages/InRoadMgm/EquipmentOpe/berthStatus/index.jsx
  5. 197
      src/pages/InRoadMgm/EquipmentOpe/berthStatus/index.scss
  6. 333
      src/pages/InRoadMgm/EquipmentOpe/berthStatus/loadable.jsx
  7. 6
      src/pages/InRoadMgm/EquipmentOpe/faultReport/index.jsx
  8. 197
      src/pages/InRoadMgm/EquipmentOpe/faultReport/index.scss
  9. 329
      src/pages/InRoadMgm/EquipmentOpe/faultReport/loadable.jsx
  10. 9
      src/pages/InRoadMgm/EquipmentOpe/index.jsx
  11. 6
      src/pages/InRoadMgm/EquipmentOpe/patrolStatistics/index.jsx
  12. 228
      src/pages/InRoadMgm/EquipmentOpe/patrolStatistics/index.scss
  13. 375
      src/pages/InRoadMgm/EquipmentOpe/patrolStatistics/loadable.jsx
  14. 2
      src/pages/InRoadMgm/PersonMgm/Performance/SalesStat/loadable.jsx
  15. 52
      src/pages/InRoadMgm/RecordInquiry/DisabledCarParkRecordTotal/loadable.jsx
  16. 71
      src/pages/InRoadMgm/RecordInquiry/ParkRecordTotal/loadable.jsx
  17. 1
      src/pages/InRoadMgm/RecordInquiry/UnRecordOrder/loadable.jsx
  18. 68
      src/pages/InRoadMgm/RoadMgm/AddRoad/loadable.jsx
  19. 4
      src/pages/InRoadMgm/RoadMgm/ParkList/loadable.jsx
  20. 20
      src/pages/InRoadMgm/RoadMgm/RoadConf/loadable.jsx
  21. 4
      src/pages/InRoadMgm/RoadMgm/RoadDetail/loadable.jsx
  22. 16
      src/pages/InRoadMgm/Stuff/CategroyConf/loadable.jsx
  23. 2
      src/pages/InRoadMgm/index.jsx
  24. 7
      src/pages/OperationCenter/CustomerServieMgm/ErrorCorrection/loadable.jsx
  25. 2
      src/pages/OperationCenter/GeoSignalIgnore/GeoSignalIgnoreAudit/loadable.jsx
  26. 2
      src/pages/OperationCenter/GeoSignalIgnore/GeoSignalIgnoreConf/loadable.jsx
  27. 2
      src/pages/OperationCenter/GeoSignalIgnore/GeoSignalIgnoreInquiry/loadable.jsx
  28. 8
      src/pages/OperationCenter/OtherBusiness/Staggered/StaggeredMgm/loadable.jsx
  29. 18
      src/pages/SystemMgm/BusinessConfig/BusinessConf/loadable.jsx
  30. 41
      src/router/menu-bk.js
  31. 205
      src/router/menu.js
  32. 22
      src/router/router.config.js
  33. 14
      src/services/InroadMgm/RoadMgm/RoadMgm.js
  34. 53
      src/services/search.js

1521
demon.json
File diff suppressed because it is too large
View File

23
src/assets/fonts/font_pda/demo_index.html

@ -313,7 +313,11 @@
<div class="name">设备管理</div>
<div class="code-name">&amp;#xe76c;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe76c;</span>
<div class="name">设备运维</div>
<div class="code-name">&amp;#xe776;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe76d;</span>
<div class="name">全屏</div>
@ -819,7 +823,14 @@
<div class="code-name">.icon-shebeiguanli
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shebeiguanli"></span>
<div class="name">
设备运维
</div>
<div class="code-name">.icon-shebeiguanli
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-quanping"></span>
<div class="name">
@ -1298,7 +1309,13 @@
<div class="name">设备管理</div>
<div class="code-name">#icon-shebeiguanli</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shebeiguanli"></use>
</svg>
<div class="name">设备运维</div>
<div class="code-name">#icon-shebeiyunwei</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-quanping"></use>

4
src/pages/InRoadMgm/BusinessMgm/ChargeRules/loadable.jsx

@ -229,7 +229,7 @@ function ChargeRules(props) {
setBindData(Object.assign({}, bindData, { pn: pn, page_size: length }))
setTableFormData(Object.assign({}, tableFormData, { pn: pn, page_size: length }))
tableFormDataRef.current = Object.assign({}, tableFormData, { pn: pn, page_size: length })
getBindData(Object.assign({}, bindData, { pn: pn, page_size: length ,id: getBindId.id,}))
getBindData(Object.assign({}, bindData, { pn: pn, page_size: length ,id: getBindId.id}))
}
}
//
@ -237,7 +237,7 @@ function ChargeRules(props) {
setBindData(Object.assign({}, bindData, { pn: 1, page_size: length }))
setTableFormData(Object.assign({}, tableFormData, { pn: 1, page_size: length }))
tableFormDataRef.current = Object.assign({}, tableFormData, { pn: 1, page_size: length })
getBindData(Object.assign({}, bindData, { pn: 1, page_size: length }))
getBindData(Object.assign({}, bindData, { pn: 1, page_size: length,id: getBindId.id }))
}
//
const getSearchData = (data = formData) => {

6
src/pages/InRoadMgm/EquipmentOpe/berthStatus/index.jsx

@ -0,0 +1,6 @@
import React from "react"
import loadable from "@loadable/component"
import { LoadingImg } from "@/components"
const BerthStatusLoadable = loadable(() => import("./loadable"))
export default (pros) => <BerthStatusLoadable {...pros} fallback={<LoadingImg />} />

197
src/pages/InRoadMgm/EquipmentOpe/berthStatus/index.scss

@ -0,0 +1,197 @@
@import "@/assets/css/mixin.scss";
$color-container-bg : var(--color-container-bg);
$color-user-list-bg : var(--color-user-list-bg);
$color-text : var(--color-text);
$color-primary : var(--color-primary);
.colorBtn {
width: 90px;
height: 36px;
background: linear-gradient(180deg, #3aa9ff, #59b7ff) !important;
border-radius: 4px;
&:hover {
color: var(--color-text);
border-color: transparent;
// background: var(--button-default-bg-hover);
width: 90px;
height: 36px;
background: linear-gradient(180deg, #3aa9ff, #59b7ff);
border-radius: 4px;
}
}
.colorReset {
width: 90px;
height: 36px;
border-radius: 4px;
border: none;
background: #636d80 !important;
&:hover {
color: var(--color-text);
border-color: transparent;
// background: var(--button-default-bg-hover);
width: 90px;
height: 36px;
background: #636d80;
border: none;
border-radius: 4px;
}
}
.paid-berthStatus{
display: flex;
padding: 15px;
width: 100%;
.paid-search{
.search{
font-size: 16px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-weight: 700;
text-align: left;
color: #eeeff1;
}
label{
margin:0 10px;
}
.yisa-search{
margin-top: 10px;
display: flex;
label{
line-height: 31px;
}
}
.ant-select:not(.ant-select-customize-input) .ant-select-selector{
background-color: #50586c !important;
}
.ant-select-arrow .anticon{
background-color: #50586c !important;
}
.ant-input:placeholder-shown{
background-color: #50586c !important;
}
.timePicker{
width: 350px;
margin-top: 22px;
.btnBox{
display:flex ;
margin-top: 20px;
.yisa-btn{
margin-left: 20px;
width: 130px;
}
.root_gfkk{
margin-left: 20px;
.export-content{
width: 130px;
height: 33px;
display: flex;
align-items: center;
justify-content: center;
background: #3b97ff;
border-radius: 3px;
cursor: pointer;
color: #fff;
margin-right: 10px;
}
}
}
}
}
.paid-result{
width: 100%;
height: 800px;
background: #505a6f;
border-radius: 20px;
margin-left: 17px;
.result{
padding: 25px;
.font{
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
font-weight: 400;
text-align: left;
color: #eeeff1;
margin-bottom: 10px;
display: inline-block;
em{
color: #3aa8fe;
margin: 0 5px;
}
}
.yisa-table .ant-table-thead .ant-table-cell{
background-color: #616b83 !important;
color: #ffffff !important;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-weight: 700;
text-align: center;
border-right: none !important;
border-top-color: #888f9d !important;
border-color: #888f9d !important;
}
.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table, .ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table{
border-top: none !important;
border-left: none !important;
}
.ant-table-tbody .ant-table-row .ant-table-cell{
background-color: #3e4557 !important;
color: #ffffff !important;
text-align: center;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
font-weight: 400;
border-right: none !important;
border-left: none !important;
border-bottom-color: #626b7e !important;
}
}
}
}
.revenue{
.tab-title{
text-align: center;
font-size: 18px;
font-weight: 400;
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
}
width: 700px !important;
.tab-index{
.tab-top{
display: flex;
margin-top: 10px;
height: 30px;
line-height: 30px;
white-space: nowrap;
overflow: hidden;
border-bottom: 1px solid #e4e7ed;
.tab-li{
margin-left: 20px;
cursor: pointer;
}
.active{
color:#409eff ;
cursor: pointer;
margin-left: 20px;
border-bottom: 1px solid #409eff !important;
margin-bottom: -1px !important;
}
}
.tab-bottom{
.yisa-tab{
.ant-table-cell{
background-color: #616b83 !important;
color: #ffffff !important;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-weight: 700;
text-align: center;
border-right: none !important;
border-left: none !important;
border-bottom-color: #868d9d !important;
}
}
}
}
}

333
src/pages/InRoadMgm/EquipmentOpe/berthStatus/loadable.jsx

@ -0,0 +1,333 @@
import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult } from "@/components"
import { Select, Button, Input, Table, message, Pagination } from 'antd'
import {
pageSizeOptions
} from '@/config/character.config.js'
import "./index.scss";
import { SearchOutlined, DeleteOutlined } from '@ant-design/icons';
import ajax from '@/services'
import { useSessionStorageState } from "ahooks"
function berthStatus(props) {
const [ajaxLoading, setAjaxLoading] = useState(false)
const [resultData, setResultData] = useState({
data: [],
total_records: 0,
export_url: '',
process_url: ""
})
const parameter = {
berth_code: '',
road_name: '',
operate_name: '0',
berth_type_name: '0',
service_type_name: '0',
park_name: '',
status:'1',
pn: 1,
page_size: Number(pageSizeOptions[0]), //
}
const [formData, setFormData] = useState(parameter)
const lastFormDataRef = useRef(formData)
const [lastFormData, setLastFormData] = useState(formData)
//
const handleRoadName = (v) => {
setFormData({ ...formData, road_name: v.target.value })
}
//
const handleBerthCode = (v) => {
setFormData({ ...formData, model_id: v.target.value })
}
//
const handleBerthTypeName = (v) => {
setFormData({ ...formData, berth_type_name: v })
}
//
const handleDeployType = (value) => {
setFormData({ ...formData, operate_name: value })
}
//
const handleParkname = (v) => {
setFormData({ ...formData, park_name: v.target.value })
}
//
const handleServiceTypeName=(v)=>{
setFormData({ ...formData, service_type_name: v})
}
//
const handleStatus=(v)=>{
setFormData({ ...formData, status: v})
}
//
const handleColumns = (tab) => {
let result = [...deployListColumns];
switch (tab) {
case '1':
result.splice(5, 1)
break;
}
return result;
}
//
const getResetData = () => {
setFormData({
...parameter
})
getData({ ...parameter })
}
//
const deployListColumns = [
{
title: '序号',
render: (text, record, index) => index + 1,
},
{
title: '商户名称',
dataIndex: 'operator_name',
key: 'operator_name',
},
{
title: '所属路段',
dataIndex: 'road_name',
key: 'road_name',
},
{
title: '停车场名称',
dataIndex: 'park_name',
key: 'park_name',
},
{
title: '泊位类型',
dataIndex: 'berth_type_name',
key: 'berth_type_name',
},
{
title: '泊位号',
dataIndex: 'berth_code',
key: 'berth_code',
},
{
title: '服务属性',
dataIndex: 'service_type_name',
key: 'service_type_name',
},
{
title: '运营状态',
dataIndex: 'status_name',
key: 'status_name',
},
{
title: '更新时间',
dataIndex: 'update_time',
key: 'update_time',
}]
//
const getData = (data = formData) => {
setAjaxLoading(true)
ajax.getBerthList(data).then(res => {
setAjaxLoading(false)
if (res.status === 20000) {
let resDataArr = res.data.list.map((item) => {
item.key = item.id
return item
})
setResultData({
...resultData,
data: resDataArr,
total_records: res.data.total_records
})
} else {
setResultData({
data: [],
total_records: 0,
export_url: '',
process_url: ""
})
message.error(res.message)
}
}, err => {
console.log(err)
})
}
//
const changePn = (pn, length) => {
if (formData.page_size === length) {
setFormData(Object.assign({}, formData, { pn: pn, page_size: length }))
setLastFormData(Object.assign({}, lastFormData, { pn: pn, page_size: length }))
lastFormDataRef.current = Object.assign({}, lastFormData, { pn: pn, page_size: length })
getData(Object.assign({}, formData, { pn: pn, page_size: length }))
}
}
//
const changeLength = (pn, length) => {
setFormData(Object.assign({}, formData, { pn: 1, page_size: length }))
setLastFormData(Object.assign({}, lastFormData, { pn: 1, page_size: length }))
lastFormDataRef.current = Object.assign({}, lastFormData, { pn: pn, page_size: length })
getData(Object.assign({}, formData, { pn: 1, page_size: length }))
}
//
const getSearchData = (data = formData) => {
getData(data)
}
const [getMerchantDataName, setGetMerchantDataName] = useState([])
const merchantDataName = () => {
ajax.getOperator().then(res => {
setGetMerchantDataName(res.data)
})
}
const [sessionTabList, setSessionTabList] = useSessionStorageState('berthStatus', {
value: {
}
})
useEffect(() => {
console.log(location)
if (sessionTabList && Object.values(sessionTabList).length > 0) {
setFormData({
berth_code: sessionTabList?.berth_code,
road_name: sessionTabList?.road_name,
operate_name: sessionTabList?.operate_name,
berth_type_name: sessionTabList?.berth_type_name,
service_type_name: sessionTabList?.service_type_name,
park_name: sessionTabList?.park_name,
status: sessionTabList?.status,
pn: sessionTabList?.pn,
page_size: sessionTabList?.page_size,
})
}
}, [])
console.log(formData);
useEffect(() => {
setSessionTabList({
...formData
})
}, [formData])
useEffect(() => {
getData()
merchantDataName()
}, [])
return <>
<div className="paid-berthStatus">
<div className="paid-search">
<label className="search">查询条件</label>
<div className="yisa-search">
<label>泊位编号</label>
<Input
style={{ width: 240,marginLeft:14 }}
value={formData.berth_code}
placeholder="请输入泊位编号"
onChange={handleBerthCode}
/>
</div>
<div className="yisa-search">
<label>泊位类型</label>
<Select
style={{ width: 240,marginLeft:14 }}
// allowClear
value={formData.berth_type_name}
options={sysConfig.berth_list}
onChange={handleBerthTypeName}
/>
</div>
<div className="yisa-search">
<label>商户名称</label>
<Select
style={{ width: 240,marginLeft:14 }}
// allowClear
value={formData.operate_name}
options={getMerchantDataName}
onChange={handleDeployType}
/>
</div>
<div className="yisa-search">
<label>所属路段</label>
<Input
style={{ width: 240,marginLeft:14 }}
value={formData.road_name}
placeholder="请输入所属路段"
onChange={handleRoadName}
/>
</div>
<div className="yisa-search">
<label>停车场名称</label>
<Input
style={{ width: 240}}
value={formData.park_name}
placeholder="请输入停车场名称"
onChange={handleParkname}
/>
</div>
<div className="yisa-search">
<label>服务属性</label>
<Select
style={{ width: 240,marginLeft:14 }}
// allowClear
value={formData.service_type_name}
options={sysConfig.service_list}
onChange={handleServiceTypeName}
/>
</div>
<div className="yisa-search">
<label>运营状态</label>
<Select
style={{ width: 240 ,marginLeft:14 }}
// allowClear
value={formData.status}
options={sysConfig.opertion_list}
onChange={handleStatus}
/>
</div>
<div className="timePicker ">
<div className="btnBox">
<Button type="primary" className="yisa-btn colorBtn" icon={<SearchOutlined />} onClick={() => { getSearchData() }}>
搜索
</Button>
<Button type="primary" className="yisa-btn colorReset" icon={<DeleteOutlined />} onClick={() => { getResetData() }}>
清空
</Button>
</div>
</div>
</div>
<div className="paid-result">
<div className="result">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table
bordered
// className='yisa-table'
dataSource={resultData.data}
columns={
handleColumns()
}
pagination={false}
loading={ajaxLoading}
/>
<Pagination
className="pagination-common"
showSizeChanger
showQuickJumper
showTotal={() => `${resultData.total_records}`}
total={resultData.total_records}
current={lastFormData.pn}
pageSize={lastFormData.page_size}
pageSizeOptions={pageSizeOptions}
onChange={changePn}
onShowSizeChange={changeLength}
/>
</ResultFlowResult>
</div>
</div>
</div>
</>
}
export default berthStatus;

6
src/pages/InRoadMgm/EquipmentOpe/faultReport/index.jsx

@ -0,0 +1,6 @@
import React from "react"
import loadable from "@loadable/component"
import { LoadingImg } from "@/components"
const FaultReportLoadable = loadable(() => import("./loadable"))
export default (pros) => <FaultReportLoadable {...pros} fallback={<LoadingImg />} />

197
src/pages/InRoadMgm/EquipmentOpe/faultReport/index.scss

@ -0,0 +1,197 @@
@import "@/assets/css/mixin.scss";
$color-container-bg : var(--color-container-bg);
$color-user-list-bg : var(--color-user-list-bg);
$color-text : var(--color-text);
$color-primary : var(--color-primary);
.colorBtn {
width: 90px;
height: 36px;
background: linear-gradient(180deg, #3aa9ff, #59b7ff) !important;
border-radius: 4px;
&:hover {
color: var(--color-text);
border-color: transparent;
// background: var(--button-default-bg-hover);
width: 90px;
height: 36px;
background: linear-gradient(180deg, #3aa9ff, #59b7ff);
border-radius: 4px;
}
}
.colorReset {
width: 90px;
height: 36px;
border-radius: 4px;
border: none;
background: #636d80 !important;
&:hover {
color: var(--color-text);
border-color: transparent;
// background: var(--button-default-bg-hover);
width: 90px;
height: 36px;
background: #636d80;
border: none;
border-radius: 4px;
}
}
.paid-faultReport{
display: flex;
padding: 15px;
width: 100%;
.paid-search{
.search{
font-size: 16px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-weight: 700;
text-align: left;
color: #eeeff1;
}
label{
margin:0 10px;
}
.yisa-search{
margin-top: 10px;
display: flex;
label{
line-height: 31px;
}
}
.ant-select:not(.ant-select-customize-input) .ant-select-selector{
background-color: #50586c !important;
}
.ant-select-arrow .anticon{
background-color: #50586c !important;
}
.ant-input:placeholder-shown{
background-color: #50586c !important;
}
.timePicker{
width: 350px;
margin-top: 22px;
.btnBox{
display:flex ;
margin-top: 20px;
.yisa-btn{
margin-left: 20px;
width: 130px;
}
.root_gfkk{
margin-left: 20px;
.export-content{
width: 130px;
height: 33px;
display: flex;
align-items: center;
justify-content: center;
background: #3b97ff;
border-radius: 3px;
cursor: pointer;
color: #fff;
margin-right: 10px;
}
}
}
}
}
.paid-result{
width: 100%;
height: 800px;
background: #505a6f;
border-radius: 20px;
margin-left: 17px;
.result{
padding: 25px;
.font{
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
font-weight: 400;
text-align: left;
color: #eeeff1;
margin-bottom: 10px;
display: inline-block;
em{
color: #3aa8fe;
margin: 0 5px;
}
}
.yisa-table .ant-table-thead .ant-table-cell{
background-color: #616b83 !important;
color: #ffffff !important;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-weight: 700;
text-align: center;
border-right: none !important;
border-top-color: #888f9d !important;
border-color: #888f9d !important;
}
.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table, .ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table{
border-top: none !important;
border-left: none !important;
}
.ant-table-tbody .ant-table-row .ant-table-cell{
background-color: #3e4557 !important;
color: #ffffff !important;
text-align: center;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
font-weight: 400;
border-right: none !important;
border-left: none !important;
border-bottom-color: #626b7e !important;
}
}
}
}
.revenue{
.tab-title{
text-align: center;
font-size: 18px;
font-weight: 400;
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
}
width: 700px !important;
.tab-index{
.tab-top{
display: flex;
margin-top: 10px;
height: 30px;
line-height: 30px;
white-space: nowrap;
overflow: hidden;
border-bottom: 1px solid #e4e7ed;
.tab-li{
margin-left: 20px;
cursor: pointer;
}
.active{
color:#409eff ;
cursor: pointer;
margin-left: 20px;
border-bottom: 1px solid #409eff !important;
margin-bottom: -1px !important;
}
}
.tab-bottom{
.yisa-tab{
.ant-table-cell{
background-color: #616b83 !important;
color: #ffffff !important;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-weight: 700;
text-align: center;
border-right: none !important;
border-left: none !important;
border-bottom-color: #868d9d !important;
}
}
}
}
}

329
src/pages/InRoadMgm/EquipmentOpe/faultReport/loadable.jsx

@ -0,0 +1,329 @@
import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult, FormSliderPicker } from "@/components"
import { Select, Button, Input, Table, message, Pagination } from 'antd'
import {
pageSizeOptions
} from '@/config/character.config.js'
import "./index.scss";
import moment from "moment";
import { SearchOutlined, DeleteOutlined } from '@ant-design/icons';
import ajax from '@/services'
import { useSessionStorageState } from "ahooks"
const { TextArea } = Input;
function faultReport(props) {
const [ajaxLoading, setAjaxLoading] = useState(false)
const [resultData, setResultData] = useState({
data: [],
total_records: 0,
export_url: '',
process_url: ""
})
const parameter = {
road_name: '',
reason: '',
name: '',
operate_name: '0',
park_name: '',
start: moment().format('YYYY-MM-DD 00:00:00'),
end: moment().format("YYYY-MM-DD 23:59:59"),
pn: 1,
page_size: Number(pageSizeOptions[0]), //
}
const [formData, setFormData] = useState(parameter)
const lastFormDataRef = useRef(formData)
const [lastFormData, setLastFormData] = useState(formData)
//
const handleRoadName = (v) => {
setFormData({ ...formData, road_name: v.target.value })
}
//
const handleName = (v) => {
setFormData({ ...formData, name: v.target.value })
}
//
const handleReason = (v) => {
setFormData({ ...formData, reason: v.target.value })
}
//
const handleDeployType = (value) => {
setFormData({ ...formData, operate_name: value })
}
//
const handleParkname = (v) => {
setFormData({ ...formData, park_name: v.target.value })
}
const onHandleDateChange = (v) => {
setFormData({
...formData,
start: v.startDateTime,
end: v.endDateTime
})
}
//
const getExportData = () => {
let data = {
...formData
}
ajax.getFaultReportExport(data).then(res => {
window.open(res.export_url)
})
}
//
const handleColumns = (tab) => {
let result = [...deployListColumns];
switch (tab) {
case '1':
result.splice(5, 1)
break;
}
return result;
}
//
const getResetData = () => {
setFormData({
...parameter
})
getData({ ...parameter })
}
//
const deployListColumns = [
{
title: '序号',
render: (text, record, index) => index + 1,
},
{
title: '商户名称',
dataIndex: 'operator_name',
key: 'operator_name',
},
{
title: '所属路段',
dataIndex: 'road_name',
key: 'road_name',
},
{
title: '停车场名称',
dataIndex: 'park_name',
key: 'park_name',
},
{
title: '设备类型',
dataIndex: 'fault_type_name',
key: 'fault_type_name',
},
{
title: '上报人',
dataIndex: 'name',
key: 'name',
},
{
title: '故障原因',
dataIndex: 'reason',
key: 'reason',
},
{
title: '上报时间',
dataIndex: 'create_time',
key: 'create_time',
}]
//
const getData = (data = formData) => {
setAjaxLoading(true)
ajax.getShowFaultReport(data).then(res => {
setAjaxLoading(false)
if (res.status === 20000) {
let resDataArr = res.data.list.map((item) => {
item.key = item.id
return item
})
setResultData({
...resultData,
data: resDataArr,
total_records: res.data.total_records
})
} else {
setResultData({
data: [],
total_records: 0,
export_url: '',
process_url: ""
})
message.error(res.message)
}
}, err => {
console.log(err)
})
}
//
const changePn = (pn, length) => {
if (formData.page_size === length) {
setFormData(Object.assign({}, formData, { pn: pn, page_size: length }))
setLastFormData(Object.assign({}, lastFormData, { pn: pn, page_size: length }))
lastFormDataRef.current = Object.assign({}, lastFormData, { pn: pn, page_size: length })
getData(Object.assign({}, formData, { pn: pn, page_size: length }))
}
}
//
const changeLength = (pn, length) => {
setFormData(Object.assign({}, formData, { pn: 1, page_size: length }))
setLastFormData(Object.assign({}, lastFormData, { pn: 1, page_size: length }))
lastFormDataRef.current = Object.assign({}, lastFormData, { pn: pn, page_size: length })
getData(Object.assign({}, formData, { pn: 1, page_size: length }))
}
//
const getSearchData = (data = formData) => {
getData(data)
}
const [getMerchantDataName, setGetMerchantDataName] = useState([])
const merchantDataName = () => {
ajax.getOperator().then(res => {
setGetMerchantDataName(res.data)
})
}
const [sessionTabList, setSessionTabList] = useSessionStorageState('faultReport', {
value: {
}
})
useEffect(() => {
console.log(location)
if (sessionTabList && Object.values(sessionTabList).length > 0) {
setFormData({
road_name: sessionTabList?.road_name,
operate_name: sessionTabList?.operate_name,
park_name: sessionTabList?.park_name,
reason: sessionTabList?.reason,
name: sessionTabList?.name,
pn: sessionTabList?.pn,
page_size: sessionTabList?.page_size,
})
}
}, [])
console.log(formData);
useEffect(() => {
setSessionTabList({
...formData
})
}, [formData])
useEffect(() => {
getData()
merchantDataName()
}, [])
return <>
<div className="paid-faultReport">
<div className="paid-search">
<label className="search">查询条件</label>
<div className="yisa-search">
<label>上报人</label>
<Input
style={{ width: 240, marginLeft: 29 }}
value={formData.name}
placeholder="请输入上报人"
onChange={handleName}
/>
</div>
<div className="yisa-search">
<label>商户名称</label>
<Select
style={{ width: 240, marginLeft: 14 }}
// allowClear
value={formData.operate_name}
options={getMerchantDataName}
onChange={handleDeployType}
/>
</div>
<div className="yisa-search">
<label>所属路段</label>
<Input
style={{ width: 240, marginLeft: 14 }}
value={formData.road_name}
placeholder="请输入所属路段"
onChange={handleRoadName}
/>
</div>
<div className="yisa-search">
<label>停车场名称</label>
<Input
style={{ width: 240 }}
value={formData.park_name}
placeholder="请输入停车场名称"
onChange={handleParkname}
/>
</div>
<div className="yisa-search">
<label>故障原因</label>
<TextArea
style={{ width: 240, marginLeft: 14 }}
value={formData.reason}
placeholder="请输入故障原因"
onChange={handleReason}
maxLength={10}
/>
</div>
<div className="timePicker ">
<FormSliderPicker
yisaLabel='上报时间'
defaultStartDateTime={moment(formData.start)}
defaultEndDateTime={moment(formData.end)}
yisaOnChange={onHandleDateChange}
limit={730}
dropdownData={[
{ text: "昨天", value: 1 },
{ text: "近30天", value: 30 },
{ text: "近90天", value: 90 },
{ text: "近180天", value: 180 },
]}
/>
<div className="btnBox">
<Button type="primary" className="yisa-btn colorBtn" icon={<SearchOutlined />} onClick={() => { getSearchData() }}>
搜索
</Button>
<Button type="primary" className="yisa-btn colorReset" icon={<DeleteOutlined />} onClick={() => { getResetData() }}>
清空
</Button>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { getExportData() }}>
导出
</Button>
</div>
</div>
</div>
<div className="paid-result">
<div className="result">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table
bordered
// className='yisa-table'
dataSource={resultData.data}
columns={
handleColumns()
}
pagination={false}
loading={ajaxLoading}
/>
<Pagination
className="pagination-common"
showSizeChanger
showQuickJumper
showTotal={() => `${resultData.total_records}`}
total={resultData.total_records}
current={lastFormData.pn}
pageSize={lastFormData.page_size}
pageSizeOptions={pageSizeOptions}
onChange={changePn}
onShowSizeChange={changeLength}
/>
</ResultFlowResult>
</div>
</div>
</div>
</>
}
export default faultReport;

9
src/pages/InRoadMgm/EquipmentOpe/index.jsx

@ -0,0 +1,9 @@
import berthStatus from "./berthStatus"
import faultReport from "./faultReport"
import patrolStatistics from "./patrolStatistics"
export default {
berthStatus,
faultReport,
patrolStatistics
}

6
src/pages/InRoadMgm/EquipmentOpe/patrolStatistics/index.jsx

@ -0,0 +1,6 @@
import React from "react"
import loadable from "@loadable/component"
import { LoadingImg } from "@/components"
const PatrolStatisticsLoadable = loadable(() => import("./loadable"))
export default (pros) => <PatrolStatisticsLoadable {...pros} fallback={<LoadingImg />} />

228
src/pages/InRoadMgm/EquipmentOpe/patrolStatistics/index.scss

@ -0,0 +1,228 @@
@import "@/assets/css/mixin.scss";
$color-container-bg : var(--color-container-bg);
$color-user-list-bg : var(--color-user-list-bg);
$color-text : var(--color-text);
$color-primary : var(--color-primary);
.colorBtn {
width: 90px;
height: 36px;
background: linear-gradient(180deg, #3aa9ff, #59b7ff) !important;
border-radius: 4px;
&:hover {
color: var(--color-text);
border-color: transparent;
// background: var(--button-default-bg-hover);
width: 90px;
height: 36px;
background: linear-gradient(180deg, #3aa9ff, #59b7ff);
border-radius: 4px;
}
}
.colorReset {
width: 90px;
height: 36px;
border-radius: 4px;
border: none;
background: #636d80 !important;
&:hover {
color: var(--color-text);
border-color: transparent;
// background: var(--button-default-bg-hover);
width: 90px;
height: 36px;
background: #636d80;
border: none;
border-radius: 4px;
}
}
.paid-patrolStatistics{
display: flex;
padding: 15px;
width: 100%;
.paid-search{
.search{
font-size: 16px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-weight: 700;
text-align: left;
color: #eeeff1;
}
label{
margin:0 10px;
}
.yisa-search{
margin-top: 10px;
display: flex;
label{
line-height: 31px;
}
}
.ant-select:not(.ant-select-customize-input) .ant-select-selector{
background-color: #50586c !important;
}
.ant-select-arrow .anticon{
background-color: #50586c !important;
}
.ant-input:placeholder-shown{
background-color: #50586c !important;
}
.timePicker{
width: 350px;
margin-top: 22px;
.btnBox{
display:flex ;
margin-top: 20px;
.yisa-btn{
margin-left: 20px;
width: 130px;
}
.root_gfkk{
margin-left: 20px;
.export-content{
width: 130px;
height: 33px;
display: flex;
align-items: center;
justify-content: center;
background: #3b97ff;
border-radius: 3px;
cursor: pointer;
color: #fff;
margin-right: 10px;
}
}
}
}
}
.paid-result{
width: 100%;
height: 800px;
background: #505a6f;
border-radius: 20px;
margin-left: 17px;
.result{
padding: 25px;
.font{
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
font-weight: 400;
text-align: left;
color: #eeeff1;
margin-bottom: 10px;
display: inline-block;
em{
color: #3aa8fe;
margin: 0 5px;
}
}
.yisa-table .ant-table-thead .ant-table-cell{
background-color: #616b83 !important;
color: #ffffff !important;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-weight: 700;
text-align: center;
border-right: none !important;
border-top-color: #888f9d !important;
border-color: #888f9d !important;
}
.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table, .ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table{
border-top: none !important;
border-left: none !important;
}
.ant-table-tbody .ant-table-row .ant-table-cell{
background-color: #3e4557 !important;
color: #ffffff !important;
text-align: center;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
font-weight: 400;
border-right: none !important;
border-left: none !important;
border-bottom-color: #626b7e !important;
}
}
}
}
.revenue{
.tab-title{
text-align: center;
font-size: 18px;
font-weight: 400;
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
}
width: 700px !important;
.tab-index{
.tab-top{
display: flex;
margin-top: 10px;
height: 30px;
line-height: 30px;
white-space: nowrap;
overflow: hidden;
border-bottom: 1px solid #e4e7ed;
.tab-li{
margin-left: 20px;
cursor: pointer;
}
.active{
color:#409eff ;
cursor: pointer;
margin-left: 20px;
border-bottom: 1px solid #409eff !important;
margin-bottom: -1px !important;
}
}
.tab-bottom{
.yisa-tab{
.ant-table-cell{
background-color: #616b83 !important;
color: #ffffff !important;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-weight: 700;
text-align: center;
border-right: none !important;
border-left: none !important;
border-bottom-color: #868d9d !important;
}
}
}
}
}
.iconTipColor{
cursor: pointer;
}
.iconModal{
.iconChoose{
text-align: center;
}
.submitBtn{
text-align: center;
margin-top: 20px;
.submit{
width: 80px;
height: 35px;
background: #409eff;
border: none;
border-radius: 4px;
cursor: pointer;
color: #fff;
}
.cancel{
width: 80px;
height: 35px;
background: #3e4557;
border: none;
border-radius: 4px;
color: #fff;
cursor: pointer;
margin-left: 20px;
}
}
}

375
src/pages/InRoadMgm/EquipmentOpe/patrolStatistics/loadable.jsx

@ -0,0 +1,375 @@
import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult, FormSliderPicker } from "@/components"
import { Select, Button, Input, Table, message, Pagination, Modal, Radio } from 'antd'
import {
pageSizeOptions
} from '@/config/character.config.js'
import "./index.scss";
import moment from "moment";
import { SearchOutlined, DeleteOutlined } from '@ant-design/icons';
import ajax from '@/services'
import { useSessionStorageState } from "ahooks"
import {
DownloadOutlined
} from '@ant-design/icons';
const { TextArea } = Input;
function patrolStatistics(props) {
const [ajaxLoading, setAjaxLoading] = useState(false)
const [resultData, setResultData] = useState({
data: [],
total_records: 0,
export_url: '',
process_url: ""
})
const parameter = {
road_name: '',
warning_type_name: '',
operate_name: '0',
park_name: '',
start: moment().format('YYYY-MM-DD 00:00:00'),
end: moment().format("YYYY-MM-DD 23:59:59"),
pn: 1,
page_size: Number(pageSizeOptions[0]), //
}
const [formData, setFormData] = useState(parameter)
const lastFormDataRef = useRef(formData)
const [lastFormData, setLastFormData] = useState(formData)
const [deleteVisible, setDeleteVisible] = useState(false)
//
const handleRoadName = (v) => {
setFormData({ ...formData, road_name: v.target.value })
}
//
const handleWarningTypeName = (v) => {
setFormData({ ...formData, warning_type_name: v })
}
//
const handleDeployType = (value) => {
setFormData({ ...formData, operate_name: value })
}
//
const handleParkname = (v) => {
setFormData({ ...formData, park_name: v.target.value })
}
const onHandleDateChange = (v) => {
setFormData({
...formData,
start: v.startDateTime,
end: v.endDateTime
})
}
//
const getExportData = () => {
let data = {
...formData
}
ajax.getBerthWarningListExport(data).then(res => {
window.open(res.export_url)
})
}
//
const handleColumns = (tab) => {
let result = [...deployListColumns];
switch (tab) {
case '1':
result.splice(5, 1)
break;
}
return result;
}
//
const getResetData = () => {
setFormData({
...parameter
})
getData({ ...parameter })
}
//
const deployListColumns = [
{
title: '序号',
render: (text, record, index) => index + 1,
},
{
title: '商户名称',
dataIndex: 'operator_name',
key: 'operator_name',
},
{
title: '所属路段',
dataIndex: 'road_name',
key: 'road_name',
},
{
title: '停车场名称',
dataIndex: 'park_name',
key: 'park_name',
},
{
title: '预警类型',
dataIndex: 'warning_type_name',
key: 'warning_type_name',
},
{
title: '预警时间',
dataIndex: 'create_time',
key: 'create_time',
},
{
title: '点位',
dataIndex: 'reason',
key: 'reason',
},
{
title: '处理状态',
render: (text, record) => {
return <div className="iconTipColor" onClick={() => iconBtn(record)}>
<DownloadOutlined style={{ color: '#409eff' }} />
</div>
}
}]
const [getIconId, setGetIconId] = useState({})
const iconBtn = (record) => {
setGetIconId(record)
setDeleteVisible(true)
}
const deleteModal = () => {
setDeleteVisible(false)
}
const [getChangeRideo, setGetchangeRideo] = useState({})
const onChangeRideo = (e) => {
setGetchangeRideo(e.target.value)
}
const deleteModalBtn = () => {
let data = {
status: getChangeRideo,
id: getIconId.info_id
}
ajax.getChooseStatus(data).then(res => {
if (res.status === 20000) {
setDeleteVisible(false)
message.success('更新成功')
setGetchangeRideo({})
} else {
message.error(res.message)
}
})
}
const placeBtn = () => {
setDeleteVisible(false)
setGetchangeRideo({})
}
//
const getData = (data = formData) => {
setAjaxLoading(true)
ajax.getBerthWarningList(data).then(res => {
setAjaxLoading(false)
if (res.status === 20000) {
let resDataArr = res.data.list.map((item) => {
item.key = item.id
return item
})
setResultData({
...resultData,
data: resDataArr,
total_records: res.data.total_records
})
} else {
setResultData({
data: [],
total_records: 0,
export_url: '',
process_url: ""
})
message.error(res.message)
}
}, err => {
console.log(err)
})
}
//
const changePn = (pn, length) => {
if (formData.page_size === length) {
setFormData(Object.assign({}, formData, { pn: pn, page_size: length }))
setLastFormData(Object.assign({}, lastFormData, { pn: pn, page_size: length }))
lastFormDataRef.current = Object.assign({}, lastFormData, { pn: pn, page_size: length })
getData(Object.assign({}, formData, { pn: pn, page_size: length }))
}
}
//
const changeLength = (pn, length) => {
setFormData(Object.assign({}, formData, { pn: 1, page_size: length }))
setLastFormData(Object.assign({}, lastFormData, { pn: 1, page_size: length }))
lastFormDataRef.current = Object.assign({}, lastFormData, { pn: pn, page_size: length })
getData(Object.assign({}, formData, { pn: 1, page_size: length }))
}
//
const getSearchData = (data = formData) => {
getData(data)
}
const [getMerchantDataName, setGetMerchantDataName] = useState([])
const merchantDataName = () => {
ajax.getOperator().then(res => {
setGetMerchantDataName(res.data)
})
}
const [sessionTabList, setSessionTabList] = useSessionStorageState('patrolStatistics', {
value: {
}
})
useEffect(() => {
console.log(location)
if (sessionTabList && Object.values(sessionTabList).length > 0) {
setFormData({
road_name: sessionTabList?.road_name,
operate_name: sessionTabList?.operate_name,
park_name: sessionTabList?.park_name,
warning_type_name: sessionTabList?.warning_type_name,
pn: sessionTabList?.pn,
start: sessionTabList?.start,
end: sessionTabList?.end,
page_size: sessionTabList?.page_size,
})
}
}, [])
console.log(formData);
useEffect(() => {
setSessionTabList({
...formData
})
}, [formData])
useEffect(() => {
getData()
merchantDataName()
}, [])
return <>
<div className="paid-patrolStatistics">
<div className="paid-search">
<label className="search">查询条件</label>
<div className="yisa-search">
<label>预警类型</label>
<Select
style={{ width: 240, marginLeft: 14 }}
value={formData.warning_type_name}
options={sysConfig.warning_list}
onChange={handleWarningTypeName}
/>
</div>
<div className="yisa-search">
<label>商户名称</label>
<Select
style={{ width: 240, marginLeft: 14 }}
// allowClear
value={formData.operate_name}
options={getMerchantDataName}
onChange={handleDeployType}
/>
</div>
<div className="yisa-search">
<label>所属路段</label>
<Input
style={{ width: 240, marginLeft: 14 }}
value={formData.road_name}
placeholder="请输入所属路段"
onChange={handleRoadName}
/>
</div>
<div className="yisa-search">
<label>停车场名称</label>
<Input
style={{ width: 240 }}
value={formData.park_name}
placeholder="请输入停车场名称"
onChange={handleParkname}
/>
</div>
<div className="timePicker ">
<FormSliderPicker
yisaLabel='上报时间'
defaultStartDateTime={moment(formData.start)}
defaultEndDateTime={moment(formData.end)}
yisaOnChange={onHandleDateChange}
limit={730}
dropdownData={[
{ text: "昨天", value: 1 },
{ text: "近30天", value: 30 },
{ text: "近90天", value: 90 },
{ text: "近180天", value: 180 },
]}
/>
<div className="btnBox">
<Button type="primary" className="yisa-btn colorBtn" icon={<SearchOutlined />} onClick={() => { getSearchData() }}>
搜索
</Button>
<Button type="primary" className="yisa-btn colorReset" icon={<DeleteOutlined />} onClick={() => { getResetData() }}>
清空
</Button>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { getExportData() }}>
导出
</Button>
</div>
</div>
</div>
<div className="paid-result">
<div className="result">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table
bordered
// className='yisa-table'
dataSource={resultData.data}
columns={
handleColumns()
}
pagination={false}
loading={ajaxLoading}
/>
<Pagination
className="pagination-common"
showSizeChanger
showQuickJumper
showTotal={() => `${resultData.total_records}`}
total={resultData.total_records}
current={lastFormData.pn}
pageSize={lastFormData.page_size}
pageSizeOptions={pageSizeOptions}
onChange={changePn}
onShowSizeChange={changeLength}
/>
</ResultFlowResult>
</div>
</div>
</div>
<Modal
visible={deleteVisible}
onCancel={deleteModal}
footer={null}
className="iconModal"
title='处理状态'
>
<div className="iconChoose">
<Radio.Group onChange={onChangeRideo} value={getChangeRideo}>
<Radio value={1}>已处理</Radio>
<Radio value={2}>未处理</Radio>
<Radio value={3}>处理中</Radio>
</Radio.Group>
</div>
<div className="submitBtn">
<button type="primary" className="submit" onClick={() => { deleteModalBtn() }}>
提交
</button>
<button type="primary" className="cancel colorReset" onClick={() => { placeBtn() }}>
取消
</button>
</div>
</Modal>
</>
}
export default patrolStatistics;

2
src/pages/InRoadMgm/PersonMgm/Performance/SalesStat/loadable.jsx

@ -21,7 +21,7 @@ function SalesStat(props) {
})
const parameter = {
name: '',//
start: moment().format('YYYY-MM-DD HH:mm:ss'),
start: moment().format('YYYY-MM-DD 00:00:00'),
end: moment().format("YYYY-MM-DD 23:59:59"),
pn: 1,
length: Number(pageSizeOptions[0]), //

52
src/pages/InRoadMgm/RecordInquiry/DisabledCarParkRecordTotal/loadable.jsx

@ -363,28 +363,8 @@ function DisabledCarParkRecordTotal() {
name: "operator",
type: "Select",
label: "商户名称",
options: [
{
label: "全部",
value: -1,
},
{
label: "错时共享停车场",
value: 0,
},
{
label: "公共事业集团",
value: 1,
},
{
label: "社会类停车场",
value: 2,
},
{
label: "智慧互通",
value: 3,
},
],
defaultValue: "0",
placeholder: "请选择商户名称",
},
{
name: "road",
@ -396,28 +376,8 @@ function DisabledCarParkRecordTotal() {
name: "road_type",
type: "Select",
label: "路段类型",
options: [
{
label: "全部",
value: 0,
},
{
label: "路侧平行",
value: 1,
},
{
label: "路侧垂停",
value: 2,
},
{
label: "封闭车场",
value: 3,
},
{
label: "半封闭车场",
value: 4,
},
],
defaultValue: 0,
options: sysConfig.roadType,
},
{
name: "phone",
@ -430,7 +390,7 @@ function DisabledCarParkRecordTotal() {
type: "Select",
label: "认证状态",
placeholder: "请选择认证状态",
//defaultValue: 0,
defaultValue: 0,
options: [
{
label: "全部",
@ -490,7 +450,7 @@ function DisabledCarParkRecordTotal() {
name: "order_type",
type: "Select",
label: "订单类型",
//defaultValue: 1,
defaultValue: 1,
options: [
{
label: "进行中",

71
src/pages/InRoadMgm/RecordInquiry/ParkRecordTotal/loadable.jsx

@ -69,41 +69,7 @@ function ParkRecordTotal() {
render: (text, record, index) => index + 1,
width: 100,
},
{
title: "停车记录ID",
dataIndex: "park_id",
align: "center",
render: (text, record, index) => (
<div style={{ width: "130px", wordBreak: "break-all" }}>
<a onClick={() => {
navigator.clipboard.writeText(`${text}`).then(() => { message.success("已复制到剪切板") });
}}>{record.park_id}</a>
</div>
),
},
{
title: "区域",
dataIndex: "region",
align: "center",
render: (text, record, index) => (
<div style={{ width: "120px", wordBreak: "break-all" }}>{record.region}</div>
)
},
{
title: "商户名称",
dataIndex: "operator",
align: "center",
render: (text, record, index) => (
<div style={{ width: "150px", wordBreak: "break-all" }}>{record.operator}</div>
)
},
{
title: "路段类型",
dataIndex: "road_type",
key: "road_type",
width: 100,
align: "center",
},
{
title: "路段名称",
dataIndex: "road",
@ -240,6 +206,41 @@ function ParkRecordTotal() {
</Popover>
},
{
title: "停车记录ID",
dataIndex: "park_id",
align: "center",
render: (text, record, index) => (
<div style={{ width: "130px", wordBreak: "break-all" }}>
<a onClick={() => {
navigator.clipboard.writeText(`${text}`).then(() => { message.success("已复制到剪切板") });
}}>{record.park_id}</a>
</div>
),
},
{
title: "区域",
dataIndex: "region",
align: "center",
render: (text, record, index) => (
<div style={{ width: "120px", wordBreak: "break-all" }}>{record.region}</div>
)
},
{
title: "商户名称",
dataIndex: "operator",
align: "center",
render: (text, record, index) => (
<div style={{ width: "150px", wordBreak: "break-all" }}>{record.operator}</div>
)
},
{
title: "路段类型",
dataIndex: "road_type",
key: "road_type",
width: 100,
align: "center",
},
{
title: "操作",
dataIndex: "operation",
key: "operation",

1
src/pages/InRoadMgm/RecordInquiry/UnRecordOrder/loadable.jsx

@ -131,6 +131,7 @@ function PreOrderRecord() {
name: "operator",
type: "Select",
label: "商户名称",
defaultValue: "0",
placeholder: "请输入商户名称",
},
{

68
src/pages/InRoadMgm/RoadMgm/AddRoad/loadable.jsx

@ -223,7 +223,9 @@ function AddRoad() {
function getAllOperator() {
ajax.getAllOperator().then((res) => {
if (res.status === 20000) {
setOperatorList(res.data);
let arr = res.data
let newArr = arr.slice(1)
setOperatorList(newArr);
}
});
}
@ -342,8 +344,56 @@ function AddRoad() {
(err) => console.error(err)
);
}
const [getRodeType, setGetRodeType] = useState([])
const rodeType = () => {
let arr = sysConfig.roadType
let newArr = arr.slice(1)
setGetRodeType(newArr)
}
const [getDeviceType, setGetDeviceType] = useState([])
const deviceType = () => {
let arr = sysConfig.roadType
let newArr = arr.slice(1)
setGetDeviceType(newArr)
}
const [getAccessType, setGetAccessType] = useState([])
const accessType = () => {
let arr = sysConfig.roadType
let newArr = arr.slice(1)
setGetAccessType(newArr)
}
const [getBusinessRoad, setGetBusinessRoad] = useState([])
const businessRoad = () => {
let arr = sysConfig.roadType
let newArr = arr.slice(1)
setGetBusinessRoad(newArr)
}
const [getCooperationModel, setGetCooperationModel] = useState([])
const cooperationModel = () => {
let arr = sysConfig.roadType
let newArr = arr.slice(1)
setGetCooperationModel(newArr)
}
const [getOperatorStatus, setGetOperatorStatus] = useState([])
const operatorStatus = () => {
let arr = sysConfig.roadType
let newArr = arr.slice(1)
setGetOperatorStatus(newArr)
}
const [getRoadStatus, setGetRoadStatus] = useState([])
const roadStatus = () => {
let arr = sysConfig.roadType
let newArr = arr.slice(1)
setGetRoadStatus(newArr)
}
useEffect(() => {
deviceType()
rodeType()
accessType()
businessRoad()
roadStatus()
operatorStatus()
cooperationModel()
// getTradingArea(id);
getEtcStatus(id);
getAllOperator();
@ -431,7 +481,7 @@ function AddRoad() {
</Col>
<Col span={8}>
<Form.Item label="路段物理类型" name="road_type" rules={rules}>
<Select options={sysConfig.roadType} />
<Select options={getRodeType} />
</Form.Item>
</Col>
<Form.Item
@ -448,7 +498,7 @@ function AddRoad() {
name="road_device_type"
rules={rules}
>
<Select options={sysConfig.roadDeviceType} />
<Select options={getDeviceType} />
</Form.Item>
</Col>
) : null;
@ -519,7 +569,7 @@ function AddRoad() {
rules={rules}
>
<Select
options={sysConfig.accessType}
options={getAccessType}
disabled={getFieldValue("road_level") === 3}
/>
</Form.Item>
@ -607,7 +657,7 @@ function AddRoad() {
>
<Select
disabled={roadLevel === 3}
options={sysConfig.businessRoad}
options={getBusinessRoad}
/>
</Form.Item>
</Col>
@ -619,7 +669,7 @@ function AddRoad() {
>
<Select
disabled={roadLevel === 3}
options={sysConfig.cooperationModel}
options={getCooperationModel}
/>
</Form.Item>
</Col>
@ -669,7 +719,7 @@ function AddRoad() {
name="operator_status"
rules={rules}
>
<Select options={sysConfig.operatorStatus} />
<Select options={getOperatorStatus} />
</Form.Item>
</Col>
<Col span={8}>
@ -678,7 +728,7 @@ function AddRoad() {
name="road_status"
rules={rules}
>
<Select options={sysConfig.roadStatus} />
<Select options={getRoadStatus} />
</Form.Item>
</Col>
<Col span={8}>

4
src/pages/InRoadMgm/RoadMgm/ParkList/loadable.jsx

@ -348,7 +348,7 @@ const reastBtn=()=>{
title="停车记录信息"
>
<Descriptions title="停车记录信息">
<Descriptions.Item label="停车场名称">{}</Descriptions.Item>
<Descriptions.Item label="停车场名称">{currentParkingItem.road}</Descriptions.Item>
<Descriptions.Item label="区域">
{currentParkingItem.region}
</Descriptions.Item>
@ -356,7 +356,7 @@ const reastBtn=()=>{
{currentParkingItem.operator}
</Descriptions.Item>
<Descriptions.Item label="泊位号">
{currentParkingItem.road}
{currentParkingItem.berth_id}
</Descriptions.Item>
</Descriptions>
<Descriptions title="车辆详情">

20
src/pages/InRoadMgm/RoadMgm/RoadConf/loadable.jsx

@ -264,7 +264,7 @@ useEffect(()=>{
}
//
const onFinish = (value) => {
ajax.commentSetting({ ...value }).then((res) => {
ajax.commentSettings({ ...value }).then((res) => {
if (res.status === 20000) {
message.success(res.message);
setAppraiseModal(false);
@ -438,6 +438,17 @@ useEffect(()=>{
const reastBtn = () => {
searchForm.resetFields();
}
const [getAppraiseList,setAppraiseList]=useState({
})
const appraise =() => {
ajax.getAppraiseData().then(res=>{
if(res.status===20000){
setAppraiseModal(true);
setAppraiseList(res.data)
}
})
}
useEffect(() => {
search();
getAreaTree();
@ -474,7 +485,8 @@ useEffect(()=>{
<Button
type="primary"
onClick={() => {
setAppraiseModal(true);
appraise()
}}
>
评价批量配置
@ -540,6 +552,7 @@ useEffect(()=>{
tooltip={{
title: "参数默认为5次,“≥n”代表正常,若为“0”表示不限制",
}}
value={getAppraiseList.count}
name="count"
initialValue={5}
required
@ -550,7 +563,8 @@ useEffect(()=>{
label="车主注册时间≥"
initialValue={30}
required
name="days"
value={getAppraiseList.register_time}
name="register_time"
tooltip={{
title: "参数默认为30天,“≥n”代表正常,若为“0”表示不限制",
}}

4
src/pages/InRoadMgm/RoadMgm/RoadDetail/loadable.jsx

@ -120,11 +120,11 @@ function RoadDetail(props) {
<Panel header="车主评价详情" key="2">
<div className="score">
<label>车场评分:</label>
<span>123</span>
<span> {resultData.evaluate_score}</span>
</div>
<div className="level">
<label>车场评级:</label>
<span>暂无</span>
<span> {resultData.evaluate}</span>
</div>
</Panel>
</Collapse>

16
src/pages/InRoadMgm/Stuff/CategroyConf/loadable.jsx

@ -247,8 +247,8 @@ function CategroyConf(props) {
setCheckData({ ...checkData, remarks: v.target.value })
}
//
const handleAddOperator = (v,option) => {
setCheckData({ ...checkData, brand_name: option.label })
const handleAddOperator = (v) => {
setCheckData({ ...checkData, brand_name: v.target.value })
}
const placeSaveBtn = () => {
let data = {
@ -458,10 +458,10 @@ function CategroyConf(props) {
<div className="yisa-search">
<div className="redLogo">*</div>
<label>类型名称</label>
<Select
<Input
value={checkData.brand_name}
style={{ width: 180, marginLeft: 20 }}
options={getOperationName}
// options={getOperationName}
onChange={handleAddOperator}
/>
</div>
@ -508,13 +508,13 @@ function CategroyConf(props) {
<div className="yisa-search">
<div className="redLogo">*</div>
<label>类型名称</label>
<Select
<Input
value={getEditData.brand_name}
style={{ width: 180, marginLeft: 20 }}
options={getOperationName}
onChange={(v,option) => {
// options={getOperationName}
onChange={() => {
setGetEditData(
Object.assign({}, getEditData, { brand_name: option.label })
Object.assign({}, getEditData, { brand_name: v.target.value })
);
}}
/>

2
src/pages/InRoadMgm/index.jsx

@ -1,6 +1,7 @@
import BusinessMgm from "./BusinessMgm"
import EquipmentMgm from "./EquipmentMgm"
import EquipmentOps from "./EquipmentOps"
import EquipmentOpe from "./EquipmentOpe"
import PersonMgm from "./PersonMgm"
import RecordInquiry from "./RecordInquiry"
import RoadMgm from "./RoadMgm"
@ -10,6 +11,7 @@ export default {
...BusinessMgm,
...EquipmentMgm,
...EquipmentOps,
...EquipmentOpe,
...PersonMgm,
...RecordInquiry,
...RoadMgm,

7
src/pages/OperationCenter/CustomerServieMgm/ErrorCorrection/loadable.jsx

@ -175,10 +175,7 @@ function ErrorCorrection(props) {
const [getCanCaDer, setGetCanCaDer] = useState([])
const getCascaderList = () => {
let data = {
type: 3
}
ajax.cascaderList(data).then(res => {
ajax.cascaderList().then(res => {
if (res.status === 20000) {
setGetCanCaDer(res.data)
}
@ -296,7 +293,7 @@ function ErrorCorrection(props) {
区域<span className="font">{getImg.cityName}</span>
</div>
<div className="plate">
状态<span className="font">{getImg.parkStateDesc}</span>
状态<span className="font">{getImg.parkStateDesc}</span>
</div>
</div>
</div>

2
src/pages/OperationCenter/GeoSignalIgnore/GeoSignalIgnoreAudit/loadable.jsx

@ -382,7 +382,7 @@ function GeoSignalIgnoreAudit(props) {
/>
</div>
<div className="yisa-search">
<label>忽略型</label>
<label>忽略</label>
<Select
style={{ width: 270 }}
placeholder="请选择"

2
src/pages/OperationCenter/GeoSignalIgnore/GeoSignalIgnoreConf/loadable.jsx

@ -236,12 +236,14 @@ function GeoSignalIgnoreConf(props) {
placeholder='请输入类型名称'
style={{ width: 400, height: 50, marginLeft: 7 }}
onChange={handleConfName}
value={getModalData.confName}
/>
</div>
<div className="yisa-search" style={{marginLeft:15}}>
<label>类型描述</label>
<TextArea
placeholder='请输入类型描述'
value={getModalData.content}
style={{ width: 400, height: 100, marginLeft: 7 }}
onChange={handleContent}
/>

2
src/pages/OperationCenter/GeoSignalIgnore/GeoSignalIgnoreInquiry/loadable.jsx

@ -311,7 +311,7 @@ function GeoSignalIgnoreInquiry(props) {
/>
</div>
<div className="yisa-search">
<label>忽略型</label>
<label>忽略</label>
<Select
style={{ width: 270 }}
placeholder="请选择"

8
src/pages/OperationCenter/OtherBusiness/Staggered/StaggeredMgm/loadable.jsx

@ -512,10 +512,9 @@ function StaggeredMgm(props) {
onCancel={checkModal}
footer={null}
className="roadModal"
title='查看'
>
<div className="carTitle">
<span className="font">车辆信息</span>
<span className="font">基础信息</span>
</div>
<div className="foundation">
<div className="add">
@ -678,7 +677,7 @@ function StaggeredMgm(props) {
className="staggered-add"
>
<div className="carTitle">
<span className="font">车辆信息</span>
<span className="font">基础信息</span>
</div>
<div className="foundation">
<div className="add">
@ -842,10 +841,9 @@ function StaggeredMgm(props) {
onCancel={editModal}
footer={null}
className="staggered-add"
title='编辑'
>
<div className="carTitle">
<span className="font">车辆信息</span>
<span className="font">基础信息</span>
</div>
<div className="foundation">
<div className="add">

18
src/pages/SystemMgm/BusinessConfig/BusinessConf/loadable.jsx

@ -48,8 +48,8 @@ function BusinessConf(props) {
operator_name: "0",
item_name: '',
parameterValue: 1,
parameter:'',
parameterValu:''
parameter_exit:'',
parameter_exit_pda:''
})
const addAdmin = () => {
setImgVisible(true)
@ -77,19 +77,15 @@ function BusinessConf(props) {
}
//
const onChangeAdd = (e) => {
setAddManage({ ...addManage, parameterValue: e.target.value })
setAddManage({
parameter:'',
parameterValu:''
})
setAddManage({ ...addManage, parameterValue: e.target.value , parameter_exit:'', parameter_exit_pda:''})
}
//
const onChangehoose = (e) => {
setAddManage({ ...addManage, parameter: e.target.value })
setAddManage({ ...addManage, parameter_exit: e.target.value })
}
//
const onChangeAddTypeValue = (e) => {
setAddManage({ ...addManage, parameterValu: e.target.value })
setAddManage({ ...addManage, parameter_exit_pda: e.target.value })
}
const [getType, setGetType] = useState(1)
const onChangeAddType = (e) => {
@ -590,10 +586,10 @@ function BusinessConf(props) {
{
getType == 1 ?
<>
<Radio.Group onChange={onChangehoose} value={addManage.parameter}>
<Radio.Group onChange={onChangehoose} value={addManage.parameter_exit}>
<Radio value={3}>自动出场</Radio>
</Radio.Group>
<Radio.Group onChange={onChangeAddTypeValue} value={addManage.parameterValu}>
<Radio.Group onChange={onChangeAddTypeValue} value={addManage.parameter_exit_pda}>
<Radio value={4}>PDA确认出场</Radio>
</Radio.Group>
</>

41
src/router/menu-bk.js

@ -638,6 +638,47 @@
"is_menu": 1
}
]
},
{
"path": "",
"icon": "zongshujuliang",
"text": "设备运维",
"name": "eqManage",
"id": 10,
"pid": 1,
"project_name": "inRoad",
"is_menu": 1,
"children": [{
"path": "/inRoad/berthStatus",
"icon": "",
"text": "泊位运营状态",
"name": "berthStatus",
"id": 49,
"pid": 10,
"project_name": "inRoad",
"is_menu": 1
},
{
"path": "/inRoad/faultReport",
"icon": "",
"text": "故障上报记录",
"name": "faultReport",
"id": 50,
"pid": 10,
"project_name": "inRoad",
"is_menu": 1
},
{
"path": "/inRoad/patrolStatistics",
"icon": "",
"text": "巡检预警统计",
"name": "patrolStatistics",
"id": 51,
"pid": 10,
"project_name": "inRoad",
"is_menu": 1
}
]
}
],
"operationCenter":[

205
src/router/menu.js

@ -112,6 +112,9 @@
"outParkingRecordInquiry",
"outPayOrders",
"outDevice",
"berthStatus",
"faultReport",
"patrolStatistics",
"outMonitorMgm",
"outNvrMgm",
"merchantAdmin",
@ -148,8 +151,7 @@
"staggeredStat"
],
"menus_new": {
"inRoad": [
{
"inRoad": [{
"path": "/inRoad/InRoadOverview",
"icon": "zongshujuliang",
"text": "概览",
@ -168,8 +170,7 @@
"pid": 1,
"project_name": "inRoad",
"is_menu": 1,
"children": [
{
"children": [{
"path": "/inRoad/ParkRecordTotal",
"icon": "",
"text": "停车记录查询",
@ -270,8 +271,7 @@
"pid": 1,
"project_name": "inRoad",
"is_menu": 1,
"children": [
{
"children": [{
"path": "/inRoad/ParkList",
"icon": "",
"text": "泊位列表",
@ -302,8 +302,7 @@
"pid": 1,
"project_name": "inRoad",
"is_menu": 1,
"children": [
{
"children": [{
"path": "/inRoad/personInfo",
"icon": "",
"text": "人员信息",
@ -322,8 +321,7 @@
"pid": 7,
"project_name": "inRoad",
"is_menu": 1,
"children": [
{
"children": [{
"path": "/inRoad/workerAttendance",
"icon": "",
"text": "人员考勤",
@ -374,8 +372,7 @@
"pid": 7,
"project_name": "inRoad",
"is_menu": 1,
"children": [
{
"children": [{
"path": "/inRoad/auditConf",
"icon": "",
"text": "稽查配置",
@ -406,8 +403,7 @@
"pid": 7,
"project_name": "inRoad",
"is_menu": 1,
"children": [
{
"children": [{
"path": "/inRoad/workerStat",
"icon": "",
"text": "收费员工统计",
@ -470,8 +466,7 @@
"pid": 1,
"project_name": "inRoad",
"is_menu": 1,
"children": [
{
"children": [{
"path": "/inRoad/stuffMgm",
"icon": "",
"text": "物品管理",
@ -522,8 +517,7 @@
"pid": 1,
"project_name": "inRoad",
"is_menu": 1,
"children": [
{
"children": [{
"path": "/inRoad/specialRecord",
"icon": "",
"text": "白名单管理",
@ -592,8 +586,7 @@
"pid": 9,
"project_name": "inRoad",
"is_menu": 1,
"children": [
{
"children": [{
"path": "/inRoad/exceptionParkReport",
"icon": "",
"text": "上报记录查询",
@ -626,8 +619,7 @@
"pid": 1,
"project_name": "inRoad",
"is_menu": 1,
"children": [
{
"children": [{
"path": "/inRoad/equipmentStatus",
"icon": "",
"text": "设备状态",
@ -678,15 +670,54 @@
"is_menu": 1
}
]
},
{
"path": "",
"icon": "zongshujuliang",
"text": "设备运维",
"name": "eqManage",
"id": 10,
"pid": 1,
"project_name": "inRoad",
"is_menu": 1,
"children": [{
"path": "/inRoad/berthStatus",
"icon": "",
"text": "泊位运营状态",
"name": "berthStatus",
"id": 49,
"pid": 10,
"project_name": "inRoad",
"is_menu": 1
},
{
"path": "/inRoad/faultReport",
"icon": "",
"text": "故障上报记录",
"name": "faultReport",
"id": 50,
"pid": 10,
"project_name": "inRoad",
"is_menu": 1
},
{
"path": "/inRoad/patrolStatistics",
"icon": "",
"text": "巡检预警统计",
"name": "patrolStatistics",
"id": 51,
"pid": 10,
"project_name": "inRoad",
"is_menu": 1
}
]
}
],
"operationCenter":[
{
"operationCenter": [{
"text": "车辆管理",
"name": "carMgmDir",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "车辆信息",
"name": "carInfo",
"path": "/operationCenter/carInfo"
@ -702,8 +733,7 @@
"text": "用户管理",
"name": "userMgmDir",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "用户信息",
"name": "userInfo",
"path": "/operationCenter/userInfo"
@ -724,25 +754,21 @@
"text": "欠费追缴",
"name": "arrearsRecover",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "欠费车辆",
"name": "arrearsCar",
"path": "/operationCenter/arrearsCar"
}
]
}]
},
{
"text": "运营营销",
"name": "operationSales",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "优惠券管理",
"name": "couponMgm",
"icon": "",
"children": [
{
"children": [{
"text": "优惠券规则",
"name": "couponRules",
"path": "/operationCenter/couponRules"
@ -794,12 +820,10 @@
{
"text": "增值业务",
"icon": "zongshujuliang",
"children":[
{
"children": [{
"text": "停车卡",
"icon": "",
"children":[
{
"children": [{
"path": "/operationCenter/parkingCardMgm",
"text": "停车卡管理",
"name": "parkingCardMgm"
@ -819,8 +843,7 @@
{
"text": "错峰停车",
"icon": "",
"children":[
{
"children": [{
"path": "/operationCenter/StaggeredMgm",
"text": "错峰管理",
"name": "StaggeredMgm"
@ -843,8 +866,7 @@
"text": "客服管理",
"name": "customerServieMgm",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "反馈建议",
"name": "callbackSuggestion",
"path": "/operationCenter/callbackSuggestion"
@ -880,8 +902,7 @@
"text": "地磁信号忽略",
"name": "geoSignalIgnore",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "地磁信号忽略审核",
"name": "geoSignalIgnoreAudit",
"path": "/operationCenter/geoSignalIgnoreAudit"
@ -899,8 +920,7 @@
]
}
],
"systemMgm":[
{
"systemMgm": [{
"text": "区域管理",
"name": "areaManage",
"icon": "zongshujuliang",
@ -934,21 +954,18 @@
"text": "消息管理",
"name": "messageMgm",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "业务配置",
"name": "confMes",
"icon": "",
"path": "/systemMgm/confMes",
},
]
}, ]
},
{
"text": "业务配置",
"name": "businessConfig",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "业务配置",
"name": "businessConf",
"icon": "",
@ -963,8 +980,7 @@
]
}
],
"merchantMgm": [
{
"merchantMgm": [{
"text": "商户信息",
"name": "merchantInfo",
"icon": "zongshujuliang",
@ -989,12 +1005,10 @@
"path": "/merchantMgm/functionMgm",
}
],
"financialMgm":[
{
"financialMgm": [{
"text": "异常处理",
"icon": "zongshujuliang",
"children":[
{
"children": [{
"text": "发起异常处理",
"name": "startExceptionDeal",
"icon": "",
@ -1017,8 +1031,7 @@
{
"text": "订单查询",
"icon": "zongshujuliang",
"children":[
{
"children": [{
"text": "订单修改查询",
"name": "editOrderInquiry",
"icon": "",
@ -1053,8 +1066,7 @@
{
"text": "电子发票",
"icon": "zongshujuliang",
"children":[
{
"children": [{
"text": "发票记录",
"name": "createInvoiceRecord",
"icon": "",
@ -1071,8 +1083,7 @@
{
"text": "财务报表",
"icon": "zongshujuliang",
"children":[
{
"children": [{
"text": "停车收入报表",
"name": "parkingIncomeReport",
"icon": "",
@ -1124,8 +1135,7 @@
{
"text": "清分结算",
"icon": "zongshujuliang",
"children":[
{
"children": [{
"text": "渠道对账",
"name": "generalBusiness",
"icon": "",
@ -1153,8 +1163,7 @@
{
"text": "支付配置",
"icon": "zongshujuliang",
"children":[
{
"children": [{
"text": "应用配置",
"name": "appConfiguration",
"icon": "",
@ -1176,8 +1185,7 @@
}
],
"outRoad": [
{
"outRoad": [{
"text": "概览",
"name": "outRoadOverview",
"icon": "zongshujuliang",
@ -1187,8 +1195,7 @@
"text": "路段管理",
"name": "outRoadMgm",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "计费规则管理",
"name": "chargeRulesMgm",
"icon": "",
@ -1212,8 +1219,7 @@
"text": "异常管理",
"name": "outExceptionMgm",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "抬杆记录",
"name": "liftUpPoleRecord",
"icon": "",
@ -1231,8 +1237,7 @@
"text": "业务记录",
"name": "outBusinessRecord",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "停车记录查询",
"name": "outParkingRecordInquiry",
"icon": "",
@ -1256,8 +1261,7 @@
"text": "设备管理",
"name": "outDeviceMgm",
"icon": "zongshujuliang",
"children": [
{
"children": [{
"text": "路外设备管理",
"name": "outDevice",
"icon": "",
@ -1277,6 +1281,47 @@
}
]
},
{
"path": "",
"icon": "zongshujuliang",
"text": "设备运维",
"name": "eqManage",
"id": 10,
"pid": 1,
"project_name": "inRoad",
"is_menu": 1,
"children": [{
"path": "/inRoad/berthStatus",
"icon": "",
"text": "泊位运营状态",
"name": "berthStatus",
"id": 49,
"pid": 10,
"project_name": "inRoad",
"is_menu": 1
},
{
"path": "/inRoad/faultReport",
"icon": "",
"text": "故障上报记录",
"name": "faultReport",
"id": 50,
"pid": 10,
"project_name": "inRoad",
"is_menu": 1
},
{
"path": "/inRoad/patrolStatistics",
"icon": "",
"text": "巡检预警统计",
"name": "patrolStatistics",
"id": 51,
"pid": 10,
"project_name": "inRoad",
"is_menu": 1
}
]
}
]
}
}

22
src/router/router.config.js

@ -416,6 +416,28 @@ let routes = [
component: pages.EquipmentStatus,
},
{
// -------------------------------路内管理 - 设备运维
path: "/inRoad/faultReport",
text: "故障上报记录",
name: "faultReport",
component: pages.faultReport,
},
{
// -------------------------------路内管理 - 设备运维
path: "/inRoad/patrolStatistics",
text: "巡检预警统计",
name: "patrolStatistics",
component: pages.patrolStatistics,
},
{
// -------------------------------路内管理 - 设备运维
path: "/inRoad/berthStatus",
text: "泊位运营状态",
name: "berthStatus",
component: pages.berthStatus,
},
{
path: "/inRoad/barMgm",
text: "杆位管理",
name: "barMgm",

14
src/services/InroadMgm/RoadMgm/RoadMgm.js

@ -32,6 +32,13 @@ const changeAlipayNoPWD = (params) => {
data: params,
});
};
const getAppraiseData = (params) => {
return ajax({
url: "/api/bpm/road/get_comment_setting",
type: "get",
data: params,
});
};
// /api/bpm/berth/manage_list 泊位管理列表查询展示
const getManageList = (params) => {
return ajax({
@ -305,9 +312,9 @@ const delPolePosition = (params) => {
};
///api/bpm/road/comment_setting 评价批量设置
const commentSetting = (params) => {
const commentSettings = (params) => {
return ajax({
url: "/api/orp/road/get_comment_setting",
url: "/api/bpm/road/comment_setting",
type: "post",
data: params,
});
@ -361,6 +368,7 @@ export default {
changeAlipayNoPWD,
getManageList,
editStatus,
getAppraiseData,
importBerth,
getTollList,
addBerth,
@ -389,7 +397,7 @@ export default {
addPolePosition,
getBillRule,
delPolePosition,
commentSetting,
commentSettings,
getDeviceInfo,
delRoadRule,
getAllParentRoad,

53
src/services/search.js

@ -1072,7 +1072,60 @@ const getNameData = (params) => {
data: params,
});
};
const getChooseStatus = (params) => {
return ajax({
url: "/api/bpm/berthoperation/update_berth_warning_status",
type: "post",
data: params,
});
};
//设备运维-泊位状态列表
const getBerthList = (params) => {
return ajax({
url: "/api/bpm/berthoperation/show_berth_operation",
type: "post",
data: params,
});
};
//设备运维-泊位状态列表
const getFaultReportExport = (params) => {
return ajax({
url: "/api/bpm/berthoperation/get_fault_report_export",
type: "post",
data: params,
});
};
//设备运维-故障上报列表
const getShowFaultReport = (params) => {
return ajax({
url: "/api/bpm/berthoperation/show_fault_report",
type: "post",
data: params,
});
};
//设备运维-预警上报列表
const getBerthWarningList = (params) => {
return ajax({
url: "/api/bpm/berthoperation/berth_warning_list",
type: "post",
data: params,
});
};
//设备运维-预警上报列表
const getBerthWarningListExport = (params) => {
return ajax({
url: "/api/bpm/berthoperation/get_warning_list_export",
type: "post",
data: params,
});
};
export default {
getBerthList,
getChooseStatus,
getBerthWarningList,
getBerthWarningListExport,
getShowFaultReport,
getFaultReportExport,
getCaseSearchData,
getDataSourceData,
getCaseStatusData,

Loading…
Cancel
Save