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 d8aac11..f7bbceb 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, @@ -479,8 +479,7 @@ const StepOneComponent = (props) => { }, { name: "approvalCorpId", - label: "项目执行属地公司名称", - labelCol: { span: 7 }, + label: "项目属地单位", items: corpInfoList, render: FORM_ITEM_RENDER_ENUM.SELECT, itemsField: { valueKey: "id", labelKey: "corpName" }, @@ -497,11 +496,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: ( { 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 || "-" }, diff --git a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/List/index.js b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/List/index.js index f2ed3c8..cb7a31a 100644 --- a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/List/index.js +++ b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/List/index.js @@ -43,7 +43,7 @@ function List(props) { }, { name: "eqSubcontractFlag", label: "是否存在分包", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [{ name: "是", bianma: "1" }, { name: "否", bianma: "0" }] }, { - name: "", + name: "eqProjectStatus", label: "项目审核状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: PROJECT_STATUS_MAP, 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/List/index.js b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplicationTwo/List/index.js index c287d2a..278583a 100644 --- a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplicationTwo/List/index.js +++ b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplicationTwo/List/index.js @@ -42,7 +42,7 @@ function List(props) { render: (), }, { - name: "", + name: "eqProjectStatus", label: "项目审核状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: PROJECT_STATUS_MAP, diff --git a/src/pages/Container/Supervision/ProjectReview/ProjectApproval/Subcontract/List/index.js b/src/pages/Container/Supervision/ProjectReview/ProjectApproval/Subcontract/List/index.js index ccb17e8..0bcdf33 100644 --- a/src/pages/Container/Supervision/ProjectReview/ProjectApproval/Subcontract/List/index.js +++ b/src/pages/Container/Supervision/ProjectReview/ProjectApproval/Subcontract/List/index.js @@ -52,6 +52,7 @@ function List(props) { { title: "项目名称", dataIndex: "projectName" }, { title: "股份主管部门", dataIndex: "manageDeptName" }, { title: "项目类别", dataIndex: "qualificationsTypeName" }, + { title: "是否存在分包", dataIndex: "subcontractFlag", render: (_, record) => record.subcontractFlag === 1 ? "是" : "否" }, { title: "项目属地单位", dataIndex: "companyName" }, { title: "项目备案审核状态", 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}` : "" }, ]} />