相关方端一级口门
parent
d1b67ec9e7
commit
7eabe843d3
30
router.md
30
router.md
|
|
@ -134,31 +134,35 @@
|
|||
|
||||
### 相关方端
|
||||
#### 一级口门管理
|
||||
- 门禁审批人管理
|
||||
- 门禁审批人管理 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/approverUser`
|
||||
- 进港审批管理/长期车辆审批管理/车辆审批
|
||||
- 进港审批管理/长期车辆审批管理/车辆审批 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/portEntryApproval/longTermVehicleApproval/shareVehicles`
|
||||
- 进港审批管理/临时访客管理/临时人员管理
|
||||
- 进港审批管理/临时访客管理/临时人员管理 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryPersonnel/list`
|
||||
- 进港审批管理/临时访客管理/临时车辆管理
|
||||
- 进港审批管理/临时访客管理/临时人员管理记录 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryPersonnelRecords/list`
|
||||
- 进港审批管理/临时访客管理/临时车辆管理 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryVehicle/list`
|
||||
- 进出港信息管理/人员及车辆管理
|
||||
- 进港审批管理/临时访客管理/临时车辆管理记录 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryVehicleRecords/list`
|
||||
- 进出港信息管理/人员及车辆管理 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/stockPersonnelAndVehicles/list`
|
||||
- 进出港信息管理/个人车辆管理
|
||||
- 进出港信息管理/个人车辆管理 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/personalVehicle/list`
|
||||
- 进出港信息管理/车辆违规管理/车辆违规管理
|
||||
- 进出港信息管理/车辆违规管理/车辆违规管理 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehiclesViolation/list`
|
||||
- 进出港信息管理/车辆违规管理/车辆黑名单管理
|
||||
- 进出港信息管理/车辆违规管理/车辆黑名单管理 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehicleBlacklist/list`
|
||||
- 人员权限记录
|
||||
- 人员权限记录 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/personnelPermissionRecords/list`
|
||||
- 人员申请
|
||||
- 人员申请 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/personnelApplication/list`
|
||||
- 车辆申请
|
||||
- 车辆申请 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/vehicleApplication/list`
|
||||
- 人员申请记录
|
||||
- 人员申请记录 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/personnelApplicationRecords/list`
|
||||
- 车辆申请记录
|
||||
- 车辆申请记录 ##
|
||||
`/primeport/container/stakeholder/firstLevelDoor/vehicleApplicationRecords/list`
|
||||
|
||||
#### 封闭区域管理
|
||||
|
|
|
|||
|
|
@ -2,17 +2,13 @@ import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
|
|||
|
||||
export const personnelApplicationList = declareRequest(
|
||||
"personnelApplicationLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Post > @/primeport/personApply/xgfPersonApplyList`,
|
||||
);
|
||||
export const personnelApplicationInfo = declareRequest(
|
||||
"personnelApplicationLoading",
|
||||
`Post > @/primeport/`,
|
||||
);
|
||||
export const personnelApplicationRejectReason = declareRequest(
|
||||
"personnelApplicationLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Get > /primeport/personApply/xgfPersonApplyInfoById/{id}`,
|
||||
);
|
||||
export const personnelApplicationAdd = declareRequest(
|
||||
"personnelApplicationLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Post > @/primeport/personApply/xgfPersonSave`,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@ import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
|
|||
|
||||
export const personnelPermissionRecordsList = declareRequest(
|
||||
"personnelPermissionRecordsLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Post > @/primeport/personApply/xgfPersonPermissionsList`,
|
||||
);
|
||||
export const personnelPermissionRecordsInfo = declareRequest(
|
||||
"personnelPermissionRecordsLoading",
|
||||
`Post > @/primeport/`,
|
||||
`Get > /primeport/personApply/xgfPersonApplyInfoById/{id}`,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,18 +0,0 @@
|
|||
import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
|
||||
|
||||
export const vehicleApplicationList = declareRequest(
|
||||
"vehicleApplicationLoading",
|
||||
`Post > @/primeport/`,
|
||||
);
|
||||
export const vehicleApplicationInfo = declareRequest(
|
||||
"vehicleApplicationLoading",
|
||||
`Post > @/primeport/`,
|
||||
);
|
||||
export const vehicleApplicationRejectReason = declareRequest(
|
||||
"vehicleApplicationLoading",
|
||||
`Post > @/primeport/`,
|
||||
);
|
||||
export const vehicleApplicationAdd = declareRequest(
|
||||
"vehicleApplicationLoading",
|
||||
`Post > @/primeport/`,
|
||||
);
|
||||
|
|
@ -41,6 +41,8 @@ export const VEHICLE_TYPE_ENUM = [
|
|||
{ bianma: "5", name: "相关方车辆" },
|
||||
{ bianma: "6", name: "临时车辆" },
|
||||
{ bianma: "7", name: "检查部门车辆" },
|
||||
{ bianma: "8", name: "驻港单位员工车辆" },
|
||||
{ bianma: "9", name: "驻港单位公车" },
|
||||
];
|
||||
|
||||
// 车辆审核状态
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ export const NS_VEHICLES_VIOLATION = defineNamespace("vehiclesViolation");
|
|||
export const NS_VEHICLE_BLACKLIST = defineNamespace("vehicleBlacklist");
|
||||
export const NS_PERSONNEL_PERMISSION_RECORDS = defineNamespace("personnelPermissionRecords");
|
||||
export const NS_PERSONNEL_APPLICATION = defineNamespace("personnelApplication");
|
||||
export const NS_VEHICLE_APPLICATION = defineNamespace("vehicleApplication");
|
||||
export const NS_ENCLOSED_AREA = defineNamespace("enclosedArea");
|
||||
export const NS_ENCLOSED_AREA_PERSONNEL_APPLY = defineNamespace("enclosedAreaPersonnelApply");
|
||||
export const NS_ENCLOSED_AREA_VEHICLE_APPLY = defineNamespace("enclosedAreaVehicleApply");
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import AddPage from "~/pages/Container/Supervision/FirstLevelDoor/ImportAndExportPortInfo/PersonalVehicle/Add";
|
||||
|
||||
function Add(props) {
|
||||
return (<AddPage {...props} />);
|
||||
return (<AddPage vehicleBelongType={8} {...props} />);
|
||||
}
|
||||
|
||||
export default Add;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import ListPage from "~/pages/Container/Supervision/FirstLevelDoor/ImportAndExportPortInfo/PersonalVehicle/List";
|
||||
|
||||
function List(props) {
|
||||
return (<ListPage {...props} />);
|
||||
return (<ListPage vehicleBelongType={8} {...props} />);
|
||||
}
|
||||
|
||||
export default List;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import ViewPage from "~/pages/Container/Supervision/FirstLevelDoor/ImportAndExportPortInfo/PersonalVehicle/View";
|
||||
|
||||
function View(props) {
|
||||
return (<ViewPage {...props} />);
|
||||
return (<ViewPage vehicleBelongType={8} {...props} />);
|
||||
}
|
||||
|
||||
export default View;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import AddPage from "~/pages/Container/Supervision/FirstLevelDoor/ImportAndExportPortInfo/StockPersonnelAndVehicles/VehicleManagement/Add";
|
||||
|
||||
function Add(props) {
|
||||
return (<AddPage {...props} />);
|
||||
return (<AddPage vehicleBelongType={8} {...props} />);
|
||||
}
|
||||
|
||||
export default Add;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import ListPage from "~/pages/Container/Supervision/FirstLevelDoor/ImportAndExportPortInfo/StockPersonnelAndVehicles/VehicleManagement/List";
|
||||
|
||||
function List(props) {
|
||||
return (<ListPage {...props} />);
|
||||
return (<ListPage vehicleBelongType={8} {...props} />);
|
||||
}
|
||||
|
||||
export default List;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import ViewPage from "~/pages/Container/Supervision/FirstLevelDoor/ImportAndExportPortInfo/StockPersonnelAndVehicles/VehicleManagement/View";
|
||||
|
||||
function View(props) {
|
||||
return (<ViewPage {...props} />);
|
||||
return (<ViewPage vehicleBelongType={8} {...props} />);
|
||||
}
|
||||
|
||||
export default View;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import ListPage from "~/pages/Container/Supervision/FirstLevelDoor/ImportAndExportPortInfo/VehiclesViolation/VehicleBlacklist/List";
|
||||
|
||||
function List(props) {
|
||||
return (<ListPage platform="3" {...props} />);
|
||||
return (<ListPage {...props} />);
|
||||
}
|
||||
|
||||
export default List;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import ListPage from "~/pages/Container/Supervision/FirstLevelDoor/ImportAndExportPortInfo/VehiclesViolation/VehiclesViolation/List";
|
||||
|
||||
function List(props) {
|
||||
return (<ListPage platform="3" {...props} />);
|
||||
return (<ListPage {...props} />);
|
||||
}
|
||||
|
||||
export default List;
|
||||
|
|
|
|||
|
|
@ -6,26 +6,57 @@ import Page from "zy-react-library/components/Page";
|
|||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
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 useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||
import { getLabelName } from "zy-react-library/utils";
|
||||
import NeedToKnowModal from "~/components/NeedToKnowModal";
|
||||
import { NS_FIRST_LEVEL_DOOR_INFO, NS_PERSONNEL_APPLICATION } from "~/enumerate/namespace";
|
||||
import {
|
||||
NS_APPROVER_USER,
|
||||
NS_ENCLOSED_AREA_PERSONNEL_APPLY,
|
||||
NS_FIRST_LEVEL_DOOR_INFO,
|
||||
NS_PERSONNEL_APPLICATION,
|
||||
} from "~/enumerate/namespace";
|
||||
|
||||
function Add(props) {
|
||||
const [form] = FormBuilder.useForm();
|
||||
const gateLevelAuthArea = FormBuilder.useWatch("gateLevelAuthArea", form);
|
||||
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
|
||||
|
||||
const [personnelList, setPersonnelList] = useState([]);
|
||||
const [addPersonnelModalVisible, setAddPersonnelModalVisible] = useState(false);
|
||||
const [needToKnowModalVisible, setNeedToKnowModalVisible] = useState(false);
|
||||
const [firstLevelDoorInfoListAll, setFirstLevelDoorInfoListAll] = useState([]);
|
||||
const [xgfProjectListAll, setXgfProjectListAll] = useState([]);
|
||||
const [approvalUserListAll, setApprovalUserListAll] = useState([]);
|
||||
const [xgfProjectUser, setXgfProjectUser] = useState([]);
|
||||
|
||||
const signatureUrl = useRef("");
|
||||
|
||||
const getXgfProjectListAll = async () => {
|
||||
const { data } = await props["xgfProjectListAll"]();
|
||||
setXgfProjectListAll(data);
|
||||
};
|
||||
|
||||
const getApprovalUserListAll = async () => {
|
||||
const { data } = await props["approvalUserListAll"]({ personnelPermissionFlag: 1 });
|
||||
setApprovalUserListAll(data);
|
||||
};
|
||||
|
||||
const getXgfProjectUserGetPeopleProject = async (id) => {
|
||||
const { data } = await props["xgfProjectUserGetPeopleProject"]({ id });
|
||||
setXgfProjectUser(data);
|
||||
};
|
||||
|
||||
const getFirstLevelDoorInfoListAll = async () => {
|
||||
const { data } = await props["firstLevelDoorInfoListAll"]({ mkmjLevel: 1, hgAuthArea: gateLevelAuthArea });
|
||||
setFirstLevelDoorInfoListAll(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getXgfProjectListAll();
|
||||
getApprovalUserListAll();
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
if (gateLevelAuthArea) {
|
||||
getFirstLevelDoorInfoListAll();
|
||||
|
|
@ -33,13 +64,34 @@ function Add(props) {
|
|||
}, [gateLevelAuthArea]);
|
||||
|
||||
const onSubmit = async (values) => {
|
||||
if (!values.todo8) {
|
||||
if (!values.informSignFile) {
|
||||
message.warning("请勾选《安全进港须知》并签字");
|
||||
return;
|
||||
}
|
||||
const { id: informSignId } = await uploadFile({
|
||||
files: [{ originFileObj: values.informSignFile }],
|
||||
single: false,
|
||||
params: { foreignKey: "", type: UPLOAD_FILE_TYPE_ENUM[611] },
|
||||
});
|
||||
const { success } = await props["personnelApplicationAdd"]({
|
||||
...values,
|
||||
gateLevelAuthArea: JSON.stringify({ area: values.area }),
|
||||
visitStartTime: values.visitTime[0],
|
||||
visitEndTime: values.visitTime[1],
|
||||
personApplyList: personnelList.map(item => ({
|
||||
personCorpId: item.corpId,
|
||||
personCorpName: item.corpName,
|
||||
personDepartmentId: item.deptId,
|
||||
personDepartmentName: item.deptName,
|
||||
employeePersonUserId: item.userId,
|
||||
employeePersonUserName: item.userName,
|
||||
userFaceUrl: item.userFaceUrl,
|
||||
userPhone: item.phone,
|
||||
userCard: item.userCard,
|
||||
...item,
|
||||
})),
|
||||
informSignId,
|
||||
personBelongType: 3,
|
||||
});
|
||||
if (success) {
|
||||
message.success("操作成功");
|
||||
|
|
@ -52,12 +104,51 @@ function Add(props) {
|
|||
<FormBuilder
|
||||
form={form}
|
||||
onFinish={onSubmit}
|
||||
loading={props.personnelApplication.personnelApplicationLoading}
|
||||
loading={props.personnelApplication.personnelApplicationLoading || uploadFileLoading}
|
||||
options={[
|
||||
{ name: "todo1", label: "项目", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] },
|
||||
{ name: "todo2", label: "审核部门", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] },
|
||||
{ name: "todo3", label: "审核人员", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] },
|
||||
{ name: "todo4", label: "时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{
|
||||
name: "projectId",
|
||||
label: "项目",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: xgfProjectListAll,
|
||||
itemsField: { labelKey: "projectName", valueKey: "id" },
|
||||
componentProps: {
|
||||
onChange: (value) => {
|
||||
const item = xgfProjectListAll.find(i => i.id === value) || {};
|
||||
form.setFieldValue("projectName", item.projectName);
|
||||
if (value) {
|
||||
getXgfProjectUserGetPeopleProject(value);
|
||||
}
|
||||
else {
|
||||
setXgfProjectUser([]);
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
{ name: "projectName", label: "项目名称", onlyForLabel: true },
|
||||
{
|
||||
name: "auditUserId",
|
||||
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("auditUserName", item.userName);
|
||||
form.setFieldValue("auditCorpId", item.corpId);
|
||||
form.setFieldValue("auditCorpName", item.corpName);
|
||||
form.setFieldValue("auditDeptId", item.deptId);
|
||||
form.setFieldValue("auditDeptName", item.deptName);
|
||||
},
|
||||
},
|
||||
},
|
||||
{ name: "auditUserName", label: "审核人员名称", onlyForLabel: true },
|
||||
{ name: "auditCorpId", label: "审核企业ID", onlyForLabel: true },
|
||||
{ name: "auditCorpName", label: "审核企业名称", onlyForLabel: true },
|
||||
{ name: "auditDeptId", label: "审核部门ID", onlyForLabel: true },
|
||||
{ name: "auditDeptName", label: "审核部门名称", onlyForLabel: true },
|
||||
{ name: "visitTime", label: "时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{
|
||||
name: "gateLevelAuthArea",
|
||||
label: "访问港区",
|
||||
|
|
@ -65,7 +156,7 @@ function Add(props) {
|
|||
<DictionarySelect
|
||||
dictValue="HG_AUTH_AREA"
|
||||
onGetOption={(option) => {
|
||||
const area = { value: option.dictLabel, bianma: option.dictValue };
|
||||
const area = [{ value: option.dictLabel, bianma: option.dictValue }];
|
||||
form.setFieldValue("area", area);
|
||||
}}
|
||||
onChange={() => {
|
||||
|
|
@ -102,7 +193,12 @@ function Add(props) {
|
|||
<Button
|
||||
type="primary"
|
||||
onClick={() => {
|
||||
setAddPersonnelModalVisible(true);
|
||||
if (!form.getFieldValue("projectId")) {
|
||||
message.warning("请先选择项目");
|
||||
}
|
||||
else {
|
||||
setAddPersonnelModalVisible(true);
|
||||
}
|
||||
}}
|
||||
>
|
||||
添加人员
|
||||
|
|
@ -111,8 +207,8 @@ function Add(props) {
|
|||
options={false}
|
||||
disabledResizer={true}
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "todo1" },
|
||||
{ title: "部门", dataIndex: "todo2" },
|
||||
{ title: "姓名", dataIndex: "name" },
|
||||
{ title: "部门", dataIndex: "deptName" },
|
||||
{ title: "是否培训", dataIndex: "todo3" },
|
||||
{ title: "现口门权限范围", dataIndex: "todo4" },
|
||||
{
|
||||
|
|
@ -128,7 +224,7 @@ function Add(props) {
|
|||
title: "删除确认",
|
||||
content: "确定删除吗?",
|
||||
onOk: () => {
|
||||
setPersonnelList(personnelList.filter(item => item.id !== record.id));
|
||||
setPersonnelList(personnelList.filter(item => item.userId !== record.userId));
|
||||
},
|
||||
});
|
||||
}}
|
||||
|
|
@ -144,12 +240,18 @@ function Add(props) {
|
|||
),
|
||||
},
|
||||
{
|
||||
name: "todo7",
|
||||
name: "securityProtocol",
|
||||
label: " ",
|
||||
span: 24,
|
||||
required: false,
|
||||
rules: [{ required: true, message: "请勾选" }],
|
||||
formItemProps: { colon: false, required: false, style: { textAlign: "center" }, labelCol: { span: 0 }, wrapperCol: { span: 24 } },
|
||||
formItemProps: {
|
||||
colon: false,
|
||||
required: false,
|
||||
style: { textAlign: "center" },
|
||||
labelCol: { span: 0 },
|
||||
wrapperCol: { span: 24 },
|
||||
},
|
||||
render: FORM_ITEM_RENDER_ENUM.CHECKBOX,
|
||||
items: [{
|
||||
bianma: "1",
|
||||
|
|
@ -169,13 +271,14 @@ function Add(props) {
|
|||
),
|
||||
}],
|
||||
},
|
||||
{ name: "todo8", label: "签字", onlyForLabel: true },
|
||||
{ name: "informSignFile", label: "签字", onlyForLabel: true },
|
||||
]}
|
||||
/>
|
||||
{
|
||||
addPersonnelModalVisible && (
|
||||
<AddPersonnelModal
|
||||
personnelList={personnelList}
|
||||
xgfProjectUser={xgfProjectUser}
|
||||
onCancel={() => {
|
||||
setAddPersonnelModalVisible(false);
|
||||
}}
|
||||
|
|
@ -194,7 +297,7 @@ function Add(props) {
|
|||
setNeedToKnowModalVisible(false);
|
||||
}}
|
||||
onOk={(values) => {
|
||||
form.setFieldValue("todo8", values);
|
||||
form.setFieldValue("informSignFile", values.file);
|
||||
signatureUrl.current = values.base64;
|
||||
setNeedToKnowModalVisible(false);
|
||||
}}
|
||||
|
|
@ -206,7 +309,7 @@ function Add(props) {
|
|||
}
|
||||
|
||||
const AddPersonnelModalComponent = (props) => {
|
||||
const [selectedRowKeys, setSelectedRowKeys] = useState(props.personnelList.map(item => item.id));
|
||||
const [selectedRowKeys, setSelectedRowKeys] = useState(props.personnelList.map(item => item.userId));
|
||||
|
||||
const selectedRowsRef = useRef(props.personnelList || []);
|
||||
|
||||
|
|
@ -237,13 +340,14 @@ const AddPersonnelModalComponent = (props) => {
|
|||
}}
|
||||
options={false}
|
||||
disabledResizer={true}
|
||||
rowKey="userId"
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "todo1" },
|
||||
{ title: "部门", dataIndex: "todo2" },
|
||||
{ title: "姓名", dataIndex: "userName" },
|
||||
{ title: "部门", dataIndex: "deptName" },
|
||||
{ title: "是否培训", dataIndex: "todo3" },
|
||||
{ title: "现口门权限范围", dataIndex: "todo4" },
|
||||
]}
|
||||
dataSource={[]}
|
||||
dataSource={props.xgfProjectUser}
|
||||
pagination={false}
|
||||
/>
|
||||
</Modal>
|
||||
|
|
@ -252,4 +356,4 @@ const AddPersonnelModalComponent = (props) => {
|
|||
|
||||
const AddPersonnelModal = Connect([NS_PERSONNEL_APPLICATION], true)(AddPersonnelModalComponent);
|
||||
|
||||
export default Connect([NS_PERSONNEL_APPLICATION, NS_FIRST_LEVEL_DOOR_INFO], true)(Add);
|
||||
export default Connect([NS_PERSONNEL_APPLICATION, NS_FIRST_LEVEL_DOOR_INFO, NS_ENCLOSED_AREA_PERSONNEL_APPLY, NS_APPROVER_USER], true)(Add);
|
||||
|
|
|
|||
|
|
@ -6,17 +6,24 @@ import Page from "zy-react-library/components/Page";
|
|||
import PreviewImg from "zy-react-library/components/PreviewImg";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
import { 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 useTable from "zy-react-library/hooks/useTable";
|
||||
import { getLabelName } from "zy-react-library/utils";
|
||||
import { ENCLOSED_AREA_AUDIT_STATUS_ENUM } from "~/enumerate/constant";
|
||||
import { NS_PERSONNEL_APPLICATION } from "~/enumerate/namespace";
|
||||
|
||||
function List(props) {
|
||||
const [currentId, setCurrentId] = useState("");
|
||||
const [reasonsRefusal, setCurrentReasonsRefusal] = useState("");
|
||||
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
|
||||
const [viewModalVisible, setViewModalVisible] = useState(false);
|
||||
|
||||
const [form] = Search.useForm();
|
||||
const { tableProps, getData } = useTable(props["personnelApplicationList"], {
|
||||
form,
|
||||
params: { processOrRecord: !props.isRecords ? 1 : 2 },
|
||||
});
|
||||
|
||||
return (
|
||||
|
|
@ -25,33 +32,56 @@ function List(props) {
|
|||
labelCol={{ span: 4 }}
|
||||
options={[
|
||||
{ name: "todo1", label: "姓名" },
|
||||
{ name: "todo2", label: "项目名称" },
|
||||
{ name: "projectName", label: "项目名称" },
|
||||
{
|
||||
name: "auditFlag",
|
||||
label: "审核状态",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: ENCLOSED_AREA_AUDIT_STATUS_ENUM,
|
||||
hidden: !props.isRecords,
|
||||
},
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
toolBarRender={() => (
|
||||
<Button
|
||||
type="primary"
|
||||
icon={(<AddIcon />)}
|
||||
onClick={() => {
|
||||
props.history.push("./add");
|
||||
}}
|
||||
>
|
||||
新增申请
|
||||
</Button>
|
||||
<Space>
|
||||
{!props.isRecords && (
|
||||
<Button
|
||||
type="primary"
|
||||
icon={(<AddIcon />)}
|
||||
onClick={() => {
|
||||
props.history.push("./add");
|
||||
}}
|
||||
>
|
||||
新增申请
|
||||
</Button>
|
||||
)}
|
||||
</Space>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "项目名称", dataIndex: "todo1" },
|
||||
{ title: "区域范围", dataIndex: "todo2" },
|
||||
{ title: "访问期限", dataIndex: "todo3" },
|
||||
{ title: "项目人员数", dataIndex: "todo4" },
|
||||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{
|
||||
title: "区域范围",
|
||||
dataIndex: "gateLevelAuthArea",
|
||||
render: (_, record) => record.gateLevelAuthArea && JSON.parse(record.gateLevelAuthArea).area.map(item => item.value).join("、"),
|
||||
},
|
||||
{
|
||||
title: "访问期限",
|
||||
dataIndex: "visitStartTime",
|
||||
render: (_, record) => `${record.visitStartTime}-${record.visitEndTime}`,
|
||||
},
|
||||
{ title: "项目人员数", dataIndex: "personApplyCount" },
|
||||
{ title: "申请时间", dataIndex: "todo5" },
|
||||
{ title: "审核状态", dataIndex: "todo6" },
|
||||
{
|
||||
title: "审核状态",
|
||||
dataIndex: "auditFlag",
|
||||
render: (_, record) => getLabelName({ list: ENCLOSED_AREA_AUDIT_STATUS_ENUM, status: record.auditFlag }),
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
width: 100,
|
||||
width: 150,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
|
|
@ -64,15 +94,17 @@ function List(props) {
|
|||
>
|
||||
查看
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setViewRejectReasonModalVisible(true);
|
||||
setCurrentId(record.id);
|
||||
}}
|
||||
>
|
||||
查看原因
|
||||
</Button>
|
||||
{record.auditFlag === 3 && (
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setViewRejectReasonModalVisible(true);
|
||||
setCurrentReasonsRefusal(record.reasonsRefusal);
|
||||
}}
|
||||
>
|
||||
查看原因
|
||||
</Button>
|
||||
)}
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
|
|
@ -82,10 +114,10 @@ function List(props) {
|
|||
{
|
||||
viewRejectReasonModalVisible && (
|
||||
<ViewRejectReasonModal
|
||||
id={currentId}
|
||||
reasonsRefusal={reasonsRefusal}
|
||||
onCancel={() => {
|
||||
setViewRejectReasonModalVisible(false);
|
||||
setCurrentId("");
|
||||
setCurrentReasonsRefusal("");
|
||||
}}
|
||||
/>
|
||||
)
|
||||
|
|
@ -105,17 +137,7 @@ function List(props) {
|
|||
);
|
||||
}
|
||||
|
||||
const ViewRejectReasonModalComponent = (props) => {
|
||||
const [info, setInfo] = useState({});
|
||||
const getData = async () => {
|
||||
const { data } = await props["personnelApplicationRejectReason"]({ id: props.id });
|
||||
setInfo(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getData();
|
||||
}, []);
|
||||
|
||||
const ViewRejectReasonModal = (props) => {
|
||||
return (
|
||||
<Modal
|
||||
open
|
||||
|
|
@ -126,14 +148,13 @@ const ViewRejectReasonModalComponent = (props) => {
|
|||
footer={[
|
||||
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
|
||||
]}
|
||||
loading={props.personnelApplication.personnelApplicationLoading}
|
||||
>
|
||||
<Descriptions
|
||||
column={1}
|
||||
bordered
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "驳回原因", children: info.todo1 },
|
||||
{ label: "驳回原因", children: props.reasonsRefusal },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
|
|
@ -142,9 +163,16 @@ const ViewRejectReasonModalComponent = (props) => {
|
|||
|
||||
const ViewModalComponent = (props) => {
|
||||
const [info, setInfo] = useState({});
|
||||
|
||||
const { loading: getFileLoading, getFile } = useGetFile();
|
||||
|
||||
const getData = async () => {
|
||||
const { data } = await props["personnelApplicationInfo"]({ id: props.id });
|
||||
setInfo(data);
|
||||
const informSignFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[611], eqForeignKey: data.informSignId });
|
||||
setInfo({
|
||||
...data,
|
||||
informSignFile,
|
||||
});
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
|
|
@ -161,7 +189,7 @@ const ViewModalComponent = (props) => {
|
|||
footer={[
|
||||
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
|
||||
]}
|
||||
loading={props.personnelApplication.personnelApplicationLoading}
|
||||
loading={props.personnelApplication.personnelApplicationLoading || getFileLoading}
|
||||
>
|
||||
<Divider orientation="left">申请信息</Divider>
|
||||
<Descriptions
|
||||
|
|
@ -169,13 +197,16 @@ const ViewModalComponent = (props) => {
|
|||
bordered
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "项目名称", children: info.todo1 },
|
||||
{ label: "区域范围", children: info.todo2 },
|
||||
{ label: "访问期限", children: `${info.todo3}-${info.todo4}` },
|
||||
{ label: "项目人员数", children: info.todo5 },
|
||||
{ label: "项目名称", children: info.projectName },
|
||||
{
|
||||
label: "区域范围",
|
||||
children: info.gateLevelAuthArea && JSON.parse(info.gateLevelAuthArea).area.map(item => item.value).join("、"),
|
||||
},
|
||||
{ label: "访问期限", children: `${info.visitStartTime}-${info.visitEndTime}` },
|
||||
{ label: "项目人员数", children: info.personApplyList?.length },
|
||||
{ label: "申请时间", children: info.todo6 },
|
||||
{ label: "申请状态", children: info.todo7 },
|
||||
{ label: "申请人签字", children: (<PreviewImg files={info.todo8} />) },
|
||||
{ label: "申请状态", children: getLabelName({ list: ENCLOSED_AREA_AUDIT_STATUS_ENUM, status: info.auditFlag }) },
|
||||
{ label: "申请人签字", children: (<PreviewImg files={info.informSignFile} />) },
|
||||
]}
|
||||
/>
|
||||
<Divider orientation="left">人员信息</Divider>
|
||||
|
|
@ -183,19 +214,18 @@ const ViewModalComponent = (props) => {
|
|||
options={false}
|
||||
disabledResizer={true}
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "todo1" },
|
||||
{ title: "部门", dataIndex: "todo2" },
|
||||
{ title: "姓名", dataIndex: "employeePersonUserName" },
|
||||
{ title: "部门", dataIndex: "personDepartmentName" },
|
||||
{ title: "是否培训", dataIndex: "todo3" },
|
||||
{ title: "现口门权限范围", dataIndex: "todo4" },
|
||||
]}
|
||||
dataSource={info.todo9}
|
||||
dataSource={info.personApplyList}
|
||||
pagination={false}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
const ViewRejectReasonModal = Connect([NS_PERSONNEL_APPLICATION], true)(ViewRejectReasonModalComponent);
|
||||
const ViewModal = Connect([NS_PERSONNEL_APPLICATION], true)(ViewModalComponent);
|
||||
|
||||
export default Connect([NS_PERSONNEL_APPLICATION], true)(List);
|
||||
|
|
|
|||
|
|
@ -1,196 +1,7 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Divider, Modal, Space } from "antd";
|
||||
import { useEffect, useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import PreviewImg from "zy-react-library/components/PreviewImg";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||
import useTable from "zy-react-library/hooks/useTable";
|
||||
import { NS_PERSONNEL_APPLICATION } from "~/enumerate/namespace";
|
||||
import ListPage from "../../PersonnelApplication/List";
|
||||
|
||||
const REVIEW_STATUS_ENUM = [
|
||||
{ bianma: "todo1", name: "已完成" },
|
||||
{ bianma: "todo2", name: "待审核" },
|
||||
{ bianma: "todo3", name: "已驳回" },
|
||||
];
|
||||
function List(props) {
|
||||
const [currentId, setCurrentId] = useState("");
|
||||
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
|
||||
const [viewModalVisible, setViewModalVisible] = useState(false);
|
||||
|
||||
const [form] = Search.useForm();
|
||||
const { tableProps, getData } = useTable(props["personnelApplicationList"], {
|
||||
form,
|
||||
});
|
||||
|
||||
return (
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 4 }}
|
||||
options={[
|
||||
{ name: "todo1", label: "姓名" },
|
||||
{ name: "todo2", label: "项目名称" },
|
||||
{ name: "todo3", label: "审核状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: REVIEW_STATUS_ENUM },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "项目名称", dataIndex: "todo1" },
|
||||
{ title: "区域范围", dataIndex: "todo2" },
|
||||
{ title: "访问期限", dataIndex: "todo3" },
|
||||
{ title: "项目人员数", dataIndex: "todo4" },
|
||||
{ title: "申请时间", dataIndex: "todo5" },
|
||||
{ title: "审核状态", dataIndex: "todo6" },
|
||||
{
|
||||
title: "操作",
|
||||
width: 100,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setViewModalVisible(true);
|
||||
setCurrentId(record.id);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setViewRejectReasonModalVisible(true);
|
||||
setCurrentId(record.id);
|
||||
}}
|
||||
>
|
||||
查看原因
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
{
|
||||
viewRejectReasonModalVisible && (
|
||||
<ViewRejectReasonModal
|
||||
id={currentId}
|
||||
onCancel={() => {
|
||||
setViewRejectReasonModalVisible(false);
|
||||
setCurrentId("");
|
||||
}}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
viewModalVisible && (
|
||||
<ViewModal
|
||||
id={currentId}
|
||||
onCancel={() => {
|
||||
setViewModalVisible(false);
|
||||
setCurrentId("");
|
||||
}}
|
||||
/>
|
||||
)
|
||||
}
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
const ViewRejectReasonModalComponent = (props) => {
|
||||
const [info, setInfo] = useState({});
|
||||
const getData = async () => {
|
||||
const { data } = await props["personnelApplicationRejectReason"]({ id: props.id });
|
||||
setInfo(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getData();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Modal
|
||||
open
|
||||
title="驳回原因"
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
width={600}
|
||||
footer={[
|
||||
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
|
||||
]}
|
||||
loading={props.personnelApplication.personnelApplicationLoading}
|
||||
>
|
||||
<Descriptions
|
||||
column={1}
|
||||
bordered
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "驳回原因", children: info.todo1 },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
return (<ListPage isRecords={true} {...props} />);
|
||||
};
|
||||
|
||||
const ViewModalComponent = (props) => {
|
||||
const [info, setInfo] = useState({});
|
||||
const getData = async () => {
|
||||
const { data } = await props["personnelApplicationInfo"]({ id: props.id });
|
||||
setInfo(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getData();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Modal
|
||||
open
|
||||
title="查看"
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
width={600}
|
||||
footer={[
|
||||
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
|
||||
]}
|
||||
loading={props.personnelApplication.personnelApplicationLoading}
|
||||
>
|
||||
<Divider orientation="left">申请信息</Divider>
|
||||
<Descriptions
|
||||
column={1}
|
||||
bordered
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "项目名称", children: info.todo1 },
|
||||
{ label: "区域范围", children: info.todo2 },
|
||||
{ label: "访问期限", children: `${info.todo3}-${info.todo4}` },
|
||||
{ label: "项目人员数", children: info.todo5 },
|
||||
{ label: "申请时间", children: info.todo6 },
|
||||
{ label: "申请状态", children: info.todo7 },
|
||||
{ label: "申请人签字", children: (<PreviewImg files={info.todo8} />) },
|
||||
]}
|
||||
/>
|
||||
<Divider orientation="left">人员信息</Divider>
|
||||
<Table
|
||||
options={false}
|
||||
disabledResizer={true}
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "todo1" },
|
||||
{ title: "部门", dataIndex: "todo2" },
|
||||
{ title: "是否培训", dataIndex: "todo3" },
|
||||
{ title: "现口门权限范围", dataIndex: "todo4" },
|
||||
]}
|
||||
dataSource={info.todo9}
|
||||
pagination={false}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
const ViewRejectReasonModal = Connect([NS_PERSONNEL_APPLICATION], true)(ViewRejectReasonModalComponent);
|
||||
const ViewModal = Connect([NS_PERSONNEL_APPLICATION], true)(ViewModalComponent);
|
||||
|
||||
export default Connect([NS_PERSONNEL_APPLICATION], true)(List);
|
||||
export default List;
|
||||
|
|
|
|||
|
|
@ -22,18 +22,18 @@ function List(props) {
|
|||
<Search
|
||||
labelCol={{ span: 4 }}
|
||||
options={[
|
||||
{ name: "todo1", label: "姓名" },
|
||||
{ name: "todo2", label: "项目名称" },
|
||||
{ name: "employeePersonUserName", label: "姓名" },
|
||||
{ name: "projectName", label: "项目名称" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "todo1" },
|
||||
{ title: "部门", dataIndex: "todo2" },
|
||||
{ title: "姓名", dataIndex: "employeePersonUserName" },
|
||||
{ title: "部门", dataIndex: "personDepartmentName" },
|
||||
{ title: "是否培训", dataIndex: "todo3" },
|
||||
{ title: "涉及项目", dataIndex: "todo4" },
|
||||
{ title: "涉及项目", dataIndex: "projectName" },
|
||||
{ title: "口门权限范围", dataIndex: "todo5" },
|
||||
{
|
||||
title: "操作",
|
||||
|
|
@ -99,14 +99,14 @@ const InfoModalComponent = (props) => {
|
|||
column={1}
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "姓名", children: info.todo1 },
|
||||
{ label: "手机号", children: info.todo2 },
|
||||
{ label: "身份证号", children: info.todo3 },
|
||||
{ label: "访问起始时间", children: info.todo4 },
|
||||
{ label: "访问结束时间", children: info.todo5 },
|
||||
{ label: "姓名", children: info.applyPersonUserName },
|
||||
{ label: "手机号", children: info.userPhone },
|
||||
{ label: "身份证号", children: info.userCard },
|
||||
{ label: "访问起始时间", children: info.visitStartTime },
|
||||
{ label: "访问结束时间", children: info.visitEndTime },
|
||||
{ label: "口门权限范围", children: info.todo6 },
|
||||
{ label: "涉及项目", children: info.todo7 },
|
||||
{ label: "人脸照片", children: (<PreviewImg files={info.todo8} />) },
|
||||
{ label: "涉及项目", children: info.projectName },
|
||||
{ label: "人脸照片", children: (<PreviewImg files={[info.userFaceUrl]} />) },
|
||||
{ label: "申请时间", children: info.todo9 },
|
||||
{ label: "审核人", children: info.todo10 },
|
||||
{ label: "审核时间", children: info.todo11 },
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import ShareVehiclesPage from "~/pages/Container/Supervision/FirstLevelDoor/PortEntryApproval/LongTermVehicleApproval/ShareVehicles";
|
||||
|
||||
function ShareVehicles(props) {
|
||||
return (<ShareVehiclesPage {...props} />);
|
||||
return (<ShareVehiclesPage vehicleBelongTypeArr="8" {...props} />);
|
||||
}
|
||||
|
||||
export default ShareVehicles;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
import ListPage from "~/pages/Container/Supervision/FirstLevelDoor/PortEntryApproval/TemporaryVisitor/TemporaryPersonnelRecords/List";
|
||||
|
||||
function List(props) {
|
||||
return (<ListPage {...props} />);
|
||||
}
|
||||
|
||||
export default List;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
import ViewPage from "~/pages/Container/Supervision/FirstLevelDoor/PortEntryApproval/TemporaryVisitor/TemporaryPersonnelRecords/View";
|
||||
|
||||
function View(props) {
|
||||
return (<ViewPage {...props} />);
|
||||
}
|
||||
|
||||
export default View;
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
function TemporaryPersonnelRecords(props) {
|
||||
return props.children;
|
||||
}
|
||||
|
||||
export default TemporaryPersonnelRecords;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
import ListPage from "~/pages/Container/Supervision/FirstLevelDoor/PortEntryApproval/TemporaryVisitor/TemporaryVehicleRecords/List";
|
||||
|
||||
function List(props) {
|
||||
return (<ListPage {...props} />);
|
||||
}
|
||||
|
||||
export default List;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
import ViewPage from "~/pages/Container/Supervision/FirstLevelDoor/PortEntryApproval/TemporaryVisitor/TemporaryVehicleRecords/View";
|
||||
|
||||
function View(props) {
|
||||
return (<ViewPage {...props} />);
|
||||
}
|
||||
|
||||
export default View;
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
function TemporaryVehicleRecords(props) {
|
||||
return props.children;
|
||||
}
|
||||
|
||||
export default TemporaryVehicleRecords;
|
||||
|
|
@ -1,33 +1,62 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, message } 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 DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
||||
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
|
||||
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 useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||
import { LICENSE_PLATE_NUMBER } from "zy-react-library/regular";
|
||||
import { getLabelName } from "zy-react-library/utils";
|
||||
import NeedToKnowModal from "~/components/NeedToKnowModal";
|
||||
import { NS_FIRST_LEVEL_DOOR_INFO, NS_VEHICLE_APPLICATION } from "~/enumerate/namespace";
|
||||
import {
|
||||
NS_APPROVER_USER,
|
||||
NS_ENCLOSED_AREA_PERSONNEL_APPLY,
|
||||
NS_FIRST_LEVEL_DOOR_INFO,
|
||||
NS_VEHICLE_APPLY,
|
||||
} from "~/enumerate/namespace";
|
||||
|
||||
function Add(props) {
|
||||
const [form] = FormBuilder.useForm();
|
||||
const todo7 = FormBuilder.useWatch("todo7", form);
|
||||
const gateLevelAuthArea = FormBuilder.useWatch("gateLevelAuthArea", form);
|
||||
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
|
||||
|
||||
const [needToKnowModalVisible, setNeedToKnowModalVisible] = useState(false);
|
||||
const [firstLevelDoorInfoListAll, setFirstLevelDoorInfoListAll] = useState([]);
|
||||
const [xgfProjectListAll, setXgfProjectListAll] = useState([]);
|
||||
const [approvalUserListAll, setApprovalUserListAll] = useState([]);
|
||||
const [xgfProjectUser, setXgfProjectUser] = useState([]);
|
||||
|
||||
const signatureUrl = useRef("");
|
||||
|
||||
const getXgfProjectListAll = async () => {
|
||||
const { data } = await props["xgfProjectListAll"]();
|
||||
setXgfProjectListAll(data);
|
||||
};
|
||||
|
||||
const getApprovalUserListAll = async () => {
|
||||
const { data } = await props["approvalUserListAll"]({ vehiclePermissionFlag: 1 });
|
||||
setApprovalUserListAll(data);
|
||||
};
|
||||
|
||||
const getXgfProjectUserGetPeopleProject = async (id) => {
|
||||
const { data } = await props["xgfProjectUserGetPeopleProject"]({ id });
|
||||
setXgfProjectUser(data);
|
||||
};
|
||||
|
||||
const getFirstLevelDoorInfoListAll = async () => {
|
||||
const { data } = await props["firstLevelDoorInfoListAll"]({ mkmjLevel: 1, hgAuthArea: gateLevelAuthArea });
|
||||
setFirstLevelDoorInfoListAll(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getXgfProjectListAll();
|
||||
getApprovalUserListAll();
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
if (gateLevelAuthArea) {
|
||||
getFirstLevelDoorInfoListAll();
|
||||
|
|
@ -35,13 +64,34 @@ function Add(props) {
|
|||
}, [gateLevelAuthArea]);
|
||||
|
||||
const onSubmit = async (values) => {
|
||||
if (!values.todo15) {
|
||||
if (!values.informSignFile) {
|
||||
message.warning("请勾选《安全进港须知》并签字");
|
||||
return;
|
||||
}
|
||||
const { success } = await props["vehicleApplicationAdd"]({
|
||||
const { id: informSignId } = await uploadFile({
|
||||
files: [{ originFileObj: values.informSignFile }],
|
||||
single: false,
|
||||
params: { foreignKey: "", type: UPLOAD_FILE_TYPE_ENUM[606] },
|
||||
});
|
||||
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["vehicleApplyAdd"]({
|
||||
...values,
|
||||
gateLevelAuthArea: JSON.stringify({ area: values.area }),
|
||||
visitStartTime: values.visitTime[0],
|
||||
visitEndTime: values.visitTime[1],
|
||||
informSignId,
|
||||
drivingLicenseId,
|
||||
attachmentId,
|
||||
vehicleBelongType: 5,
|
||||
});
|
||||
if (success) {
|
||||
message.success("操作成功");
|
||||
|
|
@ -54,12 +104,55 @@ function Add(props) {
|
|||
<FormBuilder
|
||||
form={form}
|
||||
onFinish={onSubmit}
|
||||
loading={props.vehicleApplication.vehicleApplicationLoading}
|
||||
loading={props.vehicleApply.vehicleApplyLoading || uploadFileLoading}
|
||||
options={[
|
||||
{ name: "todo1", label: "项目", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] },
|
||||
{ name: "todo2", label: "审核部门", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] },
|
||||
{ name: "todo3", label: "审核人员", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] },
|
||||
{ name: "todo4", label: "时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{
|
||||
name: "projectId",
|
||||
label: "项目",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: xgfProjectListAll,
|
||||
itemsField: { labelKey: "projectName", valueKey: "id" },
|
||||
componentProps: {
|
||||
onChange: (value) => {
|
||||
const item = xgfProjectListAll.find(i => i.id === value) || {};
|
||||
form.setFieldValue("projectName", item.projectName);
|
||||
form.setFieldValue("drivingUserId", "");
|
||||
form.setFieldValue("drivingUserName", "");
|
||||
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: "auditUserId",
|
||||
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("auditUserName", item.userName);
|
||||
form.setFieldValue("auditCorpId", item.corpId);
|
||||
form.setFieldValue("auditCorpName", item.corpName);
|
||||
form.setFieldValue("auditDeptId", item.deptId);
|
||||
form.setFieldValue("auditDeptName", item.deptName);
|
||||
},
|
||||
},
|
||||
},
|
||||
{ name: "auditUserName", label: "审核人员名称", onlyForLabel: true },
|
||||
{ name: "auditCorpId", label: "审核企业ID", onlyForLabel: true },
|
||||
{ name: "auditCorpName", label: "审核企业名称", onlyForLabel: true },
|
||||
{ name: "auditDeptId", label: "审核部门ID", onlyForLabel: true },
|
||||
{ name: "auditDeptName", label: "审核部门名称", onlyForLabel: true },
|
||||
{ name: "visitTime", label: "时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE, componentProps: { disabled: true } },
|
||||
{
|
||||
name: "gateLevelAuthArea",
|
||||
label: "访问港区",
|
||||
|
|
@ -67,7 +160,7 @@ function Add(props) {
|
|||
<DictionarySelect
|
||||
dictValue="HG_AUTH_AREA"
|
||||
onGetOption={(option) => {
|
||||
const area = { value: option.dictLabel, bianma: option.dictValue };
|
||||
const area = [{ value: option.dictLabel, bianma: option.dictValue }];
|
||||
form.setFieldValue("area", area);
|
||||
}}
|
||||
onChange={() => {
|
||||
|
|
@ -95,20 +188,62 @@ function Add(props) {
|
|||
},
|
||||
},
|
||||
{ name: "mkmjName", label: "访问口门名称", onlyForLabel: true },
|
||||
{ name: "todo7", label: "驾驶人员部门", render: (<DepartmentSelectTree />) },
|
||||
{ name: "todo8", label: "驾驶人员", render: (<PersonnelSelect params={{ departmentId: todo7 }} />) },
|
||||
{ name: "todo9", label: "车牌类型", render: (<DictionarySelect dictValue="LICENSE_PLATE_TYPE" />) },
|
||||
{ name: "todo10", label: "车辆类型", render: (<DictionarySelect dictValue="VEHICLE_TYPE" />) },
|
||||
{ name: "todo11", label: "车牌号", rules: [{ pattern: LICENSE_PLATE_NUMBER, message: "请输入正确的车牌号" }] },
|
||||
{ name: "todo12", label: "车辆照片", span: 24, render: (<Upload />) },
|
||||
{ name: "todo13", label: "行驶证照片", span: 24, render: (<Upload />) },
|
||||
{
|
||||
name: "todo15",
|
||||
name: "drivingUserId",
|
||||
label: "驾驶人员",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: xgfProjectUser,
|
||||
itemsField: { labelKey: "userName", valueKey: "userId" },
|
||||
componentProps: {
|
||||
onChange: (value) => {
|
||||
form.setFieldValue("drivingUserName", getLabelName({
|
||||
list: xgfProjectUser,
|
||||
status: value,
|
||||
idKey: "userId",
|
||||
nameKey: "userName",
|
||||
}));
|
||||
},
|
||||
},
|
||||
},
|
||||
{ name: "drivingUserName", label: "驾驶人员名称", onlyForLabel: true },
|
||||
{
|
||||
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: "请输入正确的车牌号" }] },
|
||||
{ name: "attachmentFile", label: "车辆照片", span: 24, render: (<Upload />) },
|
||||
{ name: "drivingLicenseFile", label: "行驶证照片", span: 24, render: (<Upload />) },
|
||||
{
|
||||
name: "securityProtocol",
|
||||
label: " ",
|
||||
span: 24,
|
||||
required: false,
|
||||
rules: [{ required: true, message: "请勾选" }],
|
||||
formItemProps: { colon: false, required: false, style: { textAlign: "center" }, labelCol: { span: 0 }, wrapperCol: { span: 24 } },
|
||||
formItemProps: {
|
||||
colon: false,
|
||||
required: false,
|
||||
style: { textAlign: "center" },
|
||||
labelCol: { span: 0 },
|
||||
wrapperCol: { span: 24 },
|
||||
},
|
||||
render: FORM_ITEM_RENDER_ENUM.CHECKBOX,
|
||||
items: [{
|
||||
bianma: "1",
|
||||
|
|
@ -128,7 +263,7 @@ function Add(props) {
|
|||
),
|
||||
}],
|
||||
},
|
||||
{ name: "todo8", label: "签字", onlyForLabel: true },
|
||||
{ name: "informSignFile", label: "签字", onlyForLabel: true },
|
||||
]}
|
||||
/>
|
||||
{
|
||||
|
|
@ -139,7 +274,7 @@ function Add(props) {
|
|||
setNeedToKnowModalVisible(false);
|
||||
}}
|
||||
onOk={(values) => {
|
||||
form.setFieldValue("todo8", values.file);
|
||||
form.setFieldValue("informSignFile", values.file);
|
||||
signatureUrl.current = values.base64;
|
||||
setNeedToKnowModalVisible(false);
|
||||
}}
|
||||
|
|
@ -150,4 +285,4 @@ function Add(props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_VEHICLE_APPLICATION, NS_FIRST_LEVEL_DOOR_INFO], true)(Add);
|
||||
export default Connect([NS_FIRST_LEVEL_DOOR_INFO, NS_ENCLOSED_AREA_PERSONNEL_APPLY, NS_APPROVER_USER, NS_VEHICLE_APPLY], true)(Add);
|
||||
|
|
|
|||
|
|
@ -6,17 +6,24 @@ import Page from "zy-react-library/components/Page";
|
|||
import PreviewImg from "zy-react-library/components/PreviewImg";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
import { 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 useTable from "zy-react-library/hooks/useTable";
|
||||
import { NS_VEHICLE_APPLICATION } from "~/enumerate/namespace";
|
||||
import { getLabelName } from "zy-react-library/utils";
|
||||
import { VEHICLE_AUDIT_STATUS_ENUM } from "~/enumerate/constant";
|
||||
import { NS_VEHICLE_APPLY, NS_VEHICLE_AUDIT } from "~/enumerate/namespace";
|
||||
|
||||
function List(props) {
|
||||
const [currentId, setCurrentId] = useState("");
|
||||
const [currentRemarks, setCurrentRemarks] = useState("");
|
||||
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
|
||||
const [viewModalVisible, setViewModalVisible] = useState(false);
|
||||
|
||||
const [form] = Search.useForm();
|
||||
const { tableProps, getData } = useTable(props["vehicleApplicationList"], {
|
||||
const { tableProps, getData } = useTable(props["vehicleAuditList"], {
|
||||
form,
|
||||
params: { vehicleBelongTypeArr: "5", processOrRecord: !props.isRecords ? 1 : 2 },
|
||||
});
|
||||
|
||||
return (
|
||||
|
|
@ -24,35 +31,58 @@ function List(props) {
|
|||
<Search
|
||||
labelCol={{ span: 4 }}
|
||||
options={[
|
||||
{ name: "todo1", label: "车牌号" },
|
||||
{ name: "todo2", label: "项目名称" },
|
||||
{ name: "licenceNo", label: "车牌号" },
|
||||
{ name: "projectName", label: "项目名称" },
|
||||
{
|
||||
name: "auditStatus",
|
||||
label: "审核状态",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: VEHICLE_AUDIT_STATUS_ENUM,
|
||||
hidden: !props.isRecords,
|
||||
},
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
toolBarRender={() => (
|
||||
<Button
|
||||
type="primary"
|
||||
icon={(<AddIcon />)}
|
||||
onClick={() => {
|
||||
props.history.push("./add");
|
||||
}}
|
||||
>
|
||||
新增申请
|
||||
</Button>
|
||||
<Space>
|
||||
{!props.isRecords && (
|
||||
<Button
|
||||
type="primary"
|
||||
icon={(<AddIcon />)}
|
||||
onClick={() => {
|
||||
props.history.push("./add");
|
||||
}}
|
||||
>
|
||||
新增申请
|
||||
</Button>
|
||||
)}
|
||||
</Space>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "项目名称", dataIndex: "todo1" },
|
||||
{ title: "区域范围", dataIndex: "todo2" },
|
||||
{ title: "访问期限", dataIndex: "todo3" },
|
||||
{ title: "车辆类型", dataIndex: "todo4" },
|
||||
{ title: "车牌类型", dataIndex: "todo5" },
|
||||
{ title: "车牌号", dataIndex: "todo7" },
|
||||
{ title: "审核状态", dataIndex: "todo6" },
|
||||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{
|
||||
title: "区域范围",
|
||||
dataIndex: "gateLevelAuthArea",
|
||||
render: (_, record) => record.gateLevelAuthArea && JSON.parse(record.gateLevelAuthArea).area.map(item => item.value).join("、"),
|
||||
},
|
||||
{
|
||||
title: "访问期限",
|
||||
dataIndex: "visitStartTime",
|
||||
render: (_, record) => `${record.visitStartTime}-${record.visitEndTime}`,
|
||||
},
|
||||
{ title: "车辆类型", dataIndex: "vehicleTypeName" },
|
||||
{ title: "车牌类型", dataIndex: "licenceTypeName" },
|
||||
{ title: "车牌号", dataIndex: "licenceNo" },
|
||||
{
|
||||
title: "审批状态",
|
||||
dataIndex: "auditStatus",
|
||||
render: (_, record) => getLabelName({ list: VEHICLE_AUDIT_STATUS_ENUM, status: record.auditStatus }),
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
width: 100,
|
||||
width: 150,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
|
|
@ -65,15 +95,17 @@ function List(props) {
|
|||
>
|
||||
查看
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setViewRejectReasonModalVisible(true);
|
||||
setCurrentId(record.id);
|
||||
}}
|
||||
>
|
||||
查看原因
|
||||
</Button>
|
||||
{record.auditStatus === 3 && (
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setViewRejectReasonModalVisible(true);
|
||||
setCurrentRemarks(record.remarks);
|
||||
}}
|
||||
>
|
||||
查看原因
|
||||
</Button>
|
||||
)}
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
|
|
@ -83,10 +115,10 @@ function List(props) {
|
|||
{
|
||||
viewRejectReasonModalVisible && (
|
||||
<ViewRejectReasonModal
|
||||
id={currentId}
|
||||
remarks={currentRemarks}
|
||||
onCancel={() => {
|
||||
setViewRejectReasonModalVisible(false);
|
||||
setCurrentId("");
|
||||
setCurrentRemarks("");
|
||||
}}
|
||||
/>
|
||||
)
|
||||
|
|
@ -106,17 +138,7 @@ function List(props) {
|
|||
);
|
||||
}
|
||||
|
||||
const ViewRejectReasonModalComponent = (props) => {
|
||||
const [info, setInfo] = useState({});
|
||||
const getData = async () => {
|
||||
const { data } = await props["vehicleApplicationRejectReason"]({ id: props.id });
|
||||
setInfo(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getData();
|
||||
}, []);
|
||||
|
||||
const ViewRejectReasonModal = (props) => {
|
||||
return (
|
||||
<Modal
|
||||
open
|
||||
|
|
@ -127,14 +149,13 @@ const ViewRejectReasonModalComponent = (props) => {
|
|||
footer={[
|
||||
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
|
||||
]}
|
||||
loading={props.vehicleApplication.vehicleApplicationLoading}
|
||||
>
|
||||
<Descriptions
|
||||
column={1}
|
||||
bordered
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "驳回原因", children: info.todo1 },
|
||||
{ label: "驳回原因", children: props.remarks },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
|
|
@ -143,9 +164,23 @@ const ViewRejectReasonModalComponent = (props) => {
|
|||
|
||||
const ViewModalComponent = (props) => {
|
||||
const [info, setInfo] = useState({});
|
||||
|
||||
const { loading: getFileLoading, getFile } = useGetFile();
|
||||
|
||||
const getData = async () => {
|
||||
const { data } = await props["vehicleApplicationInfo"]({ id: props.id });
|
||||
setInfo(data);
|
||||
const { data } = await props["vehicleApplyInfo"]({ id: props.id });
|
||||
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 });
|
||||
const informSignFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[606], eqForeignKey: data.informSignId });
|
||||
setInfo({
|
||||
...data,
|
||||
drivingLicenseFile,
|
||||
attachmentFile,
|
||||
informSignFile,
|
||||
});
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
|
|
@ -162,7 +197,7 @@ const ViewModalComponent = (props) => {
|
|||
footer={[
|
||||
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
|
||||
]}
|
||||
loading={props.vehicleApplication.vehicleApplicationLoading}
|
||||
loading={props.vehicleApply.vehicleApplyLoading || getFileLoading}
|
||||
>
|
||||
<Divider orientation="left">申请信息</Divider>
|
||||
<Descriptions
|
||||
|
|
@ -170,24 +205,26 @@ const ViewModalComponent = (props) => {
|
|||
bordered
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "项目名称", children: info.todo1 },
|
||||
{ label: "时间范围", children: info.todo2 },
|
||||
{ label: "地域范围", children: `${info.todo3}-${info.todo4}` },
|
||||
{ label: "驾驶人员", children: info.todo5 },
|
||||
{ label: "车辆类型", children: info.todo6 },
|
||||
{ label: "车牌类型", children: info.todo7 },
|
||||
{ label: "车牌号", children: info.todo8 },
|
||||
{ label: "审核人员", children: info.todo9 },
|
||||
{ label: "车辆照片", children: (<PreviewImg files={info.todo10} />) },
|
||||
{ label: "车辆行驶证照片", children: (<PreviewImg files={info.todo11} />) },
|
||||
{ label: "申请人签字", children: (<PreviewImg files={info.todo12} />) },
|
||||
{ label: "项目名称", children: info.projectName },
|
||||
{ label: "时间范围", children: `${info.visitStartTime}-${info.visitStartTime}` },
|
||||
{
|
||||
label: "地域范围",
|
||||
children: info.gateLevelAuthArea && JSON.parse(info.gateLevelAuthArea).area.map(item => item.value).join("、"),
|
||||
},
|
||||
{ label: "驾驶人员", children: info.drivingUserName },
|
||||
{ label: "车辆类型", children: info.vehicleTypeName },
|
||||
{ label: "车牌类型", children: info.licenceTypeName },
|
||||
{ label: "车牌号", children: info.licenceNo },
|
||||
{ label: "审核人员", children: info.auditUserName },
|
||||
{ label: "车辆照片", children: (<PreviewImg files={info.drivingLicenseFile} />) },
|
||||
{ label: "车辆行驶证照片", children: (<PreviewImg files={info.attachmentFile} />) },
|
||||
{ label: "申请人签字", children: (<PreviewImg files={info.informSignFile} />) },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
const ViewRejectReasonModal = Connect([NS_VEHICLE_APPLICATION], true)(ViewRejectReasonModalComponent);
|
||||
const ViewModal = Connect([NS_VEHICLE_APPLICATION], true)(ViewModalComponent);
|
||||
const ViewModal = Connect([NS_VEHICLE_APPLY], true)(ViewModalComponent);
|
||||
|
||||
export default Connect([NS_VEHICLE_APPLICATION], true)(List);
|
||||
export default Connect([NS_VEHICLE_AUDIT], true)(List);
|
||||
|
|
|
|||
|
|
@ -1,188 +1,7 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Divider, Modal, Space } from "antd";
|
||||
import { useEffect, useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import PreviewImg from "zy-react-library/components/PreviewImg";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||
import useTable from "zy-react-library/hooks/useTable";
|
||||
import { NS_VEHICLE_APPLICATION } from "~/enumerate/namespace";
|
||||
import ListPage from "../../VehicleApplication/List";
|
||||
|
||||
const REVIEW_STATUS_ENUM = [
|
||||
{ bianma: "todo1", name: "已完成" },
|
||||
{ bianma: "todo2", name: "待审核" },
|
||||
{ bianma: "todo3", name: "已驳回" },
|
||||
];
|
||||
function List(props) {
|
||||
const [currentId, setCurrentId] = useState("");
|
||||
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
|
||||
const [viewModalVisible, setViewModalVisible] = useState(false);
|
||||
|
||||
const [form] = Search.useForm();
|
||||
const { tableProps, getData } = useTable(props["vehicleApplicationList"], {
|
||||
form,
|
||||
});
|
||||
|
||||
return (
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 4 }}
|
||||
options={[
|
||||
{ name: "todo1", label: "车牌号" },
|
||||
{ name: "todo2", label: "项目名称" },
|
||||
{ name: "todo3", label: "审核状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: REVIEW_STATUS_ENUM },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "项目名称", dataIndex: "todo1" },
|
||||
{ title: "区域范围", dataIndex: "todo2" },
|
||||
{ title: "访问期限", dataIndex: "todo3" },
|
||||
{ title: "车辆类型", dataIndex: "todo4" },
|
||||
{ title: "车牌类型", dataIndex: "todo5" },
|
||||
{ title: "车牌号", dataIndex: "todo7" },
|
||||
{ title: "审核状态", dataIndex: "todo6" },
|
||||
{
|
||||
title: "操作",
|
||||
width: 100,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setViewModalVisible(true);
|
||||
setCurrentId(record.id);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setViewRejectReasonModalVisible(true);
|
||||
setCurrentId(record.id);
|
||||
}}
|
||||
>
|
||||
查看原因
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
{
|
||||
viewRejectReasonModalVisible && (
|
||||
<ViewRejectReasonModal
|
||||
id={currentId}
|
||||
onCancel={() => {
|
||||
setViewRejectReasonModalVisible(false);
|
||||
setCurrentId("");
|
||||
}}
|
||||
/>
|
||||
)
|
||||
}
|
||||
{
|
||||
viewModalVisible && (
|
||||
<ViewModal
|
||||
id={currentId}
|
||||
onCancel={() => {
|
||||
setViewModalVisible(false);
|
||||
setCurrentId("");
|
||||
}}
|
||||
/>
|
||||
)
|
||||
}
|
||||
</Page>
|
||||
);
|
||||
return (<ListPage isRecords={true} {...props} />);
|
||||
}
|
||||
|
||||
const ViewRejectReasonModalComponent = (props) => {
|
||||
const [info, setInfo] = useState({});
|
||||
const getData = async () => {
|
||||
const { data } = await props["vehicleApplicationRejectReason"]({ id: props.id });
|
||||
setInfo(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getData();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Modal
|
||||
open
|
||||
title="驳回原因"
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
width={600}
|
||||
footer={[
|
||||
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
|
||||
]}
|
||||
loading={props.vehicleApplication.vehicleApplicationLoading}
|
||||
>
|
||||
<Descriptions
|
||||
column={1}
|
||||
bordered
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "驳回原因", children: info.todo1 },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
const ViewModalComponent = (props) => {
|
||||
const [info, setInfo] = useState({});
|
||||
const getData = async () => {
|
||||
const { data } = await props["vehicleApplicationInfo"]({ id: props.id });
|
||||
setInfo(data);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getData();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Modal
|
||||
open
|
||||
title="查看"
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
width={600}
|
||||
footer={[
|
||||
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
|
||||
]}
|
||||
loading={props.vehicleApplication.vehicleApplicationLoading}
|
||||
>
|
||||
<Divider orientation="left">申请信息</Divider>
|
||||
<Descriptions
|
||||
column={1}
|
||||
bordered
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "项目名称", children: info.todo1 },
|
||||
{ label: "时间范围", children: info.todo2 },
|
||||
{ label: "地域范围", children: `${info.todo3}-${info.todo4}` },
|
||||
{ label: "驾驶人员", children: info.todo5 },
|
||||
{ label: "车辆类型", children: info.todo6 },
|
||||
{ label: "车牌类型", children: info.todo7 },
|
||||
{ label: "车牌号", children: info.todo8 },
|
||||
{ label: "审核人员", children: info.todo9 },
|
||||
{ label: "车辆照片", children: (<PreviewImg files={info.todo10} />) },
|
||||
{ label: "车辆行驶证照片", children: (<PreviewImg files={info.todo11} />) },
|
||||
{ label: "申请人签字", children: (<PreviewImg files={info.todo12} />) },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
const ViewRejectReasonModal = Connect([NS_VEHICLE_APPLICATION], true)(ViewRejectReasonModalComponent);
|
||||
const ViewModal = Connect([NS_VEHICLE_APPLICATION], true)(ViewModalComponent);
|
||||
|
||||
export default Connect([NS_VEHICLE_APPLICATION], true)(List);
|
||||
export default List;
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ function Add(props) {
|
|||
{ name: "vehicleCorpName", label: "车辆所属企业名称", onlyForLabel: true },
|
||||
];
|
||||
}
|
||||
else if (props.vehicleBelongType === 1 || props.vehicleBelongType === 3) {
|
||||
else if (props.vehicleBelongType === 1 || props.vehicleBelongType === 3 || props.vehicleBelongType === 8) {
|
||||
return [
|
||||
{
|
||||
name: "vehicleBelongType",
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ function View(props) {
|
|||
{ label: "车辆所属部门", children: info.vehicleDepartmentName },
|
||||
];
|
||||
}
|
||||
else if (props.vehicleBelongType === 1 || props.vehicleBelongType === 3) {
|
||||
else if (props.vehicleBelongType === 1 || props.vehicleBelongType === 3 || props.vehicleBelongType === 8) {
|
||||
return [
|
||||
{ label: "车辆所属类型", children: getLabelName({ list: VEHICLE_TYPE_ENUM, status: info.vehicleBelongType }) },
|
||||
{ label: "车辆所属部门", children: info.vehicleDepartmentName },
|
||||
|
|
|
|||
|
|
@ -210,7 +210,7 @@ const AuthorizationModalVisibleComponent = (props) => {
|
|||
<DictionarySelect
|
||||
dictValue="HG_AUTH_AREA"
|
||||
onGetOption={(option) => {
|
||||
const area = { value: option.dictLabel, bianma: option.dictValue };
|
||||
const area = [{ value: option.dictLabel, bianma: option.dictValue }];
|
||||
form.setFieldValue("area", area);
|
||||
}}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ function Add(props) {
|
|||
<DictionarySelect
|
||||
dictValue="HG_AUTH_AREA"
|
||||
onGetOption={(option) => {
|
||||
const area = { value: option.dictLabel, bianma: option.dictValue };
|
||||
const area = [{ value: option.dictLabel, bianma: option.dictValue }];
|
||||
form.setFieldValue("area", area);
|
||||
}}
|
||||
onChange={() => {
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ function Add(props) {
|
|||
<DictionarySelect
|
||||
dictValue="HG_AUTH_AREA"
|
||||
onGetOption={(option) => {
|
||||
const area = { value: option.dictLabel, bianma: option.dictValue };
|
||||
const area = [{ value: option.dictLabel, bianma: option.dictValue }];
|
||||
form.setFieldValue("area", area);
|
||||
}}
|
||||
onChange={() => {
|
||||
|
|
|
|||
|
|
@ -13,14 +13,9 @@ 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 { VEHICLE_AUDIT_STATUS_ENUM } from "~/enumerate/constant";
|
||||
import { NS_FIRST_LEVEL_DOOR_INFO, NS_TEMPORARY_VEHICLE, NS_VEHICLE_AUDIT } from "~/enumerate/namespace";
|
||||
|
||||
const STATUS_ENUM = [
|
||||
{ bianma: "1", name: "审核中" },
|
||||
{ bianma: "2", name: "通过" },
|
||||
{ bianma: "3", name: "不通过" },
|
||||
];
|
||||
|
||||
function List(props) {
|
||||
const [qrCodeModalVisible, setQrCodeModalVisible] = useState(false);
|
||||
const [reviewModalVisible, setReviewModalVisible] = useState(false);
|
||||
|
|
@ -52,7 +47,7 @@ function List(props) {
|
|||
{ name: "licenceNo", label: "车牌号" },
|
||||
{ name: "visitStartTime", label: "访问开始时间" },
|
||||
{ name: "visitEndTime", label: "访问结束时间" },
|
||||
{ name: "auditStatus", label: "审批状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: STATUS_ENUM },
|
||||
{ name: "auditStatus", label: "审批状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: VEHICLE_AUDIT_STATUS_ENUM },
|
||||
{
|
||||
name: "todo6",
|
||||
label: "访问口门名称",
|
||||
|
|
@ -103,7 +98,7 @@ function List(props) {
|
|||
{
|
||||
title: "审批状态",
|
||||
dataIndex: "auditStatus",
|
||||
render: (_, record) => getLabelName({ list: STATUS_ENUM, status: record.auditStatus }),
|
||||
render: (_, record) => getLabelName({ list: VEHICLE_AUDIT_STATUS_ENUM, status: record.auditStatus }),
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
|
|
@ -375,7 +370,7 @@ const ApprovalDetailsModalComponent = (props) => {
|
|||
</div>
|
||||
<div>
|
||||
<span>审批状态:</span>
|
||||
<span>{getLabelName({ list: STATUS_ENUM, status: item.status })}</span>
|
||||
<span>{getLabelName({ list: VEHICLE_AUDIT_STATUS_ENUM, status: item.status })}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue