From b15c8696b7bdb1c83d6725fc368baf8ed0123f03 Mon Sep 17 00:00:00 2001 From: fangjiakai <450850793@qq.com> Date: Tue, 18 Nov 2025 10:01:29 +0800 Subject: [PATCH] =?UTF-8?q?feat(mkmjPassage):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=80=9A=E9=81=93=E5=90=8D=E7=A7=B0=E5=94=AF=E4=B8=80=E6=80=A7?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在新增和编辑通道时增加名称重复检查 - 调整通道类型和状态字段为字符串形式 -优化表单项布局与渲染逻辑- 移除不必要的组件引用和冗余代码- 改进地图组件使用方式及位置展示逻辑- 更新列表数据显示格式并增强可读性 --- src/api/mkmjPassage/index.js | 2 + src/pages/Container/MkmjArea/index.js | 6 +- src/pages/Container/MkmjAreaGate/index.js | 6 +- src/pages/Container/MkmjGateVideo/index.js | 1 - src/pages/Container/MkmjPassage/index.js | 78 +++++++++++++------ .../Container/Statistics/PassageList/index.js | 4 - 6 files changed, 62 insertions(+), 35 deletions(-) diff --git a/src/api/mkmjPassage/index.js b/src/api/mkmjPassage/index.js index 597e5d7..5ef41b5 100644 --- a/src/api/mkmjPassage/index.js +++ b/src/api/mkmjPassage/index.js @@ -23,3 +23,5 @@ export const mkmjPassageBatchDelete = declareRequest( export const mkmjPassageInfo = declareRequest('mkmjPassageLoading', 'Get > /primeport/mkmjPassage/{id}'); export const getStatistics = declareRequest('mkmjPassageLoading', 'Post > @/primeport/mkmjPassage/statistics'); + +export const hasName = declareRequest('mkmjPassageLoading','Get > /primeport/mkmjPassage/hasName/{name}') \ No newline at end of file diff --git a/src/pages/Container/MkmjArea/index.js b/src/pages/Container/MkmjArea/index.js index cc2d9b9..40b6b77 100644 --- a/src/pages/Container/MkmjArea/index.js +++ b/src/pages/Container/MkmjArea/index.js @@ -182,8 +182,8 @@ function AddModalComponent(props) { if (props.currentId) { props["mkmjAreaInfo"]({id: props.currentId}).then((res) => { form.setFieldsValue({...res.data, - areaType: Number(res.data.areaType), - areaStatus: Number(res.data.areaStatus), + areaType: res.data.areaType + "", + areaStatus: res.data.areaStatus + "", }); }); } @@ -220,7 +220,7 @@ function AddModalComponent(props) { {name: "areaRange", label: "口门位置"}, {name: "areaStatus", label: "口门状态",render: FORM_ITEM_RENDER_ENUM.SELECT, items: AREA_STATUS}, {key:"map",customizeRender:true,render:} - + ]} /> diff --git a/src/pages/Container/MkmjAreaGate/index.js b/src/pages/Container/MkmjAreaGate/index.js index 7dc8d18..ed49951 100644 --- a/src/pages/Container/MkmjAreaGate/index.js +++ b/src/pages/Container/MkmjAreaGate/index.js @@ -176,9 +176,9 @@ function AddModalComponent(props) { if (props.currentId) { props["mkmjAreaGateInfo"]({id: props.currentId}).then((res) => { form.setFieldsValue({...res.data, - gateType: Number(res.data.gateType), - gateStatus: Number(res.data.gateStatus), - gateCategory: Number(res.data.gateCategory), + gateType: res.data.gateType + "", + gateStatus: res.data.gateStatus + "", + gateCategory: res.data.gateCategory + "", }); }); } diff --git a/src/pages/Container/MkmjGateVideo/index.js b/src/pages/Container/MkmjGateVideo/index.js index e432d61..b8c6e3e 100644 --- a/src/pages/Container/MkmjGateVideo/index.js +++ b/src/pages/Container/MkmjGateVideo/index.js @@ -10,7 +10,6 @@ import { NS_MKMJGATEVIDEO } from "~/enumerate/namespace"; import AddIcon from "zy-react-library/components/Icon/AddIcon"; import DeleteIcon from "zy-react-library/components/Icon/DeleteIcon"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; -import Map from "zy-react-library/components/Map"; import HeaderBack from "zy-react-library/components/HeaderBack"; diff --git a/src/pages/Container/MkmjPassage/index.js b/src/pages/Container/MkmjPassage/index.js index d24217b..5c3f9af 100644 --- a/src/pages/Container/MkmjPassage/index.js +++ b/src/pages/Container/MkmjPassage/index.js @@ -1,5 +1,5 @@ import {Connect} from "@cqsjjb/jjb-dva-runtime"; -import {Button, Form, message, Modal, Space, Descriptions} from "antd"; +import {Button, Descriptions, Form, message, Modal, Space} from "antd"; import {useEffect, useState} from "react"; import FormBuilder from "zy-react-library/components/FormBuilder"; import Search from "zy-react-library/components/Search"; @@ -9,7 +9,6 @@ import useTable from "zy-react-library/hooks/useTable"; import {NS_MKMJPASSAGE} from "~/enumerate/namespace"; import AddIcon from "zy-react-library/components/Icon/AddIcon"; import DeleteIcon from "zy-react-library/components/Icon/DeleteIcon"; -import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import Map from "zy-react-library/components/Map"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import LocationIcon from "zy-react-library/components/Icon/LocationIcon"; @@ -39,12 +38,12 @@ function MkmjPassage(props) { const {tableProps, getData} = useTable(props["mkmjPassageList"], { form, params: { - eqAreaId: areaId, + eqAreaId: areaId, }, }); return (
- + record.passageType === 1 ? "人行通道" : record.passageType === 2 ? "车行通道" : "综合通道"}, - {dataIndex: "passageStatus", title: "通道状态",render: (_, record) => record.passageStatus === 0 ? "停用" : record.passageStatus === 1 ? "正常" : "暂时关闭"}, - {dataIndex: "gateNum", title: "视频个数",render:(_,record)=>{ - return record.gateNum || 0; - }}, + { + dataIndex: "passageType", + title: "通道类型", + render: (_, record) => record.passageType === 1 ? "人行通道" : record.passageType === 2 ? "车行通道" : "综合通道" + }, + { + dataIndex: "passageStatus", + title: "通道状态", + render: (_, record) => record.passageStatus === 0 ? "停用" : record.passageStatus === 1 ? "正常" : "暂时关闭" + }, + { + dataIndex: "gateNum", title: "视频个数", render: (_, record) => { + return record.gateNum || 0; + } + }, { title: "操作", align: "center", @@ -170,12 +179,21 @@ function MkmjPassage(props) { function AddModalComponent(props) { const [form] = Form.useForm(); + + const hasName = async (rule, value) => { + const {data} = await props["hasName"]({name: value}) + if (data && data.id !== props.currentId) { + return Promise.reject(new Error('通道名已存在')) + } + return Promise.resolve(); + } useEffect(() => { if (props.currentId) { props["mkmjPassageInfo"]({id: props.currentId}).then((res) => { - form.setFieldsValue({...res.data, - passageType: Number(res.data.passageType), - passageStatus: Number(res.data.passageStatus), + form.setFieldsValue({ + ...res.data, + passageType: res.data.passageType + "", + passageStatus: res.data.passageStatus + "", }); }); } @@ -185,7 +203,11 @@ function AddModalComponent(props) { props.onCancel(); }; const submit = async (values) => { - await props[!props.currentId ? "mkmjPassageAdd" : "mkmjPassageEdit"]({...values, areaId: props.areaId, id: props.currentId}); + await props[!props.currentId ? "mkmjPassageAdd" : "mkmjPassageEdit"]({ + ...values, + areaId: props.areaId, + id: props.currentId + }); onCancel(); props.getData(); }; @@ -199,16 +221,16 @@ function AddModalComponent(props) { width={800} > } + {name: "passageName", label: "通道名称", rules: [{validator: hasName, trigger: 'blur'}]}, + {name: "passageType", label: "通道类型", render: FORM_ITEM_RENDER_ENUM.SELECT, items: PASSAGE_TYPE}, + {name: "passageStatus", label: "通道状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: PASSAGE_STATUS}, + {key: "map", customizeRender: true, render: } ]} /> @@ -240,15 +262,23 @@ function InfoModalComponent(props) { bordered items={[ {children: info.passageName, label: "通道名称"}, - {children: info.passageType===1?"人行通道":info.passageType===2?"车行通道":"综合通道", label: "通道类型"}, - {children: info.passageStatus===0?"停用":info.passageStatus===1?"正常":"暂时关闭", label: "通道状态"}, - {children: { - setMapVisible(true); - }}/>, label: "位置"}, + { + children: info.passageType === 1 ? "人行通道" : info.passageType === 2 ? "车行通道" : "综合通道", + label: "通道类型" + }, + { + children: info.passageStatus === 0 ? "停用" : info.passageStatus === 1 ? "正常" : "暂时关闭", + label: "通道状态" + }, + { + children: { + setMapVisible(true); + }}/>, label: "位置" + }, ]} /> - setMapVisible(false)} longitude={info.longitude} diff --git a/src/pages/Container/Statistics/PassageList/index.js b/src/pages/Container/Statistics/PassageList/index.js index 70a6b69..5ac269c 100644 --- a/src/pages/Container/Statistics/PassageList/index.js +++ b/src/pages/Container/Statistics/PassageList/index.js @@ -34,10 +34,6 @@ function MkmjPassage(props) { const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [listData, setListData] = useState([]); - const getStatistics = async (ids) => { - const { data } = await props["getStatistics"]({ ids }) - setStatistics(data) - } const [form] = Form.useForm(); const {tableProps, getData} = useTable(props["mkmjPassageList"], {