Browse Source

Merge branch 'develop' of http://120.27.195.166:3000/chenglb/PMS_Frontend_v1.0.0.git into develop

tags/PMS_Frontend_v1.0.6-develop
chenglb 1 year ago
parent
commit
5b2f0422a5
  1. 2
      src/components/TableModule/index.jsx
  2. 146
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyPeriod/loadable.jsx
  3. 2
      src/pages/FinancialMgm/OrderInquiry/ParkingOrderInquiry/index.jsx
  4. 21
      src/pages/InRoadMgm/BusinessMgm/ChargeRules/EditModal.jsx
  5. 11
      src/pages/InRoadMgm/BusinessMgm/ChargeRules/loadable.jsx
  6. 11
      src/pages/InRoadMgm/BusinessMgm/SpecialRecord/loadable.jsx
  7. 86
      src/pages/InRoadMgm/PersonMgm/Performance/WorkerStat/index.scss
  8. 78
      src/pages/InRoadMgm/PersonMgm/Performance/WorkerStat/loadable.jsx
  9. 6
      src/pages/InRoadMgm/PersonMgm/PersonInfo/loadable.jsx
  10. 6
      src/pages/InRoadMgm/RecordInquiry/ParkRecordTotal/loadable.jsx
  11. 39
      src/pages/InRoadMgm/RoadMgm/ConfigRoad/loadable.jsx
  12. 27
      src/pages/InRoadMgm/RoadMgm/ParkList/loadable.jsx
  13. 17
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/AddParking.jsx
  14. 25
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/BusinessParameterConfig.jsx
  15. 48
      src/pages/SystemMgm/AdminMgm/loadable.jsx
  16. 43
      src/pages/SystemMgm/RoleMgm/loadable.jsx
  17. 2
      src/services/OutRoadMgm/OutSegment.js

2
src/components/TableModule/index.jsx

@ -765,7 +765,7 @@ const TableModule = forwardRef((props, ref) => {
}, []);
const [getRoadList, setGetRoadList] = useState([])
useEffect(() => {
ajax.getRoadSearch().then((res) => {
ajax.getNewRoadSearch().then((res) => {
setGetRoadList(res.data);
})
}, [])

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

@ -261,132 +261,9 @@ function ParkingAlyPeriod() {
this.random(arr)
}
}
const color = ['#5470c6','#91cc75','#fac858','#ee6666','#73c0de','#fc8452','#3ba272','#9a60b4','#ee7ccc']
console.log(Math.round(Math.random()*10))
const color = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#fc8452', '#3ba272', '#9a60b4', '#ee7ccc']
// 线 hour
const getParkOptionHour = (data) => {
data = [
{
"date": "2023-11-20",
"hour": "00:00",
"occupancy_rate": "0.02%"
},
{
"date": "2023-11-22",
"hour": "01:00",
"occupancy_rate": "0%"
},
{
"date": "2023-11-22",
"hour": "02:00",
"occupancy_rate": "0%"
},
{
"date": "2023-11-22",
"hour": "03:00",
"occupancy_rate": "0%"
},
{
"date": "2023-11-22",
"hour": "04:00",
"occupancy_rate": "0%"
},
{
"date": "2023-11-22",
"hour": "05:00",
"occupancy_rate": "0%"
},
{
"date": "2023-11-22",
"hour": "06:00",
"occupancy_rate": "0%"
},
{
"date": "2023-11-22",
"hour": "07:00",
"occupancy_rate": "0%"
},
{
"date": "2023-11-29",
"hour": "08:00",
"occupancy_rate": "0.07%"
},
{
"date": "2023-11-22",
"hour": "09:00",
"occupancy_rate": "0.26%"
},
{
"date": "2023-11-24",
"hour": "10:00",
"occupancy_rate": "0.18%"
},
{
"date": "2023-11-22",
"hour": "11:00",
"occupancy_rate": "0.11%"
},
{
"date": "2023-11-23",
"hour": "12:00",
"occupancy_rate": "0.06%"
},
{
"date": "2023-11-22",
"hour": "13:00",
"occupancy_rate": "0.08%"
},
{
"date": "2023-11-21",
"hour": "14:00",
"occupancy_rate": "0.35%"
},
{
"date": "2023-11-29",
"hour": "15:00",
"occupancy_rate": "0.26%"
},
{
"date": "2023-11-20",
"hour": "16:00",
"occupancy_rate": "0.32%"
},
{
"date": "2023-11-22",
"hour": "17:00",
"occupancy_rate": "0.22%"
},
{
"date": "2023-11-22",
"hour": "18:00",
"occupancy_rate": "0.14%"
},
{
"date": "2023-11-21",
"hour": "19:00",
"occupancy_rate": "0.01%"
},
{
"date": "2023-11-22",
"hour": "20:00",
"occupancy_rate": "0%"
},
{
"date": "2023-11-22",
"hour": "21:00",
"occupancy_rate": "0.05%"
},
{
"date": "2023-11-21",
"hour": "22:00",
"occupancy_rate": "0.02%"
},
{
"date": "2023-11-22",
"hour": "23:00",
"occupancy_rate": "0.01%"
}
]
console.log(data)
if (!data || data.length <= 0) {
setHourData({})
@ -399,7 +276,7 @@ function ParkingAlyPeriod() {
);
//
let seriesData = areaNames.map((areaName, index) => {
let color2 = color[Math.round(Math.random()*10)]
let color2 = color[Math.round(Math.random() * 10)]
//
let areaData = data[0].date ? data.filter((item) => item.date === areaName) : data
//
@ -415,8 +292,8 @@ function ParkingAlyPeriod() {
},
normal: {
color: color2, //线
lineStyle:{
color:color2,
lineStyle: {
color: color2,
}
//线
}
@ -442,13 +319,7 @@ function ParkingAlyPeriod() {
};
});
setHourData({
...lineChartOption(areaNames, xAxisData, "饱和度", seriesData),
// tooltip: {
// trigger: "axis",
// formatter: "{a}<br/>{b}{c}",
// },
});
setHourData({ ...lineChartOption(areaNames, xAxisData, "饱和度", seriesData) });
};
function getParkingIncome(data) {
ajax
@ -462,14 +333,17 @@ function ParkingAlyPeriod() {
.catch((err) => console.error(err));
}
function getParkingData(data) {
setLoading(true)
setHourData({})
ajax
.getParkingAlyPeriodParkLine(data)
.then((res) => {
if (res.status === 20000) {
getParkOption(res.data.list?.area_list);
setKeyVal(res.data.list?.hour_list.length)
//setHourData({})
getParkOptionHour(res.data.list?.hour_list);
setLoading(false)
}
})
.catch((err) => console.error(err));
@ -824,7 +698,7 @@ function ParkingAlyPeriod() {
option={hourData}
style={{ height: "300px", width: "100%", overflow: "hidden", background: '#545d74' }}
/> :
<div className="no-data-box">暂无数据</div>
<div className="no-data-box">{loading ? "加载中" : "暂无数据"}</div>
)
:
(

2
src/pages/FinancialMgm/OrderInquiry/ParkingOrderInquiry/index.jsx

@ -929,7 +929,7 @@ function ParkingOrderInquiry(props) {
limitCon={limitCon}
search={searchOther}
/>
</div> : null
</div>: null
}
</Tabs.TabPane>
<Tabs.TabPane tab="订单修改记录" key="2">

21
src/pages/InRoadMgm/BusinessMgm/ChargeRules/EditModal.jsx

@ -21,6 +21,7 @@ const FormModal = (props) => {
const {
yisaData = {},
editVisible,
setGetEditVisible=()=>{},
editModal = () => { },
getEditData = {},
getData=()=>{}
@ -219,11 +220,21 @@ const FormModal = (props) => {
//
const onFinish = (data) => {
//
data['rules'].map(item => {
console.log(item);
item.details.map(item=>{
item["start"] = moment(item["start"]).format('HH:mm');
item["end"] = moment(item["end"]).format('HH:mm');
})
if (item.cdate) {
item["cdate"] = moment(item["cdate"]).format('YYYY-MM-DD HH:mm:ss');
}
})
if(handleFormValidation(data,0)&&handleFormValidation(data,1)){
let newData = handelDate(data, 1)
ajax.deleteChangeRules({source:newData}).then(res => {
// let newData = handelDate(data, 1)
ajax.deleteChangeRules({source:data}).then(res => {
if (res.status === 20000) {
editVisible = false
setGetEditVisible(false)
getData()
}
})
@ -231,14 +242,12 @@ const FormModal = (props) => {
};
useEffect(() => {
console.log("=================");
console.log(yisaData);
let newObj = { ...defaultData }
if (JSON.stringify(yisaData) != "{}") {
newObj = handelDate(yisaData, 2)
}
newObj.rules = newObj?.source?.rules
delete newObj.source
// delete newObj.source
//
init(newObj);
form.setFieldsValue(newObj);

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

@ -137,7 +137,7 @@ function ChargeRules(props) {
return <>
<Popover content={
<div className="black">
<div onClick={() => { deleteApplyBtn(record) }}>编辑</div>
<div onClick={() => { deleteApplyBtn(record,text) }}>编辑</div>
<div onClick={() => { applyBtn(record) }}>删除</div>
<div onClick={() => { bindPark(record) }}>绑定车场</div>
</div>}>
@ -148,9 +148,11 @@ function ChargeRules(props) {
},]
//
const [getEditData, setGetEditData] = useState({})
const deleteApplyBtn = (record) => {
const deleteApplyBtn = (record,text) => {
setGetEditVisible(true)
setGetEditData(record)
console.log(record);
console.log(text);
}
//
const [getDeleteData, setGetDeleteData] = useState({})
@ -477,7 +479,8 @@ function ChargeRules(props) {
// className='yisa-table'
dataSource={resultData.data}
columns={
handleColumns()
// handleColumns()
deployListColumns
}
pagination={false}
loading={ajaxLoading}
@ -500,7 +503,7 @@ function ChargeRules(props) {
</div>
<FormModal addVisible={addVisible} setGetAddVisible={setGetAddVisible} getData={()=>getData()} closAddModal={closAddModal} />
<EditModal editVisible={editVisible} editModal={editModal} getData={()=>getData()} yisaData={getEditData} />
<EditModal editVisible={editVisible} setGetEditVisible={setGetEditVisible} editModal={editModal} getData={()=>getData()} yisaData={getEditData} />
<Modal
visible={deleteVisible}
onCancel={deleteModal}

11
src/pages/InRoadMgm/BusinessMgm/SpecialRecord/loadable.jsx

@ -385,7 +385,7 @@ function CollectorWorkStat(props) {
setGetCheckData(record)
setGetCheckPic(record.image)
setCheckVisible(true)
getTable(Object.assign({}, lastColumnList, {white_id:record.id}))
getTable(Object.assign({}, lastColumnList, {white_id:record.id,pn:1}))
setGetTableId(record.id)
// setLastColumnList(Object.assign({},lastColumnList,{white_id:record.id}))
}
@ -408,6 +408,7 @@ function CollectorWorkStat(props) {
const applyModal = () => {
setApplyVisible(false)
}
const applyBtn = (record) => {
setGetCarStatus(record)
@ -431,11 +432,12 @@ function CollectorWorkStat(props) {
setExamineVisible(true)
setGetCheckData(record)
columnList(record)
getTable(Object.assign({}, lastColumnList, {white_id:record.id}))
getTable(Object.assign({}, lastColumnList, {white_id:record.id,pn:1}))
setGetTableId(record.id)
}
const examineModal = () => {
setExamineVisible(false)
setLastColumnData({...lastColumnData,pn:1})
}
const applyDeleteModal = () => {
setApplyDeleteVisible(false)
@ -587,9 +589,11 @@ function CollectorWorkStat(props) {
//
const checkModal = () => {
setCheckVisible(false)
setLastColumnData({...lastColumnData,pn:1})
}
const specialDataModal = () => {
setCheckVisible(false)
setLastColumnData({...lastColumnData,pn:1})
}
const deactivateModal = () => {
setDeactivateVisible(false)
@ -656,6 +660,7 @@ function CollectorWorkStat(props) {
setGetOpinion({
content: ''
})
setLastColumnData({...lastColumnData,pn:1})
}
//
const getData = (data = formData) => {
@ -1332,6 +1337,7 @@ function CollectorWorkStat(props) {
visible={checkVisible}
onCancel={checkModal}
footer={null}
destroyOnClose={true}
className="specialModal"
title='查看白名单'
>
@ -2065,6 +2071,7 @@ function CollectorWorkStat(props) {
visible={examineVisible}
onCancel={examineModal}
footer={null}
destroyOnClose={true}
className="examineModal"
title='查看白名单'
>

86
src/pages/InRoadMgm/PersonMgm/Performance/WorkerStat/index.scss

@ -1,9 +1,8 @@
@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);
$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;
@ -37,44 +36,46 @@ $color-primary : var(--color-primary);
border-radius: 4px;
}
}
.paid-employees{
.paid-employees {
display: flex;
padding: 15px;
width: 100%;
.paid-search{
.search{
.paid-search {
.search {
font-size: 16px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-family:
Microsoft YaHei,
Microsoft YaHei-Bold;
font-weight: 700;
text-align: left;
color: #eeeff1;
}
label{
margin:0 10px;
label {
margin: 0 10px;
}
.yisa-search{
.yisa-search {
margin-top: 10px;
}
.ant-select:not(.ant-select-customize-input) .ant-select-selector{
.ant-select:not(.ant-select-customize-input) .ant-select-selector {
background-color: #50586c !important;
}
.ant-select-arrow .anticon{
.ant-select-arrow .anticon {
background-color: #50586c !important;
}
.ant-input:placeholder-shown{
.ant-input:placeholder-shown {
background-color: #50586c !important;
}
.timePicker{
.timePicker {
width: 350px;
margin-top: 22px;
.btnBox{
display:flex ;
.yisa-btn{
.btnBox {
display: flex;
.yisa-btn {
margin-left: 20px;
}
.root_gfkk{
.root_gfkk {
margin-left: 20px;
.export-content{
.export-content {
width: 78px;
height: 33px;
display: flex;
@ -87,59 +88,76 @@ $color-primary : var(--color-primary);
margin-right: 10px;
}
}
}
}
}
.paid-result{
.paid-result {
width: 100%;
height: 800px;
background: #505a6f;
border-radius: 20px;
margin-left: 17px;
.result{
.result {
padding: 25px;
.font{
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
.font {
font-family:
Microsoft YaHei,
Microsoft YaHei-Regular;
font-weight: 400;
text-align: left;
color: #eeeff1;
margin-bottom: 10px;
display: inline-block;
em{
em {
color: #3aa8fe;
margin: 0 5px;
}
}
.yisa-table .ant-table-thead .ant-table-cell{
.cc-result-flow {
.ant-table-wrapper {
max-height: 680px;
overflow-y: scroll;
}
}
.ant-table-wrapper::-webkit-scrollbar {
width: 5px;
}
.ant-table-wrapper::-webkit-scrollbar-thumb {
background-color: #9da2ab;
border-radius: 10px;
}
.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-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{
.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{
.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-family:
Microsoft YaHei,
Microsoft YaHei-Regular;
font-weight: 400;
border-right: none !important;
border-left: none !important;
border-bottom-color: #626b7e !important;
}
}
}
}

78
src/pages/InRoadMgm/PersonMgm/Performance/WorkerStat/loadable.jsx

@ -9,7 +9,7 @@ import "./index.scss";
import { SearchOutlined, DeleteOutlined } from '@ant-design/icons';
import ajax from '@/services'
let array = []
const { Column, ColumnGroup } = Table;
function WorkerStat(props) {
// const configData = props.sysConfig["lib-deploy"] || {};
const [ajaxLoading, setAjaxLoading] = useState(false)
@ -74,8 +74,7 @@ function WorkerStat(props) {
//
const deployListColumns = [{
title: '商户名称',
dataIndex: 'operator',
key: 'operator'
},
{
title: '登录名',
@ -88,35 +87,29 @@ function WorkerStat(props) {
key: 'name',
},
{
title: '实收金额',
dataIndex: 'today_sale',
key: 'today_sale',
},
{
title: '追缴金额',
dataIndex: 'today_rate',
key: 'today_rate',
title: '营收金额',
dataIndex: 'revenue_amount',
key: 'revenue_amount',
},
{
title: '应收金额',
dataIndex: 'today_receive',
key: 'today_receive',
title: '预付金额',
dataIndex: 'prepaid_amount',
key: 'prepaid_amount',
},
{
title: '收费率',
dataIndex: 'sale_rate',
key: 'sale_rate',
title: 'PDA欠费追缴金额',
dataIndex: 'recovery_amount',
key: 'recovery_amount',
},
{
title: '入场操作数',
dataIndex: 'entry_operation_records_count',
key: 'entry_operation_records_count',
title: '入场操作记录数',
dataIndex: 'in_num',
key: 'in_num',
},
{
title: '出场操作数',
dataIndex: 'exit_operation_records_count',
key: 'exit_operation_records_count',
width: '120px',
title: '出场操作记录数',
dataIndex: 'out_num',
key: 'out_num',
}]
//
const getData = (data = formData) => {
@ -150,9 +143,9 @@ function WorkerStat(props) {
const changePn = (pn, length) => {
if (lastFormData.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 }))
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 }))
}
}
//
@ -186,8 +179,8 @@ function WorkerStat(props) {
})
}
//
const exportData=()=>{
let data={
const exportData = () => {
let data = {
...formData
}
ajax.statExport(data).then(res => {
@ -290,17 +283,22 @@ function WorkerStat(props) {
<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()
}
// rowKey={record => record.cap_id + "_" + record.bk_id}
pagination={false}
loading={ajaxLoading}
/>
<Table dataSource={resultData.data} pagination={false} loading={ajaxLoading}scroll={800} >
<Column title="商户名称" dataIndex='operator' key='operator' align="center"/>
<Column title="登录名" dataIndex='username' key='username' />
<Column title="姓名" dataIndex='name' key='name' />
<Column title="营收金额" dataIndex='revenue_amount' key='revenue_amount' />
<Column title="预付金额" dataIndex='prepaid_amount' key='prepaid_amount' />
<Column title="PDA欠费追缴金额" dataIndex='recovery_amount' key='recovery_amount' />
<Column title="入场操作记录数" dataIndex='in_num' key='in_num' />
<Column title="出场操作记录数" dataIndex='out_num' key='out_num' />
<ColumnGroup title="考核报告">
<Column title="未登记订单" dataIndex="unregisteredRecode" key="unregisteredRecode" />
<Column title="收费率" dataIndex="sale_rate" key="sale_rate" />
<Column title="异常考勤" dataIndex="abnormal_attendance" key="abnormal_attendance" />
<Column title="被稽查次数" dataIndex="is_check" key="is_check" />
</ColumnGroup>
</Table>
<Pagination
className="pagination-common"
showSizeChanger

6
src/pages/InRoadMgm/PersonMgm/PersonInfo/loadable.jsx

@ -427,6 +427,7 @@ function PersonInfo() {
const addPersonInfo = () => {
setShowEdit(true)
setGetEdit(false)
setCurrentPersonId("")
setTargetKeys([])
}
@ -441,9 +442,14 @@ function PersonInfo() {
useEffect(() => {
getAllOperator()
return () => setGetEdit(false)
// getPersonAllRoad()
}, [])
useEffect(()=>{
console.log(getEdit);
},[getEdit])
useEffect(() => {
if (!showEdit) {
setCurrentPersonInfo({

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

@ -775,7 +775,7 @@ function ParkRecordTotal() {
{
park_id: historyDataDetail.park_id,
plate: historyDataDetail.plate,
park_name: historyDataDetail?.third_party_flow_id,
park_name: historyDataDetail?.road,
in_time: historyDataDetail.in_time,
admission_time: historyDataDetail?.out_time,
},
@ -785,7 +785,7 @@ function ParkRecordTotal() {
/>
<Descriptions title="车场详情">
<Descriptions.Item label="停车场名称">
{historyDataDetail?.third_party_flow_id}
{historyDataDetail?.road}
</Descriptions.Item>
<Descriptions.Item label="区域">
{historyDataDetail.region}
@ -902,7 +902,7 @@ function ParkRecordTotal() {
>
<div>{historyDataDetail.examine_time}</div>
<div>来源:平台</div>
<div>操作人:{historyDataDetail.examine_person}</div>
<div>操作人:{historyDataDetail.dealer}</div>
</div>
</div>
</Timeline.Item>

39
src/pages/InRoadMgm/RoadMgm/ConfigRoad/loadable.jsx

@ -47,6 +47,7 @@ import {
TreeSelectGroup,
} from "@/components";
import "./index.scss";
import { getToken } from "@/config/cookie";
import { useSetState, useSessionStorageState, useUpdateEffect } from "ahooks";
const { TextArea } = Input;
@ -57,6 +58,7 @@ function ConfigRoad() {
const parking_id = location.search.split("=")[1].split("&")[0];
const operator_id = location.search.split("&")[1].split("=")[1];
const region_id = location.search.split("&")[2].split("=")[1];
const [modalBtnLoading,setModalBtnLoading] = useState(false)
//Form
const [berthForm] = Form.useForm();
const [dataForm] = Form.useForm();
@ -242,10 +244,13 @@ function ConfigRoad() {
video_content: "",
},
exporturl: "/api/bpm/berth/export",
downloadUrl: "",
downloadUrl: "api/bpm/berth/berth_import_template",
importProps: {
name: "file",
action: "/PMS/api/bpm/berth/import",
headers: {
Authorization: getToken(),
},
onChange(info) {
if (info.file.status !== "uploading") {
console.log(info.file, info.fileList);
@ -455,6 +460,9 @@ function ConfigRoad() {
importProps: {
name: "file",
data: { road_id: parking_id },
headers: {
Authorization: getToken(),
},
action: "/PMS/api/bpm/device/import_device",
onChange(info) {
if (info.file.status !== "uploading") {
@ -618,12 +626,15 @@ function ConfigRoad() {
},
],
key: "id",
exporturl: "",
exporturl: "/api/bpm/device/export_pole_position",
downloadUrl: "/api/bpm/device/pole_position_import_template",
importProps: {
name: "file",
action: "/PMS/api/bpm/device/import_pole_position",
data: { road_id: parking_id },
headers: {
Authorization: getToken(),
},
onChange(info) {
if (info.file.status !== "uploading") {
console.log(info.file, info.fileList);
@ -751,6 +762,7 @@ function ConfigRoad() {
<a
onClick={() => {
setCurRuleRecord(record);
console.log(record);
ruleForm.setFieldsValue({
vehicle_type: record.vehicle_type,
rule_id: record.rule_id,
@ -759,12 +771,14 @@ function ConfigRoad() {
});
// setSelectedBerth(record.berth_ids.split(",").map(item => +item))
setRuleModal(true);
// setIsRuleEdit(true);
if (record.berth_ids === '') {
setShowBerthSelect(false);
setIsRuleEdit(true);
} else {
setShowBerthSelect(true);
setIsRuleEdit(false);
}else {
setShowBerthSelect(true);
setIsRuleEdit(true);
}
let data = {
road_id: parking_id,
@ -1327,6 +1341,7 @@ function ConfigRoad() {
}
//
function handleDataAcquistionModal() {
setModalBtnLoading(true)
function addDevice(res) {
ajax
.addDevice({
@ -1336,6 +1351,7 @@ function ConfigRoad() {
})
.then((res) => {
if (res.status === 20000) {
setModalBtnLoading(false)
message.success(res.message);
setDataAcquistionModal({
...dataAcquistionModal,
@ -1344,6 +1360,7 @@ function ConfigRoad() {
formRef.current.getList();
} else {
message.error(res.message);
setModalBtnLoading(false)
}
});
}
@ -1812,6 +1829,7 @@ function ConfigRoad() {
</div>
<Modal
open={importGroup.visible}
destroyOnClose={true}
onCancel={() => {
setImportGroup({ ...importGroup, visible: false });
}}
@ -2073,10 +2091,11 @@ function ConfigRoad() {
{/* 计费规则添加弹窗 */}
<Modal
open={ruleModal}
// title={isRuleEdit ? '' : ''}
title={isRuleEdit ? '编辑' : '添加'}
width={1000}
onCancel={() => {
setRuleModal(false);
setSelectedBerth([]);
}}
style={{
top: 2,
@ -2121,9 +2140,10 @@ function ConfigRoad() {
<Radio.Group
disabled={getCarType || isRuleEdit}
onChange={(e) => {
console.log(e.target.value);
if (e.target.value === 1) {
setShowBerthSelect(true);
setShowBerthSelect(true);
} else {
setShowBerthSelect(false);
@ -2141,7 +2161,7 @@ function ConfigRoad() {
]}
/>
</Form.Item>
{showBerthSelect && isRuleEdit ? (
{showBerthSelect ? (
<Form.Item
label="对应的泊位号"
shouldUpdate={(preValue, curValue) => {
@ -2214,7 +2234,7 @@ function ConfigRoad() {
onCancel={() => {
setEditPoleModal({ ...editPoleModal, visible: false });
}}
title="编辑杆位"
title={editTitle?"编辑杆位":"添加杆位"}
onOk={submitPole}
>
<Form
@ -2335,6 +2355,7 @@ function ConfigRoad() {
onCancel={() => {
setDataAcquistionModal({ ...dataAcquistionModal, visible: false });
}}
confirmLoading={modalBtnLoading}
destroyOnClose
onOk={handleDataAcquistionModal}
title={dataAcquistionModal.isEdit ? "编辑设备" : "添加设备"}

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

@ -131,9 +131,9 @@ function ParkList() {
setGetMerchantDataName(res.data)
})
}
useEffect(()=>{
useEffect(() => {
merchantDataName()
},[])
}, [])
//
const berthOptions = [
{
@ -198,15 +198,16 @@ function ParkList() {
function onShowSizeChange(pn, page_size) {
setPageData({ pn, page_size });
}
function search(params) {
if(params){
if (params) {
setPageData({
pn: 1,
page_size: 15
})
}else{
} else {
const params = { ...searchForm.getFieldsValue(), ...pageData };
ajax.getBerthList(params).then((res) => {
@ -215,11 +216,14 @@ function ParkList() {
total_records: res.data.total,
data: res.data.list,
});
handleClick()
}
});
}
}
function handleClick() {
window.scrollTo(0, 0);
}
//
function renderSearch(params) {
return (
@ -270,19 +274,19 @@ function ParkList() {
function getParkingItem(plate) {
ajax.getRecordList({ plate, order_type: 1 }).then((res) => {
if (res.status === 20000) {
res.data.list.map(res=>{
res.data.list.map(res => {
setCurrentParkingItem(res);
})
}else{
} else {
message.error(res.message)
}
});
}
const reastBtn=()=>{
const reastBtn = () => {
searchForm.resetFields();
search();
}
}
useEffect(() => {
search();
}, [pageData]);
@ -294,7 +298,7 @@ const reastBtn=()=>{
{renderSearch()}
<div className="bottomBox">
<Button className="reset" onClick={reastBtn}>清空</Button>
<Button type="primary" className="submit" onClick={() => search(pageData.pn)}>
<Button type="primary" className="submit" onClick={() => handleClick(pageData.pn)}>
查询
</Button>
</div>
@ -317,6 +321,7 @@ const reastBtn=()=>{
<div className="table-wrap">
<Table
// className="yisa-table"
className="tableTop"
columns={columns}
dataSource={resultData.data}
pagination={false}
@ -438,7 +443,7 @@ const reastBtn=()=>{
/>
</Descriptions.Item>
<Descriptions.Item label="ETC是否开启">
{berthItem.etc_status_name }
{berthItem.etc_status_name}
</Descriptions.Item>
<Descriptions.Item label="泊位类型">
{berthOptions[berthItem.berth_type]?.label}

17
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/AddParking.jsx

@ -44,6 +44,7 @@ function AddParking(props) {
}
});
const [lngLatVisible, setLngLatVisible] = useState(false);
const [topBerthNum, setTopBerthNum] = useState();
const [lngLat, setLngLat] = useState(() => {
if (status === "add") return [];
else {
@ -167,8 +168,12 @@ function AddParking(props) {
cooperate_type,
access_type,
lng_lat,
area
area,
total_berth_number,
berth_number//
} = res.data;
let num = parseInt(total_berth_number) - parseInt(berth_number)
setTopBerthNum(num)
let arr = []
arr.push(area)
form.setFieldsValue({
@ -179,7 +184,7 @@ function AddParking(props) {
is_business,
cooperate_type,
access_type,
area_id:getAreaArr(areaList, area),
area_id: getAreaArr(areaList, area),
});
setLngLat(lng_lat.split(","));
}
@ -212,11 +217,11 @@ function AddParking(props) {
}
//
function editOutSegmentRoad(params) {
ajax.editOutSegmentRoad(params).then((res) => {
ajax.editOutSegmentRoad({ ...params, id: record.id }).then((res) => {
if (res.status === 20000) {
message.success("编辑成功");
close();
location.reload();
//location.reload();
} else {
message.error(res.message);
}
@ -237,6 +242,10 @@ function AddParking(props) {
message.error('车场泊位数必须为数字!')
return
}
if (topBerthNum && parseFloat(total_berth_number) < topBerthNum) {
message.error('下级车场泊位数与一级车场泊位数之和不超过泊位总数!此处总车场泊位数不超过' + topBerthNum)
//return
}
const params = {
...values,
img: processImgData(fileList),

25
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/BusinessParameterConfig.jsx

@ -16,16 +16,37 @@ function BusinessParameterConfig(props) {
ajax.getRoadServiceEdit(params).then((res) => {
if (res.status === 20000) {
message.success(res.message);
}else{
message.error("请填写完整!")
}
});
}
useEffect(() => {
ajax.getRoadAllChild().then((res) => {
ajax.getRoadAllChild({ road_id: id }).then((res) => {
if (res.status === 20000) {
setChildList(res.data);
}
});
ajax.getRoadServiceParameters({ road_id: id }).then((res) => {
// res = {
// "status": 20000,
// "message": "success",
// "data": {
// "id": "1777413854377155803",
// "road_id": "1777413807249260948",
// "unlicensed_vehicle": 1,
// "similar_plates": 0,
// "monthly_rental_car": 1,
// "military_police_vehicles": 0,
// "free_time": 30,
// "arrearage": 0,
// "road_bias": "0"
// }
// }
if (res.status === 20000) {
form.setFieldsValue({ ...res.data })
}
});
}, []);
return (
<div style={{ width: "100%" }} className="Bussiness">

48
src/pages/SystemMgm/AdminMgm/loadable.jsx

@ -97,12 +97,18 @@ function AdminMgm(props) {
setAddManage({ ...addManage, email: e.target.value })
};
//
const [governmentStatus, setGovernmentStatus] = useState(true)
const [getPartName, setGetPartName] = useState([])
const handleDeptName = (v) => {
const handleDeptName = (v, selectedOptions) => {
console.log(v);
setGetRoleStatus(false)
setAddManage({ ...addManage, deptName: v })
setGetPartName(v)
if (selectedOptions.length === 1) {
setGovernmentStatus(false)
} else {
setGovernmentStatus(true)
}
};
const [getRoleStatus, setGetRoleStatus] = useState(true)
//
@ -125,8 +131,12 @@ function AdminMgm(props) {
}
}, [getPartName])
//
const [getAreaStatus, setGetAreaStatus] = useState(false)
const handleGovernmentType = (v) => {
setGetGovernment(v)
if (v === 1) {
setGetAreaStatus(true)
}
setAddManage({ ...addManage, government_style: v })
}
//
@ -207,6 +217,7 @@ function AdminMgm(props) {
})
getData(formData)
setGetRoleStatus(true)
setGetAreaStatus(false)
}
})
}
@ -347,6 +358,9 @@ function AdminMgm(props) {
const [getGovernment, setGetGovernment] = useState({})
const handleGovernment = (v) => {
setGetGovernment(v)
if (v === 1) {
setGetAreaStatus(true)
}
setGetImg({ ...getImg, government_style: v })
}
const [getGovernmentArea, setGetGovernmentArea] = useState([])
@ -444,12 +458,14 @@ function AdminMgm(props) {
messageRole: 0,
failure_time: ''
})
setGetAreaStatus(false)
}
const cancelImg = () => {
setEditVisible(false)
setDepartVisible(false)
setPasswordVisible(false)
setGetRoleStatus(true)
setGetAreaStatus(false)
}
const addcancelImg = () => {
setImgVisible(false)
@ -465,6 +481,7 @@ function AdminMgm(props) {
messageRole: 0,
failure_time: ''
})
setGetAreaStatus(false)
}
//
const getData = (data = formData) => {
@ -518,6 +535,7 @@ function AdminMgm(props) {
const editModal = () => {
setEditVisible(false)
setGetRoleStatus(true)
setGetAreaStatus(false)
}
//
const placeEditBtn = () => {
@ -530,6 +548,7 @@ function AdminMgm(props) {
setEditVisible(false)
getData(formData)
setGetRoleStatus(true)
setGetAreaStatus(false)
}
})
}
@ -746,6 +765,7 @@ function AdminMgm(props) {
<Select
style={{ width: 260, marginLeft: 14 }}
placeholder="请选择"
disabled={governmentStatus}
value={addManage.government_style}
options={[
{
@ -763,6 +783,8 @@ function AdminMgm(props) {
/>
</div>
{
getAreaStatus ?
<div className="yisa-search" style={{ marginLeft: 19 }}>
<label>管辖区域</label>
<Tree
@ -778,7 +800,9 @@ function AdminMgm(props) {
children: 'children'
}}
/>
</div>
</div> : ''
}
<div className="yisa-search">
<label>管辖车场接入方式</label>
<Radio.Group onChange={onChangeCarType} value={addManage.car_type} style={{ marginLeft: 30 }}>
@ -847,12 +871,12 @@ function AdminMgm(props) {
title='添加/修改管理员'
>
<div className="addAdmin">
<div className="yisa-search" style={{ marginLeft: 10}}>
<div className="yisa-search" style={{ marginLeft: 10 }}>
<label>手机号</label>
<Input
placeholder="请输入手机号"
value={getImg.mobile}
style={{ width: 260, marginLeft: 14}}
style={{ width: 260, marginLeft: 14 }}
onChange={(v) => {
setGetImg(
Object.assign({}, getImg, { mobile: v.target.value })
@ -921,12 +945,17 @@ function AdminMgm(props) {
value={getImg.deptName}
options={getPlateColor}
changeOnSelect
onChange={(v) => {
onChange={(v, selectedOptions) => {
setGetImg(
Object.assign({}, getImg, { deptName: v })
);
setGetRoleStatus(false)
setGetPartName(v)
if (selectedOptions.length === 1) {
setGovernmentStatus(false)
} else {
setGovernmentStatus(true)
}
}}
fieldNames={{
label: 'name',
@ -935,7 +964,7 @@ function AdminMgm(props) {
}}
/>
</div>
<div className="yisa-search" style={{marginLeft:24}}>
<div className="yisa-search" style={{ marginLeft: 24 }}>
<label>角色</label>
<Select
style={{ width: 260, marginLeft: 18 }}
@ -955,6 +984,7 @@ function AdminMgm(props) {
<Select
style={{ width: 260, marginLeft: 14 }}
placeholder="请选择"
disabled={governmentStatus}
value={getImg.government_style}
options={[{
value: 1,
@ -971,6 +1001,8 @@ function AdminMgm(props) {
/>
</div>
{
getAreaStatus ?
<div className="yisa-search">
<label>管辖区域</label>
<Tree
@ -986,7 +1018,9 @@ function AdminMgm(props) {
children: 'children'
}}
/>
</div>
</div> : ''
}
<div className="yisa-search">
<label>管辖车场接入方式</label>
<Radio.Group

43
src/pages/SystemMgm/RoleMgm/loadable.jsx

@ -86,6 +86,9 @@ function RoleMgm(props) {
arr.push(res.id)
res.children?.map(res => {
arr.push(res.id)
res.children?.map(res => {
arr.push(res.id)
})
})
})
})
@ -112,12 +115,17 @@ function RoleMgm(props) {
arr.push(res.id)
res.children?.map(res => {
arr.push(res.id)
res.children?.map(res => {
arr.push(res.id)
})
})
})
})
})
let string = arr.toString()
setCheckedKeys(arr)
arr.sort(compareNumbers)
console.log(arr);
setGetCheckVlue(true)
// getCheckValue
setGetImg({ ...getImg, auth: string })
@ -125,6 +133,10 @@ function RoleMgm(props) {
setCheckedKeys([])
}
}
function compareNumbers(a, b) {
return a - b;
}
function calculateArrayLength(arr) {
let count = 0;
arr.forEach((item) => {
@ -153,11 +165,13 @@ function RoleMgm(props) {
useEffect(() => {
// console.log(checkedKeys);
console.log("监听");
console.log(allGover.map(item=>item.id).toString());
console.log(allGover.map(item => item.id).sort(compareNumbers));
//
if ((checkedKeys.length >= allGover.length) && checkedKeys.length != 0) {
setGetCheckVlue(true)
} else {
}
else {
setGetCheckVlue(false)
}
}, [checkedKeys])
@ -403,11 +417,15 @@ function RoleMgm(props) {
const placeEditBtn = () => {
let arr = checkedKeys
let str = arr.toString()
let arrStr = getImg.depart_id
let lastElement = arrStr[arrStr.length - 1];
let data = {
...getImg,
auth: str,
id: getAdminId.id
id: getAdminId.id,
depart_id:lastElement
}
ajax.editChange(data).then(res => {
if (res.status === 20000) {
setEditVisible(false)
@ -435,10 +453,13 @@ function RoleMgm(props) {
}
));
}
// const [getKey,setGetKey]=useState([])
useEffect(() => {
let arrStr = getImg.depart_id
let lastElement = arrStr[arrStr.length - 1];
if (getGovernment != 0) {
let data = {
id: getGovernment
id: lastElement
}
ajax.getDepartId(data).then(res => {
if (res.status === 20000) {
@ -451,6 +472,12 @@ function RoleMgm(props) {
let data = JSON.parse(JSON.stringify(res.data))
const arr = flatten(data)
const length = calculateArrayLength(res.data);
let key = arr.filter(item => {
return item.key
})
let arr_id = key.map(item => item.id)
console.log(arr_id);
setCheckedKeys(arr_id);
setRoleLength(length)
// console.log(arr);
setAllGover(arr)
@ -554,7 +581,7 @@ function RoleMgm(props) {
<Cascader
style={{ width: 260, marginLeft: 50 }}
placeholder="请选择"
value={addManage.depart_id}
// value={addManage.depart_id}
options={getPlateColor}
changeOnSelect
onChange={handleDeptName}
@ -636,11 +663,9 @@ function RoleMgm(props) {
options={getPlateColor}
changeOnSelect
onChange={(v) => {
let arr = v
let lastElement = arr[arr.length - 1];
setGetGovernment(lastElement)
setGetGovernment(v)
setGetImg(
Object.assign({}, getImg, { depart_id: lastElement })
Object.assign({}, getImg, { depart_id: v })
);
}}
fieldNames={{

2
src/services/OutRoadMgm/OutSegment.js

@ -75,7 +75,7 @@ const editRoadMs = (params) => {
data: params,
});
};
///api/orp/road/edit_road_ms 编辑路段MS通信账号
///api/orp/road/edit_road_ms 添加路段MS通信账号
const addRoadMs = (params) => {
return ajax({
url: "/api/orp/road/add_road_ms",

Loading…
Cancel
Save