From 0b5bde42a8fab925caf2db1b06dc0f0e06ad9d71 Mon Sep 17 00:00:00 2001 From: LiuJiaNan <15703339975@163.com> Date: Tue, 28 Apr 2026 17:06:36 +0800 Subject: [PATCH] =?UTF-8?q?bug=EF=BC=9A16193=E3=80=8116192=E3=80=8116191?= =?UTF-8?q?=E3=80=8116190=E3=80=8116189=E3=80=8116179=E3=80=8116173?= =?UTF-8?q?=E3=80=8116168=E3=80=8116164=E3=80=8116160=E3=80=8116152?= =?UTF-8?q?=E3=80=8116150?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/approverUser/index.js | 5 - src/api/enclosedAreaPersonnelApply/index.js | 6 +- .../index.js | 9 +- .../index.js | 18 +- src/api/firstLevelDoorInfo/index.js | 23 +- src/api/stockPersonnelAndVehicles/index.js | 6 +- .../Camera/BatchPlay/index.js | 7 + .../Channel/Camera/BatchPlay/index.js | 7 + .../Channel/Camera/List/index.js | 7 + .../TemporaryPersonnelReview/List/index.js | 6 +- .../TemporaryPersonnelReview/Review/index.js | 2 +- .../List/index.js | 6 +- .../TemporaryVehicleReview/List/index.js | 6 +- .../TemporaryVehicleReview/Review/index.js | 2 +- .../List/index.js | 6 +- .../PersonnelApplication/Apply/index.js | 27 +- src/pages/Container/Mobile/index.less | 3 +- .../PersonnelApplication/Add/index.js | 2 +- .../PersonnelApplication/List/index.js | 2 +- .../PersonnelPermissionRecords/List/index.js | 8 +- .../VehicleApplication/Add/index.js | 50 +- .../EnclosedArea/Apply/Personnel/Add/index.js | 1 + .../EnclosedArea/Apply/Vehicle/Add/index.js | 46 +- .../Apply/VehicleRecords/List/index.js | 4 +- .../Camera/BatchPlay/index.js | 7 + .../Channel/Camera/BatchPlay/index.js | 7 + .../Channel/Camera/List/index.js | 7 + .../EnclosedAreaDoor/Channel/Camera/index.js | 6 +- .../Camera/BatchPlay/index.js | 682 ++++++++++++++++++ .../Camera/List/components/VideoPlay/index.js | 305 ++++++++ .../FirstLevelDoorInfo/Camera/List/index.js | 168 ++--- .../Channel/Camera/BatchPlay/index.js | 7 + .../Channel/Camera/List/index.js | 7 + .../Channel/Camera/index.js | 6 +- .../VehicleManagement/List/index.js | 1 - .../PersonalVehicle/Add/index.js | 4 + .../Personnel/List/index.js | 2 +- .../StockPersonnelAndVehicles/List/index.js | 2 +- .../VehicleManagement/List/index.js | 2 +- .../VehiclesViolation/List/index.js | 1 - .../RelatedPersonnel/index.js | 1 - .../TemporaryPersonnel/Add/index.js | 2 +- .../TemporaryPersonnel/List/index.js | 11 +- .../TemporaryPersonnel/View/index.js | 8 +- .../TemporaryVehicle/Add/index.js | 4 + .../TemporaryVehicle/View/index.js | 8 +- src/utils/video.js | 41 ++ 47 files changed, 1361 insertions(+), 187 deletions(-) create mode 100644 src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Camera/BatchPlay/index.js create mode 100644 src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/BatchPlay/index.js create mode 100644 src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/List/index.js create mode 100644 src/pages/Container/Supervision/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Camera/BatchPlay/index.js create mode 100644 src/pages/Container/Supervision/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/BatchPlay/index.js create mode 100644 src/pages/Container/Supervision/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/List/index.js create mode 100644 src/pages/Container/Supervision/FirstLevelDoor/BasicInfo/FirstLevelDoorInfo/Camera/BatchPlay/index.js create mode 100644 src/pages/Container/Supervision/FirstLevelDoor/BasicInfo/FirstLevelDoorInfo/Camera/List/components/VideoPlay/index.js create mode 100644 src/pages/Container/Supervision/FirstLevelDoor/BasicInfo/FirstLevelDoorInfo/Channel/Camera/BatchPlay/index.js create mode 100644 src/pages/Container/Supervision/FirstLevelDoor/BasicInfo/FirstLevelDoorInfo/Channel/Camera/List/index.js create mode 100644 src/utils/video.js diff --git a/src/api/approverUser/index.js b/src/api/approverUser/index.js index 40ab66c..592f1ae 100644 --- a/src/api/approverUser/index.js +++ b/src/api/approverUser/index.js @@ -4,27 +4,22 @@ export const approvalUserList = declareRequest( "approvalUserLoading", `Post > @/primeport/mkmjApprovalUser/list`, ); - export const approvalUserListAll = declareRequest( "approvalUserLoading", `Get > /primeport/mkmjApprovalUser/listAll`, ); - export const approvalUserDelete = declareRequest( "approvalUserLoading", `Delete > @/primeport/mkmjApprovalUser/{id}`, ); - export const approvalUserInfo = declareRequest( "approvalUserLoading", `Get > /primeport/mkmjApprovalUser/{id}`, ); - export const approvalUserUpdate = declareRequest( "approvalUserLoading", `Put > @/primeport/mkmjApprovalUser/edit`, ); - export const approvalUserAdd = declareRequest( "approvalUserLoading", `Post > @/primeport/mkmjApprovalUser/save`, diff --git a/src/api/enclosedAreaPersonnelApply/index.js b/src/api/enclosedAreaPersonnelApply/index.js index f15d647..8b9529a 100644 --- a/src/api/enclosedAreaPersonnelApply/index.js +++ b/src/api/enclosedAreaPersonnelApply/index.js @@ -20,10 +20,8 @@ export const enclosedAreaPersonnelApplySave = declareRequest( "enclosedAreaPersonnelApplyLoading", `Post > @/primeport/closedAreaPersonApply/save`, ); -export const enclosedAreaPersonnelApplyRecordsAccessRecordsList = declareRequest( - "enclosedAreaPersonnelApplyLoading", - `Post > @/primeport/`, -); +export const enclosedAreaPersonnelApplyRecordsAccessRecordsList + = declareRequest("enclosedAreaPersonnelApplyLoading", `Post > @/primeport/`); export const xgfProjectListAll = declareRequest( "enclosedAreaPersonnelApplyLoading", `Get > /xgfManager/project/listAllPassedBySelfCorp`, diff --git a/src/api/enclosedEnterprisePersonnelPermissions/index.js b/src/api/enclosedEnterprisePersonnelPermissions/index.js index 5357698..6d76fa2 100644 --- a/src/api/enclosedEnterprisePersonnelPermissions/index.js +++ b/src/api/enclosedEnterprisePersonnelPermissions/index.js @@ -4,10 +4,11 @@ export const enclosedEnterprisePersonnelPermissionsList = declareRequest( "enclosedEnterprisePersonnelPermissionsLoading", `Post > @/primeport/closedAreaPersonApply/getCorpUserList`, ); -export const enclosedEnterprisePersonnelPermissionsPersonnelRecordsList = declareRequest( - "enclosedEnterprisePersonnelPermissionsLoading", - `Post > @/primeport/`, -); +export const enclosedEnterprisePersonnelPermissionsPersonnelRecordsList + = declareRequest( + "enclosedEnterprisePersonnelPermissionsLoading", + `Post > @/primeport/`, + ); export const enclosedEnterprisePersonnelPermissionsInfo = declareRequest( "enclosedEnterprisePersonnelPermissionsLoading", `Get > /primeport/closedAreaPersonApply/getAuthorizationPersonInfo/{id}`, diff --git a/src/api/enclosedPersonnelAndVehicleStatistics/index.js b/src/api/enclosedPersonnelAndVehicleStatistics/index.js index f82a176..060d750 100644 --- a/src/api/enclosedPersonnelAndVehicleStatistics/index.js +++ b/src/api/enclosedPersonnelAndVehicleStatistics/index.js @@ -4,11 +4,13 @@ export const enclosedPersonnelAndVehicleStatisticsList = declareRequest( "enclosedPersonnelAndVehicleStatisticsLoading", `Post > @/primeport/`, ); -export const enclosedPersonnelAndVehicleStatisticsVehicleEntryAndExitRecordsList = declareRequest( - "enclosedPersonnelAndVehicleStatisticsLoading", - `Post > @/primeport/`, -); -export const enclosedPersonnelAndVehicleStatisticsPersonnelEntryAndExitRecordsList = declareRequest( - "enclosedPersonnelAndVehicleStatisticsLoading", - `Post > @/primeport/`, -); +export const enclosedPersonnelAndVehicleStatisticsVehicleEntryAndExitRecordsList + = declareRequest( + "enclosedPersonnelAndVehicleStatisticsLoading", + `Post > @/primeport/`, + ); +export const enclosedPersonnelAndVehicleStatisticsPersonnelEntryAndExitRecordsList + = declareRequest( + "enclosedPersonnelAndVehicleStatisticsLoading", + `Post > @/primeport/`, + ); diff --git a/src/api/firstLevelDoorInfo/index.js b/src/api/firstLevelDoorInfo/index.js index 434bb8f..1a1a31c 100644 --- a/src/api/firstLevelDoorInfo/index.js +++ b/src/api/firstLevelDoorInfo/index.js @@ -52,20 +52,17 @@ export const firstLevelDoorInfoCameraInfo = declareRequest( "firstLevelDoorInfoCameraLoading", `Get > /primeport/video/{id}`, ); -export const firstLevelDoorInfoCameraGetRTSPUrl = declareRequest( - "firstLevelDoorInfoCameraLoading", - `Post > @/primeport/`, -); -export const firstLevelDoorInfoCameraGetPlayUrl = declareRequest( - "firstLevelDoorInfoCameraLoading", - `Post > @/primeport/`, -); -export const firstLevelDoorInfoCameraGetBatchPlayUrl = declareRequest( - "firstLevelDoorInfoCameraLoading", - `Post > @/primeport/`, -); export const firstLevelDoorInfoFixedCameraList = declareRequest( - `Get > /primeport/`, + "firstLevelDoorInfoChannelLoading", + `Post > @/videopatrol/fixedCamera/list`, +); +export const firstLevelDoorInfoFixedCameraInfo = declareRequest( + "fixedCameraLoading", + `Get > /videopatrol/fixedCamera/{id}`, +); +export const firstLevelDoorInfoFixedCameraGetPlayUrl = declareRequest( + "fixedCameraLoading", + `Get > /videopatrol/fixedCamera/getPlayUrl?indexCode={indexCode}`, ); export const firstLevelDoorInfoChannelList = declareRequest( "firstLevelDoorInfoChannelLoading", diff --git a/src/api/stockPersonnelAndVehicles/index.js b/src/api/stockPersonnelAndVehicles/index.js index 9195b3e..33f48e0 100644 --- a/src/api/stockPersonnelAndVehicles/index.js +++ b/src/api/stockPersonnelAndVehicles/index.js @@ -20,7 +20,5 @@ export const stockPersonnelAndVehiclesAuthorization = declareRequest( "stockPersonnelAndVehiclesLoading", `Post > @/primeport/personApply/authorization`, ); -export const stockPersonnelAndVehiclesVehicleManagementVehicleRecordsList = declareRequest( - "stockPersonnelAndVehiclesLoading", - `Post > @/primeport/`, -); +export const stockPersonnelAndVehiclesVehicleManagementVehicleRecordsList + = declareRequest("stockPersonnelAndVehiclesLoading", `Post > @/primeport/`); diff --git a/src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Camera/BatchPlay/index.js b/src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Camera/BatchPlay/index.js new file mode 100644 index 0000000..f5b6f12 --- /dev/null +++ b/src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Camera/BatchPlay/index.js @@ -0,0 +1,7 @@ +import BatchPlayPage from "~/pages/Container/Supervision/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Camera/BatchPlay"; + +function BatchPlay(props) { + return (); +} + +export default BatchPlay; diff --git a/src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/BatchPlay/index.js b/src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/BatchPlay/index.js new file mode 100644 index 0000000..7afead1 --- /dev/null +++ b/src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/BatchPlay/index.js @@ -0,0 +1,7 @@ +import BatchPlayPage from "~/pages/Container/Supervision/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/BatchPlay"; + +function BatchPlay(props) { + return (); +} + +export default BatchPlay; diff --git a/src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/List/index.js b/src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/List/index.js new file mode 100644 index 0000000..75eba8b --- /dev/null +++ b/src/pages/Container/Enterprise/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/List/index.js @@ -0,0 +1,7 @@ +import CameraPage from "~/pages/Container/Supervision/EnclosedArea/AreaAndEntrance/EnclosedAreaDoor/Channel/Camera/List"; + +function Camera(props) { + return (); +} + +export default Camera; diff --git a/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReview/List/index.js b/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReview/List/index.js index d887714..61fd923 100644 --- a/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReview/List/index.js +++ b/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReview/List/index.js @@ -30,7 +30,11 @@ function List(props) { columns={[ { title: "姓名", dataIndex: "applyPersonUserName" }, { title: "手机号", dataIndex: "userPhone" }, - { title: "身份证号", dataIndex: "userCard" }, + { + title: "身份证号", + dataIndex: "userCard", + render: (_, record) => record.userCard ? atob(record.userCard) : "", + }, { title: "申请区域", dataIndex: "closedAreaName" }, { title: "申请口门名称", dataIndex: "levelTwoMkmjName" }, { diff --git a/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReview/Review/index.js b/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReview/Review/index.js index df1c07f..f89bbd5 100644 --- a/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReview/Review/index.js +++ b/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReview/Review/index.js @@ -56,7 +56,7 @@ function Review(props) { items={[ { label: "姓名", children: info.applyPersonUserName }, { label: "手机号", children: info.userPhone }, - { label: "身份证号", children: info.userCard }, + { label: "身份证号", children: info.userCard ? atob(info.userCard) : "" }, { label: "申请区域", children: info.closedAreaName }, { label: "一级口门", children: info.levelOneMkmjName }, { label: "二级口门", children: info.levelTwoMkmjName }, diff --git a/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReviewRecords/List/index.js b/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReviewRecords/List/index.js index 1d6a361..920382f 100644 --- a/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReviewRecords/List/index.js +++ b/src/pages/Container/Enterprise/EnclosedArea/PersonnelReview/TemporaryPersonnelReviewRecords/List/index.js @@ -34,7 +34,11 @@ function List(props) { columns={[ { title: "姓名", dataIndex: "applyPersonUserName" }, { title: "手机号", dataIndex: "userPhone" }, - { title: "身份证号", dataIndex: "userCard" }, + { + title: "身份证号", + dataIndex: "userCard", + render: (_, record) => record.userCard ? atob(record.userCard) : "", + }, { title: "申请区域", dataIndex: "closedAreaName" }, { title: "申请口门名称", dataIndex: "levelTwoMkmjName" }, { diff --git a/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReview/List/index.js b/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReview/List/index.js index be073e1..b896021 100644 --- a/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReview/List/index.js +++ b/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReview/List/index.js @@ -31,7 +31,11 @@ function List(props) { { title: "车辆类型", dataIndex: "vehicleTypeName" }, { title: "车牌号", dataIndex: "licenceNo" }, { title: "姓名", dataIndex: "applyPersonUserName" }, - { title: "身份证号", dataIndex: "userCard" }, + { + title: "身份证号", + dataIndex: "userCard", + render: (_, record) => record.userCard ? atob(record.userCard) : "", + }, { title: "手机号", dataIndex: "userPhone" }, { title: "申请区域", dataIndex: "closedAreaName" }, { title: "口门名称", dataIndex: "levelTwoMkmjName" }, diff --git a/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReview/Review/index.js b/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReview/Review/index.js index e1a4ae4..06dade1 100644 --- a/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReview/Review/index.js +++ b/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReview/Review/index.js @@ -59,7 +59,7 @@ function Review(props) { { label: "车牌号", children: info.licenceNo }, { label: "驾驶人姓名", children: info.drivingUserName }, { label: "手机号", children: info.userPhone }, - { label: "身份证号", children: info.userCard }, + { label: "身份证号", children: info.userCard ? atob(info.userCard) : "" }, { label: "申请区域", children: info.closedAreaName }, { label: "一级口门名称", children: info.levelOneMkmjName }, { label: "二级口门名称", children: info.levelTwoMkmjName }, diff --git a/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReviewRecords/List/index.js b/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReviewRecords/List/index.js index 9ff94f3..6856454 100644 --- a/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReviewRecords/List/index.js +++ b/src/pages/Container/Enterprise/EnclosedArea/VehicleReview/TemporaryVehicleReviewRecords/List/index.js @@ -35,7 +35,11 @@ function List(props) { { title: "车辆类型", dataIndex: "vehicleTypeName" }, { title: "车牌号", dataIndex: "licenceNo" }, { title: "姓名", dataIndex: "applyPersonUserName" }, - { title: "身份证号", dataIndex: "userCard" }, + { + title: "身份证号", + dataIndex: "userCard", + render: (_, record) => record.userCard ? atob(record.userCard) : "", + }, { title: "手机号", dataIndex: "userPhone" }, { title: "申请区域", dataIndex: "closedAreaName" }, { title: "口门名称", dataIndex: "levelTwoMkmjName" }, diff --git a/src/pages/Container/Mobile/firstLevelDoor/PersonnelApplication/Apply/index.js b/src/pages/Container/Mobile/firstLevelDoor/PersonnelApplication/Apply/index.js index 91a735e..0309e6c 100644 --- a/src/pages/Container/Mobile/firstLevelDoor/PersonnelApplication/Apply/index.js +++ b/src/pages/Container/Mobile/firstLevelDoor/PersonnelApplication/Apply/index.js @@ -82,8 +82,7 @@ function Apply(props) { const licensePlateTypeData = await getDictionary({ dictValue: "LICENSE_PLATE_TYPE" }); setLicensePlateTypeList(licensePlateTypeData); const { data: departmentList } = await props["getDepartmentListTree"]({ enterpriseType: [2] }); - const transformedDepartmentList = transformTreeList(departmentList, "name", "id"); - setDepartmentList(transformedDepartmentList); + setDepartmentList(departmentList); }; const getApprovalUserList = async (corpId) => { @@ -187,6 +186,7 @@ function Apply(props) { informSignId, jurisdictionalCorpId: values.jurisdictionalCorpId?.at(-1), closedAreaId: values.closedAreaId?.at(-1), + userCard: btoa(values.userCard), }); if (success) { props.history.push(`./success?id=${data.id}&tmpApplyType=${values.tmpApplyType}&tmpMkmjType=${values.tmpMkmjType}`); @@ -721,14 +721,21 @@ const EnclosedAreaFields = ({ onClick={(_, pickerRef) => { pickerRef.current?.open(); }} + getValueFromEvent={value => value[0]} + getValueProps={value => [value]} > - ({ label: item.name, value: item.id }))]} onConfirm={(value) => { - form.setFieldValue("jurisdictionalCorpName", getTreeLabelName(departmentList, value.at(-1))); - if (value.length > 0) { - getEnclosedAreaList(value.at(-1)); - getApprovalUserList(value.at(-1)); + form.setFieldValue("jurisdictionalCorpName", getLabelName({ + list: departmentList, + status: value[0], + idKey: "id", + nameKey: "name", + })); + if (value[0]) { + getEnclosedAreaList(value[0]); + getApprovalUserList(value[0]); } form.setFieldValue("closedAreaId", ""); form.setFieldValue("closedAreaName", ""); @@ -736,8 +743,8 @@ const EnclosedAreaFields = ({ form.setFieldValue("levelTwoMkmjName", ""); }} > - {value => value.length > 0 ? value.map(item => item?.label).filter(Boolean).join("-") : "请选择区域所属公司"} - + {value => value?.[0]?.label || "请选择区域所属公司"} + diff --git a/src/pages/Container/Mobile/index.less b/src/pages/Container/Mobile/index.less index 5285831..8fd30ab 100644 --- a/src/pages/Container/Mobile/index.less +++ b/src/pages/Container/Mobile/index.less @@ -1,4 +1,5 @@ -.adm-list, .adm-input { +.adm-list, +.adm-input { --font-size: var(--adm-font-size-6); } diff --git a/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelApplication/Add/index.js b/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelApplication/Add/index.js index 7e48f9e..6c64fbf 100644 --- a/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelApplication/Add/index.js +++ b/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelApplication/Add/index.js @@ -89,7 +89,7 @@ function Add(props) { employeePersonUserName: item.userName, userFaceUrl: item.userFaceUrl, userPhone: item.phone, - userCard: item.userCard, + userCard: btoa(item.userCard), ...item, })), informSignId, diff --git a/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelApplication/List/index.js b/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelApplication/List/index.js index 0817710..0fa53b5 100644 --- a/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelApplication/List/index.js +++ b/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelApplication/List/index.js @@ -12,7 +12,7 @@ import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import useGetFile from "zy-react-library/hooks/useGetFile"; import useTable from "zy-react-library/hooks/useTable"; import { getLabelName } from "zy-react-library/utils"; -import {ENCLOSED_AREA_AUDIT_STATUS_ENUM, TRAINING_STATE_ENUM} from "~/enumerate/constant"; +import { ENCLOSED_AREA_AUDIT_STATUS_ENUM } from "~/enumerate/constant"; import { NS_PERSONNEL_APPLICATION } from "~/enumerate/namespace"; function List(props) { diff --git a/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelPermissionRecords/List/index.js b/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelPermissionRecords/List/index.js index 44dea81..b7d0f76 100644 --- a/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelPermissionRecords/List/index.js +++ b/src/pages/Container/Stakeholder/FirstLevelDoor/PersonnelPermissionRecords/List/index.js @@ -7,9 +7,9 @@ import PreviewImg from "zy-react-library/components/PreviewImg"; import Search from "zy-react-library/components/Search"; import Table from "zy-react-library/components/Table"; import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; +import { TRAINING_STATE_ENUM } from "~/enumerate/constant"; import { NS_PERSONNEL_PERMISSION_RECORDS } from "~/enumerate/namespace"; -import {getLabelName} from "zy-react-library/utils"; -import {TRAINING_STATE_ENUM} from "~/enumerate/constant"; function List(props) { const [infoModalVisible, setInfoModalVisible] = useState(false); @@ -35,7 +35,7 @@ function List(props) { columns={[ { title: "姓名", dataIndex: "employeePersonUserName" }, { title: "部门", dataIndex: "personDepartmentName" }, - { title: "是否培训", dataIndex: "trainingState" ,render: (_, record) => getLabelName({ list: TRAINING_STATE_ENUM, status: record.trainingState })}, + { title: "是否培训", dataIndex: "trainingState", render: (_, record) => getLabelName({ list: TRAINING_STATE_ENUM, status: record.trainingState }) }, { title: "涉及项目", dataIndex: "projectName" }, // { title: "口门权限范围", dataIndex: "todo5" }, { @@ -108,7 +108,7 @@ const InfoModalComponent = (props) => { items={[ { label: "姓名", children: info.applyPersonUserName }, { label: "手机号", children: info.userPhone }, - { label: "身份证号", children: info.userCard }, + { label: "身份证号", children: info.userCard ? atob(info.userCard) : "" }, { label: "访问起始时间", children: info.visitStartTime }, { label: "访问结束时间", children: info.visitEndTime }, { label: "口门权限范围", children: info.todo6 }, diff --git a/src/pages/Container/Stakeholder/FirstLevelDoor/VehicleApplication/Add/index.js b/src/pages/Container/Stakeholder/FirstLevelDoor/VehicleApplication/Add/index.js index 3a31898..3fcb25b 100644 --- a/src/pages/Container/Stakeholder/FirstLevelDoor/VehicleApplication/Add/index.js +++ b/src/pages/Container/Stakeholder/FirstLevelDoor/VehicleApplication/Add/index.js @@ -68,6 +68,10 @@ function Add(props) { message.warning("请勾选《安全进港须知》并签字"); return; } + if (values.drivingLicenseFile.length !== 2) { + message.error("请上传两张驾驶证"); + return; + } const { id: informSignId } = await uploadFile({ files: [{ originFileObj: values.informSignFile }], single: false, @@ -152,7 +156,12 @@ function Add(props) { { name: "auditCorpName", label: "审核企业名称", onlyForLabel: true }, { name: "auditDeptId", label: "审核部门ID", onlyForLabel: true }, { name: "auditDeptName", label: "审核部门名称", onlyForLabel: true }, - { name: "visitTime", label: "时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE, componentProps: { disabled: true } }, + { + name: "visitTime", + label: "时间", + render: FORM_ITEM_RENDER_ENUM.DATE_RANGE, + componentProps: { disabled: true }, + }, { name: "gateLevelAuthArea", label: "访问港区", @@ -250,8 +259,43 @@ function Add(props) { ], formItemProps: { validateTrigger: ["onChange", "onBlur"] }, }, - { name: "attachmentFile", label: "车辆照片", span: 24, render: () }, - { name: "drivingLicenseFile", label: "行驶证照片", span: 24, render: () }, + { + name: "attachmentFile", + label: "车辆照片", + span: 24, + render: ( + +
1.上限4张
+
2. 请从车辆左前侧45°拍摄,车牌清晰可见
+
3. 背景简洁,避免逆光或阴影
+
4. 支持格式:.jpg/.jpeg/.png,单张5MB
+ + )} + /> + ), + }, + { + name: "drivingLicenseFile", + label: "行驶证照片", + span: 24, + render: ( + +
1. 请拍摄行驶证正面和反面,确保四角完整、无遮挡
+
2. 文字、印章清晰可见,避免反光
+
3. 支持格式:.jpg/.jpeg/.png,单张5MB
+ + )} + /> + ), + }, { name: "securityProtocol", label: " ", diff --git a/src/pages/Container/Supervision/EnclosedArea/Apply/Personnel/Add/index.js b/src/pages/Container/Supervision/EnclosedArea/Apply/Personnel/Add/index.js index 5359f23..dab4a3f 100644 --- a/src/pages/Container/Supervision/EnclosedArea/Apply/Personnel/Add/index.js +++ b/src/pages/Container/Supervision/EnclosedArea/Apply/Personnel/Add/index.js @@ -113,6 +113,7 @@ function Add(props) { render: ( { if (value) { diff --git a/src/pages/Container/Supervision/EnclosedArea/Apply/Vehicle/Add/index.js b/src/pages/Container/Supervision/EnclosedArea/Apply/Vehicle/Add/index.js index c9e1cf2..1fbc8f4 100644 --- a/src/pages/Container/Supervision/EnclosedArea/Apply/Vehicle/Add/index.js +++ b/src/pages/Container/Supervision/EnclosedArea/Apply/Vehicle/Add/index.js @@ -77,6 +77,12 @@ function Add(props) { message.warning("请勾选《安全进港须知》并签字"); return; } + if (isSelectVehicle === 2 || props.entrance === "stakeholder") { + if (values.drivingLicenseFile.length !== 2) { + message.error("请上传两张驾驶证"); + return; + } + } let carBelongType = 1; if (props.entrance === "enterprise") carBelongType = 2; @@ -186,6 +192,7 @@ function Add(props) { render: ( { if (value) { @@ -384,8 +391,43 @@ function Add(props) { ], formItemProps: { validateTrigger: ["onChange", "onBlur"] }, }, - { name: "attachmentFile", label: "车辆照片", span: 24, render: () }, - { name: "drivingLicenseFile", label: "行驶证照片", span: 24, render: () }, + { + name: "attachmentFile", + label: "车辆照片", + span: 24, + render: ( + +
1.上限4张
+
2. 请从车辆左前侧45°拍摄,车牌清晰可见
+
3. 背景简洁,避免逆光或阴影
+
4. 支持格式:.jpg/.jpeg/.png,单张5MB
+ + )} + /> + ), + }, + { + name: "drivingLicenseFile", + label: "行驶证照片", + span: 24, + render: ( + +
1. 请拍摄行驶证正面和反面,确保四角完整、无遮挡
+
2. 文字、印章清晰可见,避免反光
+
3. 支持格式:.jpg/.jpeg/.png,单张5MB
+ + )} + /> + ), + }, ] : []), { name: "applyReason", label: "申请原因", span: 24, render: FORM_ITEM_RENDER_ENUM.TEXTAREA }, diff --git a/src/pages/Container/Supervision/EnclosedArea/Apply/VehicleRecords/List/index.js b/src/pages/Container/Supervision/EnclosedArea/Apply/VehicleRecords/List/index.js index 76264aa..61f74f1 100644 --- a/src/pages/Container/Supervision/EnclosedArea/Apply/VehicleRecords/List/index.js +++ b/src/pages/Container/Supervision/EnclosedArea/Apply/VehicleRecords/List/index.js @@ -69,7 +69,7 @@ function List(props) { }, { title: "操作", - width: 80, + width: 150, fixed: "right", render: (_, record) => ( @@ -83,7 +83,7 @@ function List(props) { 查看 )} - {props.permission(props.rejectReasonBtn || "jgd-enclosed-vehicle-records-bh") && ( + {record.auditFlag === 3 && props.permission(props.rejectReasonBtn || "jgd-enclosed-vehicle-records-bh") && ( + + ) + : playUrl + ? ( +
+
+ ) + : ( +
+ + 加载中... +
+ ) + ) + : } + + + +
+ {video ? video.videoName : "-"} +
+ + ); + }; + + return ( + +
+ {/* 左侧视频树:控制哪些视频参与右侧巡屏。 */} + + {filteredVideoList.length > 0 + ? ( + { + const nextKeys = (Array.isArray(keys) ? keys : keys.checked).map(String); + setCheckedKeys(nextKeys); + setCurrentGroup(0); + }} + treeData={treeData} + style={{ background: "#fafafa", padding: 8, borderRadius: 4 }} + /> + ) + : } + + + {/* 右侧巡屏主区域:包含搜索、宫格切换、视频网格和底部轮巡控制。 */} + + {/* 搜索区:按视频名称和在线状态筛选左树与右侧轮巡集合。 */} +
+ + + + +