Browse Source

fix():路外系统bug修改

tags/PMS_Frontend_v1.0.6-develop
xingjx 1 year ago
parent
commit
ac9fcfc0f7
  1. 2
      src/components/form/FormDateRange/index.jsx
  2. 2
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/loadable.jsx
  3. 24
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyDuration/loadable.jsx
  4. 88
      src/pages/OutRoadMgm/OutBusinessRecord/OutPayOrders/loadable.jsx
  5. 95
      src/pages/OutRoadMgm/OutExceptionMgm/ZombieCarCleanRecord/loadable.jsx
  6. 72
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/CarGroupMgm.jsx
  7. 47
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/CarManagement.jsx
  8. 2
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/index.jsx
  9. 2
      src/services/DataAnalysisPrediction/ParkingBusinessAly/index.js
  10. 19
      src/services/OutRoadMgm/OutSegment.js
  11. 3
      src/services/search.js

2
src/components/form/FormDateRange/index.jsx

@ -46,7 +46,7 @@ export default function FormDateRange(props) {
useEffect(() => { useEffect(() => {
if (JSON.stringify(value) != JSON.dateRange) { if (JSON.stringify(value) != JSON.dateRange) {
console.log(value, 'range value') console.log(value, 'range value')
if(typeof value == 'string' && value.includes(',')){
if(typeof value == 'string' && value?.includes(',')){
setDateRange([value.split(',')[0], value.split(',')[1]]); setDateRange([value.split(',')[0], value.split(',')[1]]);
}else{ }else{
setDateRange(value); setDateRange(value);

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

@ -180,7 +180,7 @@ function NightParkStat() {
}; };
}); });
setRevenueData(lineChartOption(areaNames, xAxisData, "", seriesData));
setRevenueData(lineChartOption(areaNames, xAxisData, "停车时长(小时)", seriesData));
}; };
// //
const TimeChange = () => { const TimeChange = () => {

24
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyDuration/loadable.jsx

@ -34,6 +34,10 @@ function ParkingAlyDuration() {
pn: 1, pn: 1,
page_size: 10 page_size: 10
}); });
const [pageCarInfo, setPageCarInfo] = useState({
pn: 1,
page_size: 10
});
// //
const [formData, setFormData] = useState({ const [formData, setFormData] = useState({
...defaultData, ...defaultData,
@ -214,7 +218,25 @@ function ParkingAlyDuration() {
//getListData({}) //getListData({})
}, },
} }
const paginationCarProps = {
className: "pagination-common",
showQuickJumper: true,
showSizeChanger: true,
current: pageCarInfo.pn,
//total: resultData?.totalRecords,
pageSize: pageCarInfo.page_size,
pageSizeOptions: Array.from(
new Set([...[15], ...(dictionary?.pageSizeOptions || [])])
),
onChange: (current, size) => {
setPageCarInfo({
...pageInfo,
...{ pn: current, page_size: size }
});
setIsAjax(!isAjax)
//getListData({})
},
}
// useEffect(() => { // useEffect(() => {
// getData() // getData()
// }, [pageInfo]) // }, [pageInfo])

88
src/pages/OutRoadMgm/OutBusinessRecord/OutPayOrders/loadable.jsx

@ -141,93 +141,7 @@ function OutPayOrders() {
<> <>
<TableModule <TableModule
columns={columns} columns={columns}
tableData={[
{
"order_id": "1698798150674334",
"road_id": null,
"berth_id": null,
"plate": null,
"admission_time": "2023-10-30 08:38:09",
"charging_time": "2023-10-30 08:56:25",
"parking_duration": "19696天9小时9分钟",
"receivable_amount": null,
"paid_in_money": "2.00",
"preferential_amount": null,
"payment_channels": null,
"payment_equipment": null,
"dealer_id": null,
"dealer": null,
"pay_road_id": null,
"pay_road": null,
"third_party_flow_id": null,
"pay_time": "2023-11-01 08:22:30",
"park_record_id": "1781138759907352059",
"pay_person": null,
"pay_person_id": "1808424652081635535",
"car_id": 1974275254507835000,
"payment_type": 1,
"out_trade_no": null,
"pay_status": 2,
"plate_type_id": 0,
"initiate_payment_time": null,
"create_time": "2023-11-01 08:22:30",
"update_time": "0000-00-00 00:00:00",
"refund_status": 0,
"is_delete": 0,
"prepay_id": null,
"payment_method": null,
"road_discount": "0.00",
"is_parking": 0,
"pay_channel_id": null,
"plate_type": null,
"in_time": null,
"out_time": null,
"actual_amount": null,
"road": null
},
{
"order_id": "1698804273659582",
"road_id": null,
"berth_id": null,
"plate": null,
"admission_time": "2023-10-28 13:04:28",
"charging_time": "2023-10-31 11:56:59",
"parking_duration": "19696天9小时9分钟",
"receivable_amount": null,
"paid_in_money": "38.00",
"preferential_amount": null,
"payment_channels": "微信",
"payment_equipment": "微信小程序",
"dealer_id": 1807107891635555600,
"dealer": null,
"pay_road_id": null,
"pay_road": null,
"third_party_flow_id": "4200002050202311011865032770",
"pay_time": "2023-11-01 10:04:40",
"park_record_id": "1780974369784877499",
"pay_person": null,
"pay_person_id": "1807107891635555564",
"car_id": 1974345032456966000,
"payment_type": 1,
"out_trade_no": "1698804270833839",
"pay_status": 2,
"plate_type_id": 0,
"initiate_payment_time": "2023-11-01 10:04:33",
"create_time": "2023-11-01 10:04:33",
"update_time": "2023-11-01 10:04:40",
"refund_status": 0,
"is_delete": 0,
"prepay_id": "wx01100431110898328836a2a14b70ae0000",
"payment_method": null,
"road_discount": "0.00",
"is_parking": 0,
"pay_channel_id": null,
"plate_type": null,
"in_time": null,
"out_time": null,
"actual_amount": null,
"road": null
},]}
tableData={tableData || []}
formSearch={formSearch} formSearch={formSearch}
total={total} total={total}
pagename="停车支付订单" pagename="停车支付订单"

95
src/pages/OutRoadMgm/OutExceptionMgm/ZombieCarCleanRecord/loadable.jsx

@ -1,6 +1,6 @@
import React, { useState, useRef, useEffect } from "react"; import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult } from "@/components" import { ResultFlowResult } from "@/components"
import { Button, Table, message, Pagination, Input, Modal, Image, DatePicker, Space, Tabs } from 'antd'
import { Button, Table, message, Pagination, Input, Modal, Image, DatePicker, Space, Tabs, Form, Radio } from 'antd'
import { import {
pageSizeOptions pageSizeOptions
} from '@/config/character.config.js' } from '@/config/character.config.js'
@ -30,6 +30,16 @@ function ZombieCarCleanRecord(props) {
page_size: Number(pageSizeOptions[0]), // page_size: Number(pageSizeOptions[0]), //
} }
const [formData, setFormData] = useState(parameter) const [formData, setFormData] = useState(parameter)
//tip
const [exportModal, setExportModal] = useState({
visible: false,
filename:
'pagename' +
(new Date().getMonth() + 1).toString().padStart(2, "0") +
new Date().getDate(),
});
const [expType, setExpType] = useState(0)
const [expForm] = Form.useForm();
const [lastFormData, setLastFormData] = useState(formData) const [lastFormData, setLastFormData] = useState(formData)
const lastFormDataRef = useRef(formData) const lastFormDataRef = useRef(formData)
const [imgVisible, setImgVisible] = useState(false) const [imgVisible, setImgVisible] = useState(false)
@ -37,24 +47,24 @@ function ZombieCarCleanRecord(props) {
const [sessionTabList, setSessionTabList] = useSessionStorageState('zombieCarCleanRecord', { const [sessionTabList, setSessionTabList] = useSessionStorageState('zombieCarCleanRecord', {
value: { value: {
} }
})
useEffect(() => {
})
useEffect(() => {
if (sessionTabList && Object.values(sessionTabList).length > 0) { if (sessionTabList && Object.values(sessionTabList).length > 0) {
setFormData({
...formData, ...sessionTabList
})
getData({
...formData,...sessionTabList
})
setFormData({
...formData, ...sessionTabList
})
getData({
...formData, ...sessionTabList
})
} else { } else {
getData()
getData()
} }
}, [])
useEffect(() => {
}, [])
useEffect(() => {
setSessionTabList({ setSessionTabList({
...formData
...formData
}) })
}, [formData])
}, [formData])
// //
const handleCarAppealId = (v) => { const handleCarAppealId = (v) => {
setFormData({ ...formData, parkName: v.target.value }) setFormData({ ...formData, parkName: v.target.value })
@ -340,7 +350,7 @@ function ZombieCarCleanRecord(props) {
setFormData(Object.assign({}, formData, { pn: pn, page_size: length })) setFormData(Object.assign({}, formData, { pn: pn, page_size: length }))
setLastFormData(Object.assign({}, lastFormData, { pn: pn })) setLastFormData(Object.assign({}, lastFormData, { pn: pn }))
lastFormDataRef.current = Object.assign({}, lastFormData, { pn: pn }) lastFormDataRef.current = Object.assign({}, lastFormData, { pn: pn })
getData(Object.assign({}, formData, { pn: pn, page_size: length }))
getData(Object.assign({}, formData, { pn: pn, page_size: length }))
} }
} }
// //
@ -428,6 +438,16 @@ function ZombieCarCleanRecord(props) {
// useEffect(() => { // useEffect(() => {
// getData() // getData()
// }, []) // }, [])
function handleOk() {
let data = {
...formData,
export_type:expType==1?'all':null
}
ajax.zombieExport(data).then(res => {
window.open(res.data?.url||res.data?.export_url)
})
setExportModal({ ...exportModal, visible: false })
}
return <> return <>
<div className="paid-ZombieCarCleanRecord"> <div className="paid-ZombieCarCleanRecord">
<div className="paid-search"> <div className="paid-search">
@ -486,7 +506,7 @@ function ZombieCarCleanRecord(props) {
<Button type="primary" className="yisa-btn" icon={<DeleteOutlined />} onClick={() => { getResetData() }}> <Button type="primary" className="yisa-btn" icon={<DeleteOutlined />} onClick={() => { getResetData() }}>
清空 清空
</Button> </Button>
<Button type="primary" className="yisa-btn" onClick={() => { salesData() }}>
<Button type="primary" className="yisa-btn" onClick={() => { setExportModal({ ...exportModal, visible: true }) }}>
导出 导出
</Button> </Button>
<Button type="primary" className="yisa-btn" disabled={true} onClick={() => { sameBtn() }}> <Button type="primary" className="yisa-btn" disabled={true} onClick={() => { sameBtn() }}>
@ -642,17 +662,17 @@ function ZombieCarCleanRecord(props) {
} }
{getTab === '3' ? {getTab === '3' ?
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={getRefundList ? getRefundList : []}>
<Table
bordered
// className='yisa-table'
dataSource={getRefundList}
columns={
handleRefund()
}
pagination={false}
loading={ajaxLoading}
/>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={getRefundList ? getRefundList : []}>
<Table
bordered
// className='yisa-table'
dataSource={getRefundList}
columns={
handleRefund()
}
pagination={false}
loading={ajaxLoading}
/>
</ResultFlowResult> </ResultFlowResult>
: '' : ''
} }
@ -673,6 +693,27 @@ function ZombieCarCleanRecord(props) {
<button className="rejectBtn" onClick={rejectCancel}>取消</button> <button className="rejectBtn" onClick={rejectCancel}>取消</button>
</div> </div>
</Modal> </Modal>
<Modal
open={exportModal.visible}
onCancel={() => setExportModal({ ...exportModal, visible: false })}
title="导出"
onOk={handleOk}
>
{/* <Form form={expForm}>
<Form.Item
label="文件名"
name="filename"
//initialValue={pageName == 'arrearsCar' ? '' + moment().format('YYYYMMDDHHmmss') : exportModal.filename}
rules={[{ required: true }]}
>
<Input defaultValue={exportModal.filename} />
</Form.Item>
</Form> */}
<Radio.Group onChange={(e) => { setExpType(e.target.value)}} value={expType}>
<Radio value={0}>导出当前页</Radio>
<Radio value={1}>导出全部</Radio>
</Radio.Group>
</Modal>
</> </>
} }

72
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/CarGroupMgm.jsx

@ -60,6 +60,7 @@ function CarGroupMgm({ id }) {
setEditModal({ setEditModal({
visible: true, visible: true,
data: record, data: record,
add: 0,
}); });
editForm.setFieldsValue({ editForm.setFieldsValue({
name: record.name, name: record.name,
@ -80,6 +81,7 @@ function CarGroupMgm({ id }) {
const [editModal, setEditModal] = useState({ const [editModal, setEditModal] = useState({
visible: false, visible: false,
data: {}, data: {},
add: 0
}); });
const [pageData, setPageData] = useState({ const [pageData, setPageData] = useState({
pn: 1, pn: 1,
@ -124,6 +126,53 @@ function CarGroupMgm({ id }) {
}); });
}, []); }, []);
const toCarGroup = (type) => {
let data = editForm.getFieldsValue()
type == 1 ?
ajax
.getAddCarGroup(data)
.then((res) => {
if (res.status === 20000) {
message.success(res.message)
setEditModal({
visible: false,
data: {},
add: 0,
});
setPageData({
pn: 1,
page_size: 15,
});
} else {
message.error(res.message);
}
})
.catch((err) => {
console.log(err);
})
:
ajax
.getEditCarGroup(data)
.then((res) => {
if (res.status === 20000) {
message.success(res.message)
setEditModal({
visible: false,
data: {},
add: 0,
});
setPageData({
pn: 1,
page_size: 15,
});
} else {
message.error(res.message);
}
})
.catch((err) => {
console.log(err);
});
}
useEffect(() => { useEffect(() => {
getVehicleGroup(); getVehicleGroup();
}, [pageData]); }, [pageData]);
@ -135,8 +184,8 @@ function CarGroupMgm({ id }) {
labelCol={{ span: 6 }} labelCol={{ span: 6 }}
form={searchForm} form={searchForm}
initialValues={{ initialValues={{
group_id: 0,
vehicle_type: 0,
group_id: '0',
vehicle_type: '0',
}} }}
> >
<Row> <Row>
@ -193,6 +242,7 @@ function CarGroupMgm({ id }) {
setEditModal({ setEditModal({
visible: true, visible: true,
data: {}, data: {},
add: 1,
}); });
editForm.resetFields(); editForm.resetFields();
}} }}
@ -223,21 +273,29 @@ function CarGroupMgm({ id }) {
</main> </main>
{/* 编辑和新增弹窗 */} {/* 编辑和新增弹窗 */}
<Modal <Modal
title="编辑车辆组"
title={editModal.add ? "添加车辆组" : "编辑车辆组"}
open={editModal.visible} open={editModal.visible}
onCancel={() => setEditModal({ visible: false })}
onCancel={() => setEditModal({ visible: false, add: 0 })}
onOk={() => { toCarGroup(editModal.add) }}
width={1000} width={1000}
> >
<Form colon={false} labelCol={{ span: 6 }} form={editForm}> <Form colon={false} labelCol={{ span: 6 }} form={editForm}>
<Row> <Row>
<Col span="4_8" style={{ width: "30%" }}> <Col span="4_8" style={{ width: "30%" }}>
<Form.Item label="车辆组名称" name="name"> <Form.Item label="车辆组名称" name="name">
<Input max />
<Input maxLength={15} showCount={true} />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span="4_8" style={{ width: "30%" }}> <Col span="4_8" style={{ width: "30%" }}>
<Form.Item label="车辆类型" name="vehicle_type"> <Form.Item label="车辆类型" name="vehicle_type">
<Select />
<Select
options={[
{ label: "免费车", value: 1 },
{ label: "临时车", value: 2 },
{ label: "军警车", value: 3 },
{ label: "月租车", value: 4, disabled: true },
]}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span="4_8" style={{ width: "30%" }}> <Col span="4_8" style={{ width: "30%" }}>
@ -252,7 +310,7 @@ function CarGroupMgm({ id }) {
</Col> </Col>
<Col style={{ width: "30%" }}> <Col style={{ width: "30%" }}>
<Form.Item label="备注" name="note"> <Form.Item label="备注" name="note">
<TextArea />
<TextArea maxLength={20} showCount={true} />
</Form.Item> </Form.Item>
</Col> </Col>
</Row> </Row>

47
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/CarManagement.jsx

@ -16,9 +16,10 @@ import {
} from "antd"; } from "antd";
const { TextArea } = Input; const { TextArea } = Input;
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
function CarManagement({ id: road_id }) {
function CarManagement({ id }) {
const [form] = Form.useForm(); const [form] = Form.useForm();
const [editForm] = Form.useForm(); const [editForm] = Form.useForm();
const [carGroup, setCarGroup] = useState([]);
const columns = [ const columns = [
{ {
title: "序号", title: "序号",
@ -68,6 +69,7 @@ function CarManagement({ id: road_id }) {
dataIndex: "effective_status", dataIndex: "effective_status",
key: "effective_status", key: "effective_status",
align: "center", align: "center",
}, },
{ {
title: "状态", title: "状态",
@ -135,7 +137,7 @@ function CarManagement({ id: road_id }) {
</> </>
} }
> >
<Button type="primary">编辑</Button>
<Button type="primary">操作</Button>
</Popover> </Popover>
); );
}, },
@ -208,6 +210,21 @@ function CarManagement({ id: road_id }) {
useEffect(() => { useEffect(() => {
submit(); submit();
}, [pageData]); }, [pageData]);
useEffect(() => {
ajax
.getAllCarGroup({ road_id: id })
.then((res) => {
if (res.status === 20000) {
setCarGroup(res.data);
} else {
message.error(res.message);
}
})
.catch((err) => {
console.log(err);
});
}, []);
return ( return (
<div style={{ margin: "20px 0 0" }}> <div style={{ margin: "20px 0 0" }}>
<header> <header>
@ -216,11 +233,16 @@ function CarManagement({ id: road_id }) {
colon={false} colon={false}
labelCol={{ span: 6 }} labelCol={{ span: 6 }}
onFinish={submit} onFinish={submit}
initialValues={{
group_id: '0',
effective_status: '0',
status:'0'
}}
> >
<Row> <Row>
<Col span="4_8" style={{ width: "30%" }}> <Col span="4_8" style={{ width: "30%" }}>
<Form.Item label="车辆组" name="group_id"> <Form.Item label="车辆组" name="group_id">
<Select />
<Select options={carGroup} />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span="4_8" style={{ width: "30%" }}> <Col span="4_8" style={{ width: "30%" }}>
@ -240,12 +262,25 @@ function CarManagement({ id: road_id }) {
</Col> </Col>
<Col span="4_8" style={{ width: "30%" }}> <Col span="4_8" style={{ width: "30%" }}>
<Form.Item label="生效状态" name="effective_status"> <Form.Item label="生效状态" name="effective_status">
<Select />
<Select
options={[
{ label: "全部", value: '0' },
{ label: "未生效", value: '1' },
{ label: "生效中", value: '2 ' },
{ label: "已过期", value: '3' },
]}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span="4_8" style={{ width: "30%" }}> <Col span="4_8" style={{ width: "30%" }}>
<Form.Item label="状态" name="status"> <Form.Item label="状态" name="status">
<Select />
<Select
options={[
{ label: "全部", value: '0' },
{ label: "启用", value: '1' },
{ label: "禁用", value: '2' },
]}
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span="4_8" style={{ width: "30%" }}> <Col span="4_8" style={{ width: "30%" }}>
@ -266,7 +301,7 @@ function CarManagement({ id: road_id }) {
> >
添加 添加
</Button> </Button>
<Button type="primary">批量导入</Button>
<Button type="primary" onClick={()=>{}}>批量导入</Button>
</div> </div>
</Form.Item> </Form.Item>
</Col> </Col>

2
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/index.jsx

@ -17,7 +17,7 @@ function CarMgm(props) {
{ {
label: "车辆管理", label: "车辆管理",
key: "2", key: "2",
children: <CarManagement />,
children: <CarManagement id={id} group_id={1}/>,
}, },
{ {
label: "错峰车辆管理", label: "错峰车辆管理",

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

@ -90,7 +90,7 @@ const getParkingAlyDurationParkingExp = (params) => {
//停车业务分析-停车时长分析-平均停车时长排行榜导出 //停车业务分析-停车时长分析-平均停车时长排行榜导出
const getParkingAlyDurationExp = (params) => { const getParkingAlyDurationExp = (params) => {
return ajax({ return ajax({
url: "/get_parking_duration_export",
url: "/api/ana/dataanalysis/get_parking_duration_export",
type: "post", type: "post",
data: params, data: params,
}); });

19
src/services/OutRoadMgm/OutSegment.js

@ -93,7 +93,22 @@ const getAllCarGroup = (params) => {
data: params, data: params,
}); });
}; };
/// 添加路段车辆组
const getAddCarGroup = (params) => {
return ajax({
url: "/api/orp/road/add_vehicle_group",
type: "post",
data: params,
});
};
/// 编辑路段车辆组
const getEditCarGroup = (params) => {
return ajax({
url: "/api/orp/road/edit_vehicle_group",
type: "post",
data: params,
});
};
///api/orp/road/get_road_vehicle_group 获取路段车辆组列表 ///api/orp/road/get_road_vehicle_group 获取路段车辆组列表
const getRoadVehicleGroup = (params) => { const getRoadVehicleGroup = (params) => {
@ -428,6 +443,8 @@ export default {
getRoadServiceParameters, getRoadServiceParameters,
getRoadAllChild, getRoadAllChild,
getAllCarGroup, getAllCarGroup,
getAddCarGroup,
getEditCarGroup,
getRoadVehicleGroup, getRoadVehicleGroup,
getVehicleList, getVehicleList,
addVehicle, addVehicle,

3
src/services/search.js

@ -351,7 +351,8 @@ const monitorDel = (params) => {
// 获取或有运营商 // 获取或有运营商
const getOperator = (params) => { const getOperator = (params) => {
return ajax({ return ajax({
url: "/api/bpm/operator/get_all_operator",
//url: "/api/bpm/operator/get_all_operator",
url: "/api/bpm/operator/get_on_job_operator",
type: "get", type: "get",
data: params, data: params,
}); });

Loading…
Cancel
Save