feat(qualification): 新增资质无效化功能并优化项目审核流程
- 添加了资质无效化API接口调用功能 - 修改了用户列表查询接口路径以支持无权限筛选 - 新增了资质类型列表查询功能 - 重构了项目审核用户模态框组件,统一显示特种作业人员证书 - 更新了多个项目列表页面中的列标题描述 - 在项目申请表单中集成用户信息获取功能 - 优化了项目负责人选择组件的参数配置 - 修复了项目类别选择时的数据联动逻辑 - 修正了项目选取形式显示名称问题 - 优化了分包项目信息的条件渲染逻辑 - 修复了营业执照有效期的空值显示问题master
parent
7fc5b1d238
commit
986f21f752
|
|
@ -30,3 +30,7 @@ export const qualificationApplyRejectReason = declareRequest(
|
|||
"qualificationApplyLoading",
|
||||
`Get > /xgfManager/qualificationsApply/getRejectReason/{id}`,
|
||||
);
|
||||
export const invalidateQualifications = declareRequest(
|
||||
"qualificationApplyLoading",
|
||||
`Get > /xgfManager/qualificationsApply/invalidateQualifications/{id}`,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ export const inCheckList = declareRequest(
|
|||
`Post > @/xgfManager/project/inCheckList`,
|
||||
);
|
||||
export const userList = declareRequest(
|
||||
`Post > @/basicInfo/user/list`,
|
||||
`Post > @/basicInfo/user/pageByNopermission`,
|
||||
);
|
||||
export const projectAdd = declareRequest(
|
||||
"qualificationStatisticsLoading",
|
||||
|
|
@ -83,3 +83,7 @@ export const projectUserChangeRecordList = declareRequest(
|
|||
"qualificationStatisticsLoading",
|
||||
`Post > @/xgfManager/projectUserChangeRecord/list`,
|
||||
);
|
||||
export const qualificationsTypeList = declareRequest(
|
||||
"qualificationStatisticsLoading",
|
||||
`Post > @/xgfManager/qualifications/projectUserChangeRecord/list`,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -9,13 +9,11 @@ import useTable from "zy-react-library/hooks/useTable";
|
|||
import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace";
|
||||
|
||||
const ViewProjectReviewUserModal = (props) => {
|
||||
const eqQualificationinfoType = props.data.eqQualificationinfoType;
|
||||
const [form] = Form.useForm();
|
||||
const { loading: getFileLoading, getFile } = useGetFile();
|
||||
const { tableProps } = useTable(props["userQualificationInfo"], {
|
||||
form,
|
||||
params: {
|
||||
eqQualificationinfoType: props.data.eqQualificationinfoType,
|
||||
eqUserld: props.data.id,
|
||||
},
|
||||
});
|
||||
|
|
@ -59,7 +57,6 @@ const ViewProjectReviewUserModal = (props) => {
|
|||
dataSource: tableData.length > 0 ? tableData : tableProps.dataSource || [],
|
||||
}), [tableProps, tableData]);
|
||||
|
||||
if (eqQualificationinfoType === 1) {
|
||||
return (
|
||||
<Modal
|
||||
title="特种作业人员证书"
|
||||
|
|
@ -85,34 +82,6 @@ const ViewProjectReviewUserModal = (props) => {
|
|||
/>
|
||||
</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);
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ function List(props) {
|
|||
columns={[
|
||||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{ title: "是否为属地公司推荐", dataIndex: "isLocalCompany", render: (_, record) => record.isLocalCompany === 1 ? "是" : "否" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{ title: "主管部门", dataIndex: "manageDeptName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag === 1 ? "是" : "否" },
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ function List(props) {
|
|||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{ title: "股份主管部门", dataIndex: "manageDeptName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{
|
||||
title: "项目备案审核状态",
|
||||
dataIndex: "projectStatus",
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ function List(props) {
|
|||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{ title: "股份主管部门", dataIndex: "manageDeptName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{
|
||||
title: "项目备案审核状态",
|
||||
dataIndex: "projectStatus",
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ function List(props) {
|
|||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{ title: "股份主管部门", dataIndex: "manageDeptName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{
|
||||
title: "项目备案审核状态",
|
||||
dataIndex: "projectStatus",
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ function List(props) {
|
|||
{ title: "股份主管部门", dataIndex: "manageDeptName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "二级项目数", dataIndex: "secondLevelTotal" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{
|
||||
title: "项目备案审核状态",
|
||||
dataIndex: "projectStatus",
|
||||
|
|
|
|||
|
|
@ -47,12 +47,12 @@ function List(props) {
|
|||
/>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "一级相关方名称(集团单位)", dataIndex: "parentProjectCorpName" },
|
||||
{ title: "所属一级项目", dataIndex: "parentProjectName" },
|
||||
{ title: "集团单位名称", dataIndex: "parentProjectCorpName" },
|
||||
{ title: "一级项目名称", dataIndex: "parentProjectName" },
|
||||
{ title: "相关方名称", dataIndex: "corpinfoName" },
|
||||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{
|
||||
title: "项目备案审核状态",
|
||||
dataIndex: "projectStatus",
|
||||
|
|
|
|||
|
|
@ -37,12 +37,13 @@ function List(props) {
|
|||
/>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "一级相关方名称(集团单位)", dataIndex: "parentProjectCorpName" },
|
||||
{ title: "所属一级项目", dataIndex: "parentProjectName" },
|
||||
{ title: "集团单位名称", dataIndex: "parentProjectCorpName" },
|
||||
{ title: "一级项目名称", dataIndex: "parentProjectName" },
|
||||
{ title: "相关方名称", dataIndex: "corpinfoName" },
|
||||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{ title: "二级项目名称", dataIndex: "projectName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{
|
||||
title: "项目备案审核状态",
|
||||
dataIndex: "projectStatus",
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import Table from "zy-react-library/components/Table";
|
|||
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 useGetUserInfo from "zy-react-library/hooks/useGetUserInfo";
|
||||
import useDeleteFile from "zy-react-library/hooks/useDeleteFile";
|
||||
import useGetFile from "zy-react-library/hooks/useGetFile";
|
||||
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||
|
|
@ -24,8 +25,10 @@ import ViewProjectReviewUserModal from "~/components/ViewProjectReviewUserModal"
|
|||
import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace";
|
||||
|
||||
function Add(props) {
|
||||
const { getUserInfo } = useGetUserInfo();
|
||||
const query = useGetUrlQuery();
|
||||
const [form] = Form.useForm();
|
||||
const [userInfo, setUserInfo] = useState({});
|
||||
const [currentStep, setCurrentStep] = useState(1);
|
||||
const [formValues, setFormValues] = useState({});
|
||||
const [projectFileAddCmdList, setProjectFileAddCmdList] = useState([]); // 项目资料
|
||||
|
|
@ -33,6 +36,7 @@ function Add(props) {
|
|||
const [projectLocalCompanyAddCmdList, setProjectLocalCompanyAddCmdList] = useState([]); // 项目执行属地公司
|
||||
const [projectApprovalUserAddCmdList, setProjectApprovalUserAddCmdList] = useState([]); // 项目审核人员
|
||||
const [projectApprovalFlowAddCmdList, setProjectApprovalFlowAddCmdList] = useState([]); // 项目审核流程
|
||||
const [qualificationsTypeId, setQualificationsTypeId] = useState(); // 资质类型
|
||||
const [corpinfoId, setCorpinfoId] = useState(); // 项目id
|
||||
const { getFile } = useGetFile();
|
||||
// 获取详情数据
|
||||
|
|
@ -68,7 +72,13 @@ function Add(props) {
|
|||
setCorpinfoId(data.corpinfoId);
|
||||
};
|
||||
|
||||
const getCurrentUserInfo = async () => {
|
||||
const userInfo = await getUserInfo();
|
||||
setUserInfo(userInfo);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getCurrentUserInfo();
|
||||
query.id && getData();
|
||||
}, []);
|
||||
|
||||
|
|
@ -82,8 +92,10 @@ function Add(props) {
|
|||
setCurrentStep={setCurrentStep}
|
||||
formValues={formValues}
|
||||
form={form}
|
||||
userInfo={userInfo}
|
||||
usercontentAddCmdList={usercontentAddCmdList}
|
||||
setUsercontentAddCmdList={setUsercontentAddCmdList}
|
||||
setQualificationsTypeId={setQualificationsTypeId}
|
||||
/>
|
||||
)}
|
||||
{currentStep === 2
|
||||
|
|
@ -100,6 +112,7 @@ function Add(props) {
|
|||
projectApprovalUserAddCmdList={projectApprovalUserAddCmdList}
|
||||
projectApprovalFlowAddCmdList={projectApprovalFlowAddCmdList}
|
||||
corpinfoId={corpinfoId}
|
||||
qualificationsTypeId={qualificationsTypeId}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
|
|
@ -116,27 +129,34 @@ const StepOneComponent = (props) => {
|
|||
const recommendCorpId = Form.useWatch("recommendCorpId", form);
|
||||
const recommendDeptId = Form.useWatch("recommendDeptId", form);
|
||||
const [corpInfoList, setCorpInfoList] = useState([]); // 项目执行属地公司
|
||||
const [cropList, setCorpList] = useState([]); // 项目审核公司
|
||||
const startProjectTime = Form.useWatch("startProjectTime", form); // 项目开始时间
|
||||
const [deptList, setDeptList] = useState([]);
|
||||
const [userList, setUserList] = useState([]);
|
||||
const [qualificationsTypeList, setQualificationsTypeList] = useState([]);
|
||||
// 获取项目执行属地公司数据
|
||||
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);
|
||||
};
|
||||
// 获取项目执行属地公司名称列表数据
|
||||
const getCropList = async () => {
|
||||
const { data } = await props["corpInfoList"]({ pageIndex: 1, pageSize: 1000, inType: [1] });
|
||||
setCorpList(data);
|
||||
// 获取资质类型数据
|
||||
const getQualificationsTypeList = async () => {
|
||||
const { data } = await props["qualificationsTypeList"]();
|
||||
setQualificationsTypeList(data);
|
||||
};
|
||||
// 获取项目执行属地公司名称列表数据
|
||||
const getDeptList = async (id) => {
|
||||
const { data } = await props["deptListByType"]({ qualificationsTypeId: id });
|
||||
setDeptList(data);
|
||||
};
|
||||
const getUserList = async (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) => {
|
||||
if (!extraInfo.userId)
|
||||
|
|
@ -176,7 +196,7 @@ const StepOneComponent = (props) => {
|
|||
};
|
||||
useEffect(() => {
|
||||
getCorpInfoList();
|
||||
getCropList();
|
||||
getQualificationsTypeList();
|
||||
if (props.formValues.isLocalCompany === 0) {
|
||||
getDeptList(props.formValues.qualificationsTypeId);
|
||||
getUserList(props.formValues.manageDeptId);
|
||||
|
|
@ -206,6 +226,7 @@ const StepOneComponent = (props) => {
|
|||
}, [props.formValues]);
|
||||
return (
|
||||
<FormBuilder
|
||||
labelCol={{ span: 5 }}
|
||||
form={form}
|
||||
span={8}
|
||||
loading={props.qualificationStatistics.qualificationStatisticsLoading}
|
||||
|
|
@ -218,37 +239,40 @@ const StepOneComponent = (props) => {
|
|||
options={[
|
||||
{ label: "项目基础信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
||||
{ name: "projectName", label: "项目名称" },
|
||||
{ name: "userId", label: "项目负责人", render: (
|
||||
<PersonnelSelect
|
||||
isNeedDepartmentId={false}
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("userName", label);
|
||||
}}
|
||||
onGetOption={(option) => {
|
||||
if (option) {
|
||||
const extraInfo = {
|
||||
name: option.name,
|
||||
phone: option.phone || "",
|
||||
postName: option.postName || "",
|
||||
departmentId: option.departmentId || "",
|
||||
departmentName: option.departmentName || "",
|
||||
userId: option.id,
|
||||
};
|
||||
handleProjectLeaderChange(option.name, extraInfo);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
), componentProps: {
|
||||
onChange: (userId) => {
|
||||
if (!userId) {
|
||||
// 如果清空了项目负责人,从项目人员列表中移除
|
||||
const newUserList = props.usercontentAddCmdList.filter(
|
||||
item => item.projectLeader !== 1,
|
||||
);
|
||||
props.setUsercontentAddCmdList(newUserList);
|
||||
}
|
||||
},
|
||||
} },
|
||||
{
|
||||
name: "userId", label: "项目负责人", render: (
|
||||
<PersonnelSelect
|
||||
isNeedCorpInfoId={true}
|
||||
params={{ corpinfoId: props.userInfo?.corpinfoId || "" }}
|
||||
isNeedDepartmentId={false}
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("userName", label);
|
||||
}}
|
||||
onGetOption={(option) => {
|
||||
if (option) {
|
||||
const extraInfo = {
|
||||
name: option.name,
|
||||
phone: option.phone || "",
|
||||
postName: option.postName || "",
|
||||
departmentId: option.departmentId || "",
|
||||
departmentName: option.departmentName || "",
|
||||
userId: option.id,
|
||||
};
|
||||
handleProjectLeaderChange(option.name, extraInfo);
|
||||
}
|
||||
}}
|
||||
onChange={(userId) => {
|
||||
if (!userId) {
|
||||
// 如果清空了项目负责人,从项目人员列表中移除
|
||||
const newUserList = props.usercontentAddCmdList.filter(
|
||||
item => item.projectLeader !== 1,
|
||||
);
|
||||
props.setUsercontentAddCmdList(newUserList);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
)
|
||||
},
|
||||
{ name: "userName", label: "项目负责人", onlyForLabel: true },
|
||||
{ name: "initiationTime", 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: "chooseFormName", label: "项目选取形式名称", onlyForLabel: true },
|
||||
{ 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: "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 },
|
||||
{ name: "qualificationsTypeId", label: "项目类别", span: 24, wrapperCol: { span: 5 }, render: (
|
||||
<DictionarySelect
|
||||
dictValue="qualificationsType"
|
||||
onGetLabel={label => form.setFieldValue("qualificationsTypeName", label)}
|
||||
style={{ width: "100%" }}
|
||||
onChange={() => {}}
|
||||
/>
|
||||
) },
|
||||
{
|
||||
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 },
|
||||
{
|
||||
span: 24,
|
||||
render: (
|
||||
<div style={{ fontSize: 12, color: "red", whiteSpace: "nowrap", marginTop: "-8px", marginBottom: "16px", marginLeft: "112px" }}>
|
||||
如果选择项目类别或等级没有您相应的选项时,请在"资质准入管理"中查看是否持有对应类比或等级的相关资质。
|
||||
如果选择项目类别或等级没有您相应的选项时,请在"资质准入管理"中查看是否持有对应类别或等级的相关资质。
|
||||
</div>
|
||||
),
|
||||
},
|
||||
{ name: "qualificationsTypeName", label: "项目类别名称", onlyForLabel: true },
|
||||
{ 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) => {
|
||||
if (event.target.value === 0) {
|
||||
getDeptList(qualificationsTypeId);
|
||||
}
|
||||
form.setFieldsValue({
|
||||
recommendCorpId: "",
|
||||
recommendCorpName: "",
|
||||
recommendDeptId: "",
|
||||
recommendDeptName: "",
|
||||
recommendUserIds: [],
|
||||
recommendUserNames: "",
|
||||
manageDeptId: "",
|
||||
manageDeptName: "",
|
||||
manageUserIds: [],
|
||||
manageUserNames: "",
|
||||
});
|
||||
},
|
||||
} },
|
||||
{
|
||||
name: "isLocalCompany", label: "是否为属地公司推荐", span: 24, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }], componentProps: {
|
||||
onChange: (event) => {
|
||||
if (event.target.value === 0) {
|
||||
getDeptList(qualificationsTypeId);
|
||||
}
|
||||
form.setFieldsValue({
|
||||
recommendCorpId: "",
|
||||
recommendCorpName: "",
|
||||
recommendDeptId: "",
|
||||
recommendDeptName: "",
|
||||
recommendUserIds: [],
|
||||
recommendUserNames: "",
|
||||
manageDeptId: "",
|
||||
manageDeptName: "",
|
||||
manageUserIds: [],
|
||||
manageUserNames: "",
|
||||
});
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
span: 24,
|
||||
render: (
|
||||
|
|
@ -307,104 +355,104 @@ const StepOneComponent = (props) => {
|
|||
},
|
||||
...(isLocalCompany === 1
|
||||
? [
|
||||
{
|
||||
name: "recommendCorpId",
|
||||
label: "推荐属地公司名称",
|
||||
labelCol: { span: 5 },
|
||||
items: cropList,
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
itemsField: { valueKey: "id", labelKey: "corpName" },
|
||||
componentProps: {
|
||||
onChange: (event) => {
|
||||
const label = cropList.find(item => item.id === event)?.corpName;
|
||||
form.setFieldValue("recommendCorpName", label);
|
||||
{
|
||||
name: "recommendCorpId",
|
||||
label: "推荐属地公司名称",
|
||||
labelCol: { span: 6 },
|
||||
items: corpInfoList,
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
itemsField: { valueKey: "id", labelKey: "corpName" },
|
||||
componentProps: {
|
||||
onChange: (event) => {
|
||||
const label = corpInfoList.find(item => item.id === event)?.corpName;
|
||||
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({
|
||||
recommendDeptId: "",
|
||||
recommendDeptName: "",
|
||||
recommendUserIds: [],
|
||||
recommendUserNames: "",
|
||||
});
|
||||
},
|
||||
},
|
||||
},
|
||||
{ name: "recommendCorpName", label: "推荐属地公司名称", onlyForLabel: true },
|
||||
{
|
||||
name: "recommendDeptId",
|
||||
labelCol: { span: 5 },
|
||||
label: "推荐属地公司部门",
|
||||
render: (
|
||||
<DepartmentSelectTree
|
||||
params={{ eqCorpinfoId: recommendCorpId }}
|
||||
isNeedCorpInfoId
|
||||
onGetLabel={label => form.setFieldValue("recommendDeptName", label)}
|
||||
onChange={() => {
|
||||
form.setFieldsValue({
|
||||
recommendUserIds: [],
|
||||
recommendUserNames: "",
|
||||
});
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ 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: "recommendDeptName", label: "推荐属地公司部门", onlyForLabel: true },
|
||||
{
|
||||
name: "recommendUserIds",
|
||||
label: "推荐属地公司人员",
|
||||
span: 8,
|
||||
labelCol: { span: 6 },
|
||||
wrapperCol: { span: 19 },
|
||||
render: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: recommendDeptId }}
|
||||
onGetLabel={label => form.setFieldValue("recommendUserNames", label)}
|
||||
mode="multiple"
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "recommendUserNames", label: "推荐属地公司人员", onlyForLabel: true },
|
||||
]
|
||||
: [
|
||||
{
|
||||
name: "manageDeptId",
|
||||
labelCol: { span: 5 },
|
||||
label: "选择主管部门",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: deptList,
|
||||
itemsField: { valueKey: "deptId", labelKey: "deptName" },
|
||||
componentProps: {
|
||||
onChange: (event) => {
|
||||
const label = deptList.find(item => item.deptId === event)?.deptName;
|
||||
form.setFieldValue("manageDeptName", label);
|
||||
form.setFieldsValue({
|
||||
manageUserIds: [],
|
||||
recommendUserNames: "",
|
||||
});
|
||||
getUserList(event);
|
||||
},
|
||||
{
|
||||
name: "manageDeptId",
|
||||
labelCol: { span: 5 },
|
||||
label: "选择主管部门",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: deptList,
|
||||
itemsField: { valueKey: "deptId", labelKey: "deptName" },
|
||||
componentProps: {
|
||||
onChange: (event) => {
|
||||
const label = deptList.find(item => item.deptId === event)?.deptName;
|
||||
form.setFieldValue("manageDeptName", label);
|
||||
form.setFieldsValue({
|
||||
manageUserIds: [],
|
||||
recommendUserNames: "",
|
||||
});
|
||||
getUserList(event);
|
||||
},
|
||||
},
|
||||
{ name: "manageDeptName", label: "选择主管部门名称", onlyForLabel: true },
|
||||
{
|
||||
name: "manageUserIds",
|
||||
label: "主管部门审核人",
|
||||
span: 16,
|
||||
labelCol: { span: 3 },
|
||||
wrapperCol: { span: 8 },
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: userList,
|
||||
itemsField: { valueKey: "userId", labelKey: "userName" },
|
||||
componentProps: {
|
||||
mode: "multiple",
|
||||
onChange: (event) => {
|
||||
const labels = event
|
||||
.map(userId => userList.find(item => item.userId === userId)?.userName)
|
||||
.filter(Boolean);
|
||||
form.setFieldValue("manageUserNames", labels);
|
||||
},
|
||||
},
|
||||
{ name: "manageDeptName", label: "选择主管部门名称", onlyForLabel: true },
|
||||
{
|
||||
name: "manageUserIds",
|
||||
label: "主管部门审核人",
|
||||
span: 16,
|
||||
labelCol: { span: 3 },
|
||||
wrapperCol: { span: 8 },
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: userList,
|
||||
itemsField: { valueKey: "userId", labelKey: "userName" },
|
||||
componentProps: {
|
||||
mode: "multiple",
|
||||
onChange: (event) => {
|
||||
const labels = event
|
||||
.map(userId => userList.find(item => item.userId === userId)?.userName)
|
||||
.filter(Boolean);
|
||||
form.setFieldValue("manageUserNames", labels);
|
||||
},
|
||||
},
|
||||
{ name: "manageUserNames", label: "主管部门审核人名称", onlyForLabel: true },
|
||||
]),
|
||||
},
|
||||
{ name: "manageUserNames", label: "主管部门审核人名称", onlyForLabel: true },
|
||||
]),
|
||||
{
|
||||
render: (
|
||||
<div style={{ fontSize: 12, color: "red", whiteSpace: "nowrap", marginTop: "-8px", marginBottom: "16px", marginLeft: "112px" }}>
|
||||
|
|
@ -416,7 +464,7 @@ const StepOneComponent = (props) => {
|
|||
{
|
||||
name: "approvalCorpId",
|
||||
label: "项目执行属地公司名称",
|
||||
labelCol: { span: 5 },
|
||||
labelCol: { span: 7 },
|
||||
items: corpInfoList,
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
itemsField: { valueKey: "id", labelKey: "corpName" },
|
||||
|
|
@ -436,7 +484,7 @@ const StepOneComponent = (props) => {
|
|||
{ name: "approvalCorpName", label: "项目执行属地公司名称", onlyForLabel: true },
|
||||
{
|
||||
name: "approvalDeptId",
|
||||
labelCol: { span: 5 },
|
||||
labelCol: { span: 7 },
|
||||
label: "项目执行属地公司部门",
|
||||
render: (
|
||||
<DepartmentSelectTree
|
||||
|
|
@ -456,7 +504,7 @@ const StepOneComponent = (props) => {
|
|||
{
|
||||
name: "approvalUserIds",
|
||||
label: "项目执行属地公司人员",
|
||||
labelCol: { span: 5 },
|
||||
labelCol: { span: 7 },
|
||||
render: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: approvalDeptId }}
|
||||
|
|
@ -466,17 +514,19 @@ const StepOneComponent = (props) => {
|
|||
),
|
||||
},
|
||||
{ name: "approvalUserNames", label: "项目执行属地公司人员名称", onlyForLabel: true },
|
||||
{ name: "projectFiles", label: "安全管理协议", span: 24, render: (
|
||||
<Upload
|
||||
fileType="image"
|
||||
maxCount={5}
|
||||
accept=".pdf,.jpg,.jpeg,.png"
|
||||
size={40}
|
||||
onGetRemoveFile={(file) => {
|
||||
form.setFieldValue("deleteProjectFileAddCmdList", [...(form.getFieldValue("deleteProjectFileAddCmdList") || []), file]);
|
||||
}}
|
||||
/>
|
||||
) },
|
||||
{
|
||||
name: "projectFiles", label: "安全管理协议", span: 24, render: (
|
||||
<Upload
|
||||
fileType="image"
|
||||
maxCount={5}
|
||||
accept=".pdf,.jpg,.jpeg,.png"
|
||||
size={40}
|
||||
onGetRemoveFile={(file) => {
|
||||
form.setFieldValue("deleteProjectFileAddCmdList", [...(form.getFieldValue("deleteProjectFileAddCmdList") || []), file]);
|
||||
}}
|
||||
/>
|
||||
)
|
||||
},
|
||||
{ name: "deleteProjectFileAddCmdList", label: "删除的安全管理协议", onlyForLabel: true },
|
||||
{ name: "agreementFileUuid", label: "安全协议uuid", onlyForLabel: true },
|
||||
{ name: "stakeholderLevel", onlyForLabel: true },
|
||||
|
|
@ -761,23 +811,10 @@ const StepTwoComponent = (props) => {
|
|||
setViewProjectReviewUserModalOpen(true);
|
||||
setViewProjectReviewUserModalData({
|
||||
...record,
|
||||
eqQualificationinfoType: 1,
|
||||
});
|
||||
}}
|
||||
>
|
||||
特种作业人员证书
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setViewProjectReviewUserModalOpen(true);
|
||||
setViewProjectReviewUserModalData({
|
||||
...record,
|
||||
eqQualificationinfoType: 2,
|
||||
});
|
||||
}}
|
||||
>
|
||||
安全人员证书列表
|
||||
查看特种证书
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
|
|
@ -804,6 +841,7 @@ const StepTwoComponent = (props) => {
|
|||
{uploadFileModalOpen && (
|
||||
<FileUpload
|
||||
data={uploadFileModalData}
|
||||
qualificationsTypeId={props.qualificationsTypeId}
|
||||
onCancel={() => {
|
||||
setUploadFileModalOpen(false);
|
||||
}}
|
||||
|
|
@ -841,7 +879,7 @@ const ChooseFilsComponent = (props) => {
|
|||
const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据
|
||||
const { tableProps } = useTable(props["qualificationsDetails"], {
|
||||
params: {
|
||||
qualificationsTypeId: "",
|
||||
qualificationsTypeId: props.qualificationsTypeId,
|
||||
},
|
||||
useStorageQueryCriteria: false,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ function List(props) {
|
|||
columns={[
|
||||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{ title: "是否为属地公司推荐", dataIndex: "isLocalCompany", render: (_, record) => record.isLocalCompany === 1 ? "是" : "否" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{ title: "主管部门", dataIndex: "manageDeptName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag === 1 ? "是" : "否" },
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@ function Review(props) {
|
|||
{ label: "立项时间", children: info.initiationTime },
|
||||
{ label: "计划开始时间", children: info.startProjectTime },
|
||||
{ label: "计划竣工时间", children: info.endProjectTime },
|
||||
{ label: "选取形式", children: info.chooseForm },
|
||||
{ label: "选取形式", children: info.chooseFormName },
|
||||
{ label: "是否涉及四新工作内容", children: info.fourNewFlag === 1 ? "是" : "否" },
|
||||
{ label: "是否涉及三人及以上工作内容", children: info.threePeopleFlag === 1 ? "是" : "否" },
|
||||
{ label: "是否涉及夜间作业", children: info.nightWorkFlag === 1 ? "是" : "否" },
|
||||
|
|
@ -292,7 +292,7 @@ function Review(props) {
|
|||
{ label: "单位经营地址", children: info.corpInfo?.addressBusiness },
|
||||
{ label: "企业规模", children: info.corpInfo?.scaleName },
|
||||
{ label: "法定代表人姓名", children: info.corpInfo?.lrName },
|
||||
{ label: "打定代表人电话", children: info.corpInfo?.lrMobile },
|
||||
{ label: "法定代表人电话", children: info.corpInfo?.lrMobile },
|
||||
{ label: "主要负责人姓名", children: info.corpInfo?.contacts },
|
||||
{ label: "主要负责人电话", children: info.corpInfo?.contactsPhone },
|
||||
{ label: "成立日期", children: info.corpInfo?.createDate },
|
||||
|
|
@ -301,7 +301,7 @@ function Review(props) {
|
|||
{ label: "注册资金(万元)", children: info.corpInfo?.regcapital },
|
||||
{ label: "企业类型", children: getLabelName({ list: typeList, status: info.corpInfo?.type }) },
|
||||
{ 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: "" },
|
||||
]}
|
||||
/>
|
||||
|
|
@ -371,7 +371,7 @@ function Review(props) {
|
|||
|
||||
/>
|
||||
</div>
|
||||
{info.subcontractFlag === 1 && (
|
||||
{info.subcontractFlag === 1 && info.subcontractProjectList && info.subcontractProjectList.length > 0 && (
|
||||
<div>
|
||||
<Divider orientation="left">分包项目信息详情</Divider>
|
||||
<Table
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ function List(props) {
|
|||
columns={[
|
||||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{ title: "是否为属地公司推荐", dataIndex: "isLocalCompany", render: (_, record) => record.isLocalCompany === 1 ? "是" : "否" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{ title: "主管部门", dataIndex: "manageDeptName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag ? "是" : "否" },
|
||||
|
|
|
|||
|
|
@ -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 useDeleteFile from "zy-react-library/hooks/useDeleteFile";
|
||||
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 useTable from "zy-react-library/hooks/useTable";
|
||||
import useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||
|
|
@ -24,18 +25,26 @@ import ViewProjectReviewUserModal from "~/components/ViewProjectReviewUserModal"
|
|||
import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace";
|
||||
|
||||
function Add(props) {
|
||||
const { getUserInfo } = useGetUserInfo();
|
||||
const query = useGetUrlQuery();
|
||||
const [form] = Form.useForm();
|
||||
const [userInfo, setUserInfo] = useState({});
|
||||
const [currentStep, setCurrentStep] = useState(1);
|
||||
const [formValues, setFormValues] = useState({});
|
||||
const [projectFileAddCmdList, setProjectFileAddCmdList] = useState([]); // 项目资料
|
||||
const [usercontentAddCmdList, setUsercontentAddCmdList] = useState([]); // 项目审核人员
|
||||
const [projectLocalCompanyAddCmdList, setProjectLocalCompanyAddCmdList] = useState([]); // 项目执行属地公司
|
||||
const [projectLocalCompanyAddCmdList, setProjectLocalCompanyAddCmdList] = useState([]); // 项目属地单位
|
||||
const [projectApprovalUserAddCmdList, setProjectApprovalUserAddCmdList] = useState([]); // 项目审核人员
|
||||
const [projectApprovalFlowAddCmdList, setProjectApprovalFlowAddCmdList] = useState([]); // 项目审核流程
|
||||
const [qualificationsTypeId, setQualificationsTypeId] = useState(); // 资质类型
|
||||
const [corpinfoId, setCorpinfoId] = useState(); // 项目id
|
||||
const { getFile } = useGetFile();
|
||||
// 获取详情数据
|
||||
|
||||
const getCurrentUserInfo = async () => {
|
||||
const userInfo = await getUserInfo();
|
||||
setUserInfo(userInfo);
|
||||
};
|
||||
|
||||
const getData = async () => {
|
||||
const { data } = await props["projectDetail"]({ id: query.id });
|
||||
if (data.agreementFileUuid) {
|
||||
|
|
@ -69,6 +78,7 @@ function Add(props) {
|
|||
};
|
||||
|
||||
useEffect(() => {
|
||||
getCurrentUserInfo();
|
||||
query.id && getData();
|
||||
}, []);
|
||||
|
||||
|
|
@ -81,8 +91,10 @@ function Add(props) {
|
|||
setCurrentStep={setCurrentStep}
|
||||
formValues={formValues}
|
||||
form={form}
|
||||
userInfo={userInfo}
|
||||
usercontentAddCmdList={usercontentAddCmdList}
|
||||
setUsercontentAddCmdList={setUsercontentAddCmdList}
|
||||
setQualificationsTypeId={setQualificationsTypeId}
|
||||
/>
|
||||
)}
|
||||
{currentStep === 2
|
||||
|
|
@ -99,6 +111,7 @@ function Add(props) {
|
|||
projectApprovalUserAddCmdList={projectApprovalUserAddCmdList}
|
||||
projectApprovalFlowAddCmdList={projectApprovalFlowAddCmdList}
|
||||
corpinfoId={corpinfoId}
|
||||
qualificationsTypeId={qualificationsTypeId}
|
||||
/>
|
||||
)}
|
||||
</Page>
|
||||
|
|
@ -109,13 +122,20 @@ const StepOneComponent = (props) => {
|
|||
const form = props.form;
|
||||
const approvalCorpId = Form.useWatch("approvalCorpId", 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 [qualificationsTypeList, setQualificationsTypeList] = useState([]);
|
||||
// 获取项目属地单位数据
|
||||
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);
|
||||
};
|
||||
// 获取资质类型数据
|
||||
const getQualificationsTypeList = async () => {
|
||||
const { data } = await props["qualificationsTypeList"]();
|
||||
setQualificationsTypeList(data);
|
||||
};
|
||||
const handleProjectLeaderChange = (label, extraInfo) => {
|
||||
if (!extraInfo.userId)
|
||||
return;
|
||||
|
|
@ -154,6 +174,7 @@ const StepOneComponent = (props) => {
|
|||
};
|
||||
useEffect(() => {
|
||||
getCorpInfoList();
|
||||
getQualificationsTypeList();
|
||||
form.setFieldsValue(props.formValues);
|
||||
if (props.formValues.userId && props.formValues.userName) {
|
||||
const existingLeader = props.usercontentAddCmdList.find(
|
||||
|
|
@ -179,6 +200,7 @@ const StepOneComponent = (props) => {
|
|||
}, [props.formValues]);
|
||||
return (
|
||||
<FormBuilder
|
||||
labelCol={{ span: 5 }}
|
||||
form={form}
|
||||
span={8}
|
||||
loading={props.qualificationStatistics.qualificationStatisticsLoading}
|
||||
|
|
@ -193,6 +215,8 @@ const StepOneComponent = (props) => {
|
|||
{ name: "projectName", label: "项目名称" },
|
||||
{ name: "userId", label: "项目负责人", render: (
|
||||
<PersonnelSelect
|
||||
isNeedCorpInfoId={true}
|
||||
params={{ corpinfoId: props.userInfo?.corpinfoId || "" }}
|
||||
isNeedDepartmentId={false}
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("userName", label);
|
||||
|
|
@ -210,6 +234,15 @@ const StepOneComponent = (props) => {
|
|||
handleProjectLeaderChange(option.name, extraInfo);
|
||||
}
|
||||
}}
|
||||
onChange={(userId) => {
|
||||
if (!userId) {
|
||||
// 如果清空了项目负责人,从项目人员列表中移除
|
||||
const newUserList = props.usercontentAddCmdList.filter(
|
||||
item => item.projectLeader !== 1,
|
||||
);
|
||||
props.setUsercontentAddCmdList(newUserList);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
), componentProps: {
|
||||
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: "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 },
|
||||
{ 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: "集团公司审核",
|
||||
labelCol: { span: 5 },
|
||||
items: corpInfoList,
|
||||
|
|
@ -341,6 +393,7 @@ const StepTwoComponent = (props) => {
|
|||
const [viewProjectReviewUserModalData, setViewProjectReviewUserModalData] = useState({}); // 查看安全人员证书列表
|
||||
const { loading: getFileLoading, getFile } = useGetFile();
|
||||
const [chooseFilsListModalOpen, setChooseFilsListModalOpen] = useState(false);
|
||||
const [chooseFilsListModalData, setChooseFilsListModalData] = useState([]);
|
||||
const getData = async () => {
|
||||
for (let i = 0; i < projectFileList.length; i++) {
|
||||
const files = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["151"], eqForeignKey: projectFileList[i].projectFileId });
|
||||
|
|
@ -503,6 +556,7 @@ const StepTwoComponent = (props) => {
|
|||
icon={<AddIcon />}
|
||||
onClick={() => {
|
||||
setChooseFilsListModalOpen(true);
|
||||
setChooseFilsListModalData(projectFileList);
|
||||
}}
|
||||
>
|
||||
添加已审核资质资料
|
||||
|
|
@ -631,6 +685,7 @@ const StepTwoComponent = (props) => {
|
|||
{uploadFileModalOpen && (
|
||||
<FileUpload
|
||||
data={uploadFileModalData}
|
||||
qualificationsTypeId={props.qualificationsTypeId}
|
||||
onCancel={() => {
|
||||
setUploadFileModalOpen(false);
|
||||
}}
|
||||
|
|
@ -654,7 +709,8 @@ const StepTwoComponent = (props) => {
|
|||
{chooseFilsListModalOpen && (
|
||||
<ChooseFilsList
|
||||
data={projectFileList}
|
||||
onSubmit={handleChooseFilsSubmit} // 使用新的处理函数
|
||||
qualificationsTypeId={props.qualificationsTypeId}
|
||||
onSubmit={handleChooseFilsSubmit}
|
||||
onCancel={() => {
|
||||
setChooseFilsListModalOpen(false);
|
||||
}}
|
||||
|
|
@ -668,7 +724,7 @@ const ChooseFilsComponent = (props) => {
|
|||
const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据
|
||||
const { tableProps } = useTable(props["qualificationsDetails"], {
|
||||
params: {
|
||||
qualificationsTypeId: "",
|
||||
qualificationsTypeId: props.qualificationsTypeId,
|
||||
},
|
||||
useStorageQueryCriteria: false,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ function List(props) {
|
|||
{ title: "集团单位名称", dataIndex: "corpinfoName" },
|
||||
{ title: "一级项目名称", dataIndex: "parentProjectName" },
|
||||
{ title: "二级项目名称", dataIndex: "projectName" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{ title: "上级审核主管部门", dataIndex: "manageDeptName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{
|
||||
|
|
|
|||
|
|
@ -38,10 +38,10 @@ function List(props) {
|
|||
<Table
|
||||
columns={[
|
||||
{ title: "集团单位名称", dataIndex: "groupCompanyName" },
|
||||
{ title: "集团单位审核部门", dataIndex: "groupCompanyDeptName" },
|
||||
{ title: "一级项目名称", dataIndex: "parentProjectName" },
|
||||
{ title: "二级项目名称", dataIndex: "projectName" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "上级审核主管部门", dataIndex: "parentManageDeptName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{
|
||||
title: "项目审核状态",
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ function List(props) {
|
|||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{ title: "股份主管部门", dataIndex: "manageDeptName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{
|
||||
title: "项目备案审核状态",
|
||||
dataIndex: "projectStatus",
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ function List(props) {
|
|||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{ title: "股份主管部门", dataIndex: "manageDeptName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{
|
||||
title: "项目备案审核状态",
|
||||
dataIndex: "projectStatus",
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ function List(props) {
|
|||
{ title: "相关方名称", dataIndex: "corpinfoName" },
|
||||
{ title: "项目名称", dataIndex: "projectName" },
|
||||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{
|
||||
title: "项目备案审核状态",
|
||||
dataIndex: "projectStatus",
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ function List(props) {
|
|||
{ title: "项目类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag ? "是" : "否" },
|
||||
{ title: "二级项目数", dataIndex: "secondLevelTotal" },
|
||||
{ title: "项目执行属地公司", dataIndex: "companyName" },
|
||||
{ title: "项目属地单位", dataIndex: "companyName" },
|
||||
{
|
||||
title: "项目备案审核状态",
|
||||
dataIndex: "projectStatus",
|
||||
|
|
|
|||
Loading…
Reference in New Issue