封闭区域管理:封闭区域管理、封闭区域口门管理、人员封闭区域申请、车辆封闭区域申请、人员封闭区域申请记录、车辆封闭区域申请记录
parent
990964f067
commit
8de6f12667
|
|
@ -34,7 +34,7 @@
|
|||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-signature-canvas": "^1.1.0-alpha.2",
|
||||
"zy-react-library": "^1.2.6"
|
||||
"zy-react-library": "^1.2.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@antfu/eslint-config": "^5.4.1",
|
||||
|
|
|
|||
30
router.md
30
router.md
|
|
@ -46,15 +46,15 @@
|
|||
#### 封闭区域管理
|
||||
- 封闭区域管理/封闭区域管理 ##
|
||||
`/primeport/container/supervision/enclosedArea/areaAndEntrance/enclosedArea/list`
|
||||
- 封闭区域管理/封闭区域口门管理
|
||||
- 封闭区域管理/封闭区域口门管理 ##
|
||||
`/primeport/container/supervision/enclosedArea/areaAndEntrance/enclosedAreaDoor/list`
|
||||
- 封闭区域申请/人员封闭区域申请
|
||||
- 封闭区域申请/人员封闭区域申请 ##
|
||||
`/primeport/container/supervision/enclosedArea/apply/personnel/list`
|
||||
- 封闭区域申请/车辆封闭区域申请
|
||||
- 封闭区域申请/车辆封闭区域申请 ##
|
||||
`/primeport/container/supervision/enclosedArea/apply/vehicle/list`
|
||||
- 封闭区域申请/人员封闭区域申请记录
|
||||
- 封闭区域申请/人员封闭区域申请记录 #
|
||||
`/primeport/container/supervision/enclosedArea/apply/personnelRecords/list`
|
||||
- 封闭区域申请/车辆封闭区域申请记录
|
||||
- 封闭区域申请/车辆封闭区域申请记录 #
|
||||
`/primeport/container/supervision/enclosedArea/apply/vehicleRecords/list`
|
||||
- 区域人员及车辆统计
|
||||
`/primeport/container/supervision/enclosedArea/personnelAndVehicleStatistics/list`
|
||||
|
|
@ -88,17 +88,17 @@
|
|||
`/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehicleBlacklist/list`
|
||||
|
||||
#### 封闭区域管理
|
||||
- 封闭区域管理/封闭区域管理
|
||||
- 封闭区域管理/封闭区域管理 ##
|
||||
`/primeport/container/enterprise/enclosedArea/areaAndEntrance/enclosedArea/list`
|
||||
- 封闭区域管理/封闭区域口门管理
|
||||
- 封闭区域管理/封闭区域口门管理 ##
|
||||
`/primeport/container/enterprise/enclosedArea/areaAndEntrance/enclosedAreaDoor/list`
|
||||
- 封闭区域申请/人员封闭区域申请
|
||||
- 封闭区域申请/人员封闭区域申请 ##
|
||||
`/primeport/container/enterprise/enclosedArea/apply/personnel/list`
|
||||
- 封闭区域申请/车辆封闭区域申请
|
||||
- 封闭区域申请/车辆封闭区域申请 ##
|
||||
`/primeport/container/enterprise/enclosedArea/apply/vehicle/list`
|
||||
- 封闭区域申请/人员封闭区域申请记录
|
||||
- 封闭区域申请/人员封闭区域申请记录 ##
|
||||
`/primeport/container/enterprise/enclosedArea/apply/personnelRecords/list`
|
||||
- 封闭区域申请/车辆封闭区域申请记录
|
||||
- 封闭区域申请/车辆封闭区域申请记录 ##
|
||||
`/primeport/container/enterprise/enclosedArea/apply/vehicleRecords/list`
|
||||
- 区域人员及车辆统计
|
||||
`/primeport/container/enterprise/enclosedArea/personnelAndVehicleStatistics/list`
|
||||
|
|
@ -152,13 +152,13 @@
|
|||
`/primeport/container/stakeholder/firstLevelDoor/vehicleApplicationRecords/list`
|
||||
|
||||
#### 封闭区域管理
|
||||
- 封闭区域申请/人员封闭区域申请
|
||||
- 封闭区域申请/人员封闭区域申请 ##
|
||||
`/primeport/container/stakeholder/enclosedArea/apply/personnel/list`
|
||||
- 封闭区域申请/车辆封闭区域申请
|
||||
- 封闭区域申请/车辆封闭区域申请 ##
|
||||
`/primeport/container/stakeholder/enclosedArea/apply/vehicle/list`
|
||||
- 封闭区域申请/人员封闭区域申请记录
|
||||
- 封闭区域申请/人员封闭区域申请记录 ##
|
||||
`/primeport/container/stakeholder/enclosedArea/apply/personnelRecords/list`
|
||||
- 封闭区域申请/车辆封闭区域申请记录
|
||||
- 封闭区域申请/车辆封闭区域申请记录 ##
|
||||
`/primeport/container/stakeholder/enclosedArea/apply/vehicleRecords/list`
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ export const enclosedAreaDetailList = declareRequest(
|
|||
);
|
||||
export const enclosedAreaDetailListTree = declareRequest(
|
||||
"enclosedAreaLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Get > /primeport/closedArea/listTree`,
|
||||
);
|
||||
export const enclosedAreaDetailDelete = declareRequest(
|
||||
"enclosedAreaLoading",
|
||||
|
|
|
|||
|
|
@ -2,29 +2,29 @@ import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
|
|||
|
||||
export const enclosedAreaPersonnelApplyList = declareRequest(
|
||||
"enclosedAreaPersonnelApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Post > @/primeport/closedAreaPersonApply/pendingApprovalRecordList`,
|
||||
);
|
||||
export const enclosedAreaPersonnelApplyInfo = declareRequest(
|
||||
"enclosedAreaPersonnelApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Get > /primeport/closedAreaPersonApply/{id}`,
|
||||
);
|
||||
export const enclosedAreaPersonnelApplyEntourageList = declareRequest(
|
||||
"enclosedAreaPersonnelApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Post > @/primeport/closedAreaPersonApply/getCorpUserList`,
|
||||
);
|
||||
export const enclosedAreaPersonnelApplySave = declareRequest(
|
||||
"enclosedAreaPersonnelApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
);
|
||||
export const enclosedAreaPersonnelApplyRecordsList = declareRequest(
|
||||
"enclosedAreaPersonnelApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Post > @/primeport/closedAreaPersonApply/save`,
|
||||
);
|
||||
export const enclosedAreaPersonnelApplyRecordsAccessRecordsList = declareRequest(
|
||||
"enclosedAreaPersonnelApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
);
|
||||
export const enclosedAreaPersonnelApplyRecordsRejectReason = declareRequest(
|
||||
export const xgfProjectListAll = declareRequest(
|
||||
"enclosedAreaPersonnelApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Get > /xgfManager/project/listAllPassedBySelfCorp`,
|
||||
);
|
||||
export const xgfProjectUserGetPeopleProject = declareRequest(
|
||||
"enclosedAreaPersonnelApplyLoading",
|
||||
`Get > /xgfManager/projectUser/getPeopleinProject/{id}`,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -2,29 +2,21 @@ import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
|
|||
|
||||
export const enclosedAreaVehicleApplyList = declareRequest(
|
||||
"enclosedAreaVehicleApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Post > @/primeport/closedAreaCarApply/list`,
|
||||
);
|
||||
export const enclosedAreaVehicleApplyInfo = declareRequest(
|
||||
"enclosedAreaVehicleApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Get > /primeport/closedAreaCarApply/{id}`,
|
||||
);
|
||||
export const enclosedAreaVehicleApplyVehicleList = declareRequest(
|
||||
"enclosedAreaVehicleApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Get > /primeport/vehicleApply/getCarByVehicleBelongType`,
|
||||
);
|
||||
export const enclosedAreaVehicleApplySave = declareRequest(
|
||||
"enclosedAreaVehicleApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
);
|
||||
export const enclosedAreaVehicleApplyRecordsList = declareRequest(
|
||||
"enclosedAreaVehicleApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Post > @/primeport/closedAreaCarApply/save`,
|
||||
);
|
||||
export const enclosedAreaVehicleApplyRecordsAccessRecordsList = declareRequest(
|
||||
"enclosedAreaVehicleApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
);
|
||||
export const enclosedAreaVehicleApplyRecordsRejectReason = declareRequest(
|
||||
"enclosedAreaVehicleApplyLoading",
|
||||
`Post > @/primeport/`,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,10 @@ export const firstLevelDoorInfoDelete = declareRequest(
|
|||
"firstLevelDoorInfoLoading",
|
||||
`Delete > @/primeport/mkmj/{id}`,
|
||||
);
|
||||
export const firstLevelDoorInfoEditStatus = declareRequest(
|
||||
"firstLevelDoorInfoLoading",
|
||||
`Put > @/primeport/mkmj/editStatus`,
|
||||
);
|
||||
export const firstLevelDoorInfoInfo = declareRequest(
|
||||
"firstLevelDoorInfoLoading",
|
||||
`Get > /primeport/mkmj/{id}`,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import AddPage from "~/pages/Container/Supervision/EnclosedArea/Apply/Personnel/Add";
|
||||
|
||||
function Add(props) {
|
||||
return (<AddPage {...props} />);
|
||||
return (<AddPage entrance="enterprise" {...props} />);
|
||||
}
|
||||
|
||||
export default Add;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/Personnel/List";
|
||||
|
||||
function List(props) {
|
||||
return (<ListPage {...props} />);
|
||||
return (<ListPage entrance="enterprise" {...props} />);
|
||||
}
|
||||
|
||||
export default List;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/PersonnelRecords/List";
|
||||
|
||||
function List(props) {
|
||||
return (<ListPage {...props} />);
|
||||
return (<ListPage entrance="enterprise" {...props} />);
|
||||
}
|
||||
|
||||
export default List;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/Vehicle/List";
|
||||
|
||||
function List(props) {
|
||||
return (<ListPage {...props} />);
|
||||
return (<ListPage entrance="enterprise" {...props} />);
|
||||
}
|
||||
|
||||
export default List;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import ListPage from "~/pages/Container/Supervision/EnclosedArea/Apply/VehicleRecords/List";
|
||||
|
||||
function List(props) {
|
||||
return (<ListPage {...props} />);
|
||||
return (<ListPage entrance="enterprise" {...props} />);
|
||||
}
|
||||
|
||||
export default List;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, message, Modal } from "antd";
|
||||
import { useRef, useState } from "react";
|
||||
import { Button, message, Modal } from "antd";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
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 Table from "zy-react-library/components/Table";
|
||||
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 useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||
import { getLabelName } from "zy-react-library/utils";
|
||||
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) {
|
||||
const [enclosedAreaList, setEnclosedAreaList] = useState([]);
|
||||
const [entourageList, setEntourageList] = useState([]);
|
||||
const [selectEntourageModalVisible, setSelectEntourageModalVisible] = useState(false);
|
||||
const [needToKnowModalVisible, setNeedToKnowModalVisible] = useState(false);
|
||||
const [approvalUserListAll, setApprovalUserListAll] = useState([]);
|
||||
const [xgfProjectListAll, setXgfProjectListAll] = useState([]);
|
||||
|
||||
const signatureUrl = useRef("");
|
||||
|
||||
const [form] = Form.useForm();
|
||||
const [form] = FormBuilder.useForm();
|
||||
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
|
||||
|
||||
const getEnclosedAreaList = async (id) => {
|
||||
const { data } = await props["enclosedAreaDetailListTree"]({ id });
|
||||
const getApprovalUserListAll = async () => {
|
||||
const { data } = await props["approvalUserListAll"]({ personnelPermissionFlag: 1 });
|
||||
setApprovalUserListAll(data);
|
||||
};
|
||||
|
||||
const getEnclosedAreaList = async (jurisdictionalCorpId) => {
|
||||
const { data } = await props["enclosedAreaDetailListTree"]({ jurisdictionalCorpId });
|
||||
setEnclosedAreaList(data);
|
||||
};
|
||||
|
||||
const getXgfProjectListAll = async () => {
|
||||
const { data } = await props["xgfProjectListAll"]();
|
||||
setXgfProjectListAll(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getApprovalUserListAll();
|
||||
props.entrance === "stakeholder" && getXgfProjectListAll();
|
||||
}, []);
|
||||
|
||||
const onSubmit = async (values) => {
|
||||
if (!values.todo8) {
|
||||
if (!values.informSignFile) {
|
||||
message.warning("请勾选《安全进港须知》并签字");
|
||||
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) {
|
||||
message.success("操作成功");
|
||||
props.history.goBack();
|
||||
|
|
@ -44,18 +82,27 @@ function Add(props) {
|
|||
<FormBuilder
|
||||
submitButtonText="提交申请"
|
||||
onFinish={onSubmit}
|
||||
loading={props.enclosedAreaPersonnelApply.enclosedAreaPersonnelApplyLoading || uploadFileLoading}
|
||||
options={[
|
||||
{
|
||||
name: "todo0",
|
||||
name: "projectId",
|
||||
label: "项目",
|
||||
tip: "如果无法找到相应的项目,请在“项目审核管理”栏目中查看,项目是否备案审核成功。",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: [],
|
||||
items: xgfProjectListAll,
|
||||
itemsField: { labelKey: "projectName", valueKey: "id" },
|
||||
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: "区域管辖单位",
|
||||
render: (
|
||||
<DepartmentSelectTree
|
||||
|
|
@ -63,18 +110,50 @@ function Add(props) {
|
|||
params={{ enterpriseType: [2] }}
|
||||
onChange={(value) => {
|
||||
getEnclosedAreaList(value);
|
||||
form.setFieldValue("closedAreaName", "");
|
||||
}}
|
||||
onGetLabel={label => form.setFieldValue("jurisdictionalCorpName", label)}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "jurisdictionalCorpName", label: "区域管辖单位名称", onlyForLabel: true },
|
||||
{
|
||||
name: "todo2",
|
||||
name: "closedAreaId",
|
||||
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: "申请时间范围",
|
||||
render: FORM_ITEM_RENDER_ENUM.DATE_RANGE,
|
||||
componentProps: { disabled: props.entrance === "stakeholder" },
|
||||
|
|
@ -99,6 +178,10 @@ function Add(props) {
|
|||
<Button
|
||||
type="primary"
|
||||
onClick={() => {
|
||||
if (props.entrance === "stakeholder" && !form.getFieldValue("projectId")) {
|
||||
message.warning("请先选择项目");
|
||||
return;
|
||||
}
|
||||
setSelectEntourageModalVisible(true);
|
||||
}}
|
||||
>
|
||||
|
|
@ -109,8 +192,8 @@ function Add(props) {
|
|||
disabledResizer={true}
|
||||
pagination={false}
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "todo1" },
|
||||
{ title: "部门", dataIndex: "todo2" },
|
||||
{ title: "姓名", dataIndex: "name", render: (_, record) => record.name || record.userName },
|
||||
{ title: "部门", dataIndex: "deptName" },
|
||||
{
|
||||
title: "操作",
|
||||
render: (_, record) => (
|
||||
|
|
@ -118,7 +201,7 @@ function Add(props) {
|
|||
type="link"
|
||||
danger
|
||||
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: " ",
|
||||
span: 24,
|
||||
required: false,
|
||||
|
|
@ -163,7 +246,7 @@ function Add(props) {
|
|||
),
|
||||
}],
|
||||
},
|
||||
{ name: "todo8", label: "签字", onlyForLabel: true },
|
||||
{ name: "informSignFile", label: "签字", onlyForLabel: true },
|
||||
]}
|
||||
form={form}
|
||||
/>
|
||||
|
|
@ -171,6 +254,8 @@ function Add(props) {
|
|||
selectEntourageModalVisible && (
|
||||
<SelectEntourageModal
|
||||
entourageList={entourageList}
|
||||
entrance={props.entrance}
|
||||
projectId={form.getFieldValue("projectId")}
|
||||
onClose={() => {
|
||||
setSelectEntourageModalVisible(false);
|
||||
}}
|
||||
|
|
@ -189,7 +274,7 @@ function Add(props) {
|
|||
setNeedToKnowModalVisible(false);
|
||||
}}
|
||||
onOk={(values) => {
|
||||
form.setFieldValue("todo8", values);
|
||||
form.setFieldValue("informSignFile", values.file);
|
||||
signatureUrl.current = values.base64;
|
||||
setNeedToKnowModalVisible(false);
|
||||
}}
|
||||
|
|
@ -201,14 +286,28 @@ function Add(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 [form] = Form.useForm();
|
||||
const { tableProps, getData } = useTable(props["enclosedAreaPersonnelApplyEntourageList"], {
|
||||
const [form] = Search.useForm();
|
||||
const {
|
||||
tableProps,
|
||||
getData,
|
||||
} = useTable(props[props.entrance === "stakeholder" ? "xgfProjectUserGetPeopleProject" : "enclosedAreaPersonnelApplyEntourageList"], {
|
||||
form,
|
||||
useStorageQueryCriteria: false,
|
||||
params: () => {
|
||||
if (props.entrance === "stakeholder") {
|
||||
return { id: props.projectId };
|
||||
}
|
||||
else {
|
||||
let personBelongType = 1;
|
||||
if (props.entrance === "enterprise")
|
||||
personBelongType = 2;
|
||||
return { personBelongType };
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
return (
|
||||
|
|
@ -224,12 +323,13 @@ const SelectEntourageModalComponent = (props) => {
|
|||
>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "todo1", label: "姓名" },
|
||||
{ name: "name", label: "姓名" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
rowKey="userId"
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
preserveSelectedRowKeys: true,
|
||||
|
|
@ -241,10 +341,10 @@ const SelectEntourageModalComponent = (props) => {
|
|||
options={false}
|
||||
disabledResizer={true}
|
||||
columns={[
|
||||
{ title: "部门", dataIndex: "todo1" },
|
||||
{ title: "姓名", dataIndex: "todo2" },
|
||||
{ title: "手机号", dataIndex: "todo3" },
|
||||
{ title: "是否录入人脸", dataIndex: "todo4", render: (_, record) => record.todo4 === 1 ? "是" : "否" },
|
||||
{ title: "部门", dataIndex: "deptName" },
|
||||
{ title: "姓名", dataIndex: "name", render: (_, record) => record.name || record.userName },
|
||||
{ title: "手机号", dataIndex: "phone" },
|
||||
{ title: "是否录入人脸", dataIndex: "userFaceUrl", render: (_, record) => record.userFaceUrl ? "是" : "否" },
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
|
|
@ -254,4 +354,4 @@ const SelectEntourageModalComponent = (props) => {
|
|||
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -1,24 +1,39 @@
|
|||
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 Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
|
||||
import useTable from "zy-react-library/hooks/useTable";
|
||||
import { getLabelName } from "zy-react-library/utils";
|
||||
import { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace";
|
||||
|
||||
const STATUS_ENUM = [
|
||||
{ name: "审核中", bianma: "1" },
|
||||
{ name: "审核通过", bianma: "2" },
|
||||
{ name: "审核驳回", bianma: "3" },
|
||||
];
|
||||
|
||||
function List(props) {
|
||||
const [form] = Form.useForm();
|
||||
const [form] = Search.useForm();
|
||||
const { tableProps, getData } = useTable(props["enclosedAreaPersonnelApplyList"], {
|
||||
form,
|
||||
params: () => {
|
||||
let personBelongType = 1;
|
||||
if (props.entrance === "enterprise")
|
||||
personBelongType = 2;
|
||||
if (props.entrance === "stakeholder")
|
||||
personBelongType = 3;
|
||||
return { processOrRecord: 1, personBelongType };
|
||||
},
|
||||
});
|
||||
|
||||
return (
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "todo1", label: "人员姓名" },
|
||||
{ name: "name", label: "人员姓名" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
|
|
@ -36,14 +51,26 @@ function List(props) {
|
|||
</Button>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "todo1" },
|
||||
{ title: "部门", dataIndex: "todo2" },
|
||||
{ title: "手机号", dataIndex: "todo3" },
|
||||
{ title: "申请区域", dataIndex: "todo4" },
|
||||
{ title: "申请时间范围", dataIndex: "todo5", render: (_, record) => `${record.todo5} - ${record.todo6}` },
|
||||
{ title: "个人照片", dataIndex: "todo7", render: (_, record) => <TooltipPreviewImg files={record.todo7} /> },
|
||||
{ title: "所属项目", dataIndex: "todo9", hidden: !(props.entrance === "stakeholder") },
|
||||
{ title: "申请状态", dataIndex: "todo8" },
|
||||
{ title: "姓名", dataIndex: "applyPersonUserName" },
|
||||
{ title: "部门", dataIndex: "applyPersonDepartmentName" },
|
||||
{ title: "手机号", dataIndex: "userPhone" },
|
||||
{ title: "申请区域", dataIndex: "closedAreaName" },
|
||||
{
|
||||
title: "申请时间范围",
|
||||
dataIndex: "visitStartTime",
|
||||
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: "操作",
|
||||
width: 80,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@ import { Descriptions, Divider, Spin } from "antd";
|
|||
import { useEffect, useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
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 { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace";
|
||||
|
||||
|
|
@ -10,10 +14,15 @@ function View(props) {
|
|||
const [info, setInfo] = useState({});
|
||||
|
||||
const query = useGetUrlQuery();
|
||||
const { loading: getFileLoading, getFile } = useGetFile();
|
||||
|
||||
const getData = async () => {
|
||||
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);
|
||||
};
|
||||
|
||||
|
|
@ -23,7 +32,7 @@ function View(props) {
|
|||
|
||||
return (
|
||||
<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>
|
||||
<Descriptions
|
||||
bordered
|
||||
|
|
@ -34,48 +43,47 @@ function View(props) {
|
|||
props.entrance === "stakeholder"
|
||||
? [
|
||||
{ label: "相关方名称", children: info.todo1 },
|
||||
{ label: "所属项目", children: info.todo1 },
|
||||
{ label: "所属项目", children: info.projectName },
|
||||
]
|
||||
: []
|
||||
),
|
||||
...(
|
||||
props.entrance === "enterprise" || props.entrance === "supervision" || !props.entrance
|
||||
? [
|
||||
{ label: "所属企业", children: info.todo1 },
|
||||
{ label: "所属企业", children: info.applyPersonCorpName },
|
||||
]
|
||||
: []
|
||||
),
|
||||
{ label: "姓名", children: info.todo2 },
|
||||
{ label: "部门", children: info.todo3 },
|
||||
{ label: "手机号", children: info.todo4 },
|
||||
{ label: "申请区域", children: info.todo5 },
|
||||
{ label: "申请时间范围", children: `${info.todo6} - ${info.todo7}` },
|
||||
{ label: "个人照片", children: (<PreviewImg files={info.todo8} />) },
|
||||
{ label: "申请原因", children: info.todo9 },
|
||||
{ label: "申请人员签字", children: (<PreviewImg files={info.todo10} />) },
|
||||
{ label: "姓名", children: info.applyPersonUserName },
|
||||
{ label: "部门", children: info.applyPersonDepartmentName },
|
||||
{ label: "手机号", children: info.userPhone },
|
||||
{ label: "申请区域", children: info.closedAreaName },
|
||||
{ label: "申请时间范围", children: `${info.visitStartTime} - ${info.visitEndTime}` },
|
||||
{ label: "个人照片", children: (<PreviewImg files={[info.userFaceUrl]} />) },
|
||||
{ label: "申请原因", children: info.applyReason },
|
||||
{ label: "申请人员签字", children: (<PreviewImg files={info.informSignFile} />) },
|
||||
]}
|
||||
/>
|
||||
{
|
||||
info.todo11?.length > 0
|
||||
&& (
|
||||
info.entourage && (
|
||||
<>
|
||||
<Divider orientation="left">更多人员信息</Divider>
|
||||
{
|
||||
info.todo11.map((item, index) => (
|
||||
<Descriptions
|
||||
key={index}
|
||||
bordered
|
||||
column={2}
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "姓名", children: item.todo1 },
|
||||
{ label: "部门", children: item.todo2 },
|
||||
{ label: "手机号", children: item.todo3 },
|
||||
{ label: "个人照片", children: item.todo4 },
|
||||
]}
|
||||
/>
|
||||
))
|
||||
}
|
||||
<Table
|
||||
dataSource={JSON.parse(info.entourage)}
|
||||
pagination={false}
|
||||
options={false}
|
||||
disabledResizer={true}
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "name", render: (_, record) => record.name || record.userName },
|
||||
{ title: "部门", dataIndex: "deptName" },
|
||||
{ title: "手机号", dataIndex: "phone" },
|
||||
{
|
||||
title: "个人照片",
|
||||
dataIndex: "userFaceUrl",
|
||||
render: (_, record) => <TooltipPreviewImg files={[record.userFaceUrl]} />,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,42 +1,68 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useEffect, useState } from "react";
|
||||
import { Button, Descriptions, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
|
||||
import useTable from "zy-react-library/hooks/useTable";
|
||||
import { getLabelName } from "zy-react-library/utils";
|
||||
import { NS_ENCLOSED_AREA_PERSONNEL_APPLY } from "~/enumerate/namespace";
|
||||
|
||||
const STATUS_ENUM = [
|
||||
{ name: "审核中", bianma: "1" },
|
||||
{ name: "审核通过", bianma: "2" },
|
||||
{ name: "审核驳回", bianma: "3" },
|
||||
];
|
||||
function List(props) {
|
||||
const [currentId, setCurrentId] = useState("");
|
||||
const [refusalReason, setCurrentRefusalReason] = useState("");
|
||||
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
|
||||
|
||||
const [form] = Form.useForm();
|
||||
const { tableProps, getData } = useTable(props["enclosedAreaPersonnelApplyRecordsList"], {
|
||||
const [form] = Search.useForm();
|
||||
const { tableProps, getData } = useTable(props["enclosedAreaPersonnelApplyList"], {
|
||||
form,
|
||||
params: () => {
|
||||
let personBelongType = 1;
|
||||
if (props.entrance === "enterprise")
|
||||
personBelongType = 2;
|
||||
if (props.entrance === "stakeholder")
|
||||
personBelongType = 3;
|
||||
return { processOrRecord: 2, personBelongType };
|
||||
},
|
||||
});
|
||||
|
||||
return (
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "todo1", label: "人员姓名" },
|
||||
{ name: "name", label: "人员姓名" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "所属企业", dataIndex: "todo0" },
|
||||
{ title: "姓名", dataIndex: "todo1" },
|
||||
{ title: "部门", dataIndex: "todo2" },
|
||||
{ title: "手机号", dataIndex: "todo3" },
|
||||
{ title: "申请区域", dataIndex: "todo4" },
|
||||
{ title: "申请时间范围", dataIndex: "todo5", render: (_, record) => `${record.todo5} - ${record.todo6}` },
|
||||
{ title: "个人照片", dataIndex: "todo7", render: (_, record) => <TooltipPreviewImg files={record.todo7} /> },
|
||||
{ title: "所属项目", dataIndex: "todo9", hidden: !(props.entrance === "stakeholder") },
|
||||
{ title: "申请状态", dataIndex: "todo8" },
|
||||
{ title: "所属企业", dataIndex: "applyPersonCorpName" },
|
||||
{ title: "姓名", dataIndex: "applyPersonUserName" },
|
||||
{ title: "部门", dataIndex: "applyPersonDepartmentName" },
|
||||
{ title: "手机号", dataIndex: "userPhone" },
|
||||
{ title: "申请区域", dataIndex: "closedAreaName" },
|
||||
{
|
||||
title: "申请时间范围",
|
||||
dataIndex: "visitStartTime",
|
||||
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: "操作",
|
||||
width: 150,
|
||||
|
|
@ -51,15 +77,17 @@ function List(props) {
|
|||
>
|
||||
查看
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setViewRejectReasonModalVisible(true);
|
||||
setCurrentId(record.id);
|
||||
}}
|
||||
>
|
||||
驳回原因
|
||||
</Button>
|
||||
{record.auditFlag === 3 && (
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setViewRejectReasonModalVisible(true);
|
||||
setCurrentRefusalReason(record.refusalReason);
|
||||
}}
|
||||
>
|
||||
驳回原因
|
||||
</Button>
|
||||
)}
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
|
|
@ -69,10 +97,10 @@ function List(props) {
|
|||
{
|
||||
viewRejectReasonModalVisible && (
|
||||
<ViewRejectReasonModal
|
||||
id={currentId}
|
||||
refusalReason={refusalReason}
|
||||
onCancel={() => {
|
||||
setViewRejectReasonModalVisible(false);
|
||||
setCurrentId("");
|
||||
setCurrentRefusalReason("");
|
||||
}}
|
||||
/>
|
||||
)
|
||||
|
|
@ -82,16 +110,6 @@ function List(props) {
|
|||
}
|
||||
|
||||
const ViewRejectReasonModalComponent = (props) => {
|
||||
const [info, setInfo] = useState({});
|
||||
const getData = async () => {
|
||||
const { data } = await props["enclosedAreaPersonnelApplyRecordsRejectReason"]({ id: props.id });
|
||||
setInfo(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getData();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Modal
|
||||
open
|
||||
|
|
@ -102,14 +120,13 @@ const ViewRejectReasonModalComponent = (props) => {
|
|||
footer={[
|
||||
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
|
||||
]}
|
||||
loading={props.enclosedAreaPersonnelApply.enclosedAreaPersonnelApplyLoading}
|
||||
>
|
||||
<Descriptions
|
||||
column={1}
|
||||
bordered
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "驳回原因", children: info.todo1 },
|
||||
{ label: "驳回原因", children: props.refusalReason },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, message, Modal, Tabs } from "antd";
|
||||
import { useRef, useState } from "react";
|
||||
import { Button, message, Modal, Tabs } from "antd";
|
||||
import dayjs from "dayjs";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
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 Upload from "zy-react-library/components/Upload";
|
||||
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 useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||
import { LICENSE_PLATE_NUMBER } from "zy-react-library/regular";
|
||||
import NeedToKnowModal from "~/components/NeedToKnowModal";
|
||||
import {
|
||||
NS_APPROVER_USER,
|
||||
NS_ENCLOSED_AREA,
|
||||
NS_ENCLOSED_AREA_PERSONNEL_APPLY,
|
||||
NS_ENCLOSED_AREA_VEHICLE_APPLY,
|
||||
NS_VEHICLE_APPLY,
|
||||
} from "~/enumerate/namespace";
|
||||
|
||||
function Add(props) {
|
||||
|
|
@ -24,27 +32,85 @@ function Add(props) {
|
|||
const [vehicleList, setVehicleList] = useState([]);
|
||||
const [selectVehicleModalVisible, setSelectVehicleModalVisible] = useState(false);
|
||||
const [needToKnowModalVisible, setNeedToKnowModalVisible] = useState(false);
|
||||
const [approvalUserListAll, setApprovalUserListAll] = useState([]);
|
||||
const [xgfProjectListAll, setXgfProjectListAll] = useState([]);
|
||||
const [xgfProjectUser, setXgfProjectUser] = useState([]);
|
||||
|
||||
const signatureUrl = useRef("");
|
||||
|
||||
const [form] = Form.useForm();
|
||||
const todo6 = Form.useWatch("todo6", form);
|
||||
const [form] = FormBuilder.useForm();
|
||||
const isSelectVehicle = FormBuilder.useWatch("isSelectVehicle", form);
|
||||
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
|
||||
const { getUserInfo } = useGetUserInfo();
|
||||
|
||||
const getEnclosedAreaList = async (id) => {
|
||||
const { data } = await props["enclosedAreaDetailListTree"]({ id });
|
||||
const getApprovalUserListAll = async () => {
|
||||
const { data } = await props["approvalUserListAll"]({ vehiclePermissionFlag: 1 });
|
||||
setApprovalUserListAll(data);
|
||||
};
|
||||
|
||||
const getEnclosedAreaList = async (jurisdictionalCorpId) => {
|
||||
const { data } = await props["enclosedAreaDetailListTree"]({ jurisdictionalCorpId });
|
||||
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) => {
|
||||
if (values.todo6 === 1 && vehicleList.length === 0) {
|
||||
if (values.isSelectVehicle === 1 && vehicleList.length === 0) {
|
||||
message.warning("请选择车辆");
|
||||
return;
|
||||
}
|
||||
if (!values.todo14) {
|
||||
if (!values.informSignFile) {
|
||||
message.warning("请勾选《安全进港须知》并签字");
|
||||
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) {
|
||||
message.success("操作成功");
|
||||
props.history.goBack();
|
||||
|
|
@ -56,26 +122,61 @@ function Add(props) {
|
|||
<FormBuilder
|
||||
submitButtonText="提交申请"
|
||||
onFinish={onSubmit}
|
||||
loading={props.enclosedAreaVehicleApply.enclosedAreaVehicleApplyLoading || uploadFileLoading}
|
||||
options={[
|
||||
{
|
||||
name: "todo0",
|
||||
name: "projectId",
|
||||
label: "项目",
|
||||
tip: "如果无法找到相应的项目,请在“项目审核管理”栏目中查看,项目是否备案审核成功。",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: [],
|
||||
items: xgfProjectListAll,
|
||||
itemsField: { labelKey: "projectName", valueKey: "id" },
|
||||
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: "是否申请本公司区域",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
|
||||
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: "区域管辖单位",
|
||||
render: (
|
||||
<DepartmentSelectTree
|
||||
|
|
@ -83,37 +184,67 @@ function Add(props) {
|
|||
params={{ enterpriseType: [2] }}
|
||||
onChange={(value) => {
|
||||
getEnclosedAreaList(value);
|
||||
form.setFieldValue("closedAreaName", "");
|
||||
}}
|
||||
onGetLabel={label => form.setFieldValue("jurisdictionalCorpName", label)}
|
||||
/>
|
||||
),
|
||||
dependencies: ["todo00"],
|
||||
dependencies: ["isApplyCompanyArea"],
|
||||
hidden: (formValues) => {
|
||||
if (props.entrance !== "enterprise")
|
||||
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",
|
||||
label: "封闭区域",
|
||||
render: (<BasicSelectTree treeData={enclosedAreaList} placeholder="封闭区域" />),
|
||||
},
|
||||
{ name: "todo4", label: "审核人员", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] },
|
||||
{
|
||||
name: "todo5",
|
||||
name: "visitTime",
|
||||
label: "申请时间范围",
|
||||
render: FORM_ITEM_RENDER_ENUM.DATE_RANGE,
|
||||
componentProps: { disabled: props.entrance === "stakeholder" },
|
||||
},
|
||||
{
|
||||
name: "todo6",
|
||||
name: "isSelectVehicle",
|
||||
label: "车辆类型",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [
|
||||
{ bianma: 1, name: "选择现有车辆" },
|
||||
{ bianma: 2, name: "新增车辆" },
|
||||
],
|
||||
items: [{ bianma: 1, name: "选择现有车辆" }, { bianma: 2, name: "新增车辆" }],
|
||||
componentProps: {
|
||||
onChange: () => {
|
||||
setVehicleList([]);
|
||||
|
|
@ -121,7 +252,7 @@ function Add(props) {
|
|||
},
|
||||
hidden: props.entrance === "stakeholder",
|
||||
},
|
||||
...(todo6 === 1
|
||||
...(isSelectVehicle === 1
|
||||
? [
|
||||
{
|
||||
label: "选择现有车辆",
|
||||
|
|
@ -144,13 +275,13 @@ function Add(props) {
|
|||
disabledResizer={true}
|
||||
pagination={false}
|
||||
columns={[
|
||||
{ title: "车牌类型", dataIndex: "todo1" },
|
||||
{ title: "车辆类型", dataIndex: "todo2" },
|
||||
{ title: "车牌号", dataIndex: "todo3" },
|
||||
{ title: "车牌类型", dataIndex: "licenceTypeName" },
|
||||
{ title: "车辆类型", dataIndex: "vehicleTypeName" },
|
||||
{ title: "车牌号", dataIndex: "licenceNo" },
|
||||
{
|
||||
title: "车辆照片",
|
||||
dataIndex: "todo4",
|
||||
render: (_, record) => <TooltipPreviewImg files={record.todo4} />,
|
||||
dataIndex: "files",
|
||||
render: (_, record) => <TooltipPreviewImg files={record.files} />,
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
|
|
@ -175,21 +306,62 @@ function Add(props) {
|
|||
: []),
|
||||
...(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: "todo9", label: "车牌号", rules: [{ pattern: LICENSE_PLATE_NUMBER, message: "请输入正确的车牌号" }] },
|
||||
{ name: "todo10", label: "车辆照片", span: 24, render: (<Upload />) },
|
||||
{ name: "todo11", label: "行驶证照片", span: 24, render: (<Upload />) },
|
||||
{
|
||||
name: "licenceType",
|
||||
label: "车牌类型",
|
||||
render: (
|
||||
<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: " ",
|
||||
span: 24,
|
||||
required: false,
|
||||
|
|
@ -220,7 +392,7 @@ function Add(props) {
|
|||
),
|
||||
}],
|
||||
},
|
||||
{ name: "todo14", label: "签字", onlyForLabel: true },
|
||||
{ name: "informSignFile", label: "签字", onlyForLabel: true },
|
||||
]}
|
||||
form={form}
|
||||
/>
|
||||
|
|
@ -228,6 +400,7 @@ function Add(props) {
|
|||
selectVehicleModalVisible && (
|
||||
<SelectVehicleModal
|
||||
vehicleList={vehicleList}
|
||||
entrance={props.entrance}
|
||||
onClose={() => {
|
||||
setSelectVehicleModalVisible(false);
|
||||
}}
|
||||
|
|
@ -246,7 +419,7 @@ function Add(props) {
|
|||
setNeedToKnowModalVisible(false);
|
||||
}}
|
||||
onOk={(values) => {
|
||||
form.setFieldValue("todo14", values);
|
||||
form.setFieldValue("informSignFile", values.file);
|
||||
signatureUrl.current = values.base64;
|
||||
setNeedToKnowModalVisible(false);
|
||||
}}
|
||||
|
|
@ -260,14 +433,36 @@ function Add(props) {
|
|||
const SelectVehicleModalComponent = (props) => {
|
||||
const [tabActiveKey, setTabActiveKey] = useState("1");
|
||||
const [selectedRowKeys, setSelectedRowKeys] = useState(props.vehicleList.map(item => item.id));
|
||||
const [list, setList] = useState([]);
|
||||
|
||||
const selectedRowsRef = useRef(props.vehicleList || []);
|
||||
|
||||
const [form] = Form.useForm();
|
||||
const { loading: getFileLoading, getFile } = useGetFile();
|
||||
|
||||
const [form] = Search.useForm();
|
||||
const { tableProps, getData } = useTable(props["enclosedAreaVehicleApplyVehicleList"], {
|
||||
form,
|
||||
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 (
|
||||
|
|
@ -283,7 +478,7 @@ const SelectVehicleModalComponent = (props) => {
|
|||
>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "todo1", label: "车牌号" },
|
||||
{ name: "licenceNo", label: "车牌号" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
|
|
@ -311,23 +506,18 @@ const SelectVehicleModalComponent = (props) => {
|
|||
options={false}
|
||||
disabledResizer={true}
|
||||
columns={[
|
||||
{ title: "车牌类型", dataIndex: "todo1" },
|
||||
{ title: "车辆类型", dataIndex: "todo2" },
|
||||
{ title: "车牌号", dataIndex: "todo3" },
|
||||
{ title: "车牌类型", dataIndex: "licenceTypeName" },
|
||||
{ title: "车辆类型", dataIndex: "vehicleTypeName" },
|
||||
{ title: "车牌号", dataIndex: "licenceNo" },
|
||||
{
|
||||
title: "车辆照片",
|
||||
dataIndex: "todo4",
|
||||
render: (_, record) => <TooltipPreviewImg files={record.todo4} />,
|
||||
dataIndex: "files",
|
||||
render: (_, record) => <TooltipPreviewImg files={record.files} />,
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
dataSource={[
|
||||
{ id: "1", todo1: "1", todo2: "1", todo3: "1" },
|
||||
{ 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" },
|
||||
]}
|
||||
loading={tableProps.loading || getFileLoading}
|
||||
dataSource={list}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
|
|
@ -335,4 +525,4 @@ const SelectVehicleModalComponent = (props) => {
|
|||
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -1,24 +1,50 @@
|
|||
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 Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
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 useTable from "zy-react-library/hooks/useTable";
|
||||
import { getLabelName } from "zy-react-library/utils";
|
||||
import { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace";
|
||||
|
||||
const STATUS_ENUM = [
|
||||
{ name: "审核中", bianma: "1" },
|
||||
{ name: "审核通过", bianma: "2" },
|
||||
{ name: "审核驳回", bianma: "3" },
|
||||
];
|
||||
|
||||
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"], {
|
||||
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 (
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "todo1", label: "车牌号" },
|
||||
{ name: "licenceLo", label: "车牌号" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
|
|
@ -36,17 +62,25 @@ function List(props) {
|
|||
</Button>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "车辆类型", dataIndex: "todo1" },
|
||||
{ title: "驾驶人", dataIndex: "todo2" },
|
||||
{ title: "部门", dataIndex: "todo3" },
|
||||
{ title: "手机号", dataIndex: "todo4" },
|
||||
{ title: "申请区域", dataIndex: "todo5" },
|
||||
{ title: "申请时间范围", dataIndex: "todo6", render: (_, record) => `${record.todo6} - ${record.todo7}` },
|
||||
{ title: "申请原因", dataIndex: "todo7" },
|
||||
{ title: "车牌号", dataIndex: "todo8" },
|
||||
{ title: "车辆照片", dataIndex: "todo9", render: (_, record) => <TooltipPreviewImg files={record.todo9} /> },
|
||||
{ title: "所属项目", dataIndex: "todo9", hidden: !(props.entrance === "stakeholder") },
|
||||
{ title: "申请状态", dataIndex: "todo10" },
|
||||
{ title: "车辆类型", dataIndex: "vehicleTypeName" },
|
||||
{ title: "驾驶人", dataIndex: "applyPersonUserName" },
|
||||
{ title: "部门", dataIndex: "applyPersonDepartmentName" },
|
||||
{ title: "手机号", dataIndex: "userPhone" },
|
||||
{ title: "申请区域", dataIndex: "closedAreaName" },
|
||||
{
|
||||
title: "申请时间范围",
|
||||
dataIndex: "visitStartTime",
|
||||
render: (_, record) => `${record.visitStartTime} - ${record.visitEndTime}`,
|
||||
},
|
||||
{ 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: "操作",
|
||||
width: 80,
|
||||
|
|
@ -64,6 +98,8 @@ function List(props) {
|
|||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
loading={tableProps.loading || getFileLoading}
|
||||
dataSource={list}
|
||||
/>
|
||||
</Page>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ import { Descriptions, Divider, Spin } from "antd";
|
|||
import { useEffect, useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
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 { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace";
|
||||
|
||||
|
|
@ -10,10 +12,19 @@ function View(props) {
|
|||
const [info, setInfo] = useState({});
|
||||
|
||||
const query = useGetUrlQuery();
|
||||
const { loading: getFileLoading, getFile } = useGetFile();
|
||||
|
||||
const getData = async () => {
|
||||
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);
|
||||
};
|
||||
|
||||
|
|
@ -23,7 +34,7 @@ function View(props) {
|
|||
|
||||
return (
|
||||
<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>
|
||||
<Descriptions
|
||||
bordered
|
||||
|
|
@ -34,29 +45,29 @@ function View(props) {
|
|||
props.entrance === "stakeholder"
|
||||
? [
|
||||
{ label: "相关方名称", children: info.todo1 },
|
||||
{ label: "所属项目", children: info.todo1 },
|
||||
{ label: "所属项目", children: info.projectName },
|
||||
]
|
||||
: []
|
||||
),
|
||||
...(
|
||||
props.entrance === "enterprise" || props.entrance === "supervision" || !props.entrance
|
||||
? [
|
||||
{ label: "所属企业", children: info.todo1 },
|
||||
{ label: "所属企业", children: info.applyPersonCorpName },
|
||||
]
|
||||
: []
|
||||
),
|
||||
{ label: "姓名", children: info.todo2 },
|
||||
{ label: "部门", children: info.todo3 },
|
||||
{ label: "手机号", children: info.todo4 },
|
||||
{ label: "申请区域", children: info.todo5 },
|
||||
{ label: "申请时间范围", children: `${info.todo6} - ${info.todo7}` },
|
||||
{ label: "车牌号", children: info.todo8 },
|
||||
{ label: "车牌类型", children: info.todo9 },
|
||||
{ label: "车辆类型", children: info.todo10 },
|
||||
{ label: "车辆照片", children: (<PreviewImg files={info.todo11} />) },
|
||||
{ label: "行驶证照片", children: (<PreviewImg files={info.todo12} />) },
|
||||
{ label: "申请原因", children: info.todo13 },
|
||||
{ label: "申请人员签字", children: (<PreviewImg files={info.todo14} />) },
|
||||
{ label: "姓名", children: info.applyPersonUserName },
|
||||
{ label: "部门", children: info.applyPersonDepartmentName },
|
||||
{ label: "手机号", children: info.userPhone },
|
||||
{ label: "申请区域", children: info.closedAreaName },
|
||||
{ label: "申请时间范围", children: `${info.visitStartTime} - ${info.visitEndTime}` },
|
||||
{ label: "车牌号", children: info.licenceNo },
|
||||
{ label: "车牌类型", children: info.licenceTypeName },
|
||||
{ label: "车辆类型", children: info.vehicleTypeName },
|
||||
{ label: "车辆照片", children: (<PreviewImg files={info.attachmentFile} />) },
|
||||
{ label: "行驶证照片", children: (<PreviewImg files={info.drivingLicenseFile} />) },
|
||||
{ label: "申请原因", children: info.applyReason },
|
||||
{ label: "申请人员签字", children: (<PreviewImg files={info.informSignFile} />) },
|
||||
]}
|
||||
/>
|
||||
{props.children}
|
||||
|
|
|
|||
|
|
@ -1,44 +1,75 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useEffect, useState } from "react";
|
||||
import { Button, Descriptions, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
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 useTable from "zy-react-library/hooks/useTable";
|
||||
import { getLabelName } from "zy-react-library/utils";
|
||||
import { NS_ENCLOSED_AREA_VEHICLE_APPLY } from "~/enumerate/namespace";
|
||||
|
||||
const STATUS_ENUM = [
|
||||
{ name: "审核中", bianma: "1" },
|
||||
{ name: "审核通过", bianma: "2" },
|
||||
{ name: "审核驳回", bianma: "3" },
|
||||
];
|
||||
function List(props) {
|
||||
const [currentId, setCurrentId] = useState("");
|
||||
const [list, setList] = useState([]);
|
||||
const [refusalReason, setCurrentRefusalReason] = useState("");
|
||||
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
|
||||
|
||||
const [form] = Form.useForm();
|
||||
const { tableProps, getData } = useTable(props["enclosedAreaVehicleApplyRecordsList"], {
|
||||
const { loading: getFileLoading, getFile } = useGetFile();
|
||||
|
||||
const [form] = Search.useForm();
|
||||
const { tableProps, getData } = useTable(props["enclosedAreaVehicleApplyList"], {
|
||||
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 (
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "todo1", label: "车牌号" },
|
||||
{ name: "licenceLo", label: "车牌号" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "车辆类型", dataIndex: "todo1" },
|
||||
{ title: "驾驶人", dataIndex: "todo2" },
|
||||
{ title: "部门", dataIndex: "todo3" },
|
||||
{ title: "手机号", dataIndex: "todo4" },
|
||||
{ title: "申请区域", dataIndex: "todo5" },
|
||||
{ title: "申请时间范围", dataIndex: "todo6", render: (_, record) => `${record.todo6} - ${record.todo7}` },
|
||||
{ title: "申请原因", dataIndex: "todo7" },
|
||||
{ title: "车牌号", dataIndex: "todo8" },
|
||||
{ title: "车辆照片", dataIndex: "todo9", render: (_, record) => <TooltipPreviewImg files={record.todo9} /> },
|
||||
{ title: "所属项目", dataIndex: "todo9", hidden: !(props.entrance === "stakeholder") },
|
||||
{ title: "申请状态", dataIndex: "todo10" },
|
||||
{ title: "车辆类型", dataIndex: "vehicleTypeName" },
|
||||
{ title: "驾驶人", dataIndex: "applyPersonUserName" },
|
||||
{ title: "部门", dataIndex: "applyPersonDepartmentName" },
|
||||
{ title: "手机号", dataIndex: "userPhone" },
|
||||
{ title: "申请区域", dataIndex: "closedAreaName" },
|
||||
{
|
||||
title: "申请时间范围",
|
||||
dataIndex: "visitStartTime",
|
||||
render: (_, record) => `${record.visitStartTime} - ${record.visitEndTime}`,
|
||||
},
|
||||
{ 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: "操作",
|
||||
width: 80,
|
||||
|
|
@ -57,7 +88,7 @@ function List(props) {
|
|||
type="link"
|
||||
onClick={() => {
|
||||
setViewRejectReasonModalVisible(true);
|
||||
setCurrentId(record.id);
|
||||
setCurrentRefusalReason(record.refusalReason);
|
||||
}}
|
||||
>
|
||||
驳回原因
|
||||
|
|
@ -67,14 +98,16 @@ function List(props) {
|
|||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
dataSource={list}
|
||||
loading={tableProps.loading || getFileLoading}
|
||||
/>
|
||||
{
|
||||
viewRejectReasonModalVisible && (
|
||||
<ViewRejectReasonModal
|
||||
id={currentId}
|
||||
refusalReason={refusalReason}
|
||||
onCancel={() => {
|
||||
setViewRejectReasonModalVisible(false);
|
||||
setCurrentId("");
|
||||
setCurrentRefusalReason("");
|
||||
}}
|
||||
/>
|
||||
)
|
||||
|
|
@ -84,16 +117,6 @@ function List(props) {
|
|||
}
|
||||
|
||||
const ViewRejectReasonModalComponent = (props) => {
|
||||
const [info, setInfo] = useState({});
|
||||
const getData = async () => {
|
||||
const { data } = await props["enclosedAreaVehicleApplyRecordsRejectReason"]({ id: props.id });
|
||||
setInfo(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getData();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Modal
|
||||
open
|
||||
|
|
@ -104,14 +127,13 @@ const ViewRejectReasonModalComponent = (props) => {
|
|||
footer={[
|
||||
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
|
||||
]}
|
||||
loading={props.enclosedAreaVehicleApply.enclosedAreaVehicleApplyLoading}
|
||||
>
|
||||
<Descriptions
|
||||
column={1}
|
||||
bordered
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "驳回原因", children: info.todo1 },
|
||||
{ label: "驳回原因", children: props.refusalReason },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
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 FormBuilder from "zy-react-library/components/FormBuilder";
|
||||
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 { NS_ENCLOSED_AREA, NS_FIRST_LEVEL_DOOR_INFO } from "~/enumerate/namespace";
|
||||
|
||||
const areaLevel = 2;
|
||||
const mkmjLevel = 2;
|
||||
|
||||
function List(props) {
|
||||
const [addModalVisible, setAddModalVisible] = 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"], {
|
||||
form,
|
||||
params: {
|
||||
eqAreaLevel: areaLevel,
|
||||
mkmjLevel,
|
||||
},
|
||||
});
|
||||
|
||||
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("正在使用中的口门不能停用");
|
||||
|
||||
const msg = record.status === 1 ? "停用" : "开启";
|
||||
const msg = record.mkmjStatus === 2 ? "停用" : "开启";
|
||||
Modal.confirm({
|
||||
title: `${msg}确认`,
|
||||
content: `确定要${msg}吗?`,
|
||||
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) {
|
||||
message.success(`${msg}成功`);
|
||||
getData();
|
||||
|
|
@ -54,10 +54,10 @@ function List(props) {
|
|||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "likeAreaName", label: "口门名称" },
|
||||
{ name: "eqAreaStatus", label: "口门状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: AREA_STATUS_ENUM },
|
||||
{ name: "eqAreaType", label: "口门类型", render: (<DictionarySelect dictValue="HGKM_MKMJ_TYPE" />) },
|
||||
{ name: "eqAreaParentId", label: "所属区域", render: <DictionarySelect dictValue="HG_AUTH_AREA" /> },
|
||||
{ name: "likeMkmjName", label: "口门名称" },
|
||||
{ name: "mkmjStatus", label: "口门状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: AREA_STATUS_ENUM },
|
||||
{ name: "mkmjType", label: "口门类型", render: (<DictionarySelect dictValue="HGKM_MKMJ_TYPE" />) },
|
||||
{ name: "hgAuthArea", label: "所属区域", render: <DictionarySelect dictValue="HG_AUTH_AREA" /> },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
|
|
@ -79,20 +79,20 @@ function List(props) {
|
|||
</Space>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "所属区域", dataIndex: "areaParentName" },
|
||||
{ title: "口门类型", dataIndex: "areaType" },
|
||||
{ title: "管辖公司", dataIndex: "todo3" },
|
||||
{ title: "口门名称", dataIndex: "areaName" },
|
||||
{ title: "所属区域", dataIndex: "hgAuthAreaName" },
|
||||
{ title: "口门类型", dataIndex: "mkmjTypeName" },
|
||||
{ title: "管辖公司", dataIndex: "jurisdictionalCorpName" },
|
||||
{ title: "口门名称", dataIndex: "mkmjName" },
|
||||
{
|
||||
title: "口门位置",
|
||||
dataIndex: "location",
|
||||
render: (_, record) => `${record.latitude || ""}--${record.longitude || ""}`,
|
||||
},
|
||||
{ title: "摄像头个数", dataIndex: "videoNum", render: (_, record) => record.videoNum || 0 },
|
||||
{ title: "摄像头个数", dataIndex: "videoCount", render: (_, record) => record.videoNum || 0 },
|
||||
{
|
||||
title: "口门状态",
|
||||
dataIndex: "areaStatus",
|
||||
render: (_, record) => getLabelName({ list: AREA_STATUS_ENUM, status: record.areaStatus }),
|
||||
dataIndex: "mkmjStatus",
|
||||
render: (_, record) => getLabelName({ list: AREA_STATUS_ENUM, status: record.mkmjStatus }),
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
|
|
@ -127,13 +127,13 @@ function List(props) {
|
|||
onUpdateStatus(record);
|
||||
}}
|
||||
>
|
||||
{record.status === 1 ? "停用" : "开启"}
|
||||
{record.mkmjStatus === 2 ? "停用" : "开启"}
|
||||
</Button>
|
||||
)}
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`./channel/list?areaId=${record.id}`);
|
||||
props.history.push(`./channel/list?id=${record.id}`);
|
||||
}}
|
||||
>
|
||||
{props.entrance !== "enterprise" ? "添加通道" : "查看通道"}
|
||||
|
|
@ -141,7 +141,7 @@ function List(props) {
|
|||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`./camera/list?areaId=${record.id}`);
|
||||
props.history.push(`./camera/list?id=${record.id}`);
|
||||
}}
|
||||
>
|
||||
{props.entrance !== "enterprise" ? "添加摄像头" : "查看摄像头"}
|
||||
|
|
@ -158,7 +158,7 @@ function List(props) {
|
|||
id={currentId}
|
||||
onClose={() => {
|
||||
setAddModalVisible(false);
|
||||
setCurrentId(null);
|
||||
setCurrentId("");
|
||||
}}
|
||||
getData={getData}
|
||||
/>
|
||||
|
|
@ -170,7 +170,7 @@ function List(props) {
|
|||
id={currentId}
|
||||
onClose={() => {
|
||||
setViewModalVisible(false);
|
||||
setCurrentId(null);
|
||||
setCurrentId("");
|
||||
}}
|
||||
/>
|
||||
)
|
||||
|
|
@ -180,33 +180,38 @@ function List(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 { data } = await props["enclosedAreaDetailListTree"]();
|
||||
setEnclosedAreaList(data);
|
||||
const { data } = await props["enclosedAreaDetailListTree"]({ hgAuthArea });
|
||||
setEnclosedAreaListTree(data);
|
||||
};
|
||||
|
||||
const getData = async () => {
|
||||
const { data } = await props["firstLevelDoorInfoInfo"]({ id: props.id });
|
||||
form.setFieldsValue({
|
||||
...data,
|
||||
areaType: data.areaType.toString(),
|
||||
areaStatus: data.areaStatus.toString(),
|
||||
mkmjStatus: data.mkmjStatus.toString(),
|
||||
});
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getEnclosedAreaList();
|
||||
props.id && getData();
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
if (hgAuthArea)
|
||||
getEnclosedAreaList();
|
||||
else setEnclosedAreaListTree([]);
|
||||
}, [hgAuthArea]);
|
||||
|
||||
const onSubmit = async (values) => {
|
||||
const { success } = await props[!props.id ? "firstLevelDoorInfoAdd" : "firstLevelDoorInfoEdit"]({
|
||||
...values,
|
||||
areaLevel,
|
||||
mkmjLevel,
|
||||
id: props.id,
|
||||
});
|
||||
if (success) {
|
||||
|
|
@ -233,30 +238,90 @@ const AddModalComponent = (props) => {
|
|||
labelCol={{ span: 8 }}
|
||||
span={24}
|
||||
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: "口门离开区域",
|
||||
span: 12,
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [{ bianma: 1, name: "离场" }, { bianma: 2, name: "进入其他区域" }],
|
||||
componentProps: {
|
||||
onChange: () => {
|
||||
form.setFieldValue("outDirectionAreaName", "");
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "todo8",
|
||||
name: "outDirectionArea",
|
||||
label: "",
|
||||
span: 12,
|
||||
wrapperCol: { span: 24 },
|
||||
dependencies: ["todo7"],
|
||||
hidden: formValues => !(formValues.todo7 === 2),
|
||||
render: (<BasicSelectTree treeData={enclosedAreaList} placeholder="口门进入区域" />),
|
||||
dependencies: ["outDirectionType"],
|
||||
hidden: formValues => !(formValues.outDirectionType === 2),
|
||||
render: (
|
||||
<BasicSelectTree
|
||||
treeData={enclosedAreaListTree}
|
||||
placeholder="口门离开区域"
|
||||
onGetLabel={label => form.setFieldValue("outDirectionAreaName", label)}
|
||||
nameKey="closedAreaName"
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "outDirectionAreaName", label: "口门离开区域名称", onlyForLabel: true },
|
||||
]}
|
||||
form={form}
|
||||
/>
|
||||
|
|
@ -294,17 +359,22 @@ const ViewModalComponent = (props) => {
|
|||
bordered
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "所属区域", children: info.areaParentName },
|
||||
{ label: "口门名称", children: info.areaName },
|
||||
{ label: "口门类型", children: info.areaType },
|
||||
{ label: "口门位置", children: info.areaRange },
|
||||
{ label: "口门状态", children: getLabelName({ list: AREA_STATUS_ENUM, status: info.areaStatus }) },
|
||||
{ label: "所属区域", children: info.hgAuthAreaName },
|
||||
{ label: "口门名称", children: info.mkmjName },
|
||||
{ label: "口门类型", children: info.mkmjTypeName },
|
||||
{ label: "口门位置", children: info.remarks },
|
||||
{ label: "口门状态", children: getLabelName({ list: AREA_STATUS_ENUM, status: info.mkmjStatus }) },
|
||||
{
|
||||
label: "位置",
|
||||
children: (<LocationIcon onClick={() => { setMapVisible(true); }} />),
|
||||
children: (
|
||||
<LocationIcon onClick={() => {
|
||||
setMapVisible(true);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ label: "口门进入区域", children: info.todo6 },
|
||||
{ label: "口门离开区域", children: info.todo7 === 1 ? "离场" : `进入其他区域(${info.todo8})` },
|
||||
{ label: "口门进入区域", children: info.inDirectionAreaName },
|
||||
{ label: "口门离开区域", children: info.outDirectionType === 1 ? "离场" : `进入其他区域(${info.outDirectionAreaName})` },
|
||||
]}
|
||||
/>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import useUrlState from "@ahooksjs/use-url-state";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space } from "antd";
|
||||
import { Button, Space } from "antd";
|
||||
import { useEffect } from "react";
|
||||
import BackIcon from "zy-react-library/components/Icon/BackIcon";
|
||||
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"], {
|
||||
form,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Form } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
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";
|
||||
|
||||
function PersonnelEntryAndExitRecords(props) {
|
||||
const [form] = Form.useForm();
|
||||
const [form] = Search.useForm();
|
||||
const query = useGetUrlQuery();
|
||||
|
||||
const { tableProps, getData } = useTable(props["enclosedPersonnelAndVehicleStatisticsPersonnelEntryAndExitRecordsList"], {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Form } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -17,7 +16,7 @@ export const CATEGORY_ENUM = [
|
|||
];
|
||||
|
||||
function VehicleEntryAndExitRecords(props) {
|
||||
const [form] = Form.useForm();
|
||||
const [form] = Search.useForm();
|
||||
const query = useGetUrlQuery();
|
||||
|
||||
const { tableProps, getData } = useTable(props["enclosedPersonnelAndVehicleStatisticsVehicleEntryAndExitRecordsList"], {
|
||||
|
|
|
|||
Loading…
Reference in New Issue