Browse Source

修改新页面

fengxiang 2 years ago
parent
commit
d9a0f7f52b
67 changed files with 4074 additions and 220 deletions
  1. 34 0
      src/index.jsx
  2. 120 0
      src/pages/MaintenanceStatisticsChild/basicMaintenanceInfomation/basicMaintenanceInfomation.jsx
  3. 26 0
      src/pages/MaintenanceStatisticsChild/basicMaintenanceInfomation/basicMaintenanceInfomation.scss
  4. 142 0
      src/pages/MaintenanceStatisticsChild/basicMaintenanceInfomation/components/modal.jsx
  5. 9 0
      src/pages/MaintenanceStatisticsChild/basicMaintenanceInfomation/components/modal.scss
  6. 116 0
      src/pages/MaintenanceStatisticsChild/distance/components/modal.jsx
  7. 9 0
      src/pages/MaintenanceStatisticsChild/distance/components/modal.scss
  8. 116 0
      src/pages/MaintenanceStatisticsChild/distance/distance.jsx
  9. 26 0
      src/pages/MaintenanceStatisticsChild/distance/distance.scss
  10. 116 0
      src/pages/MaintenanceStatisticsChild/distributionOfPassengerFlowRoutes/components/modal.jsx
  11. 9 0
      src/pages/MaintenanceStatisticsChild/distributionOfPassengerFlowRoutes/components/modal.scss
  12. 116 0
      src/pages/MaintenanceStatisticsChild/distributionOfPassengerFlowRoutes/distributionOfPassengerFlowRoutes.jsx
  13. 26 0
      src/pages/MaintenanceStatisticsChild/distributionOfPassengerFlowRoutes/distributionOfPassengerFlowRoutes.scss
  14. 116 0
      src/pages/MaintenanceStatisticsChild/mainConsumPtionType/components/modal.jsx
  15. 9 0
      src/pages/MaintenanceStatisticsChild/mainConsumPtionType/components/modal.scss
  16. 116 0
      src/pages/MaintenanceStatisticsChild/mainConsumPtionType/mainConsumPtionType.jsx
  17. 26 0
      src/pages/MaintenanceStatisticsChild/mainConsumPtionType/mainConsumPtionType.scss
  18. 116 0
      src/pages/MaintenanceStatisticsChild/maintenanceExecution/components/modal.jsx
  19. 9 0
      src/pages/MaintenanceStatisticsChild/maintenanceExecution/components/modal.scss
  20. 116 0
      src/pages/MaintenanceStatisticsChild/maintenanceExecution/maintenanceExecution.jsx
  21. 26 0
      src/pages/MaintenanceStatisticsChild/maintenanceExecution/maintenanceExecution.scss
  22. 116 0
      src/pages/MaintenanceStatisticsChild/maintenanceStatus/components/modal.jsx
  23. 9 0
      src/pages/MaintenanceStatisticsChild/maintenanceStatus/components/modal.scss
  24. 116 0
      src/pages/MaintenanceStatisticsChild/maintenanceStatus/maintenanceStatus.jsx
  25. 26 0
      src/pages/MaintenanceStatisticsChild/maintenanceStatus/maintenanceStatus.scss
  26. 118 0
      src/pages/MaintenanceStatisticsChild/physicalExaminationIssues/components/modal.jsx
  27. 9 0
      src/pages/MaintenanceStatisticsChild/physicalExaminationIssues/components/modal.scss
  28. 118 0
      src/pages/MaintenanceStatisticsChild/physicalExaminationIssues/physicalExaminationIssues.jsx
  29. 26 0
      src/pages/MaintenanceStatisticsChild/physicalExaminationIssues/physicalExaminationIssues.scss
  30. 116 0
      src/pages/MaintenanceStatisticsChild/statusClassification/components/modal.jsx
  31. 9 0
      src/pages/MaintenanceStatisticsChild/statusClassification/components/modal.scss
  32. 116 0
      src/pages/MaintenanceStatisticsChild/statusClassification/statusClassification.jsx
  33. 26 0
      src/pages/MaintenanceStatisticsChild/statusClassification/statusClassification.scss
  34. 118 0
      src/pages/facilityManagementChild/carWasher/carWasher.jsx
  35. 26 0
      src/pages/facilityManagementChild/carWasher/carWasher.scss
  36. 131 0
      src/pages/facilityManagementChild/carWasher/components/modal.jsx
  37. 9 0
      src/pages/facilityManagementChild/carWasher/components/modal.scss
  38. 119 0
      src/pages/facilityManagementChild/chargingStation/chargingStation.jsx
  39. 26 0
      src/pages/facilityManagementChild/chargingStation/chargingStation.scss
  40. 131 0
      src/pages/facilityManagementChild/chargingStation/components/modal.jsx
  41. 9 0
      src/pages/facilityManagementChild/chargingStation/components/modal.scss
  42. 119 0
      src/pages/facilityManagementChild/electronicLicensePlate/components/modal.jsx
  43. 9 0
      src/pages/facilityManagementChild/electronicLicensePlate/components/modal.scss
  44. 118 0
      src/pages/facilityManagementChild/electronicLicensePlate/electronicLicensePlate.jsx
  45. 26 0
      src/pages/facilityManagementChild/electronicLicensePlate/electronicLicensePlate.scss
  46. 181 0
      src/pages/facilityManagementChild/informationOfFacilities/components/modal.jsx
  47. 9 0
      src/pages/facilityManagementChild/informationOfFacilities/components/modal.scss
  48. 121 0
      src/pages/facilityManagementChild/informationOfFacilities/informationOfFacilities.jsx
  49. 26 0
      src/pages/facilityManagementChild/informationOfFacilities/informationOfFacilities.scss
  50. 130 0
      src/pages/facilityManagementChild/vehiclesComponents/components/modal.jsx
  51. 9 0
      src/pages/facilityManagementChild/vehiclesComponents/components/modal.scss
  52. 119 0
      src/pages/facilityManagementChild/vehiclesComponents/vehiclesComponents.jsx
  53. 26 0
      src/pages/facilityManagementChild/vehiclesComponents/vehiclesComponents.scss
  54. 119 0
      src/pages/facilityManagementChild/vehiclesModelDisplay/components/modal.jsx
  55. 9 0
      src/pages/facilityManagementChild/vehiclesModelDisplay/components/modal.scss
  56. 118 0
      src/pages/facilityManagementChild/vehiclesModelDisplay/vehiclesModelDisplay.jsx
  57. 26 0
      src/pages/facilityManagementChild/vehiclesModelDisplay/vehiclesModelDisplay.scss
  58. 122 206
      src/pages/home/home.jsx
  59. 1 1
      src/pages/homePageChild/carCompletionRate/carCompletionRate.jsx
  60. 1 1
      src/pages/homePageChild/classCompletionRate/classCompletionRate.jsx
  61. 1 1
      src/pages/homePageChild/classPunctualitRate/classPunctualitRate.jsx
  62. 1 1
      src/pages/linePageChild/basicInfomationOfTheLine/basicInfomationOfTheLine.jsx
  63. 6 6
      src/pages/linePageChild/lineDispatch/components/modal.jsx
  64. 1 1
      src/pages/linePageChild/lineDispatch/lineDispatch.jsx
  65. 1 1
      src/pages/linePageChild/numberOfDrivers/numberOfDrivers.jsx
  66. 1 1
      src/pages/linePageChild/numberOfTransit/numberOfTransit.jsx
  67. 1 1
      src/pages/passengerFlowAnalysis/rankingOfPassengerVolume/rankingOfPassengerVolume.jsx

+ 34 - 0
src/index.jsx

@@ -40,6 +40,24 @@ import RankingOfPassengerVolume
     from "@/pages/passengerFlowAnalysis/rankingOfPassengerVolume/rankingOfPassengerVolume.jsx";
 import VehiclesTotalNumber from "@/pages/MaintenanceStatisticsChild/vehiclesTotalNumber/vehiclesTotalNumber.jsx";
 import MaintenanceStatistics from "@/pages/MaintenanceStatisticsChild/maintenanceStatistics/maintenanceStatistics.jsx";
+import PhysicalExaminationIssues
+    from "@/pages/MaintenanceStatisticsChild/physicalExaminationIssues/physicalExaminationIssues.jsx";
+import Distance from "@/pages/MaintenanceStatisticsChild/distance/distance.jsx";
+import DistributionOfPassengerFlowRoutes
+    from "@/pages/MaintenanceStatisticsChild/distributionOfPassengerFlowRoutes/distributionOfPassengerFlowRoutes.jsx";
+import BasicMaintenanceInfomation
+    from "@/pages/MaintenanceStatisticsChild/basicMaintenanceInfomation/basicMaintenanceInfomation.jsx";
+import MaintenanceExecution from "@/pages/MaintenanceStatisticsChild/maintenanceExecution/maintenanceExecution.jsx";
+import StatusClassification from "@/pages/MaintenanceStatisticsChild/statusClassification/statusClassification.jsx";
+import MaintenanceStatus from "@/pages/MaintenanceStatisticsChild/maintenanceStatus/maintenanceStatus.jsx";
+import MainConsumPtionType from "@/pages/MaintenanceStatisticsChild/mainConsumPtionType/mainConsumPtionType.jsx";
+import VehiclesComponents from "@/pages/facilityManagementChild/vehiclesComponents/vehiclesComponents.jsx";
+import ChargingStation from "@/pages/facilityManagementChild/chargingStation/chargingStation.jsx";
+import InformationOfFacilities
+    from "@/pages/facilityManagementChild/informationOfFacilities/informationOfFacilities.jsx";
+import ElectronicLicensePlate from "@/pages/facilityManagementChild/electronicLicensePlate/electronicLicensePlate.jsx";
+import VehiclesModelDisplay from "@/pages/facilityManagementChild/vehiclesModelDisplay/vehiclesModelDisplay.jsx";
+import CarWasher from "@/pages/facilityManagementChild/carWasher/carWasher.jsx";
 
 
 ReactDOM.createRoot(document.getElementById("root")).render(
@@ -90,6 +108,22 @@ ReactDOM.createRoot(document.getElementById("root")).render(
                             {/*    维保动态*/}
                             <Route path='vehiclesTotalNumber' element={<VehiclesTotalNumber/>}></Route>
                             <Route path='maintenanceStatistics' element={<MaintenanceStatistics/>}></Route>
+                            <Route path='physicalExaminationIssues' element={<PhysicalExaminationIssues/>}></Route>
+                            <Route path='distance' element={<Distance/>}></Route>
+                            <Route path='distributionOfPassengerFlowRoutes'
+                                   element={<DistributionOfPassengerFlowRoutes/>}></Route>
+                            <Route path='basicMaintenanceInfomation' element={<BasicMaintenanceInfomation/>}></Route>
+                            <Route path='maintenanceExecution' element={<MaintenanceExecution/>}></Route>
+                            <Route path='statusClassification' element={<StatusClassification/>}></Route>
+                            <Route path='maintenanceStatus' element={<MaintenanceStatus/>}></Route>
+                            <Route path='mainConsumPtionType' element={<MainConsumPtionType/>}></Route>
+                            {/*  设施管理  */}
+                            <Route path='vehiclesComponents' element={<VehiclesComponents/>}></Route>
+                            <Route path='chargingStation' element={<ChargingStation/>}></Route>
+                            <Route path='informationOfFacilities' element={<InformationOfFacilities/>}></Route>
+                            <Route path='electronicLicensePlate' element={<ElectronicLicensePlate/>}></Route>
+                            <Route path='vehiclesModelDisplay' element={<VehiclesModelDisplay/>}></Route>
+                            <Route path='carWasher' element={<CarWasher/>}></Route>
                         </Route>
                         {/**这里重定向到home页面 */}
                         <Route path="*" element={<Navigate to="/statisticsData" replace/>}></Route>

+ 120 - 0
src/pages/MaintenanceStatisticsChild/basicMaintenanceInfomation/basicMaintenanceInfomation.jsx

@@ -0,0 +1,120 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./basicMaintenanceInfomation.scss";
+import axios from "@/utils/axios.js";
+
+const {Column} = Table;
+
+export default function BasicMaintenanceInfomation() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/maintenance/getMaintenanceInfo");
+        if (!data) {
+            setData(null)
+            return
+        }
+        setData([data]);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                {/*<div className="button">*/}
+                {/*    <Button type="primary" onClick={addUser}>*/}
+                {/*        新增客流分布*/}
+                {/*    </Button>*/}
+                {/*</div>*/}
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="运维驿站" dataIndex="maintenanceStation" key="id"></Column>
+                <Column title="维保场" dataIndex="maintenanceSite" key="id"></Column>
+                <Column title="已保养" dataIndex="maintained" key="id"></Column>
+                <Column title="已维修" dataIndex="repaired" key="id"></Column>
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            {/*<DeleteButton url='/maintenanceEdit/delMaintenanceLocationNum' id={text}*/}
+                            {/*              getData={getData}></DeleteButton>*/}
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/MaintenanceStatisticsChild/basicMaintenanceInfomation/basicMaintenanceInfomation.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 142 - 0
src/pages/MaintenanceStatisticsChild/basicMaintenanceInfomation/components/modal.jsx

@@ -0,0 +1,142 @@
+import {Form, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: '保养', label: '保养'},
+        {value: '维修', label: '维修'}
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/maintenanceEdit/editMaintenanceInfo', formData)
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="运维驿站"
+                        name="maintenanceStation"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}/>
+                    </Form.Item>
+                    <Form.Item
+                        label="维保场"
+                        name="maintenanceSite"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="已保养"
+                        name="maintained"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="已维修"
+                        name="repaired"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/MaintenanceStatisticsChild/basicMaintenanceInfomation/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/distance/components/modal.jsx

@@ -0,0 +1,116 @@
+import {Form, InputNumber, message, Modal, Select,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: '保养', label: '保养'},
+        {value: '维修', label: '维修'}
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/maintenanceEdit/editMaintenanceRidingDistance', [formData])
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="乘距类型"
+                        name="distanceType"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+
+                            },
+                        ]}
+
+                    >
+                        <Select options={passengerOption}/>
+                    </Form.Item>
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/MaintenanceStatisticsChild/distance/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/distance/distance.jsx

@@ -0,0 +1,116 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./distance.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function Distance() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/maintenance/getMaintenanceRidingDistance");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增乘距分布
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="乘距类型" dataIndex="distanceType" key="id"></Column>
+                <Column title="次数" dataIndex="number" key="id"></Column>
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/maintenanceEdit/delMaintenanceRidingDistance' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/MaintenanceStatisticsChild/distance/distance.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/distributionOfPassengerFlowRoutes/components/modal.jsx

@@ -0,0 +1,116 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: '保养', label: '保养'},
+        {value: '维修', label: '维修'}
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/maintenanceEdit/editMaintenanceLocationNum', [formData])
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="场地"
+                        name="location"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+
+                            },
+                        ]}
+
+                    >
+                        <Input/>
+                    </Form.Item>
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/MaintenanceStatisticsChild/distributionOfPassengerFlowRoutes/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/distributionOfPassengerFlowRoutes/distributionOfPassengerFlowRoutes.jsx

@@ -0,0 +1,116 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./distributionOfPassengerFlowRoutes.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function DistributionOfPassengerFlowRoutes() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/maintenance/getMaintenanceLocationNum");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增客流分布
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="场地" dataIndex="location" key="id"></Column>
+                <Column title="次数" dataIndex="number" key="id"></Column>
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/maintenanceEdit/delMaintenanceLocationNum' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/MaintenanceStatisticsChild/distributionOfPassengerFlowRoutes/distributionOfPassengerFlowRoutes.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/mainConsumPtionType/components/modal.jsx

@@ -0,0 +1,116 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: '保养', label: '保养'},
+        {value: '维修', label: '维修'}
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/maintenanceEdit/editMaintenanceConsumption', [formData])
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="消费状态"
+                        name="consumptionType"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+
+                            },
+                        ]}
+
+                    >
+                        <Input></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/MaintenanceStatisticsChild/mainConsumPtionType/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/mainConsumPtionType/mainConsumPtionType.jsx

@@ -0,0 +1,116 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./mainConsumPtionType.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function MainConsumPtionType() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/maintenance/getMaintenanceConsumption");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增消费类型
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="消费类型" dataIndex="consumptionType" key="id"></Column>
+                <Column title="次数" dataIndex="number" key="id"></Column>
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/maintenanceEdit/delMaintenanceConsumption' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/MaintenanceStatisticsChild/mainConsumPtionType/mainConsumPtionType.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/maintenanceExecution/components/modal.jsx

@@ -0,0 +1,116 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: '保养', label: '保养'},
+        {value: '维修', label: '维修'}
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/maintenanceEdit/editMaintenanceImplementation', [formData])
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="执行类型"
+                        name="executeType"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+
+                            },
+                        ]}
+
+                    >
+                        <Input></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/MaintenanceStatisticsChild/maintenanceExecution/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/maintenanceExecution/maintenanceExecution.jsx

@@ -0,0 +1,116 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./maintenanceExecution.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function MaintenanceExecution() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/maintenance/getMaintenanceImplementation");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增维保执行
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="执行数量" dataIndex="executeType" key="id"></Column>
+                <Column title="次数" dataIndex="number" key="id"></Column>
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/maintenanceEdit/delMaintenanceImplementation' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/MaintenanceStatisticsChild/maintenanceExecution/maintenanceExecution.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/maintenanceStatus/components/modal.jsx

@@ -0,0 +1,116 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: '保养', label: '保养'},
+        {value: '维修', label: '维修'}
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/maintenanceEdit/editMaintenanceCarStatus', formData)
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="车辆维保状态"
+                        name="maintenanceStatus"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+
+                            },
+                        ]}
+
+                    >
+                        <Input></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/MaintenanceStatisticsChild/maintenanceStatus/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/maintenanceStatus/maintenanceStatus.jsx

@@ -0,0 +1,116 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./maintenanceStatus.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function MaintenanceStatus() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/maintenance/getMaintenanceCarStatus");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增车辆维保状态
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="车辆维保状态" dataIndex="maintenanceStatus" key="id"></Column>
+                <Column title="次数" dataIndex="number" key="id"></Column>
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/maintenanceEdit/delMaintenanceCarStatus' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/MaintenanceStatisticsChild/maintenanceStatus/maintenanceStatus.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 118 - 0
src/pages/MaintenanceStatisticsChild/physicalExaminationIssues/components/modal.jsx

@@ -0,0 +1,118 @@
+import {Form, InputNumber, message, Modal, Select,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: '三电故障', label: '三电故障'},
+        {value: '地盘故障', label: '地盘故障'},
+        {value: '车容车貌', label: '车容车貌'},
+        {value: '车载设备', label: '车载设备'},
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/maintenanceEdit/editMaintenanceCheckupProblem', [formData])
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="问题类型"
+                        name="problemType"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+
+                            },
+                        ]}
+
+                    >
+                        <Select options={passengerOption}/>
+                    </Form.Item>
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/MaintenanceStatisticsChild/physicalExaminationIssues/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 118 - 0
src/pages/MaintenanceStatisticsChild/physicalExaminationIssues/physicalExaminationIssues.jsx

@@ -0,0 +1,118 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./physicalExaminationIssues.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function PhysicalExaminationIssues() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/maintenance/getMaintenanceCheckupProblem");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增体检问题
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="问题类型" dataIndex="problemType" key="id"></Column>
+                <Column title="次数" dataIndex="number" key="id"></Column>
+
+
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/maintenanceEdit/delMaintenanceCheckupProblem' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/MaintenanceStatisticsChild/physicalExaminationIssues/physicalExaminationIssues.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/statusClassification/components/modal.jsx

@@ -0,0 +1,116 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: '保养', label: '保养'},
+        {value: '维修', label: '维修'}
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/maintenanceEdit/editMaintenanceCarOperate', formData)
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="车辆状态"
+                        name="carStatus"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+
+                            },
+                        ]}
+
+                    >
+                        <Input></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/MaintenanceStatisticsChild/statusClassification/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 116 - 0
src/pages/MaintenanceStatisticsChild/statusClassification/statusClassification.jsx

@@ -0,0 +1,116 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./statusClassification.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function StatusClassification() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/maintenance/getMaintenanceCarOperate");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增车辆运营状态
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="车辆状态" dataIndex="carStatus" key="id"></Column>
+                <Column title="次数" dataIndex="number" key="id"></Column>
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/maintenanceEdit/delMaintenanceCarOperate' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/MaintenanceStatisticsChild/statusClassification/statusClassification.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 118 - 0
src/pages/facilityManagementChild/carWasher/carWasher.jsx

@@ -0,0 +1,118 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./carWasher.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function CarWasher() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/facilityStatistics/getFacilityCarWasher");
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增洗车机
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="洗车机类型" dataIndex="type" key="id"></Column>
+                <Column title="数量" dataIndex="number" key="id"></Column>
+                <Column title="累计洗车次数" dataIndex="cumulative" key="id"></Column>
+
+
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/editFacilityStatistics/delFacilityCarWasher' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/facilityManagementChild/carWasher/carWasher.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 131 - 0
src/pages/facilityManagementChild/carWasher/components/modal.jsx

@@ -0,0 +1,131 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: 1, label: '行驶中'},
+        {value: 2, label: '维保'},
+        {value: 3, label: '固定包车'},
+        {value: 4, label: '临时包车'},
+        {value: 5, label: '充电'},
+        {value: 6, label: '公务'},
+
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/editFacilityStatistics/editFacilityCarWasher', [formData])
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="洗车机类型"
+                        name="type"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="累计洗车次数"
+                        name="cumulative"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/facilityManagementChild/carWasher/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 119 - 0
src/pages/facilityManagementChild/chargingStation/chargingStation.jsx

@@ -0,0 +1,119 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./chargingStation.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function ChargingStation() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/facilityStatistics/getFacilityChargingStation");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增充电站
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="充电类型" dataIndex="chargingType" key="id"></Column>
+                <Column title="累计电费" dataIndex="electricCharge" key="id"></Column>
+                <Column title="数量" dataIndex="number" key="id"></Column>
+
+
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/editFacilityStatistics/delFacilityChargingStation' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/facilityManagementChild/chargingStation/chargingStation.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 131 - 0
src/pages/facilityManagementChild/chargingStation/components/modal.jsx

@@ -0,0 +1,131 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: 1, label: '行驶中'},
+        {value: 2, label: '维保'},
+        {value: 3, label: '固定包车'},
+        {value: 4, label: '临时包车'},
+        {value: 5, label: '充电'},
+        {value: 6, label: '公务'},
+
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/editFacilityStatistics/editFacilityChargingStation', [formData])
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="充电类型"
+                        name="chargingType"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="累计电费"
+                        name="electricCharge"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/facilityManagementChild/chargingStation/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 119 - 0
src/pages/facilityManagementChild/electronicLicensePlate/components/modal.jsx

@@ -0,0 +1,119 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: 1, label: '行驶中'},
+        {value: 2, label: '维保'},
+        {value: 3, label: '固定包车'},
+        {value: 4, label: '临时包车'},
+        {value: 5, label: '充电'},
+        {value: 6, label: '公务'},
+
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/editFacilityStatistics/editFacilityStation', [formData])
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="电子站牌类型"
+                        name="stationType"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/facilityManagementChild/electronicLicensePlate/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 118 - 0
src/pages/facilityManagementChild/electronicLicensePlate/electronicLicensePlate.jsx

@@ -0,0 +1,118 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./electronicLicensePlate.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function ElectronicLicensePlate() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/facilityStatistics/getFacilityStation");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增电子站牌
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="电子站牌类型" dataIndex="stationType" key="id"></Column>
+                <Column title="数量" dataIndex="number" key="id"></Column>
+
+
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/editFacilityStatistics/delFacilityStations' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/facilityManagementChild/electronicLicensePlate/electronicLicensePlate.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 181 - 0
src/pages/facilityManagementChild/informationOfFacilities/components/modal.jsx

@@ -0,0 +1,181 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: 1, label: '行驶中'},
+        {value: 2, label: '维保'},
+        {value: 3, label: '固定包车'},
+        {value: 4, label: '临时包车'},
+        {value: 5, label: '充电'},
+        {value: 6, label: '公务'},
+
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/editFacilityStatistics/editFacilityStatistics', [formData])
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="区域"
+                        name="area"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="损坏数量"
+                        name="damageNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="电子站牌"
+                        name="stationNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="车辆"
+                        name="vehicleNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="车载部件"
+                        name="vehicleComponentsNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="洗车机"
+                        name="carWasherNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="充电桩"
+                        name="chargingStationNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/facilityManagementChild/informationOfFacilities/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 121 - 0
src/pages/facilityManagementChild/informationOfFacilities/informationOfFacilities.jsx

@@ -0,0 +1,121 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./informationOfFacilities.scss";
+import axios from "@/utils/axios.js";
+
+const {Column} = Table;
+
+export default function InformationOfFacilities() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/facilityStatistics/getFacilityStatistics");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                {/*<div className="button">*/}
+                {/*    <Button type="primary" onClick={addUser}>*/}
+                {/*        新增车载部件*/}
+                {/*    </Button>*/}
+                {/*</div>*/}
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="区域" dataIndex="area" key="id"></Column>
+                <Column title="损坏数量" dataIndex="damageNum" key="id"></Column>
+                <Column title="电子站牌" dataIndex="stationNum" key="id"></Column>
+                <Column title="车辆" dataIndex="vehicleNum" key="id"></Column>
+                <Column title="洗车机" dataIndex="carWasherNum" key="id"></Column>
+                <Column title="充电桩" dataIndex="chargingStationNum" key="id"></Column>
+
+
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            {/*<DeleteButton url='/editFacilityStatistics/delFacilityVehicleComponents' id={text}*/}
+                            {/*              getData={getData}></DeleteButton>*/}
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/facilityManagementChild/informationOfFacilities/informationOfFacilities.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 130 - 0
src/pages/facilityManagementChild/vehiclesComponents/components/modal.jsx

@@ -0,0 +1,130 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: 1, label: '行驶中'},
+        {value: 2, label: '维保'},
+        {value: 3, label: '固定包车'},
+        {value: 4, label: '临时包车'},
+        {value: 5, label: '充电'},
+        {value: 6, label: '公务'},
+
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/editFacilityStatistics/editFacilityVehicleComponents', [formData])
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="部件类型"
+                        name="type"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="损坏数量"
+                        name="damageNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/facilityManagementChild/vehiclesComponents/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 119 - 0
src/pages/facilityManagementChild/vehiclesComponents/vehiclesComponents.jsx

@@ -0,0 +1,119 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./vehiclesComponents.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function VehiclesComponents() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/facilityStatistics/getFacilityVehicleComponents");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增车载部件
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="部件类型" dataIndex="type" key="id"></Column>
+                <Column title="数量" dataIndex="number" key="id"></Column>
+                <Column title="损坏数量" dataIndex="damageNum" key="id"></Column>
+
+
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/editFacilityStatistics/delFacilityVehicleComponents' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/facilityManagementChild/vehiclesComponents/vehiclesComponents.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 119 - 0
src/pages/facilityManagementChild/vehiclesModelDisplay/components/modal.jsx

@@ -0,0 +1,119 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+
+
+export default function ModalHooks({isModalOpen, closeModal, row}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: 1, label: '行驶中'},
+        {value: 2, label: '维保'},
+        {value: 3, label: '固定包车'},
+        {value: 4, label: '临时包车'},
+        {value: 5, label: '充电'},
+        {value: 6, label: '公务'},
+
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/editFacilityStatistics/editFacilityVehicleModel', [formData])
+            if (code === 200) {
+                messageApi.success(message)
+                handleCancel()
+            } else {
+                messageApi.error(message)
+            }
+        })
+    }
+
+    // 关闭页面
+    const handleCancel = () => {
+        closeModal(false);
+        form.resetFields()
+    };
+    // 表单
+    useEffect(() => {
+        if (row.id) {
+            let formData = JSON.parse(JSON.stringify(row))
+            form.setFieldsValue(formData)
+
+        }
+    }, [row])
+
+
+    return (
+        <div className="form">
+
+            {contextHolder}
+            <Modal title={row?.id ? '修改数据' : '新增数据'} open={isModalOpen} onOk={handleOk} onCancel={handleCancel}
+                   width={900}
+                   cancelText="取消" okText="确定">
+                <Form
+                    name="statics"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="车辆类型类型"
+                        name="vehicleModel"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+
+                    <Form.Item
+                        label="数量"
+                        name="number"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/facilityManagementChild/vehiclesModelDisplay/components/modal.scss

@@ -0,0 +1,9 @@
+#statics {
+  .ant-form-item{
+    width: 45%;
+    margin-bottom: 10px;
+    .ant-form-item-label{
+      width: 120px;
+    }
+  }
+}

+ 118 - 0
src/pages/facilityManagementChild/vehiclesModelDisplay/vehiclesModelDisplay.jsx

@@ -0,0 +1,118 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./vehiclesModelDisplay.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function VehiclesModelDisplay() {
+    // 页面数据
+    const [data, setData] = useState([]);
+    // 是否展示弹框
+    const [isModalOpen, setIsModalOpen] = useState(false);
+    // 一行的数据
+
+    const [row, setRow] = useState({});
+    // 设置下拉框绑定的值
+    const [val, setVal] = useState('')
+
+
+    // 新增用户页面
+    function addUser() {
+        setRow([]);
+        setIsModalOpen(true);
+    }
+
+    // 关闭页面
+    function closeModal() {
+        setIsModalOpen(false);
+        getData()
+    }
+
+    // 点击修改的回调
+    function modify(data) {
+        setRow(data);
+        setIsModalOpen(true);
+
+    }
+
+
+    // 获取数据
+    async function getData() {
+
+        let {data} = await axios.get("/facilityStatistics/getFacilityVehicleModel");
+
+        setData(data);
+
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "行驶中";
+            case 2:
+                return "维保";
+            case 3:
+                return "固定包车";
+            case 4:
+                return "临时包车";
+            case 5:
+                return "充电";
+            case 6:
+                return "公务";
+
+        }
+    }
+
+    useEffect(() => {
+        getData()
+    }, [])
+    return (
+        <div className="passenger">
+            <div className="top">
+
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增车型展示
+                    </Button>
+                </div>
+            </div>
+            <Table
+                dataSource={data}
+                bordered={true}
+                rowKey="id"
+                pagination={false}
+            >
+                <Column title="车辆类型" dataIndex="vehicleModel" key="id"></Column>
+                <Column title="数量" dataIndex="number" key="id"></Column>
+
+
+                <Column
+                    title="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/editFacilityStatistics/delFacilityVehicleModel' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/facilityManagementChild/vehiclesModelDisplay/vehiclesModelDisplay.scss

@@ -0,0 +1,26 @@
+.passenger{
+  width: 100%;
+  height: 100%;
+  .top{
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 5px;
+    .input{
+      display: flex;
+      button{
+        margin-left: 10px;
+      }
+    }
+  }
+  .btn{
+    display: flex;
+    justify-content: space-between;
+  }
+
+}
+#basic{
+
+.ant-form-item{
+  margin-bottom: 20px;
+}
+}

+ 122 - 206
src/pages/home/home.jsx

@@ -13,187 +13,105 @@ export default function Home() {
 
 
     // 菜单数据
-    const items = [
-        {
-            label: '首页配置',
-            key: 'basicInfomation',
-            icon: <DesktopOutlined/>,
-            children: [
-                {
-                    label: '汇总统计数据',
-                    key: 'statisticsData',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '消费占比',
-                    key: 'consumptionProportion',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '客流排名',
-                    key: 'flowRanking',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '线路客流排名',
-                    key: 'lineFlowRanking',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '舆情统计数据',
-                    key: 'publicOpinion',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '站场设备统计',
-                    key: 'stationEquipment',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '客运量数据',
-                    key: 'passengerVolumeData',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '班次完成率',
-                    key: 'classCompletionRate',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '班次准点率',
-                    key: 'classPunctualitRate',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '发车准点率',
-                    key: 'carCompletionRate',
-                    icon: <AreaChartOutlined/>,
-                }
-            ]
-        },
-        {
-            label: '线路运营配置',
-            key: 'lineConfiguration',
-            icon: <SettingOutlined/>,
-            children: [
-                {
-                    label: '线路基本情况',
-                    key: 'basicInfomationOfTheLine',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '线路发班情况',
-                    key: 'lineDispatch',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '乘客类型',
-                    key: 'passengerType',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '汇总数据',
-                    key: 'summaryData',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '驾驶员数量',
-                    key: 'numberOfDrivers',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '车辆数量占比',
-                    key: 'numberOfTransit',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '车辆监控',
-                    key: 'vehicleMonitoring',
-                    icon: <AreaChartOutlined/>,
-                },
-                {
-                    label: '车辆状态',
-                    key: 'vehicleStatus',
-                    icon: <AreaChartOutlined/>,
-                }
-            ]
-        },
-        {
-            label: '客流分析',
-            key: 'passengerFlowAnalysis',
-            icon: <SettingOutlined/>,
-            children: [
-                {
-                    label: '底部信息',
-                    key: 'passengerInfomation',
-                    icon: <FileDoneOutlined/>,
-                },
-                {
-                    label: '区域客流',
-                    key: 'regionalPassengerFlow',
-                    icon: <FileDoneOutlined/>,
-                },
-                {
-                    label: '通勤时间',
-                    key: 'commutingTime',
-                    icon: <FileDoneOutlined/>,
-                },
-                {
-                    label: '消费类型',
-                    key: 'consumptionType',
-                    icon: <FileDoneOutlined/>,
-                },
-                {
-                    label: '乘距分布',
-                    key: 'distribution',
-                    icon: <FileDoneOutlined/>,
-                },
-                {
-                    label: '换乘次数',
-                    key: 'replacementFrequency',
-                    icon: <FileDoneOutlined/>,
-                },
-                {
-                    label: '客流线路分布',
-                    key: 'passengerFlowRoutes',
-                    icon: <FileDoneOutlined/>,
-                },
-                {
-                    label: '客运量排名',
-                    key: 'rankingOfPassengerVolume',
-                    icon: <FileDoneOutlined/>,
-                }
-            ]
-        },
-        {
-            label: '维保动态',
-            key: 'maintenanceDynamics',
-            icon: <SettingOutlined/>,
-            children: [{
-                label: '车辆数量',
-                key: 'vehiclesTotalNumber',
-                icon: <FileDoneOutlined/>,
-            }, {
-                label: '维修保养统计',
-                key: 'maintenanceStatistics',
-                icon: <FileDoneOutlined/>,
-            },]
-        },
-        {
-            label: '基础信息配置',
-            key: 'setting',
-            icon: <SettingOutlined/>,
-            children: [{
-                label: '用户管理',
-                key: 'user',
-                icon: <UserOutlined/>,
-            }, {
-                label: '字典管理',
-                key: 'dict',
-                icon: <FileDoneOutlined/>,
-            }]
-        }
-    ]
+    const items = [{
+        label: '首页配置', key: 'basicInfomation', icon: <DesktopOutlined/>, children: [{
+            label: '汇总统计数据', key: 'statisticsData', icon: <AreaChartOutlined/>,
+        }, {
+            label: '消费占比', key: 'consumptionProportion', icon: <AreaChartOutlined/>,
+        }, {
+            label: '客流排名', key: 'flowRanking', icon: <AreaChartOutlined/>,
+        }, {
+            label: '线路客流排名', key: 'lineFlowRanking', icon: <AreaChartOutlined/>,
+        }, {
+            label: '舆情统计数据', key: 'publicOpinion', icon: <AreaChartOutlined/>,
+        }, {
+            label: '站场设备统计', key: 'stationEquipment', icon: <AreaChartOutlined/>,
+        }, {
+            label: '客运量数据', key: 'passengerVolumeData', icon: <AreaChartOutlined/>,
+        }, {
+            label: '班次完成率', key: 'classCompletionRate', icon: <AreaChartOutlined/>,
+        }, {
+            label: '班次准点率', key: 'classPunctualitRate', icon: <AreaChartOutlined/>,
+        }, {
+            label: '发车准点率', key: 'carCompletionRate', icon: <AreaChartOutlined/>,
+        }]
+    }, {
+        label: '线路运营配置', key: 'lineConfiguration', icon: <SettingOutlined/>, children: [{
+            label: '线路基本情况', key: 'basicInfomationOfTheLine', icon: <AreaChartOutlined/>,
+        }, {
+            label: '线路发班情况', key: 'lineDispatch', icon: <AreaChartOutlined/>,
+        }, {
+            label: '乘客类型', key: 'passengerType', icon: <AreaChartOutlined/>,
+        }, {
+            label: '汇总数据', key: 'summaryData', icon: <AreaChartOutlined/>,
+        }, {
+            label: '驾驶员数量', key: 'numberOfDrivers', icon: <AreaChartOutlined/>,
+        }, {
+            label: '车辆数量占比', key: 'numberOfTransit', icon: <AreaChartOutlined/>,
+        }, {
+            label: '车辆监控', key: 'vehicleMonitoring', icon: <AreaChartOutlined/>,
+        }, {
+            label: '车辆状态', key: 'vehicleStatus', icon: <AreaChartOutlined/>,
+        }]
+    }, {
+        label: '客流分析', key: 'passengerFlowAnalysis', icon: <SettingOutlined/>, children: [{
+            label: '底部信息', key: 'passengerInfomation', icon: <FileDoneOutlined/>,
+        }, {
+            label: '区域客流', key: 'regionalPassengerFlow', icon: <FileDoneOutlined/>,
+        }, {
+            label: '通勤时间', key: 'commutingTime', icon: <FileDoneOutlined/>,
+        }, {
+            label: '消费类型', key: 'consumptionType', icon: <FileDoneOutlined/>,
+        }, {
+            label: '乘距分布', key: 'distribution', icon: <FileDoneOutlined/>,
+        }, {
+            label: '换乘次数', key: 'replacementFrequency', icon: <FileDoneOutlined/>,
+        }, {
+            label: '客流线路分布', key: 'passengerFlowRoutes', icon: <FileDoneOutlined/>,
+        }, {
+            label: '客运量排名', key: 'rankingOfPassengerVolume', icon: <FileDoneOutlined/>,
+        }]
+    }, {
+        label: '维保动态', key: 'maintenanceDynamics', icon: <SettingOutlined/>, children: [{
+            label: '体检问题情况', key: 'physicalExaminationIssues', icon: <FileDoneOutlined/>,
+        }, {
+            label: '维修保养统计', key: 'maintenanceStatistics', icon: <FileDoneOutlined/>,
+        }, {
+            label: '乘距分布', key: 'distance', icon: <FileDoneOutlined/>,
+        }, {
+            label: '客流线路分布', key: 'distributionOfPassengerFlowRoutes', icon: <FileDoneOutlined/>,
+        }, {
+            label: '维保基本信息', key: 'basicMaintenanceInfomation', icon: <FileDoneOutlined/>,
+        }, {
+            label: '维保执行占比', key: 'maintenanceExecution', icon: <FileDoneOutlined/>,
+        }, {
+            label: '车辆运营状态', key: 'statusClassification', icon: <FileDoneOutlined/>,
+        }, {
+            label: '车辆维保状态', key: 'maintenanceStatus', icon: <FileDoneOutlined/>,
+        }, {
+            label: '消费类型', key: 'mainConsumPtionType', icon: <FileDoneOutlined/>,
+        },]
+    }, {
+        label: '设施管理', key: 'facilityManagementChild', icon: <DesktopOutlined/>, children: [{
+            label: '车载部件', key: 'vehiclesComponents', icon: <AreaChartOutlined/>,
+        }, {
+            label: '充电站', key: 'chargingStation', icon: <AreaChartOutlined/>,
+        }, {
+            label: '设施基础信息', key: 'informationOfFacilities', icon: <AreaChartOutlined/>,
+        }, {
+            label: '电子站牌', key: 'electronicLicensePlate', icon: <AreaChartOutlined/>,
+        }, {
+            label: '车型展示', key: 'vehiclesModelDisplay', icon: <AreaChartOutlined/>,
+        }, {
+            label: '洗车机', key: 'carWasher', icon: <AreaChartOutlined/>,
+        },]
+    }, {
+        label: '基础信息配置', key: 'setting', icon: <SettingOutlined/>, children: [{
+            label: '用户管理', key: 'user', icon: <UserOutlined/>,
+        }, {
+            label: '字典管理', key: 'dict', icon: <FileDoneOutlined/>,
+        }]
+    }]
     /**
      * 电机左边弹框跳转页面
      * @param e 电机的数据
@@ -242,34 +160,32 @@ export default function Home() {
         jumpToPage()
         getDict()
     }, [])
-    return (
-        <div className="home">
-            <div className="head">
-                <h2>车站管理系统</h2>
-
-                <Popconfirm
-                    title="登出"
-                    description="是否登出此账号"
-                    onConfirm={logOut}
-                    okText="确认"
-                    cancelText="取消"
-                >
-                    <div className="ava">
+    return (<div className="home">
+        <div className="head">
+            <h2>车站管理系统</h2>
 
-                        <Avatar size={30} icon={<UserOutlined/>}></Avatar>
-                        <p>{JSON.parse(localStorage.getItem('user'))?.name}</p>
-                    </div>
-                </Popconfirm>
-            </div>
-            <div className="body">
-                <div className="menu">
+            <Popconfirm
+                title="登出"
+                description="是否登出此账号"
+                onConfirm={logOut}
+                okText="确认"
+                cancelText="取消"
+            >
+                <div className="ava">
 
-                    <Menu onClick={onClick} selectedKeys={[current]} mode="inline" items={items}/>
-                </div>
-                <div className="contetn">
-                    <Outlet></Outlet>
+                    <Avatar size={30} icon={<UserOutlined/>}></Avatar>
+                    <p>{JSON.parse(localStorage.getItem('user'))?.name}</p>
                 </div>
+            </Popconfirm>
+        </div>
+        <div className="body">
+            <div className="menu">
+
+                <Menu onClick={onClick} selectedKeys={[current]} mode="inline" items={items}/>
+            </div>
+            <div className="contetn">
+                <Outlet></Outlet>
             </div>
         </div>
-    );
+    </div>);
 }

+ 1 - 1
src/pages/homePageChild/carCompletionRate/carCompletionRate.jsx

@@ -40,7 +40,7 @@ export default function CarCompletionRate() {
      * @returns {Promise<void>}
      */
     async function getLineData() {
-        let {data} = await axios.get('/busLine/getList')
+        let { data } = await axios.get("/busLine/getList", { params: { hasModel :1}});
         setLineList(data)
         let option = data.map(item => {
             return {

+ 1 - 1
src/pages/homePageChild/classCompletionRate/classCompletionRate.jsx

@@ -40,7 +40,7 @@ export default function ClassCompletionRate() {
      * @returns {Promise<void>}
      */
     async function getLineData() {
-        let {data} = await axios.get('/busLine/getList')
+        let {data} = await await axios.get("/busLine/getList", { params: { hasModel :1}})
         setLineList(data)
         let option = data.map(item => {
             return {

+ 1 - 1
src/pages/homePageChild/classPunctualitRate/classPunctualitRate.jsx

@@ -40,7 +40,7 @@ export default function ClassPunctualitRate() {
      * @returns {Promise<void>}
      */
     async function getLineData() {
-        let {data} = await axios.get('/busLine/getList')
+        let {data} = await await axios.get("/busLine/getList", { params: { hasModel :1}})
         setLineList(data)
         let option = data.map(item => {
             return {

+ 1 - 1
src/pages/linePageChild/basicInfomationOfTheLine/basicInfomationOfTheLine.jsx

@@ -48,7 +48,7 @@ export default function BasicInfomationOfTheLine() {
      */
     async function getLineData() {
 
-        let {data} = await axios.get('/busLine/getList')
+        let {data} = await await axios.get("/busLine/getList", { params: { hasModel :1}})
         setLineList(data)
         let option = data.map(item => {
             return {

+ 6 - 6
src/pages/linePageChild/lineDispatch/components/modal.jsx

@@ -1,6 +1,6 @@
-import {Modal, Form, Select, message, InputNumber, TimePicker, Input} from 'antd';
+import {Form, Input, InputNumber, message, Modal, Select, TimePicker} from 'antd';
 import axios from '@/utils/axios.js'
-import {useEffect, useState} from 'react'
+import {useEffect} from 'react'
 import './modal.scss'
 import dayjs from "dayjs";
 import customParseFormat from 'dayjs/plugin/customParseFormat'
@@ -13,15 +13,17 @@ export default function ModalHooks({isModalOpen, closeModal, row, lineList, opti
         {value: 2, label: '下行'},
         {value: 1, label: '上行'}
     ]
-    let typeOptions=[
+    let typeOptions = [
         {value: 1, label: '已完成'},
-        {value: 2 ,label: '执行中'},
+
+        {value: 2, label: '执行中'},
         {value: 3, label: '已处理'},
         {value: 4, label: '已下发'},
         {value: 5, label: '待发'},
         {value: 6, label: '调停'},
         {value: 7, label: '非运营'},
     ]
+
     /**
      *确定时候的回调
      */
@@ -31,8 +33,6 @@ export default function ModalHooks({isModalOpen, closeModal, row, lineList, opti
             let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
             formData.dispatchTime = dayjs(formData.dispatchTime).format('HH:mm')
             formData.realityTime = dayjs(formData.realityTime).format('HH:mm')
-
-
             if (row?.id) {
                 // 修改数据
                 formData.id = row.id

+ 1 - 1
src/pages/linePageChild/lineDispatch/lineDispatch.jsx

@@ -61,7 +61,7 @@ export default function LineDispatch() {
      */
     async function getLineData() {
 
-        let {data} = await axios.get('/busLine/getList')
+        let {data} = await await axios.get("/busLine/getList", { params: { hasModel :1}})
         setLineList(data)
         let option = data.map(item => {
             return {

+ 1 - 1
src/pages/linePageChild/numberOfDrivers/numberOfDrivers.jsx

@@ -76,7 +76,7 @@ export default function NumberOfDrivers() {
      */
     async function getLineData() {
 
-        let {data} = await axios.get('/busLine/getList')
+        let {data} = await await axios.get("/busLine/getList", { params: { hasModel :1}})
         setLineList(data)
         let option = data.map(item => {
             return {

+ 1 - 1
src/pages/linePageChild/numberOfTransit/numberOfTransit.jsx

@@ -75,7 +75,7 @@ export default function NumberOfTransit() {
      */
     async function getLineData() {
 
-        let {data} = await axios.get('/busLine/getList')
+        let {data} = await await axios.get("/busLine/getList", { params: { hasModel :1}})
         setLineList(data)
         let option = data.map(item => {
             return {

+ 1 - 1
src/pages/passengerFlowAnalysis/rankingOfPassengerVolume/rankingOfPassengerVolume.jsx

@@ -74,7 +74,7 @@ export default function RankingOfPassengerVolume() {
      */
     async function getLineData() {
 
-        let {data} = await axios.get('/busLine/getList')
+        let {data} = await await axios.get("/busLine/getList", { params: { hasModel :1}})
         let option = data.map(item => {
             return {
                 label: item.lineName,