封闭区域申请:临时人员审核、临时访客人员记录、临时车辆审核、临时车辆审核记录

master
LiuJiaNan 2026-03-25 10:13:20 +08:00
parent 18311792ac
commit 3b00108330
21 changed files with 249 additions and 251 deletions

View File

@ -106,19 +106,19 @@
`/primeport/container/enterprise/enclosedArea/enterprisePersonnelPermissions/list` `/primeport/container/enterprise/enclosedArea/enterprisePersonnelPermissions/list`
- 人员审核/长期人员审核 ## - 人员审核/长期人员审核 ##
`/primeport/container/enterprise/enclosedArea/personnelReview/longTermPersonnelReview/list` `/primeport/container/enterprise/enclosedArea/personnelReview/longTermPersonnelReview/list`
- 人员审核/临时人员审核 - 人员审核/临时人员审核 ###
`/primeport/container/enterprise/enclosedArea/personnelReview/temporaryPersonnelReview/list` `/primeport/container/enterprise/enclosedArea/personnelReview/temporaryPersonnelReview/list`
- 人员审核/长期人员审核记录 ## - 人员审核/长期人员审核记录 ##
`/primeport/container/enterprise/enclosedArea/personnelReview/longTermPersonnelReviewRecords/list` `/primeport/container/enterprise/enclosedArea/personnelReview/longTermPersonnelReviewRecords/list`
- 人员审核/临时访客人员记录 - 人员审核/临时访客人员记录 ##
`/primeport/container/enterprise/enclosedArea/personnelReview/temporaryPersonnelReviewRecords/list` `/primeport/container/enterprise/enclosedArea/personnelReview/temporaryPersonnelReviewRecords/list`
- 车辆审核/长期车辆审核 ## - 车辆审核/长期车辆审核 ##
`/primeport/container/enterprise/enclosedArea/vehicleReview/longTermVehicleReview/list` `/primeport/container/enterprise/enclosedArea/vehicleReview/longTermVehicleReview/list`
- 车辆审核/临时车辆审核 - 车辆审核/临时车辆审核 ##
`/primeport/container/enterprise/enclosedArea/vehicleReview/temporaryVehicleReview/list` `/primeport/container/enterprise/enclosedArea/vehicleReview/temporaryVehicleReview/list`
- 车辆审核/长期车辆审核记录 ## - 车辆审核/长期车辆审核记录 ##
`/primeport/container/enterprise/enclosedArea/vehicleReview/longTermVehicleReviewRecords/list` `/primeport/container/enterprise/enclosedArea/vehicleReview/longTermVehicleReviewRecords/list`
- 车辆审核/临时车辆审核记录 - 车辆审核/临时车辆审核记录 ##
`/primeport/container/enterprise/enclosedArea/vehicleReview/temporaryVehicleReviewRecords/list` `/primeport/container/enterprise/enclosedArea/vehicleReview/temporaryVehicleReviewRecords/list`

View File

@ -1,22 +0,0 @@
import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
export const enclosedTemporaryPersonnelReviewList = declareRequest(
"enclosedTemporaryPersonnelReviewLoading",
`Post > @/primeport/`,
);
export const enclosedTemporaryPersonnelReviewInfo = declareRequest(
"enclosedTemporaryPersonnelReviewLoading",
`Post > @/primeport/`,
);
export const enclosedTemporaryPersonnelReviewSubmit = declareRequest(
"enclosedTemporaryPersonnelReviewLoading",
`Post > @/primeport/`,
);
export const enclosedTemporaryPersonnelReviewRecordsList = declareRequest(
"enclosedTemporaryPersonnelReviewLoading",
`Post > @/primeport/`,
);
export const enclosedTemporaryPersonnelReviewRecordsRejectReason = declareRequest(
"enclosedTemporaryPersonnelReviewLoading",
`Post > @/primeport/`,
);

View File

@ -1,22 +0,0 @@
import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
export const enclosedTemporaryVehicleReviewList = declareRequest(
"enclosedTemporaryVehicleReviewLoading",
`Post > @/primeport/`,
);
export const enclosedTemporaryVehicleReviewInfo = declareRequest(
"enclosedTemporaryVehicleReviewLoading",
`Post > @/primeport/`,
);
export const enclosedTemporaryVehicleReviewSubmit = declareRequest(
"enclosedTemporaryVehicleReviewLoading",
`Post > @/primeport/`,
);
export const enclosedTemporaryVehicleReviewRecordsList = declareRequest(
"enclosedTemporaryVehicleReviewLoading",
`Post > @/primeport/`,
);
export const enclosedTemporaryVehicleReviewRecordsRejectReason = declareRequest(
"enclosedTemporaryVehicleReviewLoading",
`Post > @/primeport/`,
);

View File

@ -27,6 +27,4 @@ export const NS_ENCLOSED_AREA_PERSONNEL_APPLY = defineNamespace("enclosedAreaPer
export const NS_ENCLOSED_AREA_VEHICLE_APPLY = defineNamespace("enclosedAreaVehicleApply"); export const NS_ENCLOSED_AREA_VEHICLE_APPLY = defineNamespace("enclosedAreaVehicleApply");
export const NS_ENCLOSED_PERSONNEL_AND_VEHICLE_STATISTICS = defineNamespace("enclosedPersonnelAndVehicleStatistics"); export const NS_ENCLOSED_PERSONNEL_AND_VEHICLE_STATISTICS = defineNamespace("enclosedPersonnelAndVehicleStatistics");
export const NS_ENCLOSED_ENTERPRISE_PERSONNEL_PERMISSIONS = defineNamespace("enclosedEnterprisePersonnelPermissions"); export const NS_ENCLOSED_ENTERPRISE_PERSONNEL_PERMISSIONS = defineNamespace("enclosedEnterprisePersonnelPermissions");
export const NS_ENCLOSED_TEMPORARY_PERSONNEL_REVIEW = defineNamespace("enclosedTemporaryPersonnelReview");
export const NS_ENCLOSED_TEMPORARY_VEHICLE_REVIEW = defineNamespace("enclosedTemporaryVehicleReview");
export const NS_MOBILE = defineNamespace("mobile"); export const NS_MOBILE = defineNamespace("mobile");

View File

@ -20,7 +20,7 @@ function List(props) {
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "name", label: "人员姓名" }, { name: "applyPersonUserName", label: "人员姓名" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}

View File

@ -24,7 +24,7 @@ function List(props) {
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "name", label: "人员姓名" }, { name: "applyPersonUserName", label: "人员姓名" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
@ -103,7 +103,7 @@ function List(props) {
); );
} }
const ViewRejectReasonModalComponent = (props) => { const ViewRejectReasonModal = (props) => {
return ( return (
<Modal <Modal
open open
@ -127,6 +127,4 @@ const ViewRejectReasonModalComponent = (props) => {
); );
}; };
const ViewRejectReasonModal = Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY], true)(ViewRejectReasonModalComponent);
export default Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY], true)(List); export default Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY], true)(List);

View File

@ -1,49 +1,64 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button } from "antd"; import { Button, Space } 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";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { NS_ENCLOSED_TEMPORARY_PERSONNEL_REVIEW } from "~/enumerate/namespace"; import { getLabelName } from "zy-react-library/utils";
import { ENCLOSED_AREA_AUDIT_STATUS_ENUM } from "~/enumerate/constant";
import { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace";
function List(props) { function List(props) {
const [form] = Search.useForm(); const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["enclosedTemporaryPersonnelReviewList"], { const { tableProps, getData } = useTable(props["enclosedAreaPersonnelApplyList"], {
form, form,
params: { processOrRecord: 1, personBelongType: 4 },
}); });
return ( return (
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "todo1", label: "人员姓名" }, { name: "applyPersonUserName", label: "人员姓名" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
/> />
<Table <Table
columns={[ columns={[
{ title: "姓名", dataIndex: "todo1" }, { title: "姓名", dataIndex: "applyPersonUserName" },
{ title: "手机号", dataIndex: "todo2" }, { title: "手机号", dataIndex: "userPhone" },
{ title: "身份证号", dataIndex: "todo3" }, { title: "身份证号", dataIndex: "userCard" },
{ title: "申请区域", dataIndex: "todo4" }, { title: "申请区域", dataIndex: "closedAreaName" },
{ title: "申请口门名称", dataIndex: "todo5" }, { title: "申请口门名称", dataIndex: "levelTwoMkmjName" },
{ title: "申请时间范围", dataIndex: "todo6", render: (_, record) => `${record.todo6}-${record.todo7}` }, {
{ title: "审核状态", dataIndex: "todo8" }, title: "申请时间范围",
dataIndex: "visitStartTime",
render: (_, record) => `${record.visitStartTime}-${record.visitEndTime}`,
},
{
title: "审核状态",
dataIndex: "auditFlag",
render: (_, record) => getLabelName({ list: ENCLOSED_AREA_AUDIT_STATUS_ENUM, status: record.auditFlag }),
},
{ {
title: "操作", title: "操作",
width: 100, width: 100,
fixed: "right", fixed: "right",
render: (_, record) => ( render: (_, record) => (
<Button <Space>
type="link" {record.currentUserCanAudit === 1 && (
onClick={() => { <Button
props.history.push(`./review?id=${record.id}`); type="link"
}} onClick={() => {
> props.history.push(`./review?id=${record.id}`);
审核 }}
</Button> >
审核
</Button>
)}
</Space>
), ),
}, },
]} ]}
@ -53,4 +68,4 @@ function List(props) {
); );
} }
export default Connect([NS_ENCLOSED_TEMPORARY_PERSONNEL_REVIEW], true)(List); export default Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY], true)(List);

View File

@ -5,18 +5,25 @@ 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 PreviewImg from "zy-react-library/components/PreviewImg"; import PreviewImg from "zy-react-library/components/PreviewImg";
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 useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { NS_ENCLOSED_TEMPORARY_PERSONNEL_REVIEW } from "~/enumerate/namespace"; import { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace";
function Review(props) { function Review(props) {
const [info, setInfo] = useState({}); const [info, setInfo] = useState({});
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const [form] = FormBuilder.useForm(); const [form] = FormBuilder.useForm();
const { loading: getFileLoading, getFile } = useGetFile();
const getData = async () => { const getData = async () => {
const { data } = await props["enclosedTemporaryPersonnelReviewInfo"]({ id: query.id }); const { data } = await props["enclosedAreaPersonnelApplyInfo"]({ id: query.id });
setInfo(data); const informSign = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[609], eqForeignKey: data.informSignId });
setInfo({
...data,
informSign,
});
}; };
useEffect(() => { useEffect(() => {
@ -24,7 +31,7 @@ function Review(props) {
}, []); }, []);
const onSubmit = async (values) => { const onSubmit = async (values) => {
const { success } = await props["enclosedTemporaryPersonnelReviewSubmit"]({ const { success } = await props["enclosedAreaPersonnelApplyReviewSubmit"]({
...values, ...values,
id: query.id, id: query.id,
}); });
@ -35,22 +42,28 @@ function Review(props) {
}; };
return ( return (
<Page headerTitle={props.headerTitle || "审核"} contentPadding="0 20px 20px 20px" isShowFooter={props.isShowFooter || false}> <Page
<Spin spinning={props.enclosedTemporaryPersonnelReview.enclosedTemporaryPersonnelReviewLoading}> headerTitle={props.headerTitle || "审核"}
contentPadding="0 20px 20px 20px"
isShowFooter={props.isShowFooter || false}
>
<Spin spinning={props.enclosedAreaPersonnelApply.enclosedAreaPersonnelApplyLoading || getFileLoading}>
<Divider orientation="left">人员信息</Divider> <Divider orientation="left">人员信息</Divider>
<Descriptions <Descriptions
bordered bordered
column={2} column={2}
styles={{ label: { width: 200 } }} styles={{ label: { width: 200 } }}
items={[ items={[
{ label: "姓名", children: info.todo1 }, { label: "姓名", children: info.applyPersonUserName },
{ label: "手机号", children: info.todo2 }, { label: "手机号", children: info.userPhone },
{ label: "身份证号", children: info.todo3 }, { label: "身份证号", children: info.userCard },
{ label: "申请区域", children: info.todo4 }, { label: "申请区域", children: info.closedAreaName },
{ label: "申请时间范围", children: `${info.todo6} - ${info.todo7}` }, { label: "一级口门", children: info.levelOneMkmjName },
{ label: "个人照片", children: (<PreviewImg files={info.todo8} />) }, { label: "二级口门", children: info.levelTwoMkmjName },
{ label: "申请原因", children: info.todo9 }, { label: "申请时间范围", children: `${info.visitStartTime} - ${info.visitEndTime}` },
{ label: "申请人员签字", children: (<PreviewImg files={info.todo10} />) }, { label: "个人照片", children: (<PreviewImg files={[info.userFaceUrl]} />) },
{ label: "申请原因", children: info.applyReason },
{ label: "申请人员签字", children: (<PreviewImg files={info.informSign} />) },
]} ]}
/> />
{!props.headerTitle && ( {!props.headerTitle && (
@ -59,21 +72,21 @@ function Review(props) {
span={24} span={24}
onFinish={onSubmit} onFinish={onSubmit}
values={{ values={{
todo1: "1", auditFlag: "2",
}} }}
options={[ options={[
{ {
name: "todo1", name: "auditFlag",
label: "是否通过审核", label: "是否通过审核",
render: FORM_ITEM_RENDER_ENUM.RADIO, render: FORM_ITEM_RENDER_ENUM.RADIO,
items: [{ bianma: "1", name: "是" }, { bianma: "0", name: "否" }], items: [{ bianma: "2", name: "是" }, { bianma: "3", name: "否" }],
}, },
{ {
name: "todo2", name: "refusalReason",
label: "驳回原因", label: "驳回原因",
render: FORM_ITEM_RENDER_ENUM.TEXTAREA, render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
dependencies: ["todo1"], dependencies: ["auditFlag"],
hidden: formValues => !(formValues.todo1 === "0"), hidden: formValues => !(formValues.auditFlag === "3"),
}, },
]} ]}
form={form} form={form}
@ -84,4 +97,4 @@ function Review(props) {
); );
} }
export default Connect([NS_ENCLOSED_TEMPORARY_PERSONNEL_REVIEW], true)(Review); export default Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY], true)(Review);

View File

@ -1,40 +1,51 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, 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 useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { NS_ENCLOSED_TEMPORARY_PERSONNEL_REVIEW } from "~/enumerate/namespace"; import { getLabelName } from "zy-react-library/utils";
import { ENCLOSED_AREA_AUDIT_STATUS_ENUM } from "~/enumerate/constant";
import { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace";
function List(props) { function List(props) {
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false); const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
const [currentId, setCurrentId] = useState(""); const [currentRefusalReason, setCurrentRefusalReason] = useState("");
const [form] = Search.useForm(); const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["enclosedTemporaryPersonnelReviewRecordsList"], { const { tableProps, getData } = useTable(props["enclosedAreaPersonnelApplyList"], {
form, form,
params: { processOrRecord: 2, personBelongType: 4 },
}); });
return ( return (
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "todo1", label: "人员姓名" }, { name: "applyPersonUserName", label: "人员姓名" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
/> />
<Table <Table
columns={[ columns={[
{ title: "姓名", dataIndex: "todo1" }, { title: "姓名", dataIndex: "applyPersonUserName" },
{ title: "手机号", dataIndex: "todo2" }, { title: "手机号", dataIndex: "userPhone" },
{ title: "身份证号", dataIndex: "todo3" }, { title: "身份证号", dataIndex: "userCard" },
{ title: "申请区域", dataIndex: "todo4" }, { title: "申请区域", dataIndex: "closedAreaName" },
{ title: "申请口门名称", dataIndex: "todo5" }, { title: "申请口门名称", dataIndex: "levelTwoMkmjName" },
{ title: "申请时间范围", dataIndex: "todo6", render: (_, record) => `${record.todo6}-${record.todo7}` }, {
{ title: "审核状态", dataIndex: "todo8" }, title: "申请时间范围",
dataIndex: "visitStartTime",
render: (_, record) => `${record.visitStartTime}-${record.visitEndTime}`,
},
{
title: "审核状态",
dataIndex: "auditFlag",
render: (_, record) => getLabelName({ list: ENCLOSED_AREA_AUDIT_STATUS_ENUM, status: record.auditFlag }),
},
{ {
title: "操作", title: "操作",
width: 150, width: 150,
@ -49,15 +60,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>
), ),
}, },
@ -67,10 +80,10 @@ function List(props) {
{ {
viewRejectReasonModalVisible && ( viewRejectReasonModalVisible && (
<ViewRejectReasonModal <ViewRejectReasonModal
id={currentId} refusalReason={currentRefusalReason}
onCancel={() => { onCancel={() => {
setViewRejectReasonModalVisible(false); setViewRejectReasonModalVisible(false);
setCurrentId(""); setCurrentRefusalReason("");
}} }}
/> />
) )
@ -79,17 +92,7 @@ function List(props) {
); );
} }
const ViewRejectReasonModalComponent = (props) => { const ViewRejectReasonModal = (props) => {
const [info, setInfo] = useState({});
const getData = async () => {
const { data } = await props["enclosedTemporaryPersonnelReviewRecordsRejectReason"]({ id: props.id });
setInfo(data);
};
useEffect(() => {
getData();
}, []);
return ( return (
<Modal <Modal
open open
@ -100,20 +103,17 @@ const ViewRejectReasonModalComponent = (props) => {
footer={[ footer={[
<Button key="cancel" onClick={props.onCancel}>取消</Button>, <Button key="cancel" onClick={props.onCancel}>取消</Button>,
]} ]}
loading={props.enclosedTemporaryPersonnelReview.enclosedTemporaryPersonnelReviewLoading}
> >
<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>
); );
}; };
const ViewRejectReasonModal = Connect([NS_ENCLOSED_TEMPORARY_PERSONNEL_REVIEW], true)(ViewRejectReasonModalComponent); export default Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY], true)(List);
export default Connect([NS_ENCLOSED_TEMPORARY_PERSONNEL_REVIEW], true)(List);

View File

@ -20,7 +20,7 @@ function List(props) {
<Search <Search
options={[ options={[
{ name: "applyPersonUserName", label: "人员姓名" }, { name: "applyPersonUserName", label: "人员姓名" },
{ name: "licenceLo", label: "车牌号" }, { name: "licenceNo", label: "车牌号" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}

View File

@ -24,7 +24,7 @@ function List(props) {
<Search <Search
options={[ options={[
{ name: "applyPersonUserName", label: "人员姓名" }, { name: "applyPersonUserName", label: "人员姓名" },
{ name: "licenceLo", label: "车牌号" }, { name: "licenceNo", label: "车牌号" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
@ -99,7 +99,7 @@ function List(props) {
); );
} }
const ViewRejectReasonModalComponent = (props) => { const ViewRejectReasonModal = (props) => {
return ( return (
<Modal <Modal
open open
@ -123,6 +123,4 @@ const ViewRejectReasonModalComponent = (props) => {
); );
}; };
const ViewRejectReasonModal = Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY], true)(ViewRejectReasonModalComponent);
export default Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY], true)(List); export default Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY], true)(List);

View File

@ -1,51 +1,66 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button } from "antd"; import { Button, Space } 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";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { NS_ENCLOSED_TEMPORARY_VEHICLE_REVIEW } from "~/enumerate/namespace"; import { getLabelName } from "zy-react-library/utils";
import { ENCLOSED_AREA_AUDIT_STATUS_ENUM } from "~/enumerate/constant";
import { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace";
function List(props) { function List(props) {
const [form] = Search.useForm(); const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["enclosedTemporaryVehicleReviewList"], { const { tableProps, getData } = useTable(props["enclosedAreaVehicleApplyList"], {
form, form,
params: { processOrRecord: 1, carBelongType: 4 },
}); });
return ( return (
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "todo1", label: "姓名" }, { name: "applyPersonUserName", label: "姓名" },
{ name: "todo2", label: "车牌号" }, { name: "licenceNo", label: "车牌号" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
/> />
<Table <Table
columns={[ columns={[
{ title: "车辆类型", dataIndex: "todo2" }, { title: "车辆类型", dataIndex: "vehicleTypeName" },
{ title: "车牌号", dataIndex: "todo3" }, { title: "车牌号", dataIndex: "licenceNo" },
{ title: "姓名", dataIndex: "todo4" }, { title: "姓名", dataIndex: "applyPersonUserName" },
{ title: "身份证号", dataIndex: "todo5" }, { title: "身份证号", dataIndex: "userCard" },
{ title: "手机号", dataIndex: "todo6" }, { title: "手机号", dataIndex: "userPhone" },
{ title: "申请区域", dataIndex: "todo7" }, { title: "申请区域", dataIndex: "closedAreaName" },
{ title: "口门名称", dataIndex: "todo11" }, { title: "口门名称", dataIndex: "levelTwoMkmjName" },
{ title: "申请时间范围", dataIndex: "todo8", render: (_, record) => `${record.todo8} - ${record.todo9}` }, {
{ title: "审核状态", dataIndex: "todo10" }, title: "申请时间范围",
dataIndex: "visitStartTime",
render: (_, record) => `${record.visitStartTime}-${record.visitEndTime}`,
},
{
title: "审核状态",
dataIndex: "auditFlag",
render: (_, record) => getLabelName({ list: ENCLOSED_AREA_AUDIT_STATUS_ENUM, status: record.auditFlag }),
},
{ {
title: "操作", title: "操作",
width: 80, width: 80,
fixed: "right", fixed: "right",
render: (_, record) => ( render: (_, record) => (
<Button <Space>
type="link" {record.currentUserCanAudit === 1 && (
onClick={() => { <Button
props.history.push(`./review?id=${record.id}`); type="link"
}} onClick={() => {
> props.history.push(`./review?id=${record.id}`);
审核 }}
</Button> >
审核
</Button>
)}
</Space>
), ),
}, },
]} ]}
@ -55,4 +70,4 @@ function List(props) {
); );
} }
export default Connect([NS_ENCLOSED_TEMPORARY_VEHICLE_REVIEW], true)(List); export default Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY], true)(List);

View File

@ -5,18 +5,29 @@ 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 PreviewImg from "zy-react-library/components/PreviewImg"; import PreviewImg from "zy-react-library/components/PreviewImg";
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 useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { NS_ENCLOSED_TEMPORARY_VEHICLE_REVIEW } from "~/enumerate/namespace"; import { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace";
function Review(props) { function Review(props) {
const [info, setInfo] = useState({}); const [info, setInfo] = useState({});
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const [form] = FormBuilder.useForm(); const [form] = FormBuilder.useForm();
const { loading: getFileLoading, getFile } = useGetFile();
const getData = async () => { const getData = async () => {
const { data } = await props["enclosedTemporaryVehicleReviewInfo"]({ id: query.id }); const { data } = await props["enclosedAreaVehicleApplyInfo"]({ id: query.id });
setInfo(data); const vehicleLicenseFiles = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[601], eqForeignKey: data.drivingLicenseId });
const vehicleFiles = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[602], eqForeignKey: data.attachmentId });
const informSignFiles = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[610], eqForeignKey: data.informSignId });
setInfo({
...data,
vehicleLicenseFiles,
vehicleFiles,
informSignFiles,
});
}; };
useEffect(() => { useEffect(() => {
@ -24,7 +35,7 @@ function Review(props) {
}, []); }, []);
const onSubmit = async (values) => { const onSubmit = async (values) => {
const { success } = await props["enclosedTemporaryVehicleReviewSubmit"]({ const { success } = await props["enclosedAreaVehicleApplyReviewSubmit"]({
...values, ...values,
id: query.id, id: query.id,
}); });
@ -36,26 +47,27 @@ function Review(props) {
return ( return (
<Page headerTitle={props.headerTitle || "审核"} contentPadding="0 20px 20px 20px" isShowFooter={props.isShowFooter || false}> <Page headerTitle={props.headerTitle || "审核"} contentPadding="0 20px 20px 20px" isShowFooter={props.isShowFooter || false}>
<Spin spinning={props.enclosedTemporaryVehicleReview.enclosedTemporaryVehicleReviewLoading}> <Spin spinning={props.enclosedAreaVehicleApply.enclosedAreaVehicleApplyLoading || getFileLoading}>
<Divider orientation="left">车辆信息</Divider> <Divider orientation="left">车辆信息</Divider>
<Descriptions <Descriptions
bordered bordered
column={2} column={2}
styles={{ label: { width: 200 } }} styles={{ label: { width: 200 } }}
items={[ items={[
{ label: "车辆类型", children: info.todo1 }, { label: "车辆类型", children: info.vehicleTypeName },
{ label: "车牌类型", children: info.todo2 }, { label: "车牌类型", children: info.licenceTypeName },
{ label: "车牌号", children: info.todo3 }, { label: "车牌号", children: info.licenceNo },
{ label: "驾驶人姓名", children: info.todo4 }, { label: "驾驶人姓名", children: info.drivingUserName },
{ label: "手机号", children: info.todo5 }, { label: "手机号", children: info.userPhone },
{ label: "身份证号", children: info.todo6 }, { label: "身份证号", children: info.userCard },
{ label: "申请区域", children: info.todo7 }, { label: "申请区域", children: info.closedAreaName },
{ label: "口门名称", children: info.todo8 }, { label: "一级口门名称", children: info.levelOneMkmjName },
{ label: "申请时间范围", children: `${info.todo9} - ${info.todo10}` }, { label: "二级口门名称", children: info.levelTwoMkmjName },
{ label: "车辆照片", children: (<PreviewImg files={info.todo11} />) }, { label: "申请时间范围", children: `${info.visitStartTime} - ${info.visitEndTime}` },
{ label: "行驶证照片", children: (<PreviewImg files={info.todo12} />) }, { label: "车辆照片", children: (<PreviewImg files={info.vehicleFiles} />) },
{ label: "申请原因", children: info.todo13 }, { label: "行驶证照片", children: (<PreviewImg files={info.vehicleLicenseFiles} />) },
{ label: "申请人员签字", children: (<PreviewImg files={info.todo14} />) }, { label: "申请原因", children: info.applyReason },
{ label: "申请人员签字", children: (<PreviewImg files={info.informSignFiles} />) },
]} ]}
/> />
{!props.headerTitle && ( {!props.headerTitle && (
@ -64,21 +76,21 @@ function Review(props) {
span={24} span={24}
onFinish={onSubmit} onFinish={onSubmit}
values={{ values={{
todo1: "1", auditFlag: "2",
}} }}
options={[ options={[
{ {
name: "todo1", name: "auditFlag",
label: "是否通过审核", label: "是否通过审核",
render: FORM_ITEM_RENDER_ENUM.RADIO, render: FORM_ITEM_RENDER_ENUM.RADIO,
items: [{ bianma: "1", name: "是" }, { bianma: "0", name: "否" }], items: [{ bianma: "2", name: "是" }, { bianma: "3", name: "否" }],
}, },
{ {
name: "todo2", name: "refusalReason",
label: "驳回原因", label: "驳回原因",
render: FORM_ITEM_RENDER_ENUM.TEXTAREA, render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
dependencies: ["todo1"], dependencies: ["auditFlag"],
hidden: formValues => !(formValues.todo1 === "0"), hidden: formValues => !(formValues.auditFlag === "3"),
}, },
]} ]}
form={form} form={form}
@ -89,4 +101,4 @@ function Review(props) {
); );
} }
export default Connect([NS_ENCLOSED_TEMPORARY_VEHICLE_REVIEW], true)(Review); export default Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY], true)(Review);

View File

@ -1,67 +1,78 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, 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 useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { ENCLOSED_AREA_BELONGING_END_ENUM } from "~/enumerate/constant"; import { getLabelName } from "zy-react-library/utils";
import { NS_ENCLOSED_TEMPORARY_VEHICLE_REVIEW } from "~/enumerate/namespace"; import { ENCLOSED_AREA_AUDIT_STATUS_ENUM } from "~/enumerate/constant";
import { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace";
function List(props) { function List(props) {
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false); const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
const [currentId, setCurrentId] = useState(""); const [currentRefusalReason, setCurrentRefusalReason] = useState("");
const [form] = Search.useForm(); const [form] = Search.useForm();
const { tableProps, getData } = useTable(props["enclosedTemporaryVehicleReviewRecordsList"], { const { tableProps, getData } = useTable(props["enclosedAreaVehicleApplyList"], {
form, form,
params: { processOrRecord: 2, carBelongType: 4 },
}); });
return ( return (
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "todo1", label: "姓名" }, { name: "applyPersonUserName", label: "姓名" },
{ name: "todo2", label: "车牌号" }, { name: "licenceNo", label: "车牌号" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
/> />
<Table <Table
columns={[ columns={[
{ title: "车辆类型", dataIndex: "todo2" }, { title: "车辆类型", dataIndex: "vehicleTypeName" },
{ title: "车牌号", dataIndex: "todo3" }, { title: "车牌号", dataIndex: "licenceNo" },
{ title: "姓名", dataIndex: "todo4" }, { title: "姓名", dataIndex: "applyPersonUserName" },
{ title: "身份证号", dataIndex: "todo5" }, { title: "身份证号", dataIndex: "userCard" },
{ title: "手机号", dataIndex: "todo6" }, { title: "手机号", dataIndex: "userPhone" },
{ title: "申请区域", dataIndex: "todo7" }, { title: "申请区域", dataIndex: "closedAreaName" },
{ title: "口门名称", dataIndex: "todo11" }, { title: "口门名称", dataIndex: "levelTwoMkmjName" },
{ title: "申请时间范围", dataIndex: "todo8", render: (_, record) => `${record.todo8} - ${record.todo9}` }, {
{ title: "审核状态", dataIndex: "todo10" }, title: "申请时间范围",
dataIndex: "visitStartTime",
render: (_, record) => `${record.visitStartTime}-${record.visitEndTime}`,
},
{
title: "审核状态",
dataIndex: "auditFlag",
render: (_, record) => getLabelName({ list: ENCLOSED_AREA_AUDIT_STATUS_ENUM, status: record.auditFlag }),
},
{ {
title: "操作", title: "操作",
width: 80, width: 150,
fixed: "right", fixed: "right",
render: (_, record) => ( render: (_, record) => (
<Space> <Space>
<Button <Button
type="link" type="link"
onClick={() => { onClick={() => {
const entrance = ENCLOSED_AREA_BELONGING_END_ENUM.find(item => +item.bianma === record.todo1).bianma; props.history.push(`./view?id=${record.id}`);
props.history.push(`./view?id=${record.id}&entrance=${entrance}`);
}} }}
> >
查看 查看
</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>
), ),
}, },
@ -71,10 +82,10 @@ function List(props) {
{ {
viewRejectReasonModalVisible && ( viewRejectReasonModalVisible && (
<ViewRejectReasonModal <ViewRejectReasonModal
id={currentId} refusalReason={currentRefusalReason}
onCancel={() => { onCancel={() => {
setViewRejectReasonModalVisible(false); setViewRejectReasonModalVisible(false);
setCurrentId(""); setCurrentRefusalReason("");
}} }}
/> />
) )
@ -83,17 +94,7 @@ function List(props) {
); );
} }
const ViewRejectReasonModalComponent = (props) => { const ViewRejectReasonModal = (props) => {
const [info, setInfo] = useState({});
const getData = async () => {
const { data } = await props["enclosedTemporaryVehicleReviewRecordsRejectReason"]({ id: props.id });
setInfo(data);
};
useEffect(() => {
getData();
}, []);
return ( return (
<Modal <Modal
open open
@ -104,20 +105,17 @@ const ViewRejectReasonModalComponent = (props) => {
footer={[ footer={[
<Button key="cancel" onClick={props.onCancel}>取消</Button>, <Button key="cancel" onClick={props.onCancel}>取消</Button>,
]} ]}
loading={props.enclosedTemporaryVehicleReview.enclosedTemporaryVehicleReviewLoading}
> >
<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>
); );
}; };
const ViewRejectReasonModal = Connect([NS_ENCLOSED_TEMPORARY_VEHICLE_REVIEW], true)(ViewRejectReasonModalComponent); export default Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY], true)(List);
export default Connect([NS_ENCLOSED_TEMPORARY_VEHICLE_REVIEW], true)(List);

View File

@ -181,6 +181,8 @@ function Apply(props) {
attachmentId, attachmentId,
userFaceUrl, userFaceUrl,
informSignId, informSignId,
jurisdictionalCorpId: values.jurisdictionalCorpId?.at(-1),
closedAreaId: values.closedAreaId?.at(-1),
}); });
if (success) { if (success) {
props.history.push(`./success?id=${data.id}&tmpApplyType=${values.tmpApplyType}&tmpMkmjType=${values.tmpMkmjType}`); props.history.push(`./success?id=${data.id}&tmpApplyType=${values.tmpApplyType}&tmpMkmjType=${values.tmpMkmjType}`);

View File

@ -28,7 +28,7 @@ function List(props) {
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "name", label: "人员姓名" }, { name: "applyPersonUserName", label: "人员姓名" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}

View File

@ -31,7 +31,7 @@ function List(props) {
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "name", label: "人员姓名" }, { name: "applyPersonUserName", label: "人员姓名" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
@ -105,7 +105,7 @@ function List(props) {
); );
} }
const ViewRejectReasonModalComponent = (props) => { const ViewRejectReasonModal = (props) => {
return ( return (
<Modal <Modal
open open
@ -129,6 +129,4 @@ const ViewRejectReasonModalComponent = (props) => {
); );
}; };
const ViewRejectReasonModal = Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY], true)(ViewRejectReasonModalComponent);
export default Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY], true)(List); export default Connect([NS_ENCLOSED_AREA_PERSONNEL_APPLY], true)(List);

View File

@ -39,7 +39,7 @@ function List(props) {
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "licenceLo", label: "车牌号" }, { name: "licenceNo", label: "车牌号" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
@ -68,7 +68,7 @@ function List(props) {
render: (_, record) => `${record.visitStartTime} - ${record.visitEndTime}`, render: (_, record) => `${record.visitStartTime} - ${record.visitEndTime}`,
}, },
{ title: "申请原因", dataIndex: "applyReason" }, { title: "申请原因", dataIndex: "applyReason" },
{ title: "车牌号", dataIndex: "licenceLo" }, { title: "车牌号", dataIndex: "licenceNo" },
{ title: "车辆照片", dataIndex: "files", render: (_, record) => <TooltipPreviewImg files={record.files} /> }, { title: "车辆照片", dataIndex: "files", render: (_, record) => <TooltipPreviewImg files={record.files} /> },
{ title: "所属项目", dataIndex: "projectName", hidden: !(props.entrance === "stakeholder") }, { title: "所属项目", dataIndex: "projectName", hidden: !(props.entrance === "stakeholder") },
{ {

View File

@ -40,7 +40,7 @@ function List(props) {
<Page isShowAllAction={false}> <Page isShowAllAction={false}>
<Search <Search
options={[ options={[
{ name: "licenceLo", label: "车牌号" }, { name: "licenceNo", label: "车牌号" },
]} ]}
form={form} form={form}
onFinish={getData} onFinish={getData}
@ -58,7 +58,7 @@ function List(props) {
render: (_, record) => `${record.visitStartTime} - ${record.visitEndTime}`, render: (_, record) => `${record.visitStartTime} - ${record.visitEndTime}`,
}, },
{ title: "申请原因", dataIndex: "applyReason" }, { title: "申请原因", dataIndex: "applyReason" },
{ title: "车牌号", dataIndex: "licenceLo" }, { title: "车牌号", dataIndex: "licenceNo" },
{ title: "车辆照片", dataIndex: "files", render: (_, record) => <TooltipPreviewImg files={record.files} /> }, { title: "车辆照片", dataIndex: "files", render: (_, record) => <TooltipPreviewImg files={record.files} /> },
{ title: "所属项目", dataIndex: "projectName", hidden: !(props.entrance === "stakeholder") }, { title: "所属项目", dataIndex: "projectName", hidden: !(props.entrance === "stakeholder") },
{ {
@ -112,7 +112,7 @@ function List(props) {
); );
} }
const ViewRejectReasonModalComponent = (props) => { const ViewRejectReasonModal = (props) => {
return ( return (
<Modal <Modal
open open
@ -136,6 +136,4 @@ const ViewRejectReasonModalComponent = (props) => {
); );
}; };
const ViewRejectReasonModal = Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY], true)(ViewRejectReasonModalComponent);
export default Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY], true)(List); export default Connect([NS_ENCLOSED_AREA_VEHICLE_APPLY], true)(List);

View File

@ -195,7 +195,7 @@ const ReviewModalComponent = (props) => {
); );
}; };
const ViewRejectReasonModalComponent = (props) => { const ViewRejectReasonModal = (props) => {
return ( return (
<Modal <Modal
open open
@ -206,7 +206,6 @@ const ViewRejectReasonModalComponent = (props) => {
footer={[ footer={[
<Button key="cancel" onClick={props.onCancel}>取消</Button>, <Button key="cancel" onClick={props.onCancel}>取消</Button>,
]} ]}
loading={props.vehicleAudit.vehicleAuditLoading}
> >
<Descriptions <Descriptions
column={1} column={1}
@ -288,5 +287,4 @@ function InfoModal(props) {
const ReviewModal = Connect([NS_VEHICLE_AUDIT], true)(ReviewModalComponent); const ReviewModal = Connect([NS_VEHICLE_AUDIT], true)(ReviewModalComponent);
const PublicInfoModal = Connect([NS_VEHICLE_AUDIT], true)(InfoModalComponent); const PublicInfoModal = Connect([NS_VEHICLE_AUDIT], true)(InfoModalComponent);
const ViewRejectReasonModal = Connect([NS_VEHICLE_AUDIT], true)(ViewRejectReasonModalComponent);
export default Connect([NS_VEHICLE_AUDIT], true)(RelatedVehicles); export default Connect([NS_VEHICLE_AUDIT], true)(RelatedVehicles);

View File

@ -259,7 +259,7 @@ const InfoModalComponent = (props) => {
); );
}; };
const ViewRejectReasonModalComponent = (props) => { const ViewRejectReasonModal = (props) => {
return ( return (
<Modal <Modal
open open
@ -302,5 +302,4 @@ function InfoModal(props) {
const ReviewModal = Connect([NS_TEMPORARY_PERSONNEL], true)(ReviewModalComponent); const ReviewModal = Connect([NS_TEMPORARY_PERSONNEL], true)(ReviewModalComponent);
const PublicInfoModal = Connect([NS_RELATED_PERSONNEL, NS_TEMPORARY_PERSONNEL], true)(InfoModalComponent); const PublicInfoModal = Connect([NS_RELATED_PERSONNEL, NS_TEMPORARY_PERSONNEL], true)(InfoModalComponent);
const ViewRejectReasonModal = Connect([NS_TEMPORARY_PERSONNEL], true)(ViewRejectReasonModalComponent);
export default Connect([NS_TEMPORARY_PERSONNEL], true)(RelatedPersonnel); export default Connect([NS_TEMPORARY_PERSONNEL], true)(RelatedPersonnel);