封闭区域管理:封闭区域管理、封闭区域口门管理、人员封闭区域申请、车辆封闭区域申请、人员封闭区域申请记录、车辆封闭区域申请记录

master
LiuJiaNan 2026-03-23 17:31:29 +08:00
parent 990964f067
commit 8de6f12667
23 changed files with 810 additions and 335 deletions

View File

@ -34,7 +34,7 @@
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-signature-canvas": "^1.1.0-alpha.2", "react-signature-canvas": "^1.1.0-alpha.2",
"zy-react-library": "^1.2.6" "zy-react-library": "^1.2.8"
}, },
"devDependencies": { "devDependencies": {
"@antfu/eslint-config": "^5.4.1", "@antfu/eslint-config": "^5.4.1",

View File

@ -46,15 +46,15 @@
#### 封闭区域管理 #### 封闭区域管理
- 封闭区域管理/封闭区域管理 ## - 封闭区域管理/封闭区域管理 ##
`/primeport/container/supervision/enclosedArea/areaAndEntrance/enclosedArea/list` `/primeport/container/supervision/enclosedArea/areaAndEntrance/enclosedArea/list`
- 封闭区域管理/封闭区域口门管理 - 封闭区域管理/封闭区域口门管理 ##
`/primeport/container/supervision/enclosedArea/areaAndEntrance/enclosedAreaDoor/list` `/primeport/container/supervision/enclosedArea/areaAndEntrance/enclosedAreaDoor/list`
- 封闭区域申请/人员封闭区域申请 - 封闭区域申请/人员封闭区域申请 ##
`/primeport/container/supervision/enclosedArea/apply/personnel/list` `/primeport/container/supervision/enclosedArea/apply/personnel/list`
- 封闭区域申请/车辆封闭区域申请 - 封闭区域申请/车辆封闭区域申请 ##
`/primeport/container/supervision/enclosedArea/apply/vehicle/list` `/primeport/container/supervision/enclosedArea/apply/vehicle/list`
- 封闭区域申请/人员封闭区域申请记录 - 封闭区域申请/人员封闭区域申请记录 #
`/primeport/container/supervision/enclosedArea/apply/personnelRecords/list` `/primeport/container/supervision/enclosedArea/apply/personnelRecords/list`
- 封闭区域申请/车辆封闭区域申请记录 - 封闭区域申请/车辆封闭区域申请记录 #
`/primeport/container/supervision/enclosedArea/apply/vehicleRecords/list` `/primeport/container/supervision/enclosedArea/apply/vehicleRecords/list`
- 区域人员及车辆统计 - 区域人员及车辆统计
`/primeport/container/supervision/enclosedArea/personnelAndVehicleStatistics/list` `/primeport/container/supervision/enclosedArea/personnelAndVehicleStatistics/list`
@ -88,17 +88,17 @@
`/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehicleBlacklist/list` `/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehicleBlacklist/list`
#### 封闭区域管理 #### 封闭区域管理
- 封闭区域管理/封闭区域管理 - 封闭区域管理/封闭区域管理 ##
`/primeport/container/enterprise/enclosedArea/areaAndEntrance/enclosedArea/list` `/primeport/container/enterprise/enclosedArea/areaAndEntrance/enclosedArea/list`
- 封闭区域管理/封闭区域口门管理 - 封闭区域管理/封闭区域口门管理 ##
`/primeport/container/enterprise/enclosedArea/areaAndEntrance/enclosedAreaDoor/list` `/primeport/container/enterprise/enclosedArea/areaAndEntrance/enclosedAreaDoor/list`
- 封闭区域申请/人员封闭区域申请 - 封闭区域申请/人员封闭区域申请 ##
`/primeport/container/enterprise/enclosedArea/apply/personnel/list` `/primeport/container/enterprise/enclosedArea/apply/personnel/list`
- 封闭区域申请/车辆封闭区域申请 - 封闭区域申请/车辆封闭区域申请 ##
`/primeport/container/enterprise/enclosedArea/apply/vehicle/list` `/primeport/container/enterprise/enclosedArea/apply/vehicle/list`
- 封闭区域申请/人员封闭区域申请记录 - 封闭区域申请/人员封闭区域申请记录 ##
`/primeport/container/enterprise/enclosedArea/apply/personnelRecords/list` `/primeport/container/enterprise/enclosedArea/apply/personnelRecords/list`
- 封闭区域申请/车辆封闭区域申请记录 - 封闭区域申请/车辆封闭区域申请记录 ##
`/primeport/container/enterprise/enclosedArea/apply/vehicleRecords/list` `/primeport/container/enterprise/enclosedArea/apply/vehicleRecords/list`
- 区域人员及车辆统计 - 区域人员及车辆统计
`/primeport/container/enterprise/enclosedArea/personnelAndVehicleStatistics/list` `/primeport/container/enterprise/enclosedArea/personnelAndVehicleStatistics/list`
@ -152,13 +152,13 @@
`/primeport/container/stakeholder/firstLevelDoor/vehicleApplicationRecords/list` `/primeport/container/stakeholder/firstLevelDoor/vehicleApplicationRecords/list`
#### 封闭区域管理 #### 封闭区域管理
- 封闭区域申请/人员封闭区域申请 - 封闭区域申请/人员封闭区域申请 ##
`/primeport/container/stakeholder/enclosedArea/apply/personnel/list` `/primeport/container/stakeholder/enclosedArea/apply/personnel/list`
- 封闭区域申请/车辆封闭区域申请 - 封闭区域申请/车辆封闭区域申请 ##
`/primeport/container/stakeholder/enclosedArea/apply/vehicle/list` `/primeport/container/stakeholder/enclosedArea/apply/vehicle/list`
- 封闭区域申请/人员封闭区域申请记录 - 封闭区域申请/人员封闭区域申请记录 ##
`/primeport/container/stakeholder/enclosedArea/apply/personnelRecords/list` `/primeport/container/stakeholder/enclosedArea/apply/personnelRecords/list`
- 封闭区域申请/车辆封闭区域申请记录 - 封闭区域申请/车辆封闭区域申请记录 ##
`/primeport/container/stakeholder/enclosedArea/apply/vehicleRecords/list` `/primeport/container/stakeholder/enclosedArea/apply/vehicleRecords/list`

View File

@ -10,7 +10,7 @@ export const enclosedAreaDetailList = declareRequest(
); );
export const enclosedAreaDetailListTree = declareRequest( export const enclosedAreaDetailListTree = declareRequest(
"enclosedAreaLoading", "enclosedAreaLoading",
`Post > @/primeport/`, `Get > /primeport/closedArea/listTree`,
); );
export const enclosedAreaDetailDelete = declareRequest( export const enclosedAreaDetailDelete = declareRequest(
"enclosedAreaLoading", "enclosedAreaLoading",

View File

@ -2,29 +2,29 @@ import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
export const enclosedAreaPersonnelApplyList = declareRequest( export const enclosedAreaPersonnelApplyList = declareRequest(
"enclosedAreaPersonnelApplyLoading", "enclosedAreaPersonnelApplyLoading",
`Post > @/primeport/`, `Post > @/primeport/closedAreaPersonApply/pendingApprovalRecordList`,
); );
export const enclosedAreaPersonnelApplyInfo = declareRequest( export const enclosedAreaPersonnelApplyInfo = declareRequest(
"enclosedAreaPersonnelApplyLoading", "enclosedAreaPersonnelApplyLoading",
`Post > @/primeport/`, `Get > /primeport/closedAreaPersonApply/{id}`,
); );
export const enclosedAreaPersonnelApplyEntourageList = declareRequest( export const enclosedAreaPersonnelApplyEntourageList = declareRequest(
"enclosedAreaPersonnelApplyLoading", "enclosedAreaPersonnelApplyLoading",
`Post > @/primeport/`, `Post > @/primeport/closedAreaPersonApply/getCorpUserList`,
); );
export const enclosedAreaPersonnelApplySave = declareRequest( export const enclosedAreaPersonnelApplySave = declareRequest(
"enclosedAreaPersonnelApplyLoading", "enclosedAreaPersonnelApplyLoading",
`Post > @/primeport/`, `Post > @/primeport/closedAreaPersonApply/save`,
);
export const enclosedAreaPersonnelApplyRecordsList = declareRequest(
"enclosedAreaPersonnelApplyLoading",
`Post > @/primeport/`,
); );
export const enclosedAreaPersonnelApplyRecordsAccessRecordsList = declareRequest( export const enclosedAreaPersonnelApplyRecordsAccessRecordsList = declareRequest(
"enclosedAreaPersonnelApplyLoading", "enclosedAreaPersonnelApplyLoading",
`Post > @/primeport/`, `Post > @/primeport/`,
); );
export const enclosedAreaPersonnelApplyRecordsRejectReason = declareRequest( export const xgfProjectListAll = declareRequest(
"enclosedAreaPersonnelApplyLoading", "enclosedAreaPersonnelApplyLoading",
`Post > @/primeport/`, `Get > /xgfManager/project/listAllPassedBySelfCorp`,
);
export const xgfProjectUserGetPeopleProject = declareRequest(
"enclosedAreaPersonnelApplyLoading",
`Get > /xgfManager/projectUser/getPeopleinProject/{id}`,
); );

View File

@ -2,29 +2,21 @@ import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
export const enclosedAreaVehicleApplyList = declareRequest( export const enclosedAreaVehicleApplyList = declareRequest(
"enclosedAreaVehicleApplyLoading", "enclosedAreaVehicleApplyLoading",
`Post > @/primeport/`, `Post > @/primeport/closedAreaCarApply/list`,
); );
export const enclosedAreaVehicleApplyInfo = declareRequest( export const enclosedAreaVehicleApplyInfo = declareRequest(
"enclosedAreaVehicleApplyLoading", "enclosedAreaVehicleApplyLoading",
`Post > @/primeport/`, `Get > /primeport/closedAreaCarApply/{id}`,
); );
export const enclosedAreaVehicleApplyVehicleList = declareRequest( export const enclosedAreaVehicleApplyVehicleList = declareRequest(
"enclosedAreaVehicleApplyLoading", "enclosedAreaVehicleApplyLoading",
`Post > @/primeport/`, `Get > /primeport/vehicleApply/getCarByVehicleBelongType`,
); );
export const enclosedAreaVehicleApplySave = declareRequest( export const enclosedAreaVehicleApplySave = declareRequest(
"enclosedAreaVehicleApplyLoading", "enclosedAreaVehicleApplyLoading",
`Post > @/primeport/`, `Post > @/primeport/closedAreaCarApply/save`,
);
export const enclosedAreaVehicleApplyRecordsList = declareRequest(
"enclosedAreaVehicleApplyLoading",
`Post > @/primeport/`,
); );
export const enclosedAreaVehicleApplyRecordsAccessRecordsList = declareRequest( export const enclosedAreaVehicleApplyRecordsAccessRecordsList = declareRequest(
"enclosedAreaVehicleApplyLoading", "enclosedAreaVehicleApplyLoading",
`Post > @/primeport/`, `Post > @/primeport/`,
); );
export const enclosedAreaVehicleApplyRecordsRejectReason = declareRequest(
"enclosedAreaVehicleApplyLoading",
`Post > @/primeport/`,
);

View File

@ -20,6 +20,10 @@ export const firstLevelDoorInfoDelete = declareRequest(
"firstLevelDoorInfoLoading", "firstLevelDoorInfoLoading",
`Delete > @/primeport/mkmj/{id}`, `Delete > @/primeport/mkmj/{id}`,
); );
export const firstLevelDoorInfoEditStatus = declareRequest(
"firstLevelDoorInfoLoading",
`Put > @/primeport/mkmj/editStatus`,
);
export const firstLevelDoorInfoInfo = declareRequest( export const firstLevelDoorInfoInfo = declareRequest(
"firstLevelDoorInfoLoading", "firstLevelDoorInfoLoading",
`Get > /primeport/mkmj/{id}`, `Get > /primeport/mkmj/{id}`,

View File

@ -1,7 +1,7 @@
import AddPage from "~/pages/Container/Supervision/EnclosedArea/Apply/Personnel/Add"; import AddPage from "~/pages/Container/Supervision/EnclosedArea/Apply/Personnel/Add";
function Add(props) { function Add(props) {
return (<AddPage {...props} />); return (<AddPage entrance="enterprise" {...props} />);
} }
export default Add; export default Add;

View File

@ -1,7 +1,7 @@
import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/Personnel/List"; import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/Personnel/List";
function List(props) { function List(props) {
return (<ListPage {...props} />); return (<ListPage entrance="enterprise" {...props} />);
} }
export default List; export default List;

View File

@ -1,7 +1,7 @@
import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/PersonnelRecords/List"; import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/PersonnelRecords/List";
function List(props) { function List(props) {
return (<ListPage {...props} />); return (<ListPage entrance="enterprise" {...props} />);
} }
export default List; export default List;

View File

@ -1,7 +1,7 @@
import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/Vehicle/List"; import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/Vehicle/List";
function List(props) { function List(props) {
return (<ListPage {...props} />); return (<ListPage entrance="enterprise" {...props} />);
} }
export default List; export default List;

View File

@ -1,7 +1,7 @@
import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/VehicleRecords/List"; import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/VehicleRecords/List";
function List(props) { function List(props) {
return (<ListPage {...props} />); return (<ListPage entrance="enterprise" {...props} />);
} }
export default List; export default List;

View File

@ -1,6 +1,6 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, message, Modal } from "antd"; import { Button, message, Modal } from "antd";
import { useRef, useState } from "react"; import { useEffect, useRef, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
@ -8,31 +8,69 @@ import BasicSelectTree from "zy-react-library/components/SelectTree/Basic";
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import useUploadFile from "zy-react-library/hooks/useUploadFile";
import { getLabelName } from "zy-react-library/utils";
import NeedToKnowModal from "~/components/NeedToKnowModal"; import NeedToKnowModal from "~/components/NeedToKnowModal";
import { NS_ENCLOSED_AREA, NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace"; import { NS_APPROVER_USER, NS_ENCLOSED_AREA, NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace";
function Add(props) { function Add(props) {
const [enclosedAreaList, setEnclosedAreaList] = useState([]); const [enclosedAreaList, setEnclosedAreaList] = useState([]);
const [entourageList, setEntourageList] = useState([]); const [entourageList, setEntourageList] = useState([]);
const [selectEntourageModalVisible, setSelectEntourageModalVisible] = useState(false); const [selectEntourageModalVisible, setSelectEntourageModalVisible] = useState(false);
const [needToKnowModalVisible, setNeedToKnowModalVisible] = useState(false); const [needToKnowModalVisible, setNeedToKnowModalVisible] = useState(false);
const [approvalUserListAll, setApprovalUserListAll] = useState([]);
const [xgfProjectListAll, setXgfProjectListAll] = useState([]);
const signatureUrl = useRef(""); const signatureUrl = useRef("");
const [form] = Form.useForm(); const [form] = FormBuilder.useForm();
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
const getEnclosedAreaList = async (id) => { const getApprovalUserListAll = async () => {
const { data } = await props["enclosedAreaDetailListTree"]({ id }); const { data } = await props["approvalUserListAll"]({ personnelPermissionFlag: 1 });
setApprovalUserListAll(data);
};
const getEnclosedAreaList = async (jurisdictionalCorpId) => {
const { data } = await props["enclosedAreaDetailListTree"]({ jurisdictionalCorpId });
setEnclosedAreaList(data); setEnclosedAreaList(data);
}; };
const getXgfProjectListAll = async () => {
const { data } = await props["xgfProjectListAll"]();
setXgfProjectListAll(data);
};
useEffect(() => {
getApprovalUserListAll();
props.entrance === "stakeholder" && getXgfProjectListAll();
}, []);
const onSubmit = async (values) => { const onSubmit = async (values) => {
if (!values.todo8) { if (!values.informSignFile) {
message.warning("请勾选《安全进港须知》并签字"); message.warning("请勾选《安全进港须知》并签字");
return; return;
} }
const { success } = await props["enclosedAreaPersonnelApplySave"]({ ...values }); let personBelongType = 1;
if (props.entrance === "enterprise")
personBelongType = 2;
if (props.entrance === "stakeholder")
personBelongType = 3;
const { id: informSignId } = await uploadFile({
files: [{ originFileObj: values.informSignFile }],
single: false,
params: { foreignKey: "", type: UPLOAD_FILE_TYPE_ENUM[609] },
});
const { success } = await props["enclosedAreaPersonnelApplySave"]({
...values,
visitStartTime: values.visitTime[0],
visitEndTime: values.visitTime[1],
personBelongType,
informSignId,
entourage: JSON.stringify(entourageList),
});
if (success) { if (success) {
message.success("操作成功"); message.success("操作成功");
props.history.goBack(); props.history.goBack();
@ -44,18 +82,27 @@ function Add(props) {
<FormBuilder <FormBuilder
submitButtonText="提交申请" submitButtonText="提交申请"
onFinish={onSubmit} onFinish={onSubmit}
loading={props.enclosedAreaPersonnelApply.enclosedAreaPersonnelApplyLoading || uploadFileLoading}
options={[ options={[
{ {
name: "todo0", name: "projectId",
label: "项目", label: "项目",
tip: "如果无法找到相应的项目,请在“项目审核管理”栏目中查看,项目是否备案审核成功。", tip: "如果无法找到相应的项目,请在“项目审核管理”栏目中查看,项目是否备案审核成功。",
span: 24, span: 24,
render: FORM_ITEM_RENDER_ENUM.SELECT, render: FORM_ITEM_RENDER_ENUM.SELECT,
items: [], items: xgfProjectListAll,
itemsField: { labelKey: "projectName", valueKey: "id" },
hidden: !(props.entrance === "stakeholder"), hidden: !(props.entrance === "stakeholder"),
componentProps: {
onChange: (value) => {
form.setFieldValue("projectName", getLabelName({ list: xgfProjectListAll, status: value, idKey: "id", nameKey: "projectName" }));
setEntourageList([]);
},
},
}, },
{ name: "projectName", label: "项目名称", onlyForLabel: true },
{ {
name: "todo1", name: "jurisdictionalCorpId",
label: "区域管辖单位", label: "区域管辖单位",
render: ( render: (
<DepartmentSelectTree <DepartmentSelectTree
@ -63,18 +110,50 @@ function Add(props) {
params={{ enterpriseType: [2] }} params={{ enterpriseType: [2] }}
onChange={(value) => { onChange={(value) => {
getEnclosedAreaList(value); getEnclosedAreaList(value);
form.setFieldValue("closedAreaName", "");
}} }}
onGetLabel={label => form.setFieldValue("jurisdictionalCorpName", label)}
/> />
), ),
}, },
{ name: "jurisdictionalCorpName", label: "区域管辖单位名称", onlyForLabel: true },
{ {
name: "todo2", name: "closedAreaId",
label: "封闭区域", label: "封闭区域",
render: (<BasicSelectTree treeData={enclosedAreaList} placeholder="封闭区域" />), render: (
<BasicSelectTree
treeData={enclosedAreaList}
placeholder="封闭区域"
onGetLabel={label => form.setFieldValue("closedAreaName", label)}
nameKey="closedAreaName"
/>
),
}, },
{ name: "todo4", label: "审核人员", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] }, { name: "closedAreaName", label: "封闭区域名称", onlyForLabel: true },
{ {
name: "todo5", name: "auditPersonUserId",
label: "审核人员",
render: FORM_ITEM_RENDER_ENUM.SELECT,
items: approvalUserListAll,
itemsField: { labelKey: item => `${item.userName}${item.corpName}${item.deptName}`, valueKey: "userId" },
componentProps: {
onChange: (value) => {
const item = approvalUserListAll.find(item => item.userId === value);
form.setFieldValue("auditPersonUserName", item.userName);
form.setFieldValue("auditPersonCorpId", item.corpId);
form.setFieldValue("auditPersonCorpName", item.corpName);
form.setFieldValue("auditPersonDepartmentId", item.deptId);
form.setFieldValue("auditPersonDepartmentName", item.deptName);
},
},
},
{ name: "auditPersonUserName", label: "审核人员名称", onlyForLabel: true },
{ name: "auditPersonCorpId", label: "审核企业ID", onlyForLabel: true },
{ name: "auditPersonCorpName", label: "审核企业名称", onlyForLabel: true },
{ name: "auditPersonDepartmentId", label: "审核部门ID", onlyForLabel: true },
{ name: "auditPersonDepartmentName", label: "审核部门名称", onlyForLabel: true },
{
name: "visitTime",
label: "申请时间范围", label: "申请时间范围",
render: FORM_ITEM_RENDER_ENUM.DATE_RANGE, render: FORM_ITEM_RENDER_ENUM.DATE_RANGE,
componentProps: { disabled: props.entrance === "stakeholder" }, componentProps: { disabled: props.entrance === "stakeholder" },
@ -99,6 +178,10 @@ function Add(props) {
<Button <Button
type="primary" type="primary"
onClick={() => { onClick={() => {
if (props.entrance === "stakeholder" && !form.getFieldValue("projectId")) {
message.warning("请先选择项目");
return;
}
setSelectEntourageModalVisible(true); setSelectEntourageModalVisible(true);
}} }}
> >
@ -109,8 +192,8 @@ function Add(props) {
disabledResizer={true} disabledResizer={true}
pagination={false} pagination={false}
columns={[ columns={[
{ title: "姓名", dataIndex: "todo1" }, { title: "姓名", dataIndex: "name", render: (_, record) => record.name || record.userName },
{ title: "部门", dataIndex: "todo2" }, { title: "部门", dataIndex: "deptName" },
{ {
title: "操作", title: "操作",
render: (_, record) => ( render: (_, record) => (
@ -118,7 +201,7 @@ function Add(props) {
type="link" type="link"
danger danger
onClick={() => { onClick={() => {
setEntourageList(entourageList.filter(item => item.id !== record.id)); setEntourageList(entourageList.filter(item => item.userId !== record.userId));
}} }}
> >
删除 删除
@ -130,9 +213,9 @@ function Add(props) {
/> />
), ),
}, },
{ name: "todo6", label: "申请原因", span: 24, render: FORM_ITEM_RENDER_ENUM.TEXTAREA }, { name: "applyReason", label: "申请原因", span: 24, render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
{ {
name: "todo7", name: "securityProtocol",
label: " ", label: " ",
span: 24, span: 24,
required: false, required: false,
@ -163,7 +246,7 @@ function Add(props) {
), ),
}], }],
}, },
{ name: "todo8", label: "签字", onlyForLabel: true }, { name: "informSignFile", label: "签字", onlyForLabel: true },
]} ]}
form={form} form={form}
/> />
@ -171,6 +254,8 @@ function Add(props) {
selectEntourageModalVisible && ( selectEntourageModalVisible && (
<SelectEntourageModal <SelectEntourageModal
entourageList={entourageList} entourageList={entourageList}
entrance={props.entrance}
projectId={form.getFieldValue("projectId")}
onClose={() => { onClose={() => {
setSelectEntourageModalVisible(false); setSelectEntourageModalVisible(false);
}} }}
@ -189,7 +274,7 @@ function Add(props) {
setNeedToKnowModalVisible(false); setNeedToKnowModalVisible(false);
}} }}
onOk={(values) => { onOk={(values) => {
form.setFieldValue("todo8", values); form.setFieldValue("informSignFile", values.file);
signatureUrl.current = values.base64; signatureUrl.current = values.base64;
setNeedToKnowModalVisible(false); setNeedToKnowModalVisible(false);
}} }}
@ -201,14 +286,28 @@ function Add(props) {
} }
const SelectEntourageModalComponent = (props) => { const SelectEntourageModalComponent = (props) => {
const [selectedRowKeys, setSelectedRowKeys] = useState(props.entourageList.map(item => item.id)); const [selectedRowKeys, setSelectedRowKeys] = useState(props.entourageList.map(item => item.userId));
const selectedRowsRef = useRef(props.entourageList || []); const selectedRowsRef = useRef(props.entourageList || []);
const [form] = Form.useForm(); const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["enclosedAreaPersonnelApplyEntourageList"], { const {
tableProps,
getData,
} = useTable(props[props.entrance === "stakeholder" ? "xgfProjectUserGetPeopleProject" : "enclosedAreaPersonnelApplyEntourageList"], {
form, form,
useStorageQueryCriteria: false, useStorageQueryCriteria: false,
params: () => {
if (props.entrance === "stakeholder") {
return { id: props.projectId };
}
else {
let personBelongType = 1;
if (props.entrance === "enterprise")
personBelongType = 2;
return { personBelongType };
}
},
}); });
return ( return (
@ -224,12 +323,13 @@ const SelectEntourageModalComponent = (props) => {
> >
<Search <Search
options={[ options={[
{ name: "todo1", label: "姓名" }, { name: "name", label: "姓名" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
/> />
<Table <Table
rowKey="userId"
rowSelection={{ rowSelection={{
selectedRowKeys, selectedRowKeys,
preserveSelectedRowKeys: true, preserveSelectedRowKeys: true,
@ -241,10 +341,10 @@ const SelectEntourageModalComponent = (props) => {
options={false} options={false}
disabledResizer={true} disabledResizer={true}
columns={[ columns={[
{ title: "部门", dataIndex: "todo1" }, { title: "部门", dataIndex: "deptName" },
{ title: "姓名", dataIndex: "todo2" }, { title: "姓名", dataIndex: "name", render: (_, record) => record.name || record.userName },
{ title: "手机号", dataIndex: "todo3" }, { title: "手机号", dataIndex: "phone" },
{ title: "是否录入人脸", dataIndex: "todo4", render: (_, record) => record.todo4 === 1 ? "是" : "否" }, { title: "是否录入人脸", dataIndex: "userFaceUrl", render: (_, record) => record.userFaceUrl ? "是" : "否" },
]} ]}
{...tableProps} {...tableProps}
/> />
@ -254,4 +354,4 @@ const SelectEntourageModalComponent = (props) => {
const SelectEntourageModal = Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY, NS_ENCLOSED_AREA], true)(SelectEntourageModalComponent); const SelectEntourageModal = Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY, NS_ENCLOSED_AREA], true)(SelectEntourageModalComponent);
export default Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY, NS_ENCLOSED_AREA], true)(Add); export default Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY, NS_ENCLOSED_AREA, NS_APPROVER_USER], true)(Add);

View File

@ -1,24 +1,39 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form } from "antd"; import { Button } from "antd";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { getLabelName } from "zy-react-library/utils";
import { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace"; import { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace";
const STATUS_ENUM = [
{ name: "审核中", bianma: "1" },
{ name: "审核通过", bianma: "2" },
{ name: "审核驳回", bianma: "3" },
];
function List(props) { function List(props) {
const [form] = Form.useForm(); const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["enclosedAreaPersonnelApplyList"], { const { tableProps, getData } = useTable(props["enclosedAreaPersonnelApplyList"], {
form, form,
params: () => {
let personBelongType = 1;
if (props.entrance === "enterprise")
personBelongType = 2;
if (props.entrance === "stakeholder")
personBelongType = 3;
return { processOrRecord: 1, personBelongType };
},
}); });
return ( return (
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "todo1", label: "人员姓名" }, { name: "name", label: "人员姓名" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
@ -36,14 +51,26 @@ function List(props) {
</Button> </Button>
)} )}
columns={[ columns={[
{ title: "姓名", dataIndex: "todo1" }, { title: "姓名", dataIndex: "applyPersonUserName" },
{ title: "部门", dataIndex: "todo2" }, { title: "部门", dataIndex: "applyPersonDepartmentName" },
{ title: "手机号", dataIndex: "todo3" }, { title: "手机号", dataIndex: "userPhone" },
{ title: "申请区域", dataIndex: "todo4" }, { title: "申请区域", dataIndex: "closedAreaName" },
{ title: "申请时间范围", dataIndex: "todo5", render: (_, record) => `${record.todo5} - ${record.todo6}` }, {
{ title: "个人照片", dataIndex: "todo7", render: (_, record) => <TooltipPreviewImg files={record.todo7} /> }, title: "申请时间范围",
{ title: "所属项目", dataIndex: "todo9", hidden: !(props.entrance === "stakeholder") }, dataIndex: "visitStartTime",
{ title: "申请状态", dataIndex: "todo8" }, render: (_, record) => `${record.visitStartTime} - ${record.visitEndTime}`,
},
{
title: "个人照片",
dataIndex: "userFaceUrl",
render: (_, record) => <TooltipPreviewImg files={[record.userFaceUrl]} />,
},
{ title: "所属项目", dataIndex: "projectName", hidden: !(props.entrance === "stakeholder") },
{
title: "申请状态",
dataIndex: "auditFlag",
render: (_, record) => getLabelName({ list: STATUS_ENUM, status: record.auditFlag }),
},
{ {
title: "操作", title: "操作",
width: 80, width: 80,

View File

@ -3,6 +3,10 @@ import { Descriptions, Divider, Spin } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import PreviewImg from "zy-react-library/components/PreviewImg"; import PreviewImg from "zy-react-library/components/PreviewImg";
import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace"; import { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace";
@ -10,10 +14,15 @@ function View(props) {
const [info, setInfo] = useState({}); const [info, setInfo] = useState({});
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const { loading: getFileLoading, getFile } = useGetFile();
const getData = async () => { const getData = async () => {
const { data } = await props["enclosedAreaPersonnelApplyInfo"]({ id: query.id }); const { data } = await props["enclosedAreaPersonnelApplyInfo"]({ id: query.id });
setInfo(data); const informSignFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[609], eqForeignKey: data.informSignId });
setInfo({
...data,
informSignFile,
});
props.onGetData?.(data); props.onGetData?.(data);
}; };
@ -23,7 +32,7 @@ function View(props) {
return ( return (
<Page headerTitle={props.headerTitle || "查看"} contentPadding="0 20px 20px 20px" isShowFooter={props.isShowFooter}> <Page headerTitle={props.headerTitle || "查看"} contentPadding="0 20px 20px 20px" isShowFooter={props.isShowFooter}>
<Spin spinning={props.enclosedAreaPersonnelApply.enclosedAreaPersonnelApplyLoading}> <Spin spinning={props.enclosedAreaPersonnelApply.enclosedAreaPersonnelApplyLoading || getFileLoading}>
<Divider orientation="left">人员信息</Divider> <Divider orientation="left">人员信息</Divider>
<Descriptions <Descriptions
bordered bordered
@ -34,48 +43,47 @@ function View(props) {
props.entrance === "stakeholder" props.entrance === "stakeholder"
? [ ? [
{ label: "相关方名称", children: info.todo1 }, { label: "相关方名称", children: info.todo1 },
{ label: "所属项目", children: info.todo1 }, { label: "所属项目", children: info.projectName },
] ]
: [] : []
), ),
...( ...(
props.entrance === "enterprise" || props.entrance === "supervision" || !props.entrance props.entrance === "enterprise" || props.entrance === "supervision" || !props.entrance
? [ ? [
{ label: "所属企业", children: info.todo1 }, { label: "所属企业", children: info.applyPersonCorpName },
] ]
: [] : []
), ),
{ label: "姓名", children: info.todo2 }, { label: "姓名", children: info.applyPersonUserName },
{ label: "部门", children: info.todo3 }, { label: "部门", children: info.applyPersonDepartmentName },
{ label: "手机号", children: info.todo4 }, { label: "手机号", children: info.userPhone },
{ label: "申请区域", children: info.todo5 }, { label: "申请区域", children: info.closedAreaName },
{ label: "申请时间范围", children: `${info.todo6} - ${info.todo7}` }, { label: "申请时间范围", children: `${info.visitStartTime} - ${info.visitEndTime}` },
{ label: "个人照片", children: (<PreviewImg files={info.todo8} />) }, { label: "个人照片", children: (<PreviewImg files={[info.userFaceUrl]} />) },
{ label: "申请原因", children: info.todo9 }, { label: "申请原因", children: info.applyReason },
{ label: "申请人员签字", children: (<PreviewImg files={info.todo10} />) }, { label: "申请人员签字", children: (<PreviewImg files={info.informSignFile} />) },
]} ]}
/> />
{ {
info.todo11?.length > 0 info.entourage && (
&& (
<> <>
<Divider orientation="left">更多人员信息</Divider> <Divider orientation="left">更多人员信息</Divider>
{ <Table
info.todo11.map((item, index) => ( dataSource={JSON.parse(info.entourage)}
<Descriptions pagination={false}
key={index} options={false}
bordered disabledResizer={true}
column={2} columns={[
styles={{ label: { width: 200 } }} { title: "姓名", dataIndex: "name", render: (_, record) => record.name || record.userName },
items={[ { title: "部门", dataIndex: "deptName" },
{ label: "姓名", children: item.todo1 }, { title: "手机号", dataIndex: "phone" },
{ label: "部门", children: item.todo2 }, {
{ label: "手机号", children: item.todo3 }, title: "个人照片",
{ label: "个人照片", children: item.todo4 }, dataIndex: "userFaceUrl",
]} render: (_, record) => <TooltipPreviewImg files={[record.userFaceUrl]} />,
/> },
)) ]}
} />
</> </>
) )
} }

View File

@ -1,42 +1,68 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Modal, Space } from "antd";
import { useEffect, useState } from "react"; import { useState } from "react";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { getLabelName } from "zy-react-library/utils";
import { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace"; import { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace";
const STATUS_ENUM = [
{ name: "审核中", bianma: "1" },
{ name: "审核通过", bianma: "2" },
{ name: "审核驳回", bianma: "3" },
];
function List(props) { function List(props) {
const [currentId, setCurrentId] = useState(""); const [refusalReason, setCurrentRefusalReason] = useState("");
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false); const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
const [form] = Form.useForm(); const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["enclosedAreaPersonnelApplyRecordsList"], { const { tableProps, getData } = useTable(props["enclosedAreaPersonnelApplyList"], {
form, form,
params: () => {
let personBelongType = 1;
if (props.entrance === "enterprise")
personBelongType = 2;
if (props.entrance === "stakeholder")
personBelongType = 3;
return { processOrRecord: 2, personBelongType };
},
}); });
return ( return (
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "todo1", label: "人员姓名" }, { name: "name", label: "人员姓名" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
/> />
<Table <Table
columns={[ columns={[
{ title: "所属企业", dataIndex: "todo0" }, { title: "所属企业", dataIndex: "applyPersonCorpName" },
{ title: "姓名", dataIndex: "todo1" }, { title: "姓名", dataIndex: "applyPersonUserName" },
{ title: "部门", dataIndex: "todo2" }, { title: "部门", dataIndex: "applyPersonDepartmentName" },
{ title: "手机号", dataIndex: "todo3" }, { title: "手机号", dataIndex: "userPhone" },
{ title: "申请区域", dataIndex: "todo4" }, { title: "申请区域", dataIndex: "closedAreaName" },
{ title: "申请时间范围", dataIndex: "todo5", render: (_, record) => `${record.todo5} - ${record.todo6}` }, {
{ title: "个人照片", dataIndex: "todo7", render: (_, record) => <TooltipPreviewImg files={record.todo7} /> }, title: "申请时间范围",
{ title: "所属项目", dataIndex: "todo9", hidden: !(props.entrance === "stakeholder") }, dataIndex: "visitStartTime",
{ title: "申请状态", dataIndex: "todo8" }, render: (_, record) => `${record.visitStartTime} - ${record.visitEndTime}`,
},
{
title: "个人照片",
dataIndex: "userFaceUrl",
render: (_, record) => <TooltipPreviewImg files={[record.userFaceUrl]} />,
},
{ title: "所属项目", dataIndex: "projectName", hidden: !(props.entrance === "stakeholder") },
{
title: "申请状态",
dataIndex: "auditFlag",
render: (_, record) => getLabelName({ list: STATUS_ENUM, status: record.auditFlag }),
},
{ {
title: "操作", title: "操作",
width: 150, width: 150,
@ -51,15 +77,17 @@ function List(props) {
> >
查看 查看
</Button> </Button>
<Button {record.auditFlag === 3 && (
type="link" <Button
onClick={() => { type="link"
setViewRejectReasonModalVisible(true); onClick={() => {
setCurrentId(record.id); setViewRejectReasonModalVisible(true);
}} setCurrentRefusalReason(record.refusalReason);
> }}
驳回原因 >
</Button> 驳回原因
</Button>
)}
</Space> </Space>
), ),
}, },
@ -69,10 +97,10 @@ function List(props) {
{ {
viewRejectReasonModalVisible && ( viewRejectReasonModalVisible && (
<ViewRejectReasonModal <ViewRejectReasonModal
id={currentId} refusalReason={refusalReason}
onCancel={() => { onCancel={() => {
setViewRejectReasonModalVisible(false); setViewRejectReasonModalVisible(false);
setCurrentId(""); setCurrentRefusalReason("");
}} }}
/> />
) )
@ -82,16 +110,6 @@ function List(props) {
} }
const ViewRejectReasonModalComponent = (props) => { const ViewRejectReasonModalComponent = (props) => {
const [info, setInfo] = useState({});
const getData = async () => {
const { data } = await props["enclosedAreaPersonnelApplyRecordsRejectReason"]({ id: props.id });
setInfo(data);
};
useEffect(() => {
getData();
}, []);
return ( return (
<Modal <Modal
open open
@ -102,14 +120,13 @@ const ViewRejectReasonModalComponent = (props) => {
footer={[ footer={[
<Button key="cancel" onClick={props.onCancel}>取消</Button>, <Button key="cancel" onClick={props.onCancel}>取消</Button>,
]} ]}
loading={props.enclosedAreaPersonnelApply.enclosedAreaPersonnelApplyLoading}
> >
<Descriptions <Descriptions
column={1} column={1}
bordered bordered
styles={{ label: { width: 200 } }} styles={{ label: { width: 200 } }}
items={[ items={[
{ label: "驳回原因", children: info.todo1 }, { label: "驳回原因", children: props.refusalReason },
]} ]}
/> />
</Modal> </Modal>

View File

@ -1,6 +1,7 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, message, Modal, Tabs } from "antd"; import { Button, message, Modal, Tabs } from "antd";
import { useRef, useState } from "react"; import dayjs from "dayjs";
import { useEffect, useRef, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
@ -11,12 +12,19 @@ import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import Upload from "zy-react-library/components/Upload"; import Upload from "zy-react-library/components/Upload";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import useUploadFile from "zy-react-library/hooks/useUploadFile";
import { LICENSE_PLATE_NUMBER } from "zy-react-library/regular"; import { LICENSE_PLATE_NUMBER } from "zy-react-library/regular";
import NeedToKnowModal from "~/components/NeedToKnowModal"; import NeedToKnowModal from "~/components/NeedToKnowModal";
import { import {
NS_APPROVER_USER,
NS_ENCLOSED_AREA, NS_ENCLOSED_AREA,
NS_ENCLOSED_AREA_PERSONNEL_APPLY,
NS_ENCLOSED_AREA_VEHICLE_APPLY, NS_ENCLOSED_AREA_VEHICLE_APPLY,
NS_VEHICLE_APPLY,
} from "~/enumerate/namespace"; } from "~/enumerate/namespace";
function Add(props) { function Add(props) {
@ -24,27 +32,85 @@ function Add(props) {
const [vehicleList, setVehicleList] = useState([]); const [vehicleList, setVehicleList] = useState([]);
const [selectVehicleModalVisible, setSelectVehicleModalVisible] = useState(false); const [selectVehicleModalVisible, setSelectVehicleModalVisible] = useState(false);
const [needToKnowModalVisible, setNeedToKnowModalVisible] = useState(false); const [needToKnowModalVisible, setNeedToKnowModalVisible] = useState(false);
const [approvalUserListAll, setApprovalUserListAll] = useState([]);
const [xgfProjectListAll, setXgfProjectListAll] = useState([]);
const [xgfProjectUser, setXgfProjectUser] = useState([]);
const signatureUrl = useRef(""); const signatureUrl = useRef("");
const [form] = Form.useForm(); const [form] = FormBuilder.useForm();
const todo6 = Form.useWatch("todo6", form); const isSelectVehicle = FormBuilder.useWatch("isSelectVehicle", form);
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
const { getUserInfo } = useGetUserInfo();
const getEnclosedAreaList = async (id) => { const getApprovalUserListAll = async () => {
const { data } = await props["enclosedAreaDetailListTree"]({ id }); const { data } = await props["approvalUserListAll"]({ vehiclePermissionFlag: 1 });
setApprovalUserListAll(data);
};
const getEnclosedAreaList = async (jurisdictionalCorpId) => {
const { data } = await props["enclosedAreaDetailListTree"]({ jurisdictionalCorpId });
setEnclosedAreaList(data); setEnclosedAreaList(data);
}; };
const getXgfProjectListAll = async () => {
const { data } = await props["xgfProjectListAll"]();
setXgfProjectListAll(data);
};
const getXgfProjectUserGetPeopleProject = async (id) => {
const { data } = await props["xgfProjectUserGetPeopleProject"]({ id });
setXgfProjectUser(data);
};
useEffect(() => {
getApprovalUserListAll();
props.entrance === "stakeholder" && getXgfProjectListAll();
}, []);
const onSubmit = async (values) => { const onSubmit = async (values) => {
if (values.todo6 === 1 && vehicleList.length === 0) { if (values.isSelectVehicle === 1 && vehicleList.length === 0) {
message.warning("请选择车辆"); message.warning("请选择车辆");
return; return;
} }
if (!values.todo14) { if (!values.informSignFile) {
message.warning("请勾选《安全进港须知》并签字"); message.warning("请勾选《安全进港须知》并签字");
return; return;
} }
const { success } = await props["enclosedAreaVehicleApplySave"]({ ...values }); let carBelongType = 1;
if (props.entrance === "enterprise")
carBelongType = 2;
if (props.entrance === "stakeholder")
carBelongType = 3;
const { id: informSignId } = await uploadFile({
files: [{ originFileObj: values.informSignFile }],
single: false,
params: { foreignKey: "", type: UPLOAD_FILE_TYPE_ENUM[609] },
});
const { id: drivingLicenseId } = await uploadFile({
files: values.drivingLicenseFile,
single: false,
params: { foreignKey: "", type: UPLOAD_FILE_TYPE_ENUM[601] },
});
const { id: attachmentId } = await uploadFile({
files: values.attachmentFile,
single: false,
params: { foreignKey: "", type: UPLOAD_FILE_TYPE_ENUM[602] },
});
const { success } = await props["enclosedAreaVehicleApplySave"]({
...values,
visitStartTime: values.visitTime[0],
visitEndTime: values.visitTime[1],
carBelongType,
informSignId,
licenceType: values.isSelectVehicle === 1 ? vehicleList[0].licenceType : values.licenceType,
licenceTypeName: values.isSelectVehicle === 1 ? vehicleList[0].licenceTypeName : values.licenceTypeName,
vehicleType: values.isSelectVehicle === 1 ? vehicleList[0].vehicleType : values.vehicleType,
vehicleTypeName: values.isSelectVehicle === 1 ? vehicleList[0].vehicleTypeName : values.vehicleTypeName,
licenceNo: values.isSelectVehicle === 1 ? vehicleList[0].licenceNo : values.licenceNo,
drivingLicenseId: values.isSelectVehicle === 1 ? vehicleList[0].drivingLicenseId : drivingLicenseId,
attachmentId: values.isSelectVehicle === 1 ? vehicleList[0].attachmentId : attachmentId,
});
if (success) { if (success) {
message.success("操作成功"); message.success("操作成功");
props.history.goBack(); props.history.goBack();
@ -56,26 +122,61 @@ function Add(props) {
<FormBuilder <FormBuilder
submitButtonText="提交申请" submitButtonText="提交申请"
onFinish={onSubmit} onFinish={onSubmit}
loading={props.enclosedAreaVehicleApply.enclosedAreaVehicleApplyLoading || uploadFileLoading}
options={[ options={[
{ {
name: "todo0", name: "projectId",
label: "项目", label: "项目",
tip: "如果无法找到相应的项目,请在“项目审核管理”栏目中查看,项目是否备案审核成功。", tip: "如果无法找到相应的项目,请在“项目审核管理”栏目中查看,项目是否备案审核成功。",
span: 24, span: 24,
render: FORM_ITEM_RENDER_ENUM.SELECT, render: FORM_ITEM_RENDER_ENUM.SELECT,
items: [], items: xgfProjectListAll,
itemsField: { labelKey: "projectName", valueKey: "id" },
hidden: !(props.entrance === "stakeholder"), hidden: !(props.entrance === "stakeholder"),
componentProps: {
onChange: (value) => {
const item = xgfProjectListAll.find(i => i.id === value) || {};
form.setFieldValue("projectName", item.projectName);
if (value) {
getXgfProjectUserGetPeopleProject(value);
form.setFieldValue("visitTime", [dayjs(item.startProjectTime).format("YYYY-MM-DD"), dayjs(item.endProjectTime).format("YYYY-MM-DD")]);
}
else {
setXgfProjectUser([]);
form.setFieldValue("visitTime", []);
}
},
},
}, },
{ name: "projectName", label: "项目名称", onlyForLabel: true },
{ {
name: "todo00", name: "isApplyCompanyArea",
label: "是否申请本公司区域", label: "是否申请本公司区域",
span: 24, span: 24,
render: FORM_ITEM_RENDER_ENUM.RADIO, render: FORM_ITEM_RENDER_ENUM.RADIO,
items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
hidden: !(props.entrance === "enterprise"), hidden: !(props.entrance === "enterprise"),
componentProps: {
onChange: async (event) => {
if (event.target.value === 1) {
const userInfo = await getUserInfo();
form.setFieldValue("jurisdictionalCorpId", userInfo.corpinfoId);
form.setFieldValue("jurisdictionalCorpName", userInfo.corpinfoName);
form.setFieldValue("closedAreaId", "");
form.setFieldValue("closedAreaName", "");
getEnclosedAreaList(userInfo.corpinfoId);
}
else {
form.setFieldValue("jurisdictionalCorpId", "");
form.setFieldValue("jurisdictionalCorpName", "");
form.setFieldValue("closedAreaId", "");
form.setFieldValue("closedAreaName", "");
}
},
},
}, },
{ {
name: "todo1", name: "jurisdictionalCorpId",
label: "区域管辖单位", label: "区域管辖单位",
render: ( render: (
<DepartmentSelectTree <DepartmentSelectTree
@ -83,37 +184,67 @@ function Add(props) {
params={{ enterpriseType: [2] }} params={{ enterpriseType: [2] }}
onChange={(value) => { onChange={(value) => {
getEnclosedAreaList(value); getEnclosedAreaList(value);
form.setFieldValue("closedAreaName", "");
}} }}
onGetLabel={label => form.setFieldValue("jurisdictionalCorpName", label)}
/> />
), ),
dependencies: ["todo00"], dependencies: ["isApplyCompanyArea"],
hidden: (formValues) => { hidden: (formValues) => {
if (props.entrance !== "enterprise") if (props.entrance !== "enterprise")
return false; return false;
return !(formValues.todo00 === 2 || formValues.todo00 === null); return !(formValues.isApplyCompanyArea === 2 || formValues.isApplyCompanyArea === null);
},
formItemProps: { preserve: true },
},
{ name: "jurisdictionalCorpName", label: "区域管辖单位名称", onlyForLabel: true },
{
name: "closedAreaId",
label: "封闭区域",
render: (
<BasicSelectTree
treeData={enclosedAreaList}
placeholder="封闭区域"
onGetLabel={label => form.setFieldValue("closedAreaName", label)}
nameKey="closedAreaName"
/>
),
},
{ name: "closedAreaName", label: "封闭区域名称", onlyForLabel: true },
{
name: "auditPersonUserId",
label: "审核人员",
render: FORM_ITEM_RENDER_ENUM.SELECT,
items: approvalUserListAll,
itemsField: { labelKey: item => `${item.userName}${item.corpName}${item.deptName}`, valueKey: "userId" },
componentProps: {
onChange: (value) => {
const item = approvalUserListAll.find(item => item.userId === value);
form.setFieldValue("auditPersonUserName", item.userName);
form.setFieldValue("auditPersonCorpId", item.corpId);
form.setFieldValue("auditPersonCorpName", item.corpName);
form.setFieldValue("auditPersonDepartmentId", item.deptId);
form.setFieldValue("auditPersonDepartmentName", item.deptName);
},
}, },
}, },
{ name: "auditPersonUserName", label: "审核人员名称", onlyForLabel: true },
{ name: "auditPersonCorpId", label: "审核企业ID", onlyForLabel: true },
{ name: "auditPersonCorpName", label: "审核企业名称", onlyForLabel: true },
{ name: "auditPersonDepartmentId", label: "审核部门ID", onlyForLabel: true },
{ name: "auditPersonDepartmentName", label: "审核部门名称", onlyForLabel: true },
{ {
name: "todo2", name: "visitTime",
label: "封闭区域",
render: (<BasicSelectTree treeData={enclosedAreaList} placeholder="封闭区域" />),
},
{ name: "todo4", label: "审核人员", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] },
{
name: "todo5",
label: "申请时间范围", label: "申请时间范围",
render: FORM_ITEM_RENDER_ENUM.DATE_RANGE, render: FORM_ITEM_RENDER_ENUM.DATE_RANGE,
componentProps: { disabled: props.entrance === "stakeholder" }, componentProps: { disabled: props.entrance === "stakeholder" },
}, },
{ {
name: "todo6", name: "isSelectVehicle",
label: "车辆类型", label: "车辆类型",
span: 24, span: 24,
render: FORM_ITEM_RENDER_ENUM.RADIO, render: FORM_ITEM_RENDER_ENUM.RADIO,
items: [ items: [{ bianma: 1, name: "选择现有车辆" }, { bianma: 2, name: "新增车辆" }],
{ bianma: 1, name: "选择现有车辆" },
{ bianma: 2, name: "新增车辆" },
],
componentProps: { componentProps: {
onChange: () => { onChange: () => {
setVehicleList([]); setVehicleList([]);
@ -121,7 +252,7 @@ function Add(props) {
}, },
hidden: props.entrance === "stakeholder", hidden: props.entrance === "stakeholder",
}, },
...(todo6 === 1 ...(isSelectVehicle === 1
? [ ? [
{ {
label: "选择现有车辆", label: "选择现有车辆",
@ -144,13 +275,13 @@ function Add(props) {
disabledResizer={true} disabledResizer={true}
pagination={false} pagination={false}
columns={[ columns={[
{ title: "车牌类型", dataIndex: "todo1" }, { title: "车牌类型", dataIndex: "licenceTypeName" },
{ title: "车辆类型", dataIndex: "todo2" }, { title: "车辆类型", dataIndex: "vehicleTypeName" },
{ title: "车牌号", dataIndex: "todo3" }, { title: "车牌号", dataIndex: "licenceNo" },
{ {
title: "车辆照片", title: "车辆照片",
dataIndex: "todo4", dataIndex: "files",
render: (_, record) => <TooltipPreviewImg files={record.todo4} />, render: (_, record) => <TooltipPreviewImg files={record.files} />,
}, },
{ {
title: "操作", title: "操作",
@ -175,21 +306,62 @@ function Add(props) {
: []), : []),
...(props.entrance === "stakeholder" ...(props.entrance === "stakeholder"
? [ ? [
{ name: "todo92", label: "驾驶人员", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] }, { name: "todo92", label: "驾驶人员", render: FORM_ITEM_RENDER_ENUM.SELECT, items: xgfProjectUser, itemsField: { labelKey: "userName", valueKey: "userId" } },
] ]
: []), : []),
...(todo6 === 2 || props.entrance === "stakeholder" ...(isSelectVehicle === 2 || props.entrance === "stakeholder"
? [ ? [
{ name: "todo7", label: "车牌类型", render: (<DictionarySelect dictValue="LICENSE_PLATE_TYPE" />) }, {
{ name: "todo8", label: "车辆类型", render: (<DictionarySelect dictValue="VEHICLE_TYPE" />) }, name: "licenceType",
{ name: "todo9", label: "车牌号", rules: [{ pattern: LICENSE_PLATE_NUMBER, message: "请输入正确的车牌号" }] }, label: "车牌类型",
{ name: "todo10", label: "车辆照片", span: 24, render: (<Upload />) }, render: (
{ name: "todo11", label: "行驶证照片", span: 24, render: (<Upload />) }, <DictionarySelect
dictValue="LICENSE_PLATE_TYPE"
onGetLabel={label => form.setFieldValue("licenceTypeName", label)}
/>
),
},
{ name: "licenceTypeName", label: "车牌类型名称", onlyForLabel: true },
{
name: "vehicleType",
label: "车辆类型",
render: (
<DictionarySelect
dictValue="VEHICLE_TYPE"
onGetLabel={label => form.setFieldValue("vehicleTypeName", label)}
/>
),
},
{ name: "vehicleTypeName", label: "车辆类型名称", onlyForLabel: true },
{
name: "licenceNo",
label: "车牌号",
rules: [
{ pattern: LICENSE_PLATE_NUMBER, message: "请输入正确的车牌号" },
{
validator: async (_, value) => {
if (value) {
const { data } = await props["vehicleApplyCheckLicenceNo"]({
licenceNo: value,
});
return data.available ? Promise.resolve() : Promise.reject(new Error("车牌号已存在"));
}
else {
Promise.resolve();
}
},
validateTrigger: "onBlur",
},
],
formItemProps: { validateTrigger: ["onChange", "onBlur"] },
},
{ name: "attachmentFile", label: "车辆照片", span: 24, render: (<Upload />) },
{ name: "drivingLicenseFile", label: "行驶证照片", span: 24, render: (<Upload />) },
] ]
: []), : []),
{ name: "todo12", label: "申请原因", span: 24, render: FORM_ITEM_RENDER_ENUM.TEXTAREA }, { name: "applyReason", label: "申请原因", span: 24, render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
{ {
name: "todo13", name: "securityProtocol",
label: " ", label: " ",
span: 24, span: 24,
required: false, required: false,
@ -220,7 +392,7 @@ function Add(props) {
), ),
}], }],
}, },
{ name: "todo14", label: "签字", onlyForLabel: true }, { name: "informSignFile", label: "签字", onlyForLabel: true },
]} ]}
form={form} form={form}
/> />
@ -228,6 +400,7 @@ function Add(props) {
selectVehicleModalVisible && ( selectVehicleModalVisible && (
<SelectVehicleModal <SelectVehicleModal
vehicleList={vehicleList} vehicleList={vehicleList}
entrance={props.entrance}
onClose={() => { onClose={() => {
setSelectVehicleModalVisible(false); setSelectVehicleModalVisible(false);
}} }}
@ -246,7 +419,7 @@ function Add(props) {
setNeedToKnowModalVisible(false); setNeedToKnowModalVisible(false);
}} }}
onOk={(values) => { onOk={(values) => {
form.setFieldValue("todo14", values); form.setFieldValue("informSignFile", values.file);
signatureUrl.current = values.base64; signatureUrl.current = values.base64;
setNeedToKnowModalVisible(false); setNeedToKnowModalVisible(false);
}} }}
@ -260,14 +433,36 @@ function Add(props) {
const SelectVehicleModalComponent = (props) => { const SelectVehicleModalComponent = (props) => {
const [tabActiveKey, setTabActiveKey] = useState("1"); const [tabActiveKey, setTabActiveKey] = useState("1");
const [selectedRowKeys, setSelectedRowKeys] = useState(props.vehicleList.map(item => item.id)); const [selectedRowKeys, setSelectedRowKeys] = useState(props.vehicleList.map(item => item.id));
const [list, setList] = useState([]);
const selectedRowsRef = useRef(props.vehicleList || []); const selectedRowsRef = useRef(props.vehicleList || []);
const [form] = Form.useForm(); const { loading: getFileLoading, getFile } = useGetFile();
const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["enclosedAreaVehicleApplyVehicleList"], { const { tableProps, getData } = useTable(props["enclosedAreaVehicleApplyVehicleList"], {
form, form,
useStorageQueryCriteria: false, useStorageQueryCriteria: false,
params: { tabActiveKey }, params: () => {
let vehicleBelongType;
if (!props.entrance) {
if (tabActiveKey === "1")
vehicleBelongType = 1;
else if (tabActiveKey === "2")
vehicleBelongType = 2;
}
else if (props.entrance === "enterprise") {
if (tabActiveKey === "1")
vehicleBelongType = 3;
else if (tabActiveKey === "2")
vehicleBelongType = 4;
}
return { vehicleBelongType };
},
onSuccess: async (data) => {
const list = await getFile({ single: false, dataSource: data.list, eqType: UPLOAD_FILE_TYPE_ENUM[602], foreignKey: "attachmentId" });
setList(list);
},
}); });
return ( return (
@ -283,7 +478,7 @@ const SelectVehicleModalComponent = (props) => {
> >
<Search <Search
options={[ options={[
{ name: "todo1", label: "车牌号" }, { name: "licenceNo", label: "车牌号" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
@ -311,23 +506,18 @@ const SelectVehicleModalComponent = (props) => {
options={false} options={false}
disabledResizer={true} disabledResizer={true}
columns={[ columns={[
{ title: "车牌类型", dataIndex: "todo1" }, { title: "车牌类型", dataIndex: "licenceTypeName" },
{ title: "车辆类型", dataIndex: "todo2" }, { title: "车辆类型", dataIndex: "vehicleTypeName" },
{ title: "车牌号", dataIndex: "todo3" }, { title: "车牌号", dataIndex: "licenceNo" },
{ {
title: "车辆照片", title: "车辆照片",
dataIndex: "todo4", dataIndex: "files",
render: (_, record) => <TooltipPreviewImg files={record.todo4} />, render: (_, record) => <TooltipPreviewImg files={record.files} />,
}, },
]} ]}
{...tableProps} {...tableProps}
dataSource={[ loading={tableProps.loading || getFileLoading}
{ id: "1", todo1: "1", todo2: "1", todo3: "1" }, dataSource={list}
{ id: "2", todo1: "2", todo2: "2", todo3: "2" },
{ id: "3", todo1: "3", todo2: "3", todo3: "3" },
{ id: "4", todo1: "4", todo2: "4", todo3: "4" },
{ id: "5", todo1: "5", todo2: "5", todo3: "5" },
]}
/> />
</Modal> </Modal>
); );
@ -335,4 +525,4 @@ const SelectVehicleModalComponent = (props) => {
const SelectVehicleModal = Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY], true)(SelectVehicleModalComponent); const SelectVehicleModal = Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY], true)(SelectVehicleModalComponent);
export default Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY, NS_ENCLOSED_AREA], true)(Add); export default Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY, NS_ENCLOSED_AREA, NS_APPROVER_USER, NS_VEHICLE_APPLY, NS_ENCLOSED_AREA_PERSONNEL_APPLY], true)(Add);

View File

@ -1,24 +1,50 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form } from "antd"; import { Button } from "antd";
import { useState } from "react";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
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 useTable from "zy-react-library/hooks/useTable";
import { getLabelName } from "zy-react-library/utils";
import { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace"; import { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace";
const STATUS_ENUM = [
{ name: "审核中", bianma: "1" },
{ name: "审核通过", bianma: "2" },
{ name: "审核驳回", bianma: "3" },
];
function List(props) { function List(props) {
const [form] = Form.useForm(); const [list, setList] = useState([]);
const { loading: getFileLoading, getFile } = useGetFile();
const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["enclosedAreaVehicleApplyList"], { const { tableProps, getData } = useTable(props["enclosedAreaVehicleApplyList"], {
form, form,
params: () => {
let carBelongType = 1;
if (props.entrance === "enterprise")
carBelongType = 2;
if (props.entrance === "stakeholder")
carBelongType = 3;
return { processOrRecord: 1, carBelongType };
},
onSuccess: async (data) => {
const list = await getFile({ single: false, dataSource: data.list, eqType: UPLOAD_FILE_TYPE_ENUM[602], foreignKey: "attachmentId" });
setList(list);
},
}); });
return ( return (
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "todo1", label: "车牌号" }, { name: "licenceLo", label: "车牌号" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
@ -36,17 +62,25 @@ function List(props) {
</Button> </Button>
)} )}
columns={[ columns={[
{ title: "车辆类型", dataIndex: "todo1" }, { title: "车辆类型", dataIndex: "vehicleTypeName" },
{ title: "驾驶人", dataIndex: "todo2" }, { title: "驾驶人", dataIndex: "applyPersonUserName" },
{ title: "部门", dataIndex: "todo3" }, { title: "部门", dataIndex: "applyPersonDepartmentName" },
{ title: "手机号", dataIndex: "todo4" }, { title: "手机号", dataIndex: "userPhone" },
{ title: "申请区域", dataIndex: "todo5" }, { title: "申请区域", dataIndex: "closedAreaName" },
{ title: "申请时间范围", dataIndex: "todo6", render: (_, record) => `${record.todo6} - ${record.todo7}` }, {
{ title: "申请原因", dataIndex: "todo7" }, title: "申请时间范围",
{ title: "车牌号", dataIndex: "todo8" }, dataIndex: "visitStartTime",
{ title: "车辆照片", dataIndex: "todo9", render: (_, record) => <TooltipPreviewImg files={record.todo9} /> }, render: (_, record) => `${record.visitStartTime} - ${record.visitEndTime}`,
{ title: "所属项目", dataIndex: "todo9", hidden: !(props.entrance === "stakeholder") }, },
{ title: "申请状态", dataIndex: "todo10" }, { title: "申请原因", dataIndex: "applyReason" },
{ title: "车牌号", dataIndex: "licenceLo" },
{ title: "车辆照片", dataIndex: "files", render: (_, record) => <TooltipPreviewImg files={record.files} /> },
{ title: "所属项目", dataIndex: "projectName", hidden: !(props.entrance === "stakeholder") },
{
title: "申请状态",
dataIndex: "auditFlag",
render: (_, record) => getLabelName({ list: STATUS_ENUM, status: record.auditFlag }),
},
{ {
title: "操作", title: "操作",
width: 80, width: 80,
@ -64,6 +98,8 @@ function List(props) {
}, },
]} ]}
{...tableProps} {...tableProps}
loading={tableProps.loading || getFileLoading}
dataSource={list}
/> />
</Page> </Page>
); );

View File

@ -3,6 +3,8 @@ import { Descriptions, Divider, Spin } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import PreviewImg from "zy-react-library/components/PreviewImg"; import PreviewImg from "zy-react-library/components/PreviewImg";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace"; import { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace";
@ -10,10 +12,19 @@ function View(props) {
const [info, setInfo] = useState({}); const [info, setInfo] = useState({});
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const { loading: getFileLoading, getFile } = useGetFile();
const getData = async () => { const getData = async () => {
const { data } = await props["enclosedAreaVehicleApplyInfo"]({ id: query.id }); const { data } = await props["enclosedAreaVehicleApplyInfo"]({ id: query.id });
setInfo(data); const informSignFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[609], eqForeignKey: data.informSignId });
const drivingLicenseFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[601], eqForeignKey: data.drivingLicenseId });
const attachmentFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[602], eqForeignKey: data.attachmentId });
setInfo({
...data,
informSignFile,
drivingLicenseFile,
attachmentFile,
});
props.onGetData?.(data); props.onGetData?.(data);
}; };
@ -23,7 +34,7 @@ function View(props) {
return ( return (
<Page headerTitle={props.headerTitle || "查看"} contentPadding="0 20px 20px 20px" isShowFooter={props.isShowFooter}> <Page headerTitle={props.headerTitle || "查看"} contentPadding="0 20px 20px 20px" isShowFooter={props.isShowFooter}>
<Spin spinning={props.enclosedAreaVehicleApply.enclosedAreaVehicleApplyLoading}> <Spin spinning={props.enclosedAreaVehicleApply.enclosedAreaVehicleApplyLoading || getFileLoading}>
<Divider orientation="left">车辆信息</Divider> <Divider orientation="left">车辆信息</Divider>
<Descriptions <Descriptions
bordered bordered
@ -34,29 +45,29 @@ function View(props) {
props.entrance === "stakeholder" props.entrance === "stakeholder"
? [ ? [
{ label: "相关方名称", children: info.todo1 }, { label: "相关方名称", children: info.todo1 },
{ label: "所属项目", children: info.todo1 }, { label: "所属项目", children: info.projectName },
] ]
: [] : []
), ),
...( ...(
props.entrance === "enterprise" || props.entrance === "supervision" || !props.entrance props.entrance === "enterprise" || props.entrance === "supervision" || !props.entrance
? [ ? [
{ label: "所属企业", children: info.todo1 }, { label: "所属企业", children: info.applyPersonCorpName },
] ]
: [] : []
), ),
{ label: "姓名", children: info.todo2 }, { label: "姓名", children: info.applyPersonUserName },
{ label: "部门", children: info.todo3 }, { label: "部门", children: info.applyPersonDepartmentName },
{ label: "手机号", children: info.todo4 }, { label: "手机号", children: info.userPhone },
{ label: "申请区域", children: info.todo5 }, { label: "申请区域", children: info.closedAreaName },
{ label: "申请时间范围", children: `${info.todo6} - ${info.todo7}` }, { label: "申请时间范围", children: `${info.visitStartTime} - ${info.visitEndTime}` },
{ label: "车牌号", children: info.todo8 }, { label: "车牌号", children: info.licenceNo },
{ label: "车牌类型", children: info.todo9 }, { label: "车牌类型", children: info.licenceTypeName },
{ label: "车辆类型", children: info.todo10 }, { label: "车辆类型", children: info.vehicleTypeName },
{ label: "车辆照片", children: (<PreviewImg files={info.todo11} />) }, { label: "车辆照片", children: (<PreviewImg files={info.attachmentFile} />) },
{ label: "行驶证照片", children: (<PreviewImg files={info.todo12} />) }, { label: "行驶证照片", children: (<PreviewImg files={info.drivingLicenseFile} />) },
{ label: "申请原因", children: info.todo13 }, { label: "申请原因", children: info.applyReason },
{ label: "申请人员签字", children: (<PreviewImg files={info.todo14} />) }, { label: "申请人员签字", children: (<PreviewImg files={info.informSignFile} />) },
]} ]}
/> />
{props.children} {props.children}

View File

@ -1,44 +1,75 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Modal, Space } from "antd";
import { useEffect, useState } from "react"; import { useState } from "react";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
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 useTable from "zy-react-library/hooks/useTable";
import { getLabelName } from "zy-react-library/utils";
import { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace"; import { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace";
const STATUS_ENUM = [
{ name: "审核中", bianma: "1" },
{ name: "审核通过", bianma: "2" },
{ name: "审核驳回", bianma: "3" },
];
function List(props) { function List(props) {
const [currentId, setCurrentId] = useState(""); const [list, setList] = useState([]);
const [refusalReason, setCurrentRefusalReason] = useState("");
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false); const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
const [form] = Form.useForm(); const { loading: getFileLoading, getFile } = useGetFile();
const { tableProps, getData } = useTable(props["enclosedAreaVehicleApplyRecordsList"], {
const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["enclosedAreaVehicleApplyList"], {
form, form,
params: () => {
let carBelongType = 1;
if (props.entrance === "enterprise")
carBelongType = 2;
if (props.entrance === "stakeholder")
carBelongType = 3;
return { processOrRecord: 2, carBelongType };
},
onSuccess: async (data) => {
const list = await getFile({ single: false, dataSource: data.list, eqType: UPLOAD_FILE_TYPE_ENUM[602], foreignKey: "attachmentId" });
setList(list);
},
}); });
return ( return (
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "todo1", label: "车牌号" }, { name: "licenceLo", label: "车牌号" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
/> />
<Table <Table
columns={[ columns={[
{ title: "车辆类型", dataIndex: "todo1" }, { title: "车辆类型", dataIndex: "vehicleTypeName" },
{ title: "驾驶人", dataIndex: "todo2" }, { title: "驾驶人", dataIndex: "applyPersonUserName" },
{ title: "部门", dataIndex: "todo3" }, { title: "部门", dataIndex: "applyPersonDepartmentName" },
{ title: "手机号", dataIndex: "todo4" }, { title: "手机号", dataIndex: "userPhone" },
{ title: "申请区域", dataIndex: "todo5" }, { title: "申请区域", dataIndex: "closedAreaName" },
{ title: "申请时间范围", dataIndex: "todo6", render: (_, record) => `${record.todo6} - ${record.todo7}` }, {
{ title: "申请原因", dataIndex: "todo7" }, title: "申请时间范围",
{ title: "车牌号", dataIndex: "todo8" }, dataIndex: "visitStartTime",
{ title: "车辆照片", dataIndex: "todo9", render: (_, record) => <TooltipPreviewImg files={record.todo9} /> }, render: (_, record) => `${record.visitStartTime} - ${record.visitEndTime}`,
{ title: "所属项目", dataIndex: "todo9", hidden: !(props.entrance === "stakeholder") }, },
{ title: "申请状态", dataIndex: "todo10" }, { title: "申请原因", dataIndex: "applyReason" },
{ title: "车牌号", dataIndex: "licenceLo" },
{ title: "车辆照片", dataIndex: "files", render: (_, record) => <TooltipPreviewImg files={record.files} /> },
{ title: "所属项目", dataIndex: "projectName", hidden: !(props.entrance === "stakeholder") },
{
title: "申请状态",
dataIndex: "auditFlag",
render: (_, record) => getLabelName({ list: STATUS_ENUM, status: record.auditFlag }),
},
{ {
title: "操作", title: "操作",
width: 80, width: 80,
@ -57,7 +88,7 @@ function List(props) {
type="link" type="link"
onClick={() => { onClick={() => {
setViewRejectReasonModalVisible(true); setViewRejectReasonModalVisible(true);
setCurrentId(record.id); setCurrentRefusalReason(record.refusalReason);
}} }}
> >
驳回原因 驳回原因
@ -67,14 +98,16 @@ function List(props) {
}, },
]} ]}
{...tableProps} {...tableProps}
dataSource={list}
loading={tableProps.loading || getFileLoading}
/> />
{ {
viewRejectReasonModalVisible && ( viewRejectReasonModalVisible && (
<ViewRejectReasonModal <ViewRejectReasonModal
id={currentId} refusalReason={refusalReason}
onCancel={() => { onCancel={() => {
setViewRejectReasonModalVisible(false); setViewRejectReasonModalVisible(false);
setCurrentId(""); setCurrentRefusalReason("");
}} }}
/> />
) )
@ -84,16 +117,6 @@ function List(props) {
} }
const ViewRejectReasonModalComponent = (props) => { const ViewRejectReasonModalComponent = (props) => {
const [info, setInfo] = useState({});
const getData = async () => {
const { data } = await props["enclosedAreaVehicleApplyRecordsRejectReason"]({ id: props.id });
setInfo(data);
};
useEffect(() => {
getData();
}, []);
return ( return (
<Modal <Modal
open open
@ -104,14 +127,13 @@ const ViewRejectReasonModalComponent = (props) => {
footer={[ footer={[
<Button key="cancel" onClick={props.onCancel}>取消</Button>, <Button key="cancel" onClick={props.onCancel}>取消</Button>,
]} ]}
loading={props.enclosedAreaVehicleApply.enclosedAreaVehicleApplyLoading}
> >
<Descriptions <Descriptions
column={1} column={1}
bordered bordered
styles={{ label: { width: 200 } }} styles={{ label: { width: 200 } }}
items={[ items={[
{ label: "驳回原因", children: info.todo1 }, { label: "驳回原因", children: props.refusalReason },
]} ]}
/> />
</Modal> </Modal>

View File

@ -1,5 +1,5 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, message, Modal, Space } from "antd"; import { Button, Descriptions, message, Modal, Space } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
@ -17,31 +17,31 @@ import { getLabelName } from "zy-react-library/utils";
import { AREA_STATUS_ENUM } from "~/enumerate/constant"; import { AREA_STATUS_ENUM } from "~/enumerate/constant";
import { NS_ENCLOSED_AREA, NS_FIRST_LEVEL_DOOR_INFO } from "~/enumerate/namespace"; import { NS_ENCLOSED_AREA, NS_FIRST_LEVEL_DOOR_INFO } from "~/enumerate/namespace";
const areaLevel = 2; const mkmjLevel = 2;
function List(props) { function List(props) {
const [addModalVisible, setAddModalVisible] = useState(false); const [addModalVisible, setAddModalVisible] = useState(false);
const [viewModalVisible, setViewModalVisible] = useState(false); const [viewModalVisible, setViewModalVisible] = useState(false);
const [currentId, setCurrentId] = useState(null); const [currentId, setCurrentId] = useState("");
const [form] = Form.useForm(); const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["firstLevelDoorInfoList"], { const { tableProps, getData } = useTable(props["firstLevelDoorInfoList"], {
form, form,
params: { params: {
eqAreaLevel: areaLevel, mkmjLevel,
}, },
}); });
const onUpdateStatus = (record) => { const onUpdateStatus = (record) => {
if (record.status === 1 && (record.videoNum > 0 || record.passageNum > 0)) if (record.mkmjStatus === 2 && (record.videoNum > 0 || record.passageNum > 0))
return message.warning("正在使用中的口门不能停用"); return message.warning("正在使用中的口门不能停用");
const msg = record.status === 1 ? "停用" : "开启"; const msg = record.mkmjStatus === 2 ? "停用" : "开启";
Modal.confirm({ Modal.confirm({
title: `${msg}确认`, title: `${msg}确认`,
content: `确定要${msg}吗?`, content: `确定要${msg}吗?`,
onOk: async () => { onOk: async () => {
const { success } = await props["firstLevelDoorInfoDelete"]({ id: record.id, status: record.status === 1 ? 0 : 1 }); const { success } = await props["firstLevelDoorInfoEditStatus"]({ id: record.id, mkmjStatus: record.mkmjStatus === 2 ? 1 : 2 });
if (success) { if (success) {
message.success(`${msg}成功`); message.success(`${msg}成功`);
getData(); getData();
@ -54,10 +54,10 @@ function List(props) {
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "likeAreaName", label: "口门名称" }, { name: "likeMkmjName", label: "口门名称" },
{ name: "eqAreaStatus", label: "口门状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: AREA_STATUS_ENUM }, { name: "mkmjStatus", label: "口门状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: AREA_STATUS_ENUM },
{ name: "eqAreaType", label: "口门类型", render: (<DictionarySelect dictValue="HGKM_MKMJ_TYPE" />) }, { name: "mkmjType", label: "口门类型", render: (<DictionarySelect dictValue="HGKM_MKMJ_TYPE" />) },
{ name: "eqAreaParentId", label: "所属区域", render: <DictionarySelect dictValue="HG_AUTH_AREA" /> }, { name: "hgAuthArea", label: "所属区域", render: <DictionarySelect dictValue="HG_AUTH_AREA" /> },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
@ -79,20 +79,20 @@ function List(props) {
</Space> </Space>
)} )}
columns={[ columns={[
{ title: "所属区域", dataIndex: "areaParentName" }, { title: "所属区域", dataIndex: "hgAuthAreaName" },
{ title: "口门类型", dataIndex: "areaType" }, { title: "口门类型", dataIndex: "mkmjTypeName" },
{ title: "管辖公司", dataIndex: "todo3" }, { title: "管辖公司", dataIndex: "jurisdictionalCorpName" },
{ title: "口门名称", dataIndex: "areaName" }, { title: "口门名称", dataIndex: "mkmjName" },
{ {
title: "口门位置", title: "口门位置",
dataIndex: "location", dataIndex: "location",
render: (_, record) => `${record.latitude || ""}--${record.longitude || ""}`, render: (_, record) => `${record.latitude || ""}--${record.longitude || ""}`,
}, },
{ title: "摄像头个数", dataIndex: "videoNum", render: (_, record) => record.videoNum || 0 }, { title: "摄像头个数", dataIndex: "videoCount", render: (_, record) => record.videoNum || 0 },
{ {
title: "口门状态", title: "口门状态",
dataIndex: "areaStatus", dataIndex: "mkmjStatus",
render: (_, record) => getLabelName({ list: AREA_STATUS_ENUM, status: record.areaStatus }), render: (_, record) => getLabelName({ list: AREA_STATUS_ENUM, status: record.mkmjStatus }),
}, },
{ {
title: "操作", title: "操作",
@ -127,13 +127,13 @@ function List(props) {
onUpdateStatus(record); onUpdateStatus(record);
}} }}
> >
{record.status === 1 ? "停用" : "开启"} {record.mkmjStatus === 2 ? "停用" : "开启"}
</Button> </Button>
)} )}
<Button <Button
type="link" type="link"
onClick={() => { onClick={() => {
props.history.push(`./channel/list?areaId=${record.id}`); props.history.push(`./channel/list?id=${record.id}`);
}} }}
> >
{props.entrance !== "enterprise" ? "添加通道" : "查看通道"} {props.entrance !== "enterprise" ? "添加通道" : "查看通道"}
@ -141,7 +141,7 @@ function List(props) {
<Button <Button
type="link" type="link"
onClick={() => { onClick={() => {
props.history.push(`./camera/list?areaId=${record.id}`); props.history.push(`./camera/list?id=${record.id}`);
}} }}
> >
{props.entrance !== "enterprise" ? "添加摄像头" : "查看摄像头"} {props.entrance !== "enterprise" ? "添加摄像头" : "查看摄像头"}
@ -158,7 +158,7 @@ function List(props) {
id={currentId} id={currentId}
onClose={() => { onClose={() => {
setAddModalVisible(false); setAddModalVisible(false);
setCurrentId(null); setCurrentId("");
}} }}
getData={getData} getData={getData}
/> />
@ -170,7 +170,7 @@ function List(props) {
id={currentId} id={currentId}
onClose={() => { onClose={() => {
setViewModalVisible(false); setViewModalVisible(false);
setCurrentId(null); setCurrentId("");
}} }}
/> />
) )
@ -180,33 +180,38 @@ function List(props) {
} }
const AddModalComponent = (props) => { const AddModalComponent = (props) => {
const [enclosedAreaList, setEnclosedAreaList] = useState([]); const [enclosedAreaListTree, setEnclosedAreaListTree] = useState([]);
const [form] = Form.useForm(); const [form] = FormBuilder.useForm();
const hgAuthArea = FormBuilder.useWatch("hgAuthArea", form);
const getEnclosedAreaList = async () => { const getEnclosedAreaList = async () => {
const { data } = await props["enclosedAreaDetailListTree"](); const { data } = await props["enclosedAreaDetailListTree"]({ hgAuthArea });
setEnclosedAreaList(data); setEnclosedAreaListTree(data);
}; };
const getData = async () => { const getData = async () => {
const { data } = await props["firstLevelDoorInfoInfo"]({ id: props.id }); const { data } = await props["firstLevelDoorInfoInfo"]({ id: props.id });
form.setFieldsValue({ form.setFieldsValue({
...data, ...data,
areaType: data.areaType.toString(), mkmjStatus: data.mkmjStatus.toString(),
areaStatus: data.areaStatus.toString(),
}); });
}; };
useEffect(() => { useEffect(() => {
getEnclosedAreaList();
props.id && getData(); props.id && getData();
}, []); }, []);
useEffect(() => {
if (hgAuthArea)
getEnclosedAreaList();
else setEnclosedAreaListTree([]);
}, [hgAuthArea]);
const onSubmit = async (values) => { const onSubmit = async (values) => {
const { success } = await props[!props.id ? "firstLevelDoorInfoAdd" : "firstLevelDoorInfoEdit"]({ const { success } = await props[!props.id ? "firstLevelDoorInfoAdd" : "firstLevelDoorInfoEdit"]({
...values, ...values,
areaLevel, mkmjLevel,
id: props.id, id: props.id,
}); });
if (success) { if (success) {
@ -233,30 +238,90 @@ const AddModalComponent = (props) => {
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
span={24} span={24}
options={[ options={[
{ name: "areaParentId", label: "所属区域", render: <DictionarySelect dictValue="HG_AUTH_AREA" /> },
{ name: "areaParentName", label: "所属区域名称", onlyForLabel: true },
{ name: "areaName", label: "口门名称" },
{ name: "areaType", label: "口门类型", render: <DictionarySelect dictValue="HGKM_MKMJ_TYPE" /> },
{ name: "areaRange", label: "口门位置" },
{ customizeRender: true, span: 24, render: <Map type="cesium" /> },
{ name: "areaStatus", label: "口门状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: AREA_STATUS_ENUM },
{ name: "todo6", label: "口门进入区域", render: (<BasicSelectTree treeData={enclosedAreaList} placeholder="口门进入区域" />) },
{ {
name: "todo7", name: "hgAuthArea",
label: "所属区域",
render: (
<DictionarySelect
dictValue="HG_AUTH_AREA"
onGetLabel={label => form.setFieldValue("hgAuthAreaName", label)}
/>
),
},
{ name: "hgAuthAreaName", label: "所属区域名称", onlyForLabel: true },
{
name: "mkmjName",
label: "口门名称",
rules: [{
validator: async (_, value) => {
if (value) {
const { data } = await props["firstLevelDoorInfoCheckName"]({ mkmjName: value, id: props.id });
return data.available ? Promise.resolve() : Promise.reject(new Error("口门名称已存在"));
}
else {
Promise.resolve();
}
},
validateTrigger: "onBlur",
}],
formItemProps: { validateTrigger: ["onChange", "onBlur"] },
},
{
name: "mkmjType",
label: "口门类型",
render: (
<DictionarySelect
dictValue="HGKM_MKMJ_TYPE"
onGetLabel={label => form.setFieldValue("mkmjTypeName", label)}
/>
),
},
{ name: "mkmjTypeName", label: "口门类型名称", onlyForLabel: true },
{ name: "remarks", label: "口门位置" },
{ customizeRender: true, span: 24, render: <Map type="cesium" /> },
{ name: "mkmjStatus", label: "口门状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: AREA_STATUS_ENUM },
{
name: "inDirectionArea",
label: "口门进入区域",
render: (
<BasicSelectTree
treeData={enclosedAreaListTree}
placeholder="口门进入区域"
onGetLabel={label => form.setFieldValue("inDirectionAreaName", label)}
nameKey="closedAreaName"
/>
),
},
{ name: "inDirectionAreaName", label: "口门进入区域名称", onlyForLabel: true },
{
name: "outDirectionType",
label: "口门离开区域", label: "口门离开区域",
span: 12, span: 12,
render: FORM_ITEM_RENDER_ENUM.RADIO, render: FORM_ITEM_RENDER_ENUM.RADIO,
items: [{ bianma: 1, name: "离场" }, { bianma: 2, name: "进入其他区域" }], items: [{ bianma: 1, name: "离场" }, { bianma: 2, name: "进入其他区域" }],
componentProps: {
onChange: () => {
form.setFieldValue("outDirectionAreaName", "");
},
},
}, },
{ {
name: "todo8", name: "outDirectionArea",
label: "", label: "",
span: 12, span: 12,
wrapperCol: { span: 24 }, wrapperCol: { span: 24 },
dependencies: ["todo7"], dependencies: ["outDirectionType"],
hidden: formValues => !(formValues.todo7 === 2), hidden: formValues => !(formValues.outDirectionType === 2),
render: (<BasicSelectTree treeData={enclosedAreaList} placeholder="口门进入区域" />), render: (
<BasicSelectTree
treeData={enclosedAreaListTree}
placeholder="口门离开区域"
onGetLabel={label => form.setFieldValue("outDirectionAreaName", label)}
nameKey="closedAreaName"
/>
),
}, },
{ name: "outDirectionAreaName", label: "口门离开区域名称", onlyForLabel: true },
]} ]}
form={form} form={form}
/> />
@ -294,17 +359,22 @@ const ViewModalComponent = (props) => {
bordered bordered
styles={{ label: { width: 200 } }} styles={{ label: { width: 200 } }}
items={[ items={[
{ label: "所属区域", children: info.areaParentName }, { label: "所属区域", children: info.hgAuthAreaName },
{ label: "口门名称", children: info.areaName }, { label: "口门名称", children: info.mkmjName },
{ label: "口门类型", children: info.areaType }, { label: "口门类型", children: info.mkmjTypeName },
{ label: "口门位置", children: info.areaRange }, { label: "口门位置", children: info.remarks },
{ label: "口门状态", children: getLabelName({ list: AREA_STATUS_ENUM, status: info.areaStatus }) }, { label: "口门状态", children: getLabelName({ list: AREA_STATUS_ENUM, status: info.mkmjStatus }) },
{ {
label: "位置", label: "位置",
children: (<LocationIcon onClick={() => { setMapVisible(true); }} />), children: (
<LocationIcon onClick={() => {
setMapVisible(true);
}}
/>
),
}, },
{ label: "口门进入区域", children: info.todo6 }, { label: "口门进入区域", children: info.inDirectionAreaName },
{ label: "口门离开区域", children: info.todo7 === 1 ? "离场" : `进入其他区域(${info.todo8}` }, { label: "口门离开区域", children: info.outDirectionType === 1 ? "离场" : `进入其他区域(${info.outDirectionAreaName}` },
]} ]}
/> />

View File

@ -1,6 +1,6 @@
import useUrlState from "@ahooksjs/use-url-state"; import useUrlState from "@ahooksjs/use-url-state";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Space } from "antd";
import { useEffect } from "react"; import { useEffect } from "react";
import BackIcon from "zy-react-library/components/Icon/BackIcon"; import BackIcon from "zy-react-library/components/Icon/BackIcon";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
@ -23,7 +23,7 @@ function List(props) {
}, },
}); });
const [form] = Form.useForm(); const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["enclosedPersonnelAndVehicleStatisticsList"], { const { tableProps, getData } = useTable(props["enclosedPersonnelAndVehicleStatisticsList"], {
form, form,

View File

@ -1,5 +1,4 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Form } from "antd";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -11,7 +10,7 @@ import { NS_ENCLOSED_PERSONNEL_AND_VEHICLE_STATISTICS } from "~/enumerate/namesp
import { CATEGORY_ENUM } from "../VehicleEntryAndExitRecords"; import { CATEGORY_ENUM } from "../VehicleEntryAndExitRecords";
function PersonnelEntryAndExitRecords(props) { function PersonnelEntryAndExitRecords(props) {
const [form] = Form.useForm(); const [form] = Search.useForm();
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const { tableProps, getData } = useTable(props["enclosedPersonnelAndVehicleStatisticsPersonnelEntryAndExitRecordsList"], { const { tableProps, getData } = useTable(props["enclosedPersonnelAndVehicleStatisticsPersonnelEntryAndExitRecordsList"], {

View File

@ -1,5 +1,4 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Form } from "antd";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -17,7 +16,7 @@ export const CATEGORY_ENUM = [
]; ];
function VehicleEntryAndExitRecords(props) { function VehicleEntryAndExitRecords(props) {
const [form] = Form.useForm(); const [form] = Search.useForm();
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const { tableProps, getData } = useTable(props["enclosedPersonnelAndVehicleStatisticsVehicleEntryAndExitRecordsList"], { const { tableProps, getData } = useTable(props["enclosedPersonnelAndVehicleStatisticsVehicleEntryAndExitRecordsList"], {