feat(qualification): 新增资质无效化功能并优化项目审核流程

- 添加了资质无效化API接口调用功能
- 修改了用户列表查询接口路径以支持无权限筛选
- 新增了资质类型列表查询功能
- 重构了项目审核用户模态框组件,统一显示特种作业人员证书
- 更新了多个项目列表页面中的列标题描述
- 在项目申请表单中集成用户信息获取功能
- 优化了项目负责人选择组件的参数配置
- 修复了项目类别选择时的数据联动逻辑
- 修正了项目选取形式显示名称问题
- 优化了分包项目信息的条件渲染逻辑
- 修复了营业执照有效期的空值显示问题
master
fangjiakai 2026-01-13 10:37:01 +08:00
parent 7fc5b1d238
commit 986f21f752
21 changed files with 333 additions and 261 deletions

View File

@ -30,3 +30,7 @@ export const qualificationApplyRejectReason = declareRequest(
"qualificationApplyLoading", "qualificationApplyLoading",
`Get > /xgfManager/qualificationsApply/getRejectReason/{id}`, `Get > /xgfManager/qualificationsApply/getRejectReason/{id}`,
); );
export const invalidateQualifications = declareRequest(
"qualificationApplyLoading",
`Get > /xgfManager/qualificationsApply/invalidateQualifications/{id}`,
);

View File

@ -18,7 +18,7 @@ export const inCheckList = declareRequest(
`Post > @/xgfManager/project/inCheckList`, `Post > @/xgfManager/project/inCheckList`,
); );
export const userList = declareRequest( export const userList = declareRequest(
`Post > @/basicInfo/user/list`, `Post > @/basicInfo/user/pageByNopermission`,
); );
export const projectAdd = declareRequest( export const projectAdd = declareRequest(
"qualificationStatisticsLoading", "qualificationStatisticsLoading",
@ -83,3 +83,7 @@ export const projectUserChangeRecordList = declareRequest(
"qualificationStatisticsLoading", "qualificationStatisticsLoading",
`Post > @/xgfManager/projectUserChangeRecord/list`, `Post > @/xgfManager/projectUserChangeRecord/list`,
); );
export const qualificationsTypeList = declareRequest(
"qualificationStatisticsLoading",
`Post > @/xgfManager/qualifications/projectUserChangeRecord/list`,
);

View File

@ -9,13 +9,11 @@ import useTable from "zy-react-library/hooks/useTable";
import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace"; import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace";
const ViewProjectReviewUserModal = (props) => { const ViewProjectReviewUserModal = (props) => {
const eqQualificationinfoType = props.data.eqQualificationinfoType;
const [form] = Form.useForm(); const [form] = Form.useForm();
const { loading: getFileLoading, getFile } = useGetFile(); const { loading: getFileLoading, getFile } = useGetFile();
const { tableProps } = useTable(props["userQualificationInfo"], { const { tableProps } = useTable(props["userQualificationInfo"], {
form, form,
params: { params: {
eqQualificationinfoType: props.data.eqQualificationinfoType,
eqUserld: props.data.id, eqUserld: props.data.id,
}, },
}); });
@ -59,7 +57,6 @@ const ViewProjectReviewUserModal = (props) => {
dataSource: tableData.length > 0 ? tableData : tableProps.dataSource || [], dataSource: tableData.length > 0 ? tableData : tableProps.dataSource || [],
}), [tableProps, tableData]); }), [tableProps, tableData]);
if (eqQualificationinfoType === 1) {
return ( return (
<Modal <Modal
title="特种作业人员证书" title="特种作业人员证书"
@ -85,34 +82,6 @@ const ViewProjectReviewUserModal = (props) => {
/> />
</Modal> </Modal>
); );
}
else {
return (
<Modal
title="安全人员证书列表"
width={1200}
open
maskClosable={false}
onCancel={props.onCancel}
footer={[
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
]}
>
<Table
columns={[
{ title: "姓名", dataIndex: "userName" },
{ title: "证书名称", dataIndex: "qualificationName" },
{ title: "证书作业类别", dataIndex: "qualificationinfoCategoryName" },
{ title: "证书编号", dataIndex: "certificateNo" },
{ title: "就职状态", dataIndex: "employmentFlagName" },
{ title: "图片", dataIndex: "files", render: (_, record) => (<TooltipPreviewImg files={record.files} />) },
]}
{...enhancedTableProps}
/>
</Modal>
);
}
}; };
export default Connect([NS_QUALIFICATION_STATISTICS], true)(ViewProjectReviewUserModal); export default Connect([NS_QUALIFICATION_STATISTICS], true)(ViewProjectReviewUserModal);

View File

@ -49,7 +49,7 @@ function List(props) {
columns={[ columns={[
{ title: "项目名称", dataIndex: "projectName" }, { title: "项目名称", dataIndex: "projectName" },
{ title: "是否为属地公司推荐", dataIndex: "isLocalCompany", render: (_, record) => record.isLocalCompany === 1 ? "是" : "否" }, { title: "是否为属地公司推荐", dataIndex: "isLocalCompany", render: (_, record) => record.isLocalCompany === 1 ? "是" : "否" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ title: "主管部门", dataIndex: "manageDeptName" }, { title: "主管部门", dataIndex: "manageDeptName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag === 1 ? "是" : "否" }, { title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag === 1 ? "是" : "否" },

View File

@ -52,7 +52,7 @@ function List(props) {
{ title: "项目名称", dataIndex: "projectName" }, { title: "项目名称", dataIndex: "projectName" },
{ title: "股份主管部门", dataIndex: "manageDeptName" }, { title: "股份主管部门", dataIndex: "manageDeptName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ {
title: "项目备案审核状态", title: "项目备案审核状态",
dataIndex: "projectStatus", dataIndex: "projectStatus",

View File

@ -43,7 +43,7 @@ function List(props) {
{ title: "项目名称", dataIndex: "projectName" }, { title: "项目名称", dataIndex: "projectName" },
{ title: "股份主管部门", dataIndex: "manageDeptName" }, { title: "股份主管部门", dataIndex: "manageDeptName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ {
title: "项目备案审核状态", title: "项目备案审核状态",
dataIndex: "projectStatus", dataIndex: "projectStatus",

View File

@ -52,7 +52,7 @@ function List(props) {
{ title: "项目名称", dataIndex: "projectName" }, { title: "项目名称", dataIndex: "projectName" },
{ title: "股份主管部门", dataIndex: "manageDeptName" }, { title: "股份主管部门", dataIndex: "manageDeptName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ {
title: "项目备案审核状态", title: "项目备案审核状态",
dataIndex: "projectStatus", dataIndex: "projectStatus",

View File

@ -43,7 +43,7 @@ function List(props) {
{ title: "股份主管部门", dataIndex: "manageDeptName" }, { title: "股份主管部门", dataIndex: "manageDeptName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "二级项目数", dataIndex: "secondLevelTotal" }, { title: "二级项目数", dataIndex: "secondLevelTotal" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ {
title: "项目备案审核状态", title: "项目备案审核状态",
dataIndex: "projectStatus", dataIndex: "projectStatus",

View File

@ -47,12 +47,12 @@ function List(props) {
/> />
<Table <Table
columns={[ columns={[
{ title: "一级相关方名称(集团单位)", dataIndex: "parentProjectCorpName" }, { title: "集团单位名称", dataIndex: "parentProjectCorpName" },
{ title: "所属一级项目", dataIndex: "parentProjectName" }, { title: "一级项目名称", dataIndex: "parentProjectName" },
{ title: "相关方名称", dataIndex: "corpinfoName" }, { title: "相关方名称", dataIndex: "corpinfoName" },
{ title: "项目名称", dataIndex: "projectName" }, { title: "项目名称", dataIndex: "projectName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ {
title: "项目备案审核状态", title: "项目备案审核状态",
dataIndex: "projectStatus", dataIndex: "projectStatus",

View File

@ -37,12 +37,13 @@ function List(props) {
/> />
<Table <Table
columns={[ columns={[
{ title: "一级相关方名称(集团单位)", dataIndex: "parentProjectCorpName" }, { title: "集团单位名称", dataIndex: "parentProjectCorpName" },
{ title: "所属一级项目", dataIndex: "parentProjectName" }, { title: "一级项目名称", dataIndex: "parentProjectName" },
{ title: "相关方名称", dataIndex: "corpinfoName" }, { title: "相关方名称", dataIndex: "corpinfoName" },
{ title: "项目名称", dataIndex: "projectName" }, { title: "二级项目名称", dataIndex: "projectName" },
{ title: "项目属地单位", dataIndex: "companyName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "项目执行属地公司", dataIndex: "companyName" },
{ {
title: "项目备案审核状态", title: "项目备案审核状态",
dataIndex: "projectStatus", dataIndex: "projectStatus",

View File

@ -14,6 +14,7 @@ import Table from "zy-react-library/components/Table";
import Upload from "zy-react-library/components/Upload"; import Upload from "zy-react-library/components/Upload";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo";
import useDeleteFile from "zy-react-library/hooks/useDeleteFile"; import useDeleteFile from "zy-react-library/hooks/useDeleteFile";
import useGetFile from "zy-react-library/hooks/useGetFile"; import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
@ -24,8 +25,10 @@ import ViewProjectReviewUserModal from "~/components/ViewProjectReviewUserModal"
import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace"; import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace";
function Add(props) { function Add(props) {
const { getUserInfo } = useGetUserInfo();
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const [form] = Form.useForm(); const [form] = Form.useForm();
const [userInfo, setUserInfo] = useState({});
const [currentStep, setCurrentStep] = useState(1); const [currentStep, setCurrentStep] = useState(1);
const [formValues, setFormValues] = useState({}); const [formValues, setFormValues] = useState({});
const [projectFileAddCmdList, setProjectFileAddCmdList] = useState([]); // 项目资料 const [projectFileAddCmdList, setProjectFileAddCmdList] = useState([]); // 项目资料
@ -33,6 +36,7 @@ function Add(props) {
const [projectLocalCompanyAddCmdList, setProjectLocalCompanyAddCmdList] = useState([]); // 项目执行属地公司 const [projectLocalCompanyAddCmdList, setProjectLocalCompanyAddCmdList] = useState([]); // 项目执行属地公司
const [projectApprovalUserAddCmdList, setProjectApprovalUserAddCmdList] = useState([]); // 项目审核人员 const [projectApprovalUserAddCmdList, setProjectApprovalUserAddCmdList] = useState([]); // 项目审核人员
const [projectApprovalFlowAddCmdList, setProjectApprovalFlowAddCmdList] = useState([]); // 项目审核流程 const [projectApprovalFlowAddCmdList, setProjectApprovalFlowAddCmdList] = useState([]); // 项目审核流程
const [qualificationsTypeId, setQualificationsTypeId] = useState(); // 资质类型
const [corpinfoId, setCorpinfoId] = useState(); // 项目id const [corpinfoId, setCorpinfoId] = useState(); // 项目id
const { getFile } = useGetFile(); const { getFile } = useGetFile();
// 获取详情数据 // 获取详情数据
@ -68,7 +72,13 @@ function Add(props) {
setCorpinfoId(data.corpinfoId); setCorpinfoId(data.corpinfoId);
}; };
const getCurrentUserInfo = async () => {
const userInfo = await getUserInfo();
setUserInfo(userInfo);
};
useEffect(() => { useEffect(() => {
getCurrentUserInfo();
query.id && getData(); query.id && getData();
}, []); }, []);
@ -82,8 +92,10 @@ function Add(props) {
setCurrentStep={setCurrentStep} setCurrentStep={setCurrentStep}
formValues={formValues} formValues={formValues}
form={form} form={form}
userInfo={userInfo}
usercontentAddCmdList={usercontentAddCmdList} usercontentAddCmdList={usercontentAddCmdList}
setUsercontentAddCmdList={setUsercontentAddCmdList} setUsercontentAddCmdList={setUsercontentAddCmdList}
setQualificationsTypeId={setQualificationsTypeId}
/> />
)} )}
{currentStep === 2 {currentStep === 2
@ -100,6 +112,7 @@ function Add(props) {
projectApprovalUserAddCmdList={projectApprovalUserAddCmdList} projectApprovalUserAddCmdList={projectApprovalUserAddCmdList}
projectApprovalFlowAddCmdList={projectApprovalFlowAddCmdList} projectApprovalFlowAddCmdList={projectApprovalFlowAddCmdList}
corpinfoId={corpinfoId} corpinfoId={corpinfoId}
qualificationsTypeId={qualificationsTypeId}
/> />
)} )}
</> </>
@ -116,27 +129,34 @@ const StepOneComponent = (props) => {
const recommendCorpId = Form.useWatch("recommendCorpId", form); const recommendCorpId = Form.useWatch("recommendCorpId", form);
const recommendDeptId = Form.useWatch("recommendDeptId", form); const recommendDeptId = Form.useWatch("recommendDeptId", form);
const [corpInfoList, setCorpInfoList] = useState([]); // 项目执行属地公司 const [corpInfoList, setCorpInfoList] = useState([]); // 项目执行属地公司
const [cropList, setCorpList] = useState([]); // 项目审核公司
const startProjectTime = Form.useWatch("startProjectTime", form); // 项目开始时间 const startProjectTime = Form.useWatch("startProjectTime", form); // 项目开始时间
const [deptList, setDeptList] = useState([]); const [deptList, setDeptList] = useState([]);
const [userList, setUserList] = useState([]); const [userList, setUserList] = useState([]);
const [qualificationsTypeList, setQualificationsTypeList] = useState([]);
// 获取项目执行属地公司数据 // 获取项目执行属地公司数据
const getCorpInfoList = async () => { const getCorpInfoList = async () => {
const { data } = await props["corpInfoList"]({ pageIndex: 1, pageSize: 1000, inType: [0, 1, 2] }); const { data } = await props["corpInfoList"]({ pageIndex: 1, pageSize: 1000, inType: [0] });
setCorpInfoList(data); setCorpInfoList(data);
}; };
// 获取项目执行属地公司名称列表数据 // 获取资质类型数据
const getCropList = async () => { const getQualificationsTypeList = async () => {
const { data } = await props["corpInfoList"]({ pageIndex: 1, pageSize: 1000, inType: [1] }); const { data } = await props["qualificationsTypeList"]();
setCorpList(data); setQualificationsTypeList(data);
}; };
// 获取项目执行属地公司名称列表数据
const getDeptList = async (id) => { const getDeptList = async (id) => {
const { data } = await props["deptListByType"]({ qualificationsTypeId: id }); const { data } = await props["deptListByType"]({ qualificationsTypeId: id });
setDeptList(data); setDeptList(data);
}; };
const getUserList = async (id) => { const getUserList = async (id) => {
const { data } = id ? await props["userListByDeptId"]({ id }) : []; const { data } = id ? await props["userListByDeptId"]({ id }) : [];
setUserList(data); // 去重
const uniqueUsers = data.filter((item, index, self) =>
index === self.findIndex((t) => (
t.userId === item.userId && t.userName === item.userName
))
);
setUserList(uniqueUsers);
}; };
const handleProjectLeaderChange = (label, extraInfo) => { const handleProjectLeaderChange = (label, extraInfo) => {
if (!extraInfo.userId) if (!extraInfo.userId)
@ -176,7 +196,7 @@ const StepOneComponent = (props) => {
}; };
useEffect(() => { useEffect(() => {
getCorpInfoList(); getCorpInfoList();
getCropList(); getQualificationsTypeList();
if (props.formValues.isLocalCompany === 0) { if (props.formValues.isLocalCompany === 0) {
getDeptList(props.formValues.qualificationsTypeId); getDeptList(props.formValues.qualificationsTypeId);
getUserList(props.formValues.manageDeptId); getUserList(props.formValues.manageDeptId);
@ -206,6 +226,7 @@ const StepOneComponent = (props) => {
}, [props.formValues]); }, [props.formValues]);
return ( return (
<FormBuilder <FormBuilder
labelCol={{ span: 5 }}
form={form} form={form}
span={8} span={8}
loading={props.qualificationStatistics.qualificationStatisticsLoading} loading={props.qualificationStatistics.qualificationStatisticsLoading}
@ -218,37 +239,40 @@ const StepOneComponent = (props) => {
options={[ options={[
{ label: "项目基础信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER }, { label: "项目基础信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
{ name: "projectName", label: "项目名称" }, { name: "projectName", label: "项目名称" },
{ name: "userId", label: "项目负责人", render: ( {
<PersonnelSelect name: "userId", label: "项目负责人", render: (
isNeedDepartmentId={false} <PersonnelSelect
onGetLabel={(label) => { isNeedCorpInfoId={true}
form.setFieldValue("userName", label); params={{ corpinfoId: props.userInfo?.corpinfoId || "" }}
}} isNeedDepartmentId={false}
onGetOption={(option) => { onGetLabel={(label) => {
if (option) { form.setFieldValue("userName", label);
const extraInfo = { }}
name: option.name, onGetOption={(option) => {
phone: option.phone || "", if (option) {
postName: option.postName || "", const extraInfo = {
departmentId: option.departmentId || "", name: option.name,
departmentName: option.departmentName || "", phone: option.phone || "",
userId: option.id, postName: option.postName || "",
}; departmentId: option.departmentId || "",
handleProjectLeaderChange(option.name, extraInfo); departmentName: option.departmentName || "",
} userId: option.id,
}} };
/> handleProjectLeaderChange(option.name, extraInfo);
), componentProps: { }
onChange: (userId) => { }}
if (!userId) { onChange={(userId) => {
// 如果清空了项目负责人,从项目人员列表中移除 if (!userId) {
const newUserList = props.usercontentAddCmdList.filter( // 如果清空了项目负责人,从项目人员列表中移除
item => item.projectLeader !== 1, const newUserList = props.usercontentAddCmdList.filter(
); item => item.projectLeader !== 1,
props.setUsercontentAddCmdList(newUserList); );
} props.setUsercontentAddCmdList(newUserList);
}, }
} }, }}
/>
)
},
{ name: "userName", label: "项目负责人", onlyForLabel: true }, { name: "userName", label: "项目负责人", onlyForLabel: true },
{ name: "initiationTime", label: "立项时间", render: FORM_ITEM_RENDER_ENUM.DATE }, { name: "initiationTime", label: "立项时间", render: FORM_ITEM_RENDER_ENUM.DATE },
{ name: "startProjectTime", label: "计划开始时间", render: FORM_ITEM_RENDER_ENUM.DATE }, { name: "startProjectTime", label: "计划开始时间", render: FORM_ITEM_RENDER_ENUM.DATE },
@ -256,47 +280,71 @@ const StepOneComponent = (props) => {
{ name: "chooseForm", label: "项目选取形式", render: <DictionarySelect dictValue="project_choose_form" onGetLabel={label => form.setFieldValue("chooseFormName", label)} /> }, { name: "chooseForm", label: "项目选取形式", render: <DictionarySelect dictValue="project_choose_form" onGetLabel={label => form.setFieldValue("chooseFormName", label)} /> },
{ name: "chooseFormName", label: "项目选取形式名称", onlyForLabel: true }, { name: "chooseFormName", label: "项目选取形式名称", onlyForLabel: true },
{ name: "fourNewFlag", label: "是否涉及四新工作内容", labelCol: { span: 8 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] }, { name: "fourNewFlag", label: "是否涉及四新工作内容", labelCol: { span: 8 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] },
{ name: "threePeopleFlag", label: "是否涉及三人及以上工作内容", labelCol: { span: 8 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] }, { name: "threePeopleFlag", label: "是否涉及三人及以上工作内容", labelCol: { span: 9 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] },
{ name: "nightWorkFlag", label: "是否涉及夜间作业", labelCol: { span: 8 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] }, { name: "nightWorkFlag", label: "是否涉及夜间作业", labelCol: { span: 8 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] },
{ name: "specialFlag", label: "是否包含特殊作业", labelCol: { span: 8 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] }, { name: "specialFlag", label: "是否包含特殊作业", labelCol: { span: 8 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] },
{ label: "项目审核信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER }, { label: "项目审核信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
{ name: "qualificationsTypeId", label: "项目类别", span: 24, wrapperCol: { span: 5 }, render: ( {
<DictionarySelect name: "qualificationsTypeId", label: "项目类别", span: 24, wrapperCol: { span: 5 },
dictValue="qualificationsType" items: qualificationsTypeList,
onGetLabel={label => form.setFieldValue("qualificationsTypeName", label)} render: FORM_ITEM_RENDER_ENUM.SELECT,
style={{ width: "100%" }} itemsField: { valueKey: "qualificationsTypeId", labelKey: "qualificationsTypeName" },
onChange={() => {}} onGetLabel: (label) => {
/> form.setFieldValue("qualificationsTypeName", label);
) }, },
componentProps: {
onChange: (event) => {
if (form.getFieldValue("isLocalCompany") === 0) {
getDeptList(event);
}
props.setQualificationsTypeId(event);
form.setFieldsValue({
recommendCorpId: "",
recommendCorpName: "",
recommendDeptId: "",
recommendDeptName: "",
recommendUserIds: [],
recommendUserNames: "",
manageDeptId: "",
manageDeptName: "",
manageUserIds: [],
manageUserNames: "",
});
},
},
},
{ name: "qualificationsTypeName", label: "项目类别名称", onlyForLabel: true },
{ {
span: 24, span: 24,
render: ( render: (
<div style={{ fontSize: 12, color: "red", whiteSpace: "nowrap", marginTop: "-8px", marginBottom: "16px", marginLeft: "112px" }}> <div style={{ fontSize: 12, color: "red", whiteSpace: "nowrap", marginTop: "-8px", marginBottom: "16px", marginLeft: "112px" }}>
如果选择项目类别或等级没有您相应的选项时请在"资质准入管理"中查看是否持有对应类比或等级的相关资质 如果选择项目类别或等级没有您相应的选项时请在"资质准入管理"中查看是否持有对应类或等级的相关资质
</div> </div>
), ),
}, },
{ name: "qualificationsTypeName", label: "项目类别名称", onlyForLabel: true }, { name: "qualificationsTypeName", label: "项目类别名称", onlyForLabel: true },
{ name: "subcontractFlag", label: "是否存在分包项目", span: 24, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] }, { name: "subcontractFlag", label: "是否存在分包项目", span: 24, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] },
{ name: "isLocalCompany", label: "是否为属地公司推荐", span: 24, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }], componentProps: { {
onChange: (event) => { name: "isLocalCompany", label: "是否为属地公司推荐", span: 24, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }], componentProps: {
if (event.target.value === 0) { onChange: (event) => {
getDeptList(qualificationsTypeId); if (event.target.value === 0) {
} getDeptList(qualificationsTypeId);
form.setFieldsValue({ }
recommendCorpId: "", form.setFieldsValue({
recommendCorpName: "", recommendCorpId: "",
recommendDeptId: "", recommendCorpName: "",
recommendDeptName: "", recommendDeptId: "",
recommendUserIds: [], recommendDeptName: "",
recommendUserNames: "", recommendUserIds: [],
manageDeptId: "", recommendUserNames: "",
manageDeptName: "", manageDeptId: "",
manageUserIds: [], manageDeptName: "",
manageUserNames: "", manageUserIds: [],
}); manageUserNames: "",
}, });
} }, },
}
},
{ {
span: 24, span: 24,
render: ( render: (
@ -307,104 +355,104 @@ const StepOneComponent = (props) => {
}, },
...(isLocalCompany === 1 ...(isLocalCompany === 1
? [ ? [
{ {
name: "recommendCorpId", name: "recommendCorpId",
label: "推荐属地公司名称", label: "推荐属地公司名称",
labelCol: { span: 5 }, labelCol: { span: 6 },
items: cropList, items: corpInfoList,
render: FORM_ITEM_RENDER_ENUM.SELECT, render: FORM_ITEM_RENDER_ENUM.SELECT,
itemsField: { valueKey: "id", labelKey: "corpName" }, itemsField: { valueKey: "id", labelKey: "corpName" },
componentProps: { componentProps: {
onChange: (event) => { onChange: (event) => {
const label = cropList.find(item => item.id === event)?.corpName; const label = corpInfoList.find(item => item.id === event)?.corpName;
form.setFieldValue("recommendCorpName", label); form.setFieldValue("recommendCorpName", label);
form.setFieldsValue({
recommendDeptId: "",
recommendDeptName: "",
recommendUserIds: [],
recommendUserNames: "",
});
},
},
},
{ name: "recommendCorpName", label: "推荐属地公司名称", onlyForLabel: true },
{
name: "recommendDeptId",
labelCol: { span: 6 },
label: "推荐属地公司部门",
render: (
<DepartmentSelectTree
params={{ eqCorpinfoId: recommendCorpId }}
isNeedCorpInfoId
onGetLabel={label => form.setFieldValue("recommendDeptName", label)}
onChange={() => {
form.setFieldsValue({ form.setFieldsValue({
recommendDeptId: "",
recommendDeptName: "",
recommendUserIds: [], recommendUserIds: [],
recommendUserNames: "", recommendUserNames: "",
}); });
}, }}
}, />
}, ),
{ name: "recommendCorpName", label: "推荐属地公司名称", onlyForLabel: true }, },
{ { name: "recommendDeptName", label: "推荐属地公司部门", onlyForLabel: true },
name: "recommendDeptId", {
labelCol: { span: 5 }, name: "recommendUserIds",
label: "推荐属地公司部门", label: "推荐属地公司人员",
render: ( span: 8,
<DepartmentSelectTree labelCol: { span: 6 },
params={{ eqCorpinfoId: recommendCorpId }} wrapperCol: { span: 19 },
isNeedCorpInfoId render: (
onGetLabel={label => form.setFieldValue("recommendDeptName", label)} <PersonnelSelect
onChange={() => { params={{ departmentId: recommendDeptId }}
form.setFieldsValue({ onGetLabel={label => form.setFieldValue("recommendUserNames", label)}
recommendUserIds: [], mode="multiple"
recommendUserNames: "", />
}); ),
}} },
/> { name: "recommendUserNames", label: "推荐属地公司人员", onlyForLabel: true },
), ]
},
{ name: "recommendDeptName", label: "推荐属地公司部门", onlyForLabel: true },
{
name: "recommendUserIds",
label: "推荐属地公司人员",
span: 8,
labelCol: { span: 5 },
wrapperCol: { span: 19 },
render: (
<PersonnelSelect
params={{ departmentId: recommendDeptId }}
onGetLabel={label => form.setFieldValue("recommendUserNames", label)}
mode="multiple"
/>
),
},
{ name: "recommendUserNames", label: "推荐属地公司人员", onlyForLabel: true },
]
: [ : [
{ {
name: "manageDeptId", name: "manageDeptId",
labelCol: { span: 5 }, labelCol: { span: 5 },
label: "选择主管部门", label: "选择主管部门",
render: FORM_ITEM_RENDER_ENUM.SELECT, render: FORM_ITEM_RENDER_ENUM.SELECT,
items: deptList, items: deptList,
itemsField: { valueKey: "deptId", labelKey: "deptName" }, itemsField: { valueKey: "deptId", labelKey: "deptName" },
componentProps: { componentProps: {
onChange: (event) => { onChange: (event) => {
const label = deptList.find(item => item.deptId === event)?.deptName; const label = deptList.find(item => item.deptId === event)?.deptName;
form.setFieldValue("manageDeptName", label); form.setFieldValue("manageDeptName", label);
form.setFieldsValue({ form.setFieldsValue({
manageUserIds: [], manageUserIds: [],
recommendUserNames: "", recommendUserNames: "",
}); });
getUserList(event); getUserList(event);
},
}, },
}, },
{ name: "manageDeptName", label: "选择主管部门名称", onlyForLabel: true }, },
{ { name: "manageDeptName", label: "选择主管部门名称", onlyForLabel: true },
name: "manageUserIds", {
label: "主管部门审核人", name: "manageUserIds",
span: 16, label: "主管部门审核人",
labelCol: { span: 3 }, span: 16,
wrapperCol: { span: 8 }, labelCol: { span: 3 },
render: FORM_ITEM_RENDER_ENUM.SELECT, wrapperCol: { span: 8 },
items: userList, render: FORM_ITEM_RENDER_ENUM.SELECT,
itemsField: { valueKey: "userId", labelKey: "userName" }, items: userList,
componentProps: { itemsField: { valueKey: "userId", labelKey: "userName" },
mode: "multiple", componentProps: {
onChange: (event) => { mode: "multiple",
const labels = event onChange: (event) => {
.map(userId => userList.find(item => item.userId === userId)?.userName) const labels = event
.filter(Boolean); .map(userId => userList.find(item => item.userId === userId)?.userName)
form.setFieldValue("manageUserNames", labels); .filter(Boolean);
}, form.setFieldValue("manageUserNames", labels);
}, },
}, },
{ name: "manageUserNames", label: "主管部门审核人名称", onlyForLabel: true }, },
]), { name: "manageUserNames", label: "主管部门审核人名称", onlyForLabel: true },
]),
{ {
render: ( render: (
<div style={{ fontSize: 12, color: "red", whiteSpace: "nowrap", marginTop: "-8px", marginBottom: "16px", marginLeft: "112px" }}> <div style={{ fontSize: 12, color: "red", whiteSpace: "nowrap", marginTop: "-8px", marginBottom: "16px", marginLeft: "112px" }}>
@ -416,7 +464,7 @@ const StepOneComponent = (props) => {
{ {
name: "approvalCorpId", name: "approvalCorpId",
label: "项目执行属地公司名称", label: "项目执行属地公司名称",
labelCol: { span: 5 }, labelCol: { span: 7 },
items: corpInfoList, items: corpInfoList,
render: FORM_ITEM_RENDER_ENUM.SELECT, render: FORM_ITEM_RENDER_ENUM.SELECT,
itemsField: { valueKey: "id", labelKey: "corpName" }, itemsField: { valueKey: "id", labelKey: "corpName" },
@ -436,7 +484,7 @@ const StepOneComponent = (props) => {
{ name: "approvalCorpName", label: "项目执行属地公司名称", onlyForLabel: true }, { name: "approvalCorpName", label: "项目执行属地公司名称", onlyForLabel: true },
{ {
name: "approvalDeptId", name: "approvalDeptId",
labelCol: { span: 5 }, labelCol: { span: 7 },
label: "项目执行属地公司部门", label: "项目执行属地公司部门",
render: ( render: (
<DepartmentSelectTree <DepartmentSelectTree
@ -456,7 +504,7 @@ const StepOneComponent = (props) => {
{ {
name: "approvalUserIds", name: "approvalUserIds",
label: "项目执行属地公司人员", label: "项目执行属地公司人员",
labelCol: { span: 5 }, labelCol: { span: 7 },
render: ( render: (
<PersonnelSelect <PersonnelSelect
params={{ departmentId: approvalDeptId }} params={{ departmentId: approvalDeptId }}
@ -466,17 +514,19 @@ const StepOneComponent = (props) => {
), ),
}, },
{ name: "approvalUserNames", label: "项目执行属地公司人员名称", onlyForLabel: true }, { name: "approvalUserNames", label: "项目执行属地公司人员名称", onlyForLabel: true },
{ name: "projectFiles", label: "安全管理协议", span: 24, render: ( {
<Upload name: "projectFiles", label: "安全管理协议", span: 24, render: (
fileType="image" <Upload
maxCount={5} fileType="image"
accept=".pdf,.jpg,.jpeg,.png" maxCount={5}
size={40} accept=".pdf,.jpg,.jpeg,.png"
onGetRemoveFile={(file) => { size={40}
form.setFieldValue("deleteProjectFileAddCmdList", [...(form.getFieldValue("deleteProjectFileAddCmdList") || []), file]); onGetRemoveFile={(file) => {
}} form.setFieldValue("deleteProjectFileAddCmdList", [...(form.getFieldValue("deleteProjectFileAddCmdList") || []), file]);
/> }}
) }, />
)
},
{ name: "deleteProjectFileAddCmdList", label: "删除的安全管理协议", onlyForLabel: true }, { name: "deleteProjectFileAddCmdList", label: "删除的安全管理协议", onlyForLabel: true },
{ name: "agreementFileUuid", label: "安全协议uuid", onlyForLabel: true }, { name: "agreementFileUuid", label: "安全协议uuid", onlyForLabel: true },
{ name: "stakeholderLevel", onlyForLabel: true }, { name: "stakeholderLevel", onlyForLabel: true },
@ -761,23 +811,10 @@ const StepTwoComponent = (props) => {
setViewProjectReviewUserModalOpen(true); setViewProjectReviewUserModalOpen(true);
setViewProjectReviewUserModalData({ setViewProjectReviewUserModalData({
...record, ...record,
eqQualificationinfoType: 1,
}); });
}} }}
> >
特种作业人员证书 查看特种证书
</Button>
<Button
type="link"
onClick={() => {
setViewProjectReviewUserModalOpen(true);
setViewProjectReviewUserModalData({
...record,
eqQualificationinfoType: 2,
});
}}
>
安全人员证书列表
</Button> </Button>
</Space> </Space>
), ),
@ -804,6 +841,7 @@ const StepTwoComponent = (props) => {
{uploadFileModalOpen && ( {uploadFileModalOpen && (
<FileUpload <FileUpload
data={uploadFileModalData} data={uploadFileModalData}
qualificationsTypeId={props.qualificationsTypeId}
onCancel={() => { onCancel={() => {
setUploadFileModalOpen(false); setUploadFileModalOpen(false);
}} }}
@ -841,7 +879,7 @@ const ChooseFilsComponent = (props) => {
const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据 const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据
const { tableProps } = useTable(props["qualificationsDetails"], { const { tableProps } = useTable(props["qualificationsDetails"], {
params: { params: {
qualificationsTypeId: "", qualificationsTypeId: props.qualificationsTypeId,
}, },
useStorageQueryCriteria: false, useStorageQueryCriteria: false,
}); });

View File

@ -71,7 +71,7 @@ function List(props) {
columns={[ columns={[
{ title: "项目名称", dataIndex: "projectName" }, { title: "项目名称", dataIndex: "projectName" },
{ title: "是否为属地公司推荐", dataIndex: "isLocalCompany", render: (_, record) => record.isLocalCompany === 1 ? "是" : "否" }, { title: "是否为属地公司推荐", dataIndex: "isLocalCompany", render: (_, record) => record.isLocalCompany === 1 ? "是" : "否" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ title: "主管部门", dataIndex: "manageDeptName" }, { title: "主管部门", dataIndex: "manageDeptName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag === 1 ? "是" : "否" }, { title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag === 1 ? "是" : "否" },

View File

@ -266,7 +266,7 @@ function Review(props) {
{ label: "立项时间", children: info.initiationTime }, { label: "立项时间", children: info.initiationTime },
{ label: "计划开始时间", children: info.startProjectTime }, { label: "计划开始时间", children: info.startProjectTime },
{ label: "计划竣工时间", children: info.endProjectTime }, { label: "计划竣工时间", children: info.endProjectTime },
{ label: "选取形式", children: info.chooseForm }, { label: "选取形式", children: info.chooseFormName },
{ label: "是否涉及四新工作内容", children: info.fourNewFlag === 1 ? "是" : "否" }, { label: "是否涉及四新工作内容", children: info.fourNewFlag === 1 ? "是" : "否" },
{ label: "是否涉及三人及以上工作内容", children: info.threePeopleFlag === 1 ? "是" : "否" }, { label: "是否涉及三人及以上工作内容", children: info.threePeopleFlag === 1 ? "是" : "否" },
{ label: "是否涉及夜间作业", children: info.nightWorkFlag === 1 ? "是" : "否" }, { label: "是否涉及夜间作业", children: info.nightWorkFlag === 1 ? "是" : "否" },
@ -292,7 +292,7 @@ function Review(props) {
{ label: "单位经营地址", children: info.corpInfo?.addressBusiness }, { label: "单位经营地址", children: info.corpInfo?.addressBusiness },
{ label: "企业规模", children: info.corpInfo?.scaleName }, { label: "企业规模", children: info.corpInfo?.scaleName },
{ label: "法定代表人姓名", children: info.corpInfo?.lrName }, { label: "法定代表人姓名", children: info.corpInfo?.lrName },
{ label: "定代表人电话", children: info.corpInfo?.lrMobile }, { label: "定代表人电话", children: info.corpInfo?.lrMobile },
{ label: "主要负责人姓名", children: info.corpInfo?.contacts }, { label: "主要负责人姓名", children: info.corpInfo?.contacts },
{ label: "主要负责人电话", children: info.corpInfo?.contactsPhone }, { label: "主要负责人电话", children: info.corpInfo?.contactsPhone },
{ label: "成立日期", children: info.corpInfo?.createDate }, { label: "成立日期", children: info.corpInfo?.createDate },
@ -301,7 +301,7 @@ function Review(props) {
{ label: "注册资金(万元)", children: info.corpInfo?.regcapital }, { label: "注册资金(万元)", children: info.corpInfo?.regcapital },
{ label: "企业类型", children: getLabelName({ list: typeList, status: info.corpInfo?.type }) }, { label: "企业类型", children: getLabelName({ list: typeList, status: info.corpInfo?.type }) },
{ label: "营业执照", children: <TooltipPreviewImg files={info.corpInfo?.files || []} /> }, { label: "营业执照", children: <TooltipPreviewImg files={info.corpInfo?.files || []} /> },
{ label: "营业执照有效期", children: `${info.corpInfo?.licenseStart}-${info.corpInfo?.licenseEnd}` }, { label: "营业执照有效期", children: info.corpInfo?.licenseStart ? `${info.corpInfo?.licenseStart}-${info.corpInfo?.licenseEnd}` : "-" },
{ label: "", children: "" }, { label: "", children: "" },
]} ]}
/> />
@ -371,7 +371,7 @@ function Review(props) {
/> />
</div> </div>
{info.subcontractFlag === 1 && ( {info.subcontractFlag === 1 && info.subcontractProjectList && info.subcontractProjectList.length > 0 && (
<div> <div>
<Divider orientation="left">分包项目信息详情</Divider> <Divider orientation="left">分包项目信息详情</Divider>
<Table <Table

View File

@ -50,7 +50,7 @@ function List(props) {
columns={[ columns={[
{ title: "项目名称", dataIndex: "projectName" }, { title: "项目名称", dataIndex: "projectName" },
{ title: "是否为属地公司推荐", dataIndex: "isLocalCompany", render: (_, record) => record.isLocalCompany === 1 ? "是" : "否" }, { title: "是否为属地公司推荐", dataIndex: "isLocalCompany", render: (_, record) => record.isLocalCompany === 1 ? "是" : "否" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ title: "主管部门", dataIndex: "manageDeptName" }, { title: "主管部门", dataIndex: "manageDeptName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag ? "是" : "否" }, { title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag ? "是" : "否" },

View File

@ -16,6 +16,7 @@ import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useDeleteFile from "zy-react-library/hooks/useDeleteFile"; import useDeleteFile from "zy-react-library/hooks/useDeleteFile";
import useGetFile from "zy-react-library/hooks/useGetFile"; import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import useUploadFile from "zy-react-library/hooks/useUploadFile"; import useUploadFile from "zy-react-library/hooks/useUploadFile";
@ -24,18 +25,26 @@ import ViewProjectReviewUserModal from "~/components/ViewProjectReviewUserModal"
import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace"; import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace";
function Add(props) { function Add(props) {
const { getUserInfo } = useGetUserInfo();
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const [form] = Form.useForm(); const [form] = Form.useForm();
const [userInfo, setUserInfo] = useState({});
const [currentStep, setCurrentStep] = useState(1); const [currentStep, setCurrentStep] = useState(1);
const [formValues, setFormValues] = useState({}); const [formValues, setFormValues] = useState({});
const [projectFileAddCmdList, setProjectFileAddCmdList] = useState([]); // 项目资料 const [projectFileAddCmdList, setProjectFileAddCmdList] = useState([]); // 项目资料
const [usercontentAddCmdList, setUsercontentAddCmdList] = useState([]); // 项目审核人员 const [usercontentAddCmdList, setUsercontentAddCmdList] = useState([]); // 项目审核人员
const [projectLocalCompanyAddCmdList, setProjectLocalCompanyAddCmdList] = useState([]); // 项目执行属地公司 const [projectLocalCompanyAddCmdList, setProjectLocalCompanyAddCmdList] = useState([]); // 项目属地单位
const [projectApprovalUserAddCmdList, setProjectApprovalUserAddCmdList] = useState([]); // 项目审核人员 const [projectApprovalUserAddCmdList, setProjectApprovalUserAddCmdList] = useState([]); // 项目审核人员
const [projectApprovalFlowAddCmdList, setProjectApprovalFlowAddCmdList] = useState([]); // 项目审核流程 const [projectApprovalFlowAddCmdList, setProjectApprovalFlowAddCmdList] = useState([]); // 项目审核流程
const [qualificationsTypeId, setQualificationsTypeId] = useState(); // 资质类型
const [corpinfoId, setCorpinfoId] = useState(); // 项目id const [corpinfoId, setCorpinfoId] = useState(); // 项目id
const { getFile } = useGetFile(); const { getFile } = useGetFile();
// 获取详情数据
const getCurrentUserInfo = async () => {
const userInfo = await getUserInfo();
setUserInfo(userInfo);
};
const getData = async () => { const getData = async () => {
const { data } = await props["projectDetail"]({ id: query.id }); const { data } = await props["projectDetail"]({ id: query.id });
if (data.agreementFileUuid) { if (data.agreementFileUuid) {
@ -69,6 +78,7 @@ function Add(props) {
}; };
useEffect(() => { useEffect(() => {
getCurrentUserInfo();
query.id && getData(); query.id && getData();
}, []); }, []);
@ -81,8 +91,10 @@ function Add(props) {
setCurrentStep={setCurrentStep} setCurrentStep={setCurrentStep}
formValues={formValues} formValues={formValues}
form={form} form={form}
userInfo={userInfo}
usercontentAddCmdList={usercontentAddCmdList} usercontentAddCmdList={usercontentAddCmdList}
setUsercontentAddCmdList={setUsercontentAddCmdList} setUsercontentAddCmdList={setUsercontentAddCmdList}
setQualificationsTypeId={setQualificationsTypeId}
/> />
)} )}
{currentStep === 2 {currentStep === 2
@ -99,6 +111,7 @@ function Add(props) {
projectApprovalUserAddCmdList={projectApprovalUserAddCmdList} projectApprovalUserAddCmdList={projectApprovalUserAddCmdList}
projectApprovalFlowAddCmdList={projectApprovalFlowAddCmdList} projectApprovalFlowAddCmdList={projectApprovalFlowAddCmdList}
corpinfoId={corpinfoId} corpinfoId={corpinfoId}
qualificationsTypeId={qualificationsTypeId}
/> />
)} )}
</Page> </Page>
@ -109,13 +122,20 @@ const StepOneComponent = (props) => {
const form = props.form; const form = props.form;
const approvalCorpId = Form.useWatch("approvalCorpId", form); // 项目审核部门公司 const approvalCorpId = Form.useWatch("approvalCorpId", form); // 项目审核部门公司
const approvalDeptId = Form.useWatch("approvalDeptId", form); // 项目审核部门 const approvalDeptId = Form.useWatch("approvalDeptId", form); // 项目审核部门
const [corpInfoList, setCorpInfoList] = useState([]); // 项目执行属地公司 const qualificationsTypeId = Form.useWatch("qualificationsTypeId", form);
const [corpInfoList, setCorpInfoList] = useState([]); // 项目属地单位
const startProjectTime = Form.useWatch("startProjectTime", form); // 项目开始时间 const startProjectTime = Form.useWatch("startProjectTime", form); // 项目开始时间
// 获取项目执行属地公司数据 const [qualificationsTypeList, setQualificationsTypeList] = useState([]);
// 获取项目属地单位数据
const getCorpInfoList = async () => { const getCorpInfoList = async () => {
const { data } = await props["corpInfoList"]({ pageIndex: 1, pageSize: 1000, inType: [0, 1, 2] }); const { data } = await props["corpInfoList"]({ pageIndex: 1, pageSize: 1000, inType: [0] });
setCorpInfoList(data); setCorpInfoList(data);
}; };
// 获取资质类型数据
const getQualificationsTypeList = async () => {
const { data } = await props["qualificationsTypeList"]();
setQualificationsTypeList(data);
};
const handleProjectLeaderChange = (label, extraInfo) => { const handleProjectLeaderChange = (label, extraInfo) => {
if (!extraInfo.userId) if (!extraInfo.userId)
return; return;
@ -154,6 +174,7 @@ const StepOneComponent = (props) => {
}; };
useEffect(() => { useEffect(() => {
getCorpInfoList(); getCorpInfoList();
getQualificationsTypeList();
form.setFieldsValue(props.formValues); form.setFieldsValue(props.formValues);
if (props.formValues.userId && props.formValues.userName) { if (props.formValues.userId && props.formValues.userName) {
const existingLeader = props.usercontentAddCmdList.find( const existingLeader = props.usercontentAddCmdList.find(
@ -179,6 +200,7 @@ const StepOneComponent = (props) => {
}, [props.formValues]); }, [props.formValues]);
return ( return (
<FormBuilder <FormBuilder
labelCol={{ span: 5 }}
form={form} form={form}
span={8} span={8}
loading={props.qualificationStatistics.qualificationStatisticsLoading} loading={props.qualificationStatistics.qualificationStatisticsLoading}
@ -193,6 +215,8 @@ const StepOneComponent = (props) => {
{ name: "projectName", label: "项目名称" }, { name: "projectName", label: "项目名称" },
{ name: "userId", label: "项目负责人", render: ( { name: "userId", label: "项目负责人", render: (
<PersonnelSelect <PersonnelSelect
isNeedCorpInfoId={true}
params={{ corpinfoId: props.userInfo?.corpinfoId || "" }}
isNeedDepartmentId={false} isNeedDepartmentId={false}
onGetLabel={(label) => { onGetLabel={(label) => {
form.setFieldValue("userName", label); form.setFieldValue("userName", label);
@ -210,6 +234,15 @@ const StepOneComponent = (props) => {
handleProjectLeaderChange(option.name, extraInfo); handleProjectLeaderChange(option.name, extraInfo);
} }
}} }}
onChange={(userId) => {
if (!userId) {
// 如果清空了项目负责人,从项目人员列表中移除
const newUserList = props.usercontentAddCmdList.filter(
item => item.projectLeader !== 1,
);
props.setUsercontentAddCmdList(newUserList);
}
}}
/> />
), componentProps: { ), componentProps: {
onChange: (userId) => { onChange: (userId) => {
@ -233,18 +266,37 @@ const StepOneComponent = (props) => {
{ name: "nightWorkFlag", label: "是否涉及夜间作业", labelCol: { span: 8 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] }, { name: "nightWorkFlag", label: "是否涉及夜间作业", labelCol: { span: 8 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] },
{ name: "specialFlag", label: "是否包含特殊作业", labelCol: { span: 8 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] }, { name: "specialFlag", label: "是否包含特殊作业", labelCol: { span: 8 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] },
{ label: "项目审核信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER }, { label: "项目审核信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
{ name: "qualificationsTypeId", label: "项目类别", span: 24, wrapperCol: { span: 5 }, render: (
<DictionarySelect
dictValue="qualificationsType"
onGetLabel={label => form.setFieldValue("qualificationsTypeName", label)}
onChange={() => {
}}
/>
) },
{ name: "qualificationsTypeName", label: "项目类别名称", onlyForLabel: true },
{ {
name: "approvalCorpId", name: "qualificationsTypeId", label: "项目类别", span: 24, wrapperCol: { span: 5 },
items: qualificationsTypeList,
render: FORM_ITEM_RENDER_ENUM.SELECT,
itemsField: { valueKey: "qualificationsTypeId", labelKey: "qualificationsTypeName" },
onGetLabel: (label) => {
form.setFieldValue("qualificationsTypeName", label);
},
componentProps: {
onChange: (event) => {
if (form.getFieldValue("isLocalCompany") === 0) {
getDeptList(event);
}
props.setQualificationsTypeId(event);
form.setFieldsValue({
recommendCorpId: "",
recommendCorpName: "",
recommendDeptId: "",
recommendDeptName: "",
recommendUserIds: [],
recommendUserNames: "",
manageDeptId: "",
manageDeptName: "",
manageUserIds: [],
manageUserNames: "",
});
},
},
},
{ name: "qualificationsTypeName", label: "项目类别名称", onlyForLabel: true },
{ name: "approvalCorpId",
label: "集团公司审核", label: "集团公司审核",
labelCol: { span: 5 }, labelCol: { span: 5 },
items: corpInfoList, items: corpInfoList,
@ -341,6 +393,7 @@ const StepTwoComponent = (props) => {
const [viewProjectReviewUserModalData, setViewProjectReviewUserModalData] = useState({}); // 查看安全人员证书列表 const [viewProjectReviewUserModalData, setViewProjectReviewUserModalData] = useState({}); // 查看安全人员证书列表
const { loading: getFileLoading, getFile } = useGetFile(); const { loading: getFileLoading, getFile } = useGetFile();
const [chooseFilsListModalOpen, setChooseFilsListModalOpen] = useState(false); const [chooseFilsListModalOpen, setChooseFilsListModalOpen] = useState(false);
const [chooseFilsListModalData, setChooseFilsListModalData] = useState([]);
const getData = async () => { const getData = async () => {
for (let i = 0; i < projectFileList.length; i++) { for (let i = 0; i < projectFileList.length; i++) {
const files = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["151"], eqForeignKey: projectFileList[i].projectFileId }); const files = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["151"], eqForeignKey: projectFileList[i].projectFileId });
@ -503,6 +556,7 @@ const StepTwoComponent = (props) => {
icon={<AddIcon />} icon={<AddIcon />}
onClick={() => { onClick={() => {
setChooseFilsListModalOpen(true); setChooseFilsListModalOpen(true);
setChooseFilsListModalData(projectFileList);
}} }}
> >
添加已审核资质资料 添加已审核资质资料
@ -631,6 +685,7 @@ const StepTwoComponent = (props) => {
{uploadFileModalOpen && ( {uploadFileModalOpen && (
<FileUpload <FileUpload
data={uploadFileModalData} data={uploadFileModalData}
qualificationsTypeId={props.qualificationsTypeId}
onCancel={() => { onCancel={() => {
setUploadFileModalOpen(false); setUploadFileModalOpen(false);
}} }}
@ -654,7 +709,8 @@ const StepTwoComponent = (props) => {
{chooseFilsListModalOpen && ( {chooseFilsListModalOpen && (
<ChooseFilsList <ChooseFilsList
data={projectFileList} data={projectFileList}
onSubmit={handleChooseFilsSubmit} // 使用新的处理函数 qualificationsTypeId={props.qualificationsTypeId}
onSubmit={handleChooseFilsSubmit}
onCancel={() => { onCancel={() => {
setChooseFilsListModalOpen(false); setChooseFilsListModalOpen(false);
}} }}
@ -668,7 +724,7 @@ const ChooseFilsComponent = (props) => {
const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据 const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据
const { tableProps } = useTable(props["qualificationsDetails"], { const { tableProps } = useTable(props["qualificationsDetails"], {
params: { params: {
qualificationsTypeId: "", qualificationsTypeId: props.qualificationsTypeId,
}, },
useStorageQueryCriteria: false, useStorageQueryCriteria: false,
}); });

View File

@ -71,7 +71,7 @@ function List(props) {
{ title: "集团单位名称", dataIndex: "corpinfoName" }, { title: "集团单位名称", dataIndex: "corpinfoName" },
{ title: "一级项目名称", dataIndex: "parentProjectName" }, { title: "一级项目名称", dataIndex: "parentProjectName" },
{ title: "二级项目名称", dataIndex: "projectName" }, { title: "二级项目名称", dataIndex: "projectName" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ title: "上级审核主管部门", dataIndex: "manageDeptName" }, { title: "上级审核主管部门", dataIndex: "manageDeptName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ {

View File

@ -38,10 +38,10 @@ function List(props) {
<Table <Table
columns={[ columns={[
{ title: "集团单位名称", dataIndex: "groupCompanyName" }, { title: "集团单位名称", dataIndex: "groupCompanyName" },
{ title: "集团单位审核部门", dataIndex: "groupCompanyDeptName" },
{ title: "一级项目名称", dataIndex: "parentProjectName" }, { title: "一级项目名称", dataIndex: "parentProjectName" },
{ title: "二级项目名称", dataIndex: "projectName" }, { title: "二级项目名称", dataIndex: "projectName" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ title: "上级审核主管部门", dataIndex: "parentManageDeptName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ {
title: "项目审核状态", title: "项目审核状态",

View File

@ -52,7 +52,7 @@ function List(props) {
{ title: "项目名称", dataIndex: "projectName" }, { title: "项目名称", dataIndex: "projectName" },
{ title: "股份主管部门", dataIndex: "manageDeptName" }, { title: "股份主管部门", dataIndex: "manageDeptName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ {
title: "项目备案审核状态", title: "项目备案审核状态",
dataIndex: "projectStatus", dataIndex: "projectStatus",

View File

@ -52,7 +52,7 @@ function List(props) {
{ title: "项目名称", dataIndex: "projectName" }, { title: "项目名称", dataIndex: "projectName" },
{ title: "股份主管部门", dataIndex: "manageDeptName" }, { title: "股份主管部门", dataIndex: "manageDeptName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ {
title: "项目备案审核状态", title: "项目备案审核状态",
dataIndex: "projectStatus", dataIndex: "projectStatus",

View File

@ -52,7 +52,7 @@ function List(props) {
{ title: "相关方名称", dataIndex: "corpinfoName" }, { title: "相关方名称", dataIndex: "corpinfoName" },
{ title: "项目名称", dataIndex: "projectName" }, { title: "项目名称", dataIndex: "projectName" },
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ {
title: "项目备案审核状态", title: "项目备案审核状态",
dataIndex: "projectStatus", dataIndex: "projectStatus",

View File

@ -44,7 +44,7 @@ function List(props) {
{ title: "项目类别", dataIndex: "qualificationsTypeName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" },
{ title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag ? "是" : "否" }, { title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag ? "是" : "否" },
{ title: "二级项目数", dataIndex: "secondLevelTotal" }, { title: "二级项目数", dataIndex: "secondLevelTotal" },
{ title: "项目执行属地公司", dataIndex: "companyName" }, { title: "项目属地单位", dataIndex: "companyName" },
{ {
title: "项目备案审核状态", title: "项目备案审核状态",
dataIndex: "projectStatus", dataIndex: "projectStatus",