diff --git a/package.json b/package.json index 407dc18..c70777e 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "lodash-es": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", - "zy-react-library": "^1.1.32" + "zy-react-library": "^1.1.42" }, "devDependencies": { "@antfu/eslint-config": "^5.4.1", diff --git a/src/api/qualificationStatistics/index.js b/src/api/qualificationStatistics/index.js index 2b571f5..5eeeb2a 100644 --- a/src/api/qualificationStatistics/index.js +++ b/src/api/qualificationStatistics/index.js @@ -28,9 +28,12 @@ export const projectUpdate = declareRequest( "qualificationStatisticsLoading", `Put > @/xgfManager/project/edit`, ); -export const userQualificationInfo = declareRequest( +export const userQualificationList = declareRequest( `Post > @/certificate/userCertificate/listPage`, ); +export const userQualificationInfo = declareRequest( + `Get > /certificate/userCertificate/getInfoById/{id}`, +); export const projectDetail = declareRequest( "qualificationStatisticsLoading", `Get > /xgfManager/project/{id}`, diff --git a/src/components/ViewProjectReviewUserModal/index.js b/src/components/ViewProjectReviewUserModal/index.js index 44b9ca7..2fc515f 100644 --- a/src/components/ViewProjectReviewUserModal/index.js +++ b/src/components/ViewProjectReviewUserModal/index.js @@ -1,72 +1,139 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime"; -import { Button, Form, Modal } from "antd"; -import { useEffect, useMemo, useRef, useState } from "react"; +import { Button, Descriptions, Divider, Form, Modal } from "antd"; +import { useEffect, useState } from "react"; +import PreviewImg from "zy-react-library/components/PreviewImg"; +import Search from "zy-react-library/components/Search"; +import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import Table from "zy-react-library/components/Table"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import useGetFile from "zy-react-library/hooks/useGetFile"; import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace"; +const EMPLOYMENT_STATUS_ENUM = [ + { label: "离职", value: 0 }, + { label: "在职", value: 1 }, + { label: "信息变更中", value: 2 }, + { label: "未入职", value: 3 }, + { label: "实习生", value: 4 }, + { label: "实习结束", value: 5 }, + { label: "退休", value: 6 }, + { label: "劳务派遣", value: 7 }, + { label: "劳务派遣结束", value: 8 }, + { label: "入职待审核", value: 11 }, + { label: "离职待审核", value: 10 }, +]; const ViewProjectReviewUserModal = (props) => { const [form] = Form.useForm(); const [realData, setRealData] = useState([]); + const [viewInfoModalVisible, setViewInfoModalVisible] = useState(false); + const [currentId, setCurrentId] = useState(""); const { loading: getFileLoading, getFile } = useGetFile(); - const { tableProps } = useTable(props["userQualificationInfo"], { + const { tableProps, getData } = useTable(props["userQualificationList"], { form, params: { eqUserId: props.data.userRealId ? props.data.userRealId : props.data.id, }, useStorageQueryCriteria: false, onSuccess: async (data) => { - const list = data.list; - for (let i = 0; i < list.length; i++) { - const fileItems = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["159"], eqForeignKey: list[i].userCertificateId }); - list[i].files = fileItems; - } + const list = await getFile({ + single: false, + dataSource: data.list, + foreignKey: "userCertificateId", + eqType: UPLOAD_FILE_TYPE_ENUM["159"], + }); setRealData(list); }, }); - const [tableData, setTableData] = useState([]); - const hasFetchedRef = useRef(false); + + return ( +
+ 取消, + ]} + > + ) }, + ]} + form={form} + onFinish={getData} + /> + `${record.certificateDateStart}至${record.certificateDateEnd}`, + }, + { title: "图片", dataIndex: "files", render: (_, record) => () }, + { + title: "操作", + width: 100, + fixed: "right", + render: (_, record) => ( + + ), + }, + ]} + {...tableProps} + dataSource={realData} + loading={getFileLoading || tableProps.loading} + /> + + {viewInfoModalVisible && ( + { + setViewInfoModalVisible(false); + setCurrentId(""); + }} + /> + )} + + ); +}; + +const ViewInfoModalComponent = (props) => { + const [info, setInfo] = useState({}); + + const { getFile } = useGetFile(); + + const getData = async () => { + const { data } = await props["userQualificationInfo"]({ id: props.id }); + const fileItems = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["159"], eqForeignKey: data.userCertificateId }); + console.log(fileItems); + setInfo({ ...data, files: fileItems }); + }; + useEffect(() => { - // 只在第一次获取数据时执行,或者数据真正变化时 - if (tableProps.dataSource - && tableProps.dataSource.length > 0 - && !getFileLoading - && !hasFetchedRef.current) { - hasFetchedRef.current = true; - - const fetchFiles = async () => { - const dataWithFiles = await Promise.all( - tableProps.dataSource.map(async (item) => { - try { - const files = await getFile({ - eqType: UPLOAD_FILE_TYPE_ENUM["6"], - eqForeignKey: item.userId, - }); - return { ...item, files: files || [] }; - } - catch (error) { - console.error("获取文件失败:", error); - return { ...item, files: [] }; - } - }), - ); - - setTableData(dataWithFiles); - }; - - fetchFiles(); - } - }, [tableProps.dataSource, getFileLoading, getFile]); - - // 使用 useMemo 避免重复计算 - const enhancedTableProps = useMemo(() => ({ - ...tableProps, - dataSource: tableData.length > 0 ? tableData : tableProps.dataSource || [], - }), [tableProps, tableData]); + getData(); + }, []); return ( { , ]} > -
() }, - + 人员信息 + + 证书信息 + { + info.type === "tezhongzuoye" && ( + ) }, + ]} + /> + ) + } + { + info.type === "tzsbczry" && ( + ) }, + ]} + /> + ) + } + { + info.type === "zyfzr" && ( + ) }, + ]} + /> + ) + } + { + info.type === "aqscglry" && ( + ) }, + ]} + /> + ) + } ); }; +const ViewInfoModal = Connect([NS_QUALIFICATION_STATISTICS], true)(ViewInfoModalComponent); + export default Connect([NS_QUALIFICATION_STATISTICS], true)(ViewProjectReviewUserModal); diff --git a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/Add/index.js b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/Add/index.js index 24be2cb..1379518 100644 --- a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/Add/index.js +++ b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/Add/index.js @@ -29,6 +29,7 @@ function Add(props) { const query = useGetUrlQuery(); const [form] = Form.useForm(); const [userInfo, setUserInfo] = useState({}); + // const [currentStep, setCurrentStep] = useState(1); const [currentStep, setCurrentStep] = useState(1); const [formValues, setFormValues] = useState({}); const [projectFileAddCmdList, setProjectFileAddCmdList] = useState([]); // 项目资料 @@ -83,7 +84,7 @@ function Add(props) { }, []); return ( - + <> {currentStep === 1 && ( @@ -226,7 +227,7 @@ const StepOneComponent = (props) => { }, [props.formValues]); return ( { { name: "chooseForm", label: "项目选取形式", render: 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: 9 }, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] }, + { name: "threePeopleFlag", label: "是否涉及三人及以上工作内容", labelCol: { span: 10 }, 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 }, @@ -430,7 +431,6 @@ const StepOneComponent = (props) => { : [ { name: "manageDeptId", - labelCol: { span: 5 }, label: "选择主管部门", render: FORM_ITEM_RENDER_ENUM.SELECT, items: deptList, @@ -484,8 +484,7 @@ const StepOneComponent = (props) => { }, { name: "approvalCorpId", - label: "项目执行属地公司名称", - labelCol: { span: 7 }, + label: "项目属地单位", items: corpInfoList, render: FORM_ITEM_RENDER_ENUM.SELECT, itemsField: { valueKey: "id", labelKey: "corpName" }, @@ -502,11 +501,10 @@ const StepOneComponent = (props) => { }, }, }, - { name: "approvalCorpName", label: "项目执行属地公司名称", onlyForLabel: true }, + { name: "approvalCorpName", label: "项目属地单位名称", onlyForLabel: true }, { name: "approvalDeptId", - labelCol: { span: 7 }, - label: "项目执行属地公司部门", + label: "项目属地单位部门", render: ( { /> ), }, - { name: "approvalDeptName", label: "项目执行属地公司部门名称", onlyForLabel: true }, + { name: "approvalDeptName", label: "项目属地单位部门名称", onlyForLabel: true }, { name: "approvalUserIds", - label: "项目执行属地公司人员", - labelCol: { span: 7 }, + label: "项目属地单位人员", render: ( { /> ), }, - { name: "approvalUserNames", label: "项目执行属地公司人员名称", onlyForLabel: true }, + { name: "approvalUserNames", label: "项目属地单位人员名称", onlyForLabel: true }, { name: "projectFiles", label: "安全管理协议", span: 24, + labelCol: { span: 2 }, render: ( { } }; useEffect(() => { - getData(); + query.id && getData(); }, []); // 点击新增项目相关资料 const onUploadFileOpen = () => { @@ -738,6 +736,7 @@ const StepTwoComponent = (props) => { setProjectFileList(prev => [...prev, ...formattedRows]); setChooseFilsListModalOpen(false); }; + return (
{ pagination={false} options={false} disabledResizer={true} - rowKey={record => record.id || record.dataName} + rowKey={record => record.id || record.detailId} columns={[ { title: "材料名称", key: "dataName", dataIndex: "dataName" }, { title: "上传时间", key: "createTime", dataIndex: "createTime", render: (_, record) => record.createTime || "-" }, @@ -973,8 +972,6 @@ const UserSelectComponent = (props) => { const { tableProps, getData } = useTable(props["userList"], { form, params: { - likeName: "", - likeUserIdCard: "", inDepartmentId, eqEmploymentFlag: 1, // 在职 }, diff --git a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/ReView/index.js b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/ReView/index.js index 5fb4148..b64ea8d 100644 --- a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/ReView/index.js +++ b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/ReView/index.js @@ -3,8 +3,8 @@ import { Button, Descriptions, Divider, Form, Input, message, Modal, Space } fro import { useEffect, useState } from "react"; import FormBuilder from "zy-react-library/components/FormBuilder"; import Page from "zy-react-library/components/Page"; +import PreviewImg from "zy-react-library/components/PreviewImg"; import Table from "zy-react-library/components/Table"; -import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import useGetFile from "zy-react-library/hooks/useGetFile"; @@ -269,7 +269,8 @@ function Review(props) { 项目基础信息 }, + { label: "安全管理协议", children: }, ]} />
@@ -291,7 +292,8 @@ function Review(props) { 企业基础信息 }, + { label: "营业执照", children: }, { label: "营业执照有效期", children: info.corpInfo?.licenseStart ? `${info.corpInfo?.licenseStart}-${info.corpInfo?.licenseEnd}` : "-" }, - { label: "", children: "" }, ]} /> @@ -422,7 +423,18 @@ function Review(props) { { title: "部门", dataIndex: "departmentName" }, { title: "姓名", dataIndex: "userName" }, { title: "时间", dataIndex: "approvalTime" }, - { title: "审核结果", dataIndex: "approvalStatus", render: (_, record) => getLabelName({ list: [{ name: record.auditType === 2 ? "确认中" : "审核中", bianma: "1" }, { name: record.auditType === 2 ? "已确认" : "已通过", bianma: "2" }, { name: "已驳回", bianma: "3" }], status: record.approvalStatus }) }, + { + title: "审核结果", + dataIndex: "approvalStatus", + render: (_, record) => getLabelName({ + list: [ + { name: record.auditType === 2 ? "确认中" : "审核中", bianma: "1" }, + { name: record.auditType === 2 ? "已确认" : "已通过", bianma: "2" }, + { name: "已驳回", bianma: "3" }, + ], + status: record.approvalStatus, + }), + }, ]} /> diff --git a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplicationTwo/Add/index.js b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplicationTwo/Add/index.js index 601df72..9ec4dbf 100644 --- a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplicationTwo/Add/index.js +++ b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplicationTwo/Add/index.js @@ -778,8 +778,6 @@ const UsercontentComponent = (props) => { const { tableProps, getData } = useTable(props["userList"], { form, params: { - likeName: "", - likeUserIdCard: "", inDepartmentId, eqEmploymentFlag: 1, // 在职 }, diff --git a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplicationTwo/List/index.js b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplicationTwo/List/index.js index 278583a..082605d 100644 --- a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplicationTwo/List/index.js +++ b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplicationTwo/List/index.js @@ -35,7 +35,7 @@ function List(props) { record.subcontractFlag === 1 ? "是" : "否" }, { title: "项目属地单位", dataIndex: "companyName" }, { title: "项目备案审核状态", diff --git a/src/pages/Container/Supervision/ProjectReview/ProjectFilingInformation/UserChange/index.js b/src/pages/Container/Supervision/ProjectReview/ProjectFilingInformation/UserChange/index.js index c9b8f0f..aee3863 100644 --- a/src/pages/Container/Supervision/ProjectReview/ProjectFilingInformation/UserChange/index.js +++ b/src/pages/Container/Supervision/ProjectReview/ProjectFilingInformation/UserChange/index.js @@ -157,8 +157,6 @@ const UserSelectComponent = (props) => { const { tableProps, getData } = useTable(props["userList"], { form, params: { - likeName: "", - likeUserIdCard: "", inDepartmentId, noMain: 1, eqEmploymentFlag: 1, // 在职 diff --git a/src/pages/Container/Supervision/Qualification/Maintenance/Add/index.js b/src/pages/Container/Supervision/Qualification/Maintenance/Add/index.js index bcfb36b..4e11e54 100644 --- a/src/pages/Container/Supervision/Qualification/Maintenance/Add/index.js +++ b/src/pages/Container/Supervision/Qualification/Maintenance/Add/index.js @@ -70,15 +70,15 @@ function Add(props) { { - if (v.dictValue === "wzgll") { + onChange={(value) => { + if (value === "wzgll") { setCorpTypeList([2, 6]); } else { setCorpTypeList([2]); } - form.setFieldValue("managerDept", []); - form.setFieldValue("managerDeptName", []); + form.setFieldValue("managerDept", ""); + form.setFieldValue("managerDeptName", ""); form.setFieldValue("managerUser", []); form.setFieldValue("managerUserName", []); }} @@ -115,12 +115,15 @@ function Add(props) { onGetLabel={(label) => { form.setFieldValue("managerDeptName", label); }} - onChange={(_, __, extra) => { + onChange={() => { form.setFieldValue("managerUser", []); form.setFieldValue("managerUserName", []); - form.setFieldValue("corpId", extra.triggerNode.props.corpinfoId); - form.setFieldValue("managerCorpId", extra.triggerNode.props.corpinfoId); - form.setFieldValue("managerCorpName", extra.triggerNode.props.corpinfoName); + }} + onGetNodePaths={(nodes) => { + const lastNode = nodes.at(-1); + form.setFieldValue("corpId", lastNode.corpinfoId); + form.setFieldValue("managerCorpId", lastNode.corpinfoId); + form.setFieldValue("managerCorpName", lastNode.corpinfoName); }} /> ), diff --git a/src/pages/Container/Supervision/Qualification/ViewInfo/index.js b/src/pages/Container/Supervision/Qualification/ViewInfo/index.js index 1751f28..db028c2 100644 --- a/src/pages/Container/Supervision/Qualification/ViewInfo/index.js +++ b/src/pages/Container/Supervision/Qualification/ViewInfo/index.js @@ -2,8 +2,8 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Button, Descriptions, Divider, Spin } from "antd"; import { Fragment, useEffect, useState } from "react"; import Page from "zy-react-library/components/Page"; +import PreviewImg from "zy-react-library/components/PreviewImg"; import Table from "zy-react-library/components/Table"; -import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import useGetFile from "zy-react-library/hooks/useGetFile"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; @@ -162,7 +162,7 @@ function ViewInfo(props) { label: "企业类型", children: getLabelName({ status: corpInfoData.type, list: ENTERPRISE_TYPE }), }, - { label: "营业执照", children: }, + { label: "营业执照", children: }, { label: "营业执照有效期", children: corpInfoData.licenseStart ? `${corpInfoData.licenseStart} 至 ${corpInfoData.licenseEnd}` : "" }, ]} />