Browse Source

新增接口和页面

fengxiang 2 years ago
parent
commit
2ee120bb64
69 changed files with 4200 additions and 13 deletions
  1. 30 0
      src/index.jsx
  2. 3 1
      src/pages/MaintenanceStatisticsChild/maintenanceDetails/maintenanceDetails.jsx
  3. 1 0
      src/pages/facilityManagementChild/carWasher/carWasher.jsx
  4. 12 1
      src/pages/facilityManagementChild/carWasher/components/modal.jsx
  5. 1 0
      src/pages/facilityManagementChild/chargingStation/chargingStation.jsx
  6. 12 1
      src/pages/facilityManagementChild/chargingStation/components/modal.jsx
  7. 12 1
      src/pages/facilityManagementChild/electronicLicensePlate/components/modal.jsx
  8. 1 0
      src/pages/facilityManagementChild/electronicLicensePlate/electronicLicensePlate.jsx
  9. 5 5
      src/pages/facilityManagementChild/informationOfFacilities/informationOfFacilities.jsx
  10. 12 1
      src/pages/facilityManagementChild/vehiclesModelDisplay/components/modal.jsx
  11. 1 0
      src/pages/facilityManagementChild/vehiclesModelDisplay/vehiclesModelDisplay.jsx
  12. 31 1
      src/pages/home/home.jsx
  13. 156 0
      src/pages/lineAnalysisChild/lineAdjustment/components/modal.jsx
  14. 9 0
      src/pages/lineAnalysisChild/lineAdjustment/components/modal.scss
  15. 145 0
      src/pages/lineAnalysisChild/lineAdjustment/lineAdjustment.jsx
  16. 26 0
      src/pages/lineAnalysisChild/lineAdjustment/lineAdjustment.scss
  17. 166 0
      src/pages/lineAnalysisChild/lineAnalysisDetails/components/modal.jsx
  18. 9 0
      src/pages/lineAnalysisChild/lineAnalysisDetails/components/modal.scss
  19. 121 0
      src/pages/lineAnalysisChild/lineAnalysisDetails/lineAnalysisDetails.jsx
  20. 26 0
      src/pages/lineAnalysisChild/lineAnalysisDetails/lineAnalysisDetails.scss
  21. 117 0
      src/pages/lineAnalysisChild/lineLength/components/modal.jsx
  22. 9 0
      src/pages/lineAnalysisChild/lineLength/components/modal.scss
  23. 114 0
      src/pages/lineAnalysisChild/lineLength/lineLength.jsx
  24. 26 0
      src/pages/lineAnalysisChild/lineLength/lineLength.scss
  25. 144 0
      src/pages/lineAnalysisChild/lineSpeed/components/modal.jsx
  26. 9 0
      src/pages/lineAnalysisChild/lineSpeed/components/modal.scss
  27. 120 0
      src/pages/lineAnalysisChild/lineSpeed/lineSpeed.jsx
  28. 26 0
      src/pages/lineAnalysisChild/lineSpeed/lineSpeed.scss
  29. 117 0
      src/pages/lineAnalysisChild/lineType/components/modal.jsx
  30. 9 0
      src/pages/lineAnalysisChild/lineType/components/modal.scss
  31. 118 0
      src/pages/lineAnalysisChild/lineType/lineType.jsx
  32. 26 0
      src/pages/lineAnalysisChild/lineType/lineType.scss
  33. 117 0
      src/pages/lineAnalysisChild/regionalMileage/components/modal.jsx
  34. 9 0
      src/pages/lineAnalysisChild/regionalMileage/components/modal.scss
  35. 118 0
      src/pages/lineAnalysisChild/regionalMileage/regionalMileage.jsx
  36. 26 0
      src/pages/lineAnalysisChild/regionalMileage/regionalMileage.scss
  37. 132 0
      src/pages/lineAnalysisChild/stationPassengerFlow/components/modal.jsx
  38. 9 0
      src/pages/lineAnalysisChild/stationPassengerFlow/components/modal.scss
  39. 118 0
      src/pages/lineAnalysisChild/stationPassengerFlow/stationPassengerFlow.jsx
  40. 26 0
      src/pages/lineAnalysisChild/stationPassengerFlow/stationPassengerFlow.scss
  41. 117 0
      src/pages/lineAnalysisChild/stationSpacingDistribution/components/modal.jsx
  42. 9 0
      src/pages/lineAnalysisChild/stationSpacingDistribution/components/modal.scss
  43. 118 0
      src/pages/lineAnalysisChild/stationSpacingDistribution/stationSpacingDistribution.jsx
  44. 26 0
      src/pages/lineAnalysisChild/stationSpacingDistribution/stationSpacingDistribution.scss
  45. 13 2
      src/pages/linePageChild/vehicleMonitoring/components/modal.jsx
  46. 118 0
      src/pages/stationManagementInformation/InstalledCapacity/InstalledCapacity.jsx
  47. 26 0
      src/pages/stationManagementInformation/InstalledCapacity/InstalledCapacity.scss
  48. 117 0
      src/pages/stationManagementInformation/InstalledCapacity/components/modal.jsx
  49. 9 0
      src/pages/stationManagementInformation/InstalledCapacity/components/modal.scss
  50. 116 0
      src/pages/stationManagementInformation/chageService/chageService.jsx
  51. 26 0
      src/pages/stationManagementInformation/chageService/chageService.scss
  52. 121 0
      src/pages/stationManagementInformation/chageService/components/modal.jsx
  53. 9 0
      src/pages/stationManagementInformation/chageService/components/modal.scss
  54. 118 0
      src/pages/stationManagementInformation/chageTrends/chageTrends.jsx
  55. 26 0
      src/pages/stationManagementInformation/chageTrends/chageTrends.scss
  56. 121 0
      src/pages/stationManagementInformation/chageTrends/components/modal.jsx
  57. 9 0
      src/pages/stationManagementInformation/chageTrends/components/modal.scss
  58. 144 0
      src/pages/stationManagementInformation/nowChargeStatistics/components/modal.jsx
  59. 10 0
      src/pages/stationManagementInformation/nowChargeStatistics/components/modal.scss
  60. 119 0
      src/pages/stationManagementInformation/nowChargeStatistics/nowChargeStatistics.jsx
  61. 26 0
      src/pages/stationManagementInformation/nowChargeStatistics/nowChargeStatistics.scss
  62. 155 0
      src/pages/stationManagementInformation/resourceUsage/components/modal.jsx
  63. 10 0
      src/pages/stationManagementInformation/resourceUsage/components/modal.scss
  64. 121 0
      src/pages/stationManagementInformation/resourceUsage/resourceUsage.jsx
  65. 26 0
      src/pages/stationManagementInformation/resourceUsage/resourceUsage.scss
  66. 167 0
      src/pages/stationManagementInformation/stationOperate/components/modal.jsx
  67. 9 0
      src/pages/stationManagementInformation/stationOperate/components/modal.scss
  68. 119 0
      src/pages/stationManagementInformation/stationOperate/stationOperate.jsx
  69. 26 0
      src/pages/stationManagementInformation/stationOperate/stationOperate.scss

+ 30 - 0
src/index.jsx

@@ -67,6 +67,21 @@ import RegionalDistribution from "@/pages/stationManagementInformation/regionalD
 import TypeDistribution from "@/pages/stationManagementInformation/typeDistribution/typeDistribution.jsx";
 import TypeDistribution from "@/pages/stationManagementInformation/typeDistribution/typeDistribution.jsx";
 import Usage from "@/pages/stationManagementInformation/usage/usage.jsx";
 import Usage from "@/pages/stationManagementInformation/usage/usage.jsx";
 import MaintenanceDetails from "@/pages/MaintenanceStatisticsChild/maintenanceDetails/maintenanceDetails.jsx";
 import MaintenanceDetails from "@/pages/MaintenanceStatisticsChild/maintenanceDetails/maintenanceDetails.jsx";
+import InstalledCapacity from "@/pages/stationManagementInformation/InstalledCapacity/InstalledCapacity.jsx";
+import StationOperate from "@/pages/stationManagementInformation/stationOperate/stationOperate.jsx";
+import ChageTrends from "@/pages/stationManagementInformation/chageTrends/chageTrends.jsx";
+import ChageService from "@/pages/stationManagementInformation/chageService/chageService.jsx";
+import NowChargeStatistics from "@/pages/stationManagementInformation/nowChargeStatistics/nowChargeStatistics.jsx";
+import ResourceUsage from "@/pages/stationManagementInformation/resourceUsage/resourceUsage.jsx";
+import RegionalMileage from "@/pages/lineAnalysisChild/regionalMileage/regionalMileage.jsx";
+import LineSpeed from "@/pages/lineAnalysisChild/lineSpeed/lineSpeed.jsx";
+import StationPassengerFlow from "@/pages/lineAnalysisChild/stationPassengerFlow/stationPassengerFlow.jsx";
+import LineAdjustment from "@/pages/lineAnalysisChild/lineAdjustment/lineAdjustment.jsx";
+import LineLength from "@/pages/lineAnalysisChild/lineLength/lineLength.jsx";
+import StationSpacingDistribution
+    from "@/pages/lineAnalysisChild/stationSpacingDistribution/stationSpacingDistribution.jsx";
+import LineType from "@/pages/lineAnalysisChild/lineType/lineType.jsx";
+import LineAnalysisDetails from "@/pages/lineAnalysisChild/lineAnalysisDetails/lineAnalysisDetails.jsx";
 
 
 
 
 ReactDOM.createRoot(document.getElementById("root")).render(
 ReactDOM.createRoot(document.getElementById("root")).render(
@@ -142,6 +157,21 @@ ReactDOM.createRoot(document.getElementById("root")).render(
                             <Route path='regionalDistribution' element={<RegionalDistribution/>}></Route>
                             <Route path='regionalDistribution' element={<RegionalDistribution/>}></Route>
                             <Route path='typeDistribution' element={<TypeDistribution/>}></Route>
                             <Route path='typeDistribution' element={<TypeDistribution/>}></Route>
                             <Route path='usage' element={<Usage/>}></Route>
                             <Route path='usage' element={<Usage/>}></Route>
+                            <Route path='installedCapacity' element={<InstalledCapacity/>}></Route>
+                            <Route path='stationOperate' element={<StationOperate/>}></Route>-
+                            <Route path='chageTrends' element={<ChageTrends/>}></Route>
+                            <Route path='chageService' element={<ChageService/>}></Route>
+                            <Route path='nowChargeStatistics' element={<NowChargeStatistics/>}></Route>
+                            <Route path='resourceUsage' element={<ResourceUsage/>}></Route>
+                            {/*    线路分析*/}
+                            <Route path='regionalMileage' element={<RegionalMileage/>}></Route>
+                            <Route path='lineSpeed' element={<LineSpeed/>}></Route>
+                            <Route path='stationPassengerFlow' element={<StationPassengerFlow/>}></Route>
+                            <Route path='lineAdjustment' element={<LineAdjustment/>}></Route>
+                            <Route path='lineLength' element={<LineLength/>}></Route>
+                            <Route path='stationSpacingDistribution' element={<StationSpacingDistribution/>}></Route>
+                            <Route path='lineType' element={<LineType/>}></Route>
+                            <Route path='lineAnalysisDetails' element={<LineAnalysisDetails/>}></Route>
                         </Route>
                         </Route>
                         {/**这里重定向到home页面 */}
                         {/**这里重定向到home页面 */}
                         <Route path="*" element={<Navigate to="/statisticsData" replace/>}></Route>
                         <Route path="*" element={<Navigate to="/statisticsData" replace/>}></Route>

+ 3 - 1
src/pages/MaintenanceStatisticsChild/maintenanceDetails/maintenanceDetails.jsx

@@ -87,6 +87,8 @@ export default function MaintenanceDetails() {
             params: {
             params: {
                 pageNum: current,
                 pageNum: current,
                 startTime: '1999-01-22 17:06:00',
                 startTime: '1999-01-22 17:06:00',
+
+
                 endTime: '2030-01-23 17:06:00'
                 endTime: '2030-01-23 17:06:00'
             }
             }
         });
         });
@@ -107,7 +109,7 @@ export default function MaintenanceDetails() {
                 return "固定包车";
                 return "固定包车";
             case 4:
             case 4:
                 return "临时包车";
                 return "临时包车";
-                
+
             case 5:
             case 5:
                 return "充电";
                 return "充电";
             case 6:
             case 6:

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

@@ -88,6 +88,7 @@ export default function CarWasher() {
                 <Column title="洗车机类型" dataIndex="type" key="id"></Column>
                 <Column title="洗车机类型" dataIndex="type" key="id"></Column>
                 <Column title="数量" dataIndex="number" key="id"></Column>
                 <Column title="数量" dataIndex="number" key="id"></Column>
                 <Column title="累计洗车次数" dataIndex="cumulative" key="id"></Column>
                 <Column title="累计洗车次数" dataIndex="cumulative" key="id"></Column>
+                <Column title="损坏程度" dataIndex="damageNum" key="id"></Column>
 
 
 
 
                 <Column
                 <Column

+ 12 - 1
src/pages/facilityManagementChild/carWasher/components/modal.jsx

@@ -120,7 +120,18 @@ export default function ModalHooks({isModalOpen, closeModal, row}) {
                     >
                     >
                         <InputNumber style={{width: '100%'}}></InputNumber>
                         <InputNumber style={{width: '100%'}}></InputNumber>
                     </Form.Item>
                     </Form.Item>
-
+                    <Form.Item
+                        label="损坏程度"
+                        name="damageNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
                 </Form>
                 </Form>
 
 
             </Modal>
             </Modal>

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

@@ -89,6 +89,7 @@ export default function ChargingStation() {
                 <Column title="充电类型" dataIndex="chargingType" key="id"></Column>
                 <Column title="充电类型" dataIndex="chargingType" key="id"></Column>
                 <Column title="累计电费" dataIndex="electricCharge" key="id"></Column>
                 <Column title="累计电费" dataIndex="electricCharge" key="id"></Column>
                 <Column title="数量" dataIndex="number" key="id"></Column>
                 <Column title="数量" dataIndex="number" key="id"></Column>
+                <Column title="损坏程度" dataIndex="damageNum" key="id"></Column>
 
 
 
 
                 <Column
                 <Column

+ 12 - 1
src/pages/facilityManagementChild/chargingStation/components/modal.jsx

@@ -119,7 +119,18 @@ export default function ModalHooks({isModalOpen, closeModal, row}) {
                     >
                     >
                         <InputNumber style={{width: '100%'}}></InputNumber>
                         <InputNumber style={{width: '100%'}}></InputNumber>
                     </Form.Item>
                     </Form.Item>
-
+                    <Form.Item
+                        label="损坏程度"
+                        name="damageNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
 
 
                 </Form>
                 </Form>
 
 

+ 12 - 1
src/pages/facilityManagementChild/electronicLicensePlate/components/modal.jsx

@@ -107,7 +107,18 @@ export default function ModalHooks({isModalOpen, closeModal, row}) {
                     >
                     >
                         <InputNumber style={{width: '100%'}}></InputNumber>
                         <InputNumber style={{width: '100%'}}></InputNumber>
                     </Form.Item>
                     </Form.Item>
-
+                    <Form.Item
+                        label="损坏程度"
+                        name="damageNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
 
 
                 </Form>
                 </Form>
 
 

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

@@ -88,6 +88,7 @@ export default function ElectronicLicensePlate() {
             >
             >
                 <Column title="电子站牌类型" dataIndex="stationType" key="id"></Column>
                 <Column title="电子站牌类型" dataIndex="stationType" key="id"></Column>
                 <Column title="数量" dataIndex="number" key="id"></Column>
                 <Column title="数量" dataIndex="number" key="id"></Column>
+                <Column title="损坏程度" dataIndex="damageNum" key="id"></Column>
 
 
 
 
                 <Column
                 <Column

+ 5 - 5
src/pages/facilityManagementChild/informationOfFacilities/informationOfFacilities.jsx

@@ -73,11 +73,11 @@ export default function InformationOfFacilities() {
         <div className="passenger">
         <div className="passenger">
             <div className="top">
             <div className="top">
 
 
-                {/*<div className="button">*/}
-                {/*    <Button type="primary" onClick={addUser}>*/}
-                {/*        新增车载部件*/}
-                {/*    </Button>*/}
-                {/*</div>*/}
+                <div className="button">
+                    <Button type="primary" onClick={addUser}>
+                        新增区域设施统计
+                    </Button>
+                </div>
             </div>
             </div>
             <Table
             <Table
                 dataSource={data}
                 dataSource={data}

+ 12 - 1
src/pages/facilityManagementChild/vehiclesModelDisplay/components/modal.jsx

@@ -107,7 +107,18 @@ export default function ModalHooks({isModalOpen, closeModal, row}) {
                     >
                     >
                         <InputNumber style={{width: '100%'}}></InputNumber>
                         <InputNumber style={{width: '100%'}}></InputNumber>
                     </Form.Item>
                     </Form.Item>
-
+                    <Form.Item
+                        label="损坏程度"
+                        name="damageNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
 
 
                 </Form>
                 </Form>
 
 

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

@@ -88,6 +88,7 @@ export default function VehiclesModelDisplay() {
             >
             >
                 <Column title="车辆类型" dataIndex="vehicleModel" key="id"></Column>
                 <Column title="车辆类型" dataIndex="vehicleModel" key="id"></Column>
                 <Column title="数量" dataIndex="number" key="id"></Column>
                 <Column title="数量" dataIndex="number" key="id"></Column>
+                <Column title="损坏程度" dataIndex="damageNum" key="id"></Column>
 
 
 
 
                 <Column
                 <Column

+ 31 - 1
src/pages/home/home.jsx

@@ -99,7 +99,7 @@ export default function Home() {
         }, {
         }, {
             label: '充电站', key: 'chargingStation', icon: <AreaChartOutlined/>,
             label: '充电站', key: 'chargingStation', icon: <AreaChartOutlined/>,
         }, {
         }, {
-            label: '设施基础信息', key: 'informationOfFacilities', icon: <AreaChartOutlined/>,
+            label: '区域设施统计', key: 'informationOfFacilities', icon: <AreaChartOutlined/>,
         }, {
         }, {
             label: '电子站牌', key: 'electronicLicensePlate', icon: <AreaChartOutlined/>,
             label: '电子站牌', key: 'electronicLicensePlate', icon: <AreaChartOutlined/>,
         }, {
         }, {
@@ -123,6 +123,36 @@ export default function Home() {
                 label: '类型分布', key: 'typeDistribution', icon: <AreaChartOutlined/>,
                 label: '类型分布', key: 'typeDistribution', icon: <AreaChartOutlined/>,
             }, {
             }, {
                 label: '使用情况', key: 'usage', icon: <AreaChartOutlined/>,
                 label: '使用情况', key: 'usage', icon: <AreaChartOutlined/>,
+            }, {
+                label: '站场装机容量', key: 'installedCapacity', icon: <AreaChartOutlined/>,
+            }, {
+                label: '运营保障', key: 'stationOperate', icon: <AreaChartOutlined/>,
+            }, {
+                label: '充电趋势', key: 'chageTrends', icon: <AreaChartOutlined/>,
+            }, {
+                label: '充电桩服务情况', key: 'chageService', icon: <AreaChartOutlined/>,
+            }, {
+                label: '今日充电统计', key: 'nowChargeStatistics', icon: <AreaChartOutlined/>,
+            }, {
+                label: '资源使用率', key: 'resourceUsage', icon: <AreaChartOutlined/>,
+            },]
+        }, {
+            label: '线路分析', key: 'lineAnalysis', icon: <SettingOutlined/>, children: [{
+                label: '区域里程', key: 'regionalMileage', icon: <UserOutlined/>,
+            }, {
+                label: '线路运行速度', key: 'lineSpeed', icon: <UserOutlined/>,
+            }, {
+                label: '站点客流排名', key: 'stationPassengerFlow', icon: <UserOutlined/>,
+            }, {
+                label: '近期线路调整', key: 'lineAdjustment', icon: <UserOutlined/>,
+            }, {
+                label: '线路长度分布', key: 'lineLength', icon: <UserOutlined/>,
+            }, {
+                label: '线路站距分布', key: 'stationSpacingDistribution', icon: <UserOutlined/>,
+            }, {
+                label: '线路类型', key: 'lineType', icon: <UserOutlined/>,
+            }, {
+                label: '线路基本信息', key: 'lineAnalysisDetails', icon: <UserOutlined/>,
             },]
             },]
         }, {
         }, {
             label: '基础信息配置', key: 'setting', icon: <SettingOutlined/>, children: [{
             label: '基础信息配置', key: 'setting', icon: <SettingOutlined/>, children: [{

+ 156 - 0
src/pages/lineAnalysisChild/lineAdjustment/components/modal.jsx

@@ -0,0 +1,156 @@
+import {DatePicker, Form, Input, message, Modal, Select,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+import dayjs from "dayjs";
+
+
+export default function ModalHooks({isModalOpen, closeModal, row, option}) {
+    const [messageApi, contextHolder] = message.useMessage();
+    // 表单
+    const [form] = Form.useForm();
+    // 下拉框数值
+    let passengerOption = [
+        {value: 1, label: '新辟'},
+        {value: 2, label: '撤销'},
+        {value: 3, label: '调整'},
+
+
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营'},
+        {value: 2, label: '非运营'},
+    ]
+
+    /**
+     *确定时候的回调
+     */
+    function handleOk() {
+        // 验证表单
+        form.validateFields().then(async () => {
+            let formData = JSON.parse(JSON.stringify(form.getFieldsValue()))
+            formData.time = dayjs(formData.time).format('YYYY-MM-DD')
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/editAnalysisLineAdjust', [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))
+            formData.time = dayjs(formData.time)
+            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="time"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <DatePicker style={{width: '100%'}}/>
+                    </Form.Item>
+
+                    <Form.Item
+                        label="线路"
+                        name="lineId"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Select options={option} style={{width: '100%'}}></Select>
+                    </Form.Item>
+                    <Form.Item
+                        label="措施"
+                        name="measure"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Select options={passengerOption} style={{width: '100%'}}></Select>
+                    </Form.Item>
+                    <Form.Item
+                        label="线路类型"
+                        name="lineType"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="区域名称"
+                        name="region"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/lineAnalysisChild/lineAdjustment/components/modal.scss

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

+ 145 - 0
src/pages/lineAnalysisChild/lineAdjustment/lineAdjustment.jsx

@@ -0,0 +1,145 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./lineAdjustment.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function LineAdjustment() {
+    // 页面数据
+    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);
+
+    }
+
+    // 线路下拉框
+    const [option, setOption] = useState([])
+    // 线路数据
+    const [lineList, setLineList] = useState([])
+
+    /**
+     * 线路数据请求
+     * @returns {Promise<void>}
+     */
+    async function getLineData() {
+        let {data} = await await axios.get("/busLine/getList", {params: {hasModel: 1}})
+        setLineList(data)
+        let option = data.map(item => {
+            return {
+                label: item.lineName,
+                value: item.lineId,
+            }
+
+        })
+        setOption(option)
+
+    }
+
+    // 获取数据
+    async function getData() {
+        let {data} = await axios.get("/getAnalysisLineAdjust");
+        await getLineData()
+        setData(data);
+    }
+
+    // 设置类型文字
+    function setType(text) {
+        switch (text) {
+            case 1:
+                return "新辟";
+            case 2:
+                return "撤销";
+            case 3:
+                return "调整";
+
+
+        }
+    }
+
+    // 设置线路名称
+    function setText(text) {
+        let it = option.find((item) => item.value === text)?.label
+        return it
+    }
+
+    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="time" key="id"></Column>
+                <Column title="线路" dataIndex="lineId" key="id" render={(text) => (
+                    setText(text)
+                )}></Column>
+                <Column title="措施" dataIndex="measure" key="id" render={(text) => (
+                    setType(text)
+                )}></Column>
+                <Column title="线路类型" dataIndex="lineType" key="id"></Column>
+                <Column title="区域名称" dataIndex="region" 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='/delAnalysisLineAdjust' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+                option={option}
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/lineAnalysisChild/lineAdjustment/lineAdjustment.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;
+}
+}

+ 166 - 0
src/pages/lineAnalysisChild/lineAnalysisDetails/components/modal.jsx

@@ -0,0 +1,166 @@
+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: 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('/editAnalysisLineStatistics', [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="stationNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="线路重复数量"
+                        name="lineRepetition"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="线路数量"
+                        name="lineNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="线路密度"
+                        name="lineDensity"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="线路长度"
+                        name="lineLength"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="线路覆盖率"
+                        name="lineCoverageRate"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/lineAnalysisChild/lineAnalysisDetails/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/lineAnalysisChild/lineAnalysisDetails/lineAnalysisDetails.jsx

@@ -0,0 +1,121 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./lineAnalysisDetails.scss";
+import axios from "@/utils/axios.js";
+
+const {Column} = Table;
+
+export default function LineAnalysisDetails() {
+    // 页面数据
+    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("/getAnalysisLineStatistics");
+
+        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="stationNum" key="id"></Column>
+                <Column title="线路重复数量" dataIndex="lineRepetition" key="id"></Column>
+                <Column title="线路数量" dataIndex="lineNum" key="id"></Column>
+                <Column title="线路密度" dataIndex="lineDensity" key="id"></Column>
+                <Column title="线路长度" dataIndex="lineLength" key="id"></Column>
+                <Column title="线路覆盖率" dataIndex="lineCoverageRate" 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='/delAnalysisLineStatistics' id={text}*/}
+                            {/*              getData={getData}></DeleteButton>*/}
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/lineAnalysisChild/lineAnalysisDetails/lineAnalysisDetails.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;
+}
+}

+ 117 - 0
src/pages/lineAnalysisChild/lineLength/components/modal.jsx

@@ -0,0 +1,117 @@
+import {Form, Input, 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('/editAnalysisLineLength', [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="lengthType"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="占比"
+                        name="proportion"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/lineAnalysisChild/lineLength/components/modal.scss

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

+ 114 - 0
src/pages/lineAnalysisChild/lineLength/lineLength.jsx

@@ -0,0 +1,114 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./lineLength.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function LineLength() {
+    // 页面数据
+    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("/getAnalysisLineLength");
+        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="lengthType" key="id"></Column>
+                <Column title="占比" dataIndex="proportion" 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='/delAnalysisLineLength' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/lineAnalysisChild/lineLength/lineLength.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;
+}
+}

+ 144 - 0
src/pages/lineAnalysisChild/lineSpeed/components/modal.jsx

@@ -0,0 +1,144 @@
+import {DatePicker, Form, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+import dayjs from "dayjs";
+
+
+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()))
+            formData.time = dayjs(formData.time).format('YYYY-MM-DD HH:mm:ss')
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/editAnalysisLineOperate', [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))
+            formData.time = dayjs(formData.time)
+            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="time"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <DatePicker showTime style={{width: '100%'}}/>
+                    </Form.Item>
+                    <Form.Item
+                        label="特色线路"
+                        name="characteristicLine"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="常规线路"
+                        name="conventionLine"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item> <Form.Item
+                    label="快线"
+                    name="expressLine"
+                    rules={[
+                        {
+                            required: true,
+                            message: '请输入',
+                        },
+                    ]}
+
+                >
+                    <InputNumber style={{width: '100%'}}></InputNumber>
+                </Form.Item>
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/lineAnalysisChild/lineSpeed/components/modal.scss

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

+ 120 - 0
src/pages/lineAnalysisChild/lineSpeed/lineSpeed.jsx

@@ -0,0 +1,120 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./lineSpeed.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function LineSpeed() {
+    // 页面数据
+    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("/getAnalysisLineOperate");
+
+        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="time" key="id"></Column>
+                <Column title="特色线路" dataIndex="characteristicLine" key="id"></Column>
+                <Column title="常规线路" dataIndex="conventionLine" key="id"></Column>
+                <Column title="快线" dataIndex="expressLine" 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='/delAnalysisLineOperate' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/lineAnalysisChild/lineSpeed/lineSpeed.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;
+}
+}

+ 117 - 0
src/pages/lineAnalysisChild/lineType/components/modal.jsx

@@ -0,0 +1,117 @@
+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('/editAnalysisLineType', [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>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/lineAnalysisChild/lineType/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/lineAnalysisChild/lineType/lineType.jsx

@@ -0,0 +1,118 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./lineType.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function LineType() {
+    // 页面数据
+    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("/getAnalysisLineType");
+
+        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="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/delAnalysisLineType' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/lineAnalysisChild/lineType/lineType.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;
+}
+}

+ 117 - 0
src/pages/lineAnalysisChild/regionalMileage/components/modal.jsx

@@ -0,0 +1,117 @@
+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('/editAnalysisRegionFlow', [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="region"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="客流量"
+                        name="flow"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/lineAnalysisChild/regionalMileage/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/lineAnalysisChild/regionalMileage/regionalMileage.jsx

@@ -0,0 +1,118 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./regionalMileage.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function RegionalMileage() {
+    // 页面数据
+    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("/getAnalysisRegionFlow");
+
+        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="stationName" key="id"></Column>
+                <Column title="时间" dataIndex="time" 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='/delAnalysisRegionFlow' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/lineAnalysisChild/regionalMileage/regionalMileage.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;
+}
+}

+ 132 - 0
src/pages/lineAnalysisChild/stationPassengerFlow/components/modal.jsx

@@ -0,0 +1,132 @@
+import {DatePicker, Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+import dayjs from "dayjs";
+
+
+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()))
+            formData.time = dayjs(formData.time).format('YYYY-MM-DD HH:mm:ss')
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/editAnalysisStationRank', [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))
+            formData.time = dayjs(formData.time)
+            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="time"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <DatePicker showTime style={{width: '100%'}}/>
+                    </Form.Item>
+                    <Form.Item
+                        label="站点名称"
+                        name="stationName"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="客流量"
+                        name="flow"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/lineAnalysisChild/stationPassengerFlow/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/lineAnalysisChild/stationPassengerFlow/stationPassengerFlow.jsx

@@ -0,0 +1,118 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./stationPassengerFlow.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function StationPassengerFlow() {
+    // 页面数据
+    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("/getAnalysisStationRank");
+
+        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="stationName" key="id"></Column>
+                <Column title="时间" dataIndex="time" key="id"></Column>
+                <Column title="客流量" dataIndex="flow" 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='/delAnalysisStationRank' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/lineAnalysisChild/stationPassengerFlow/stationPassengerFlow.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;
+}
+}

+ 117 - 0
src/pages/lineAnalysisChild/stationSpacingDistribution/components/modal.jsx

@@ -0,0 +1,117 @@
+import {Form, Input, 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('/editAnalysisLineDistance', [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: '请输入',
+                            },
+                        ]}
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="占比"
+                        name="proportion"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/lineAnalysisChild/stationSpacingDistribution/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/lineAnalysisChild/stationSpacingDistribution/stationSpacingDistribution.jsx

@@ -0,0 +1,118 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./stationSpacingDistribution.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function StationSpacingDistribution() {
+    // 页面数据
+    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("/getAnalysisLineDistance");
+
+        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="proportion" 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='/delAnalysisLineDistance' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/lineAnalysisChild/stationSpacingDistribution/stationSpacingDistribution.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;
+}
+}

+ 13 - 2
src/pages/linePageChild/vehicleMonitoring/components/modal.jsx

@@ -1,4 +1,4 @@
-import {Form, Input, message, Modal, Select,} from 'antd';
+import {Form, Input, InputNumber, message, Modal, Select,} from 'antd';
 import axios from '@/utils/axios.js'
 import axios from '@/utils/axios.js'
 import {useEffect} from 'react'
 import {useEffect} from 'react'
 import './modal.scss'
 import './modal.scss'
@@ -142,7 +142,18 @@ export default function ModalHooks({isModalOpen, closeModal, row}) {
                     >
                     >
                         <Input style={{width: '100%'}}></Input>
                         <Input style={{width: '100%'}}></Input>
                     </Form.Item>
                     </Form.Item>
-
+                    <Form.Item
+                        label="损坏程度"
+                        name="damageNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
 
 
                 </Form>
                 </Form>
 
 

+ 118 - 0
src/pages/stationManagementInformation/InstalledCapacity/InstalledCapacity.jsx

@@ -0,0 +1,118 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./InstalledCapacity.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function InstalledCapacity() {
+    // 页面数据
+    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("/getStationInstalledCapacity");
+
+        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="操作"
+                    width="170px"
+                    dataIndex="id"
+                    key="id"
+                    render={(text, record) => (
+                        <div className="btn">
+                            <Button type="primary" onClick={() => modify(record)}>
+                                修改
+                            </Button>
+                            <DeleteButton url='/delStationInstalledCapacity' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/stationManagementInformation/InstalledCapacity/InstalledCapacity.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;
+}
+}

+ 117 - 0
src/pages/stationManagementInformation/InstalledCapacity/components/modal.jsx

@@ -0,0 +1,117 @@
+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('/editStationInstalledCapacity', [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>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/stationManagementInformation/InstalledCapacity/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/stationManagementInformation/chageService/chageService.jsx

@@ -0,0 +1,116 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./chageService.scss";
+import axios from "@/utils/axios.js";
+
+const {Column} = Table;
+
+export default function ChageService() {
+    // 页面数据
+    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("/getStationChargingStatus");
+
+        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="chargingStatus" 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>
+
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/stationManagementInformation/chageService/chageService.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;
+}
+}

+ 121 - 0
src/pages/stationManagementInformation/chageService/components/modal.jsx

@@ -0,0 +1,121 @@
+import {Form, Input, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+import dayjs from "dayjs";
+
+
+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('/editStationChargingStatus', 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))
+            formData.time = dayjs(formData.time)
+            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="chargingStatus"
+                        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/stationManagementInformation/chageService/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/stationManagementInformation/chageTrends/chageTrends.jsx

@@ -0,0 +1,118 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./chageTrends.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function ChageTrends() {
+    // 页面数据
+    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("/getStationChargingTrends");
+
+        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="time" 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='/delStationChargingTrends' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/stationManagementInformation/chageTrends/chageTrends.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;
+}
+}

+ 121 - 0
src/pages/stationManagementInformation/chageTrends/components/modal.jsx

@@ -0,0 +1,121 @@
+import {DatePicker, Form, InputNumber, message, Modal,} from 'antd';
+import axios from '@/utils/axios.js'
+import {useEffect} from 'react'
+import './modal.scss'
+import dayjs from "dayjs";
+
+
+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()))
+            formData.time = dayjs(formData.time).format('YYYY-MM-DD HH:mm:ss')
+            if (row?.id) {
+                // 修改数据
+                formData.id = row.id
+            }
+            let {code, message} = await axios.post('/editStationChargingTrends', [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))
+            formData.time = dayjs(formData.time)
+            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="time"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                                type: 'object'
+                            },
+                        ]}
+                    >
+                        <DatePicker showTime style={{width: '100%'}}/>
+                    </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/stationManagementInformation/chageTrends/components/modal.scss

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

+ 144 - 0
src/pages/stationManagementInformation/nowChargeStatistics/components/modal.jsx

@@ -0,0 +1,144 @@
+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: 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('/editStationChargingStatistics', 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="charge"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="今日充电次数"
+                        name="chargingNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+
+                            },
+                        ]}
+                    >
+                        <InputNumber style={{width: '100%'}}/>
+                    </Form.Item>
+                    <Form.Item
+                        label="今日充电车次总数"
+                        name="totalChargingNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="今日充电电量"
+                        name="electricityNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+
+                            },
+                        ]}
+                    >
+                        <InputNumber style={{width: '100%'}}/>
+                    </Form.Item>
+                    <Form.Item
+                        label="今日充电电量总数"
+                        name="totalElectricityNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 10 - 0
src/pages/stationManagementInformation/nowChargeStatistics/components/modal.scss

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

+ 119 - 0
src/pages/stationManagementInformation/nowChargeStatistics/nowChargeStatistics.jsx

@@ -0,0 +1,119 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./nowChargeStatistics.scss";
+import axios from "@/utils/axios.js";
+
+const {Column} = Table;
+
+export default function NowChargeStatistics() {
+    // 页面数据
+    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("/getStationChargingStatistics");
+
+        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="chargingNum" key="id"></Column>
+                <Column title="今日充电车次总数" dataIndex="totalChargingNum" key="id"></Column>
+                <Column title="今日充电电量" dataIndex="electricityNum" key="id"></Column>
+                <Column title="今日充电电量总数" dataIndex="totalElectricityNum" 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='/delStationChargingStatistics' id={text}*/}
+                            {/*              getData={getData}></DeleteButton>*/}
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/stationManagementInformation/nowChargeStatistics/nowChargeStatistics.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;
+}
+}

+ 155 - 0
src/pages/stationManagementInformation/resourceUsage/components/modal.jsx

@@ -0,0 +1,155 @@
+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('/editStationResourceRate', [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="resurce"
+                    form={form}
+                    wrapperCol={
+                        {span: 30, offset: 0}
+                    }
+                    layout='inline'
+                    initialValues={{
+                        remember: true,
+                    }}
+
+                    autoComplete="off"
+                >
+                    <Form.Item
+                        label="站场名称"
+                        name="stationName"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <Input style={{width: '100%'}}></Input>
+                    </Form.Item>
+                    <Form.Item
+                        label="充电量"
+                        name="chargingCapacity"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="维修保养车辆数量"
+                        name="maintenanceNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="入场率"
+                        name="admissionRate"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item> <Form.Item
+                    label="运维驿站使用率"
+                    name="usageRate"
+                    rules={[
+                        {
+                            required: true,
+                            message: '请输入',
+                        },
+                    ]}
+
+                >
+                    <InputNumber style={{width: '100%'}}></InputNumber>
+                </Form.Item>
+
+
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 10 - 0
src/pages/stationManagementInformation/resourceUsage/components/modal.scss

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

+ 121 - 0
src/pages/stationManagementInformation/resourceUsage/resourceUsage.jsx

@@ -0,0 +1,121 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./resourceUsage.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function ResourceUsage() {
+    // 页面数据
+    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("/getStationResourceRate");
+
+        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="stationName" key="id"></Column>
+                <Column title="充电量" dataIndex="chargingCapacity" key="id"></Column>
+                <Column title="维修保养车辆数量" dataIndex="maintenanceNum" key="id"></Column>
+                <Column title="入场率" dataIndex="admissionRate" key="id"></Column>
+                <Column title="运维驿站使用率" dataIndex="usageRate" 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='/delStationResourceRate' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/stationManagementInformation/resourceUsage/resourceUsage.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;
+}
+}

+ 167 - 0
src/pages/stationManagementInformation/stationOperate/components/modal.jsx

@@ -0,0 +1,167 @@
+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: 1, label: '行驶中'},
+        {value: 2, label: '维保'},
+        {value: 3, label: '固定包车'},
+        {value: 4, label: '临时包车'},
+        {value: 5, label: '充电'},
+        {value: 6, label: '公务'},
+
+    ]
+    //状态下拉框
+    const status = [
+        {value: 1, label: '运营车辆'},
+        {value: 0, 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('/editStationOperate', [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: '请输入',
+                            },
+                        ]}
+                    >
+                        <Select options={status} style={{width: '100%'}}></Select>
+                    </Form.Item>
+                    <Form.Item
+                        label="泊车车辆"
+                        name="parkingNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                    <Form.Item
+                        label="滞留车辆"
+                        name="retentionNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item> <Form.Item
+                    label="凌晨泊车车辆"
+                    name="amParkingNum"
+                    rules={[
+                        {
+                            required: true,
+                            message: '请输入',
+                        },
+                    ]}
+
+                >
+                    <InputNumber style={{width: '100%'}}></InputNumber>
+                </Form.Item>
+                    <Form.Item
+                        label="出场车辆"
+                        name="outNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+
+                    <Form.Item
+                        label="进场车辆"
+                        name="inNum"
+                        rules={[
+                            {
+                                required: true,
+                                message: '请输入',
+                            },
+                        ]}
+
+                    >
+                        <InputNumber style={{width: '100%'}}></InputNumber>
+                    </Form.Item>
+                </Form>
+
+            </Modal>
+        </div>
+    )
+
+
+}

+ 9 - 0
src/pages/stationManagementInformation/stationOperate/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/stationManagementInformation/stationOperate/stationOperate.jsx

@@ -0,0 +1,119 @@
+import {Button, Table} from "antd";
+import {useEffect, useState} from "react";
+import ModalHooks from "./components/modal.jsx";
+import "./stationOperate.scss";
+import axios from "@/utils/axios.js";
+import DeleteButton from "@/components/delete.jsx";
+
+const {Column} = Table;
+
+export default function StationOperate() {
+    // 页面数据
+    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("/getStationOperate");
+        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"
+                        render={(text) => text ? '运营车辆' : '非运营车辆'}></Column>
+                <Column title="泊车车辆" dataIndex="parkingNum" key="id"></Column>
+                <Column title="滞留车辆" dataIndex="retentionNum" key="id"></Column>
+                <Column title="凌晨泊车车辆" dataIndex="amParkingNum" key="id"></Column>
+                <Column title="出场车辆" dataIndex="outNum" 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='/delStationOperate' id={text}
+                                          getData={getData}></DeleteButton>
+                        </div>
+                    )}
+                />
+            </Table>
+            <ModalHooks
+                isModalOpen={isModalOpen}
+                closeModal={closeModal}
+                row={row}
+
+                val={val}
+            ></ModalHooks>
+        </div>
+    );
+}

+ 26 - 0
src/pages/stationManagementInformation/stationOperate/stationOperate.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;
+}
+}