diff --git a/jjb.config.js b/jjb.config.js index 9202047..e8953a4 100644 --- a/jjb.config.js +++ b/jjb.config.js @@ -1,3 +1,8 @@ +const path = require("path"); + +const pdfjsDistEntry = path.resolve(__dirname, "node_modules/pdfjs-dist/legacy/build/pdf.mjs"); +const pdfjsDistPatchLoader = path.resolve(__dirname, "loaders/pdfjs-dist-patch-loader.cjs"); + module.exports = { // 应用后端git地址,部署上线需要 javaGit: "", @@ -74,5 +79,22 @@ module.exports = { // 自动注入编译后的文件到public/index.html中 inject: true, }, + resolve: { + alias: { + "~": path.resolve(__dirname, "src"), + "pdfjs-dist": pdfjsDistEntry, + }, + }, + module: { + rules: [ + { + test: /pdf\.mjs$/, + include: [pdfjsDistEntry], + use: [{ + loader: pdfjsDistPatchLoader, + }], + }, + ], + }, }, }; diff --git a/loaders/pdfjs-dist-patch-loader.cjs b/loaders/pdfjs-dist-patch-loader.cjs new file mode 100644 index 0000000..7602111 --- /dev/null +++ b/loaders/pdfjs-dist-patch-loader.cjs @@ -0,0 +1,16 @@ +const replacements = [ + ["__webpack_exports__", "__pdfjs_dist_exports__"], + ["__webpack_module_cache__", "__pdfjs_dist_module_cache__"], + ["__webpack_modules__", "__pdfjs_dist_modules__"], + ["__webpack_require__", "__pdfjs_dist_require__"], +]; + +module.exports = function pdfjsDistPatchLoader(source) { + let patchedSource = source; + + for (const [from, to] of replacements) { + patchedSource = patchedSource.split(from).join(to); + } + + return patchedSource; +}; diff --git a/package.json b/package.json index 8cbc4b9..1060a6e 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-pdf": "^10.4.1", - "zy-react-library": "^1.2.35" + "zy-react-library": "^1.3.14" }, "devDependencies": { "@antfu/eslint-config": "^5.4.1", diff --git a/src/api/evaluation/index.js b/src/api/evaluation/index.js new file mode 100644 index 0000000..ef4affa --- /dev/null +++ b/src/api/evaluation/index.js @@ -0,0 +1,19 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const evaluationCorpPage = declareRequest( + "evaluationLoading", + `Post > @/xgfManager/evaluation/corpPage`, +); +export const evaluationList = declareRequest( + "evaluationLoading", + `Post > @/xgfManager/evaluation/list`, +); +export const evaluationAdd = declareRequest( + "evaluationLoading", + `Post > @/xgfManager/evaluation/save`, +); + +export const projectPageNoPermission = declareRequest( + "evaluationLoading", + `Post > @/xgfManager/project/projectPageNoPermission`, +); diff --git a/src/components/ViewProjectReviewDetailsModal/index.js b/src/components/ViewProjectReviewDetailsModal/index.js index 42ff317..2bb8150 100644 --- a/src/components/ViewProjectReviewDetailsModal/index.js +++ b/src/components/ViewProjectReviewDetailsModal/index.js @@ -1,7 +1,7 @@ import { Button, Descriptions, Modal } from "antd"; import { useEffect } from "react"; import PreviewImg from "zy-react-library/components/PreviewImg"; -import PreviewPdf from "zy-react-library/components/PreviewPdf"; +// import PreviewPdf from "zy-react-library/components/PreviewPdf"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import useGetFile from "zy-react-library/hooks/useGetFile"; import { getFileSuffix } from "zy-react-library/utils"; @@ -31,7 +31,7 @@ const ViewProjectReviewDetailsModal = (props) => { return ( <>
-
+ {/*
*/} ); } @@ -39,7 +39,7 @@ const ViewProjectReviewDetailsModal = (props) => { return ; } if (pdfFiles.length > 0) { - return ; + // return ; } }; useEffect(() => { diff --git a/src/components/ViewQualificationDetailsModal/index.js b/src/components/ViewQualificationDetailsModal/index.js index afe1484..ac3ab3a 100644 --- a/src/components/ViewQualificationDetailsModal/index.js +++ b/src/components/ViewQualificationDetailsModal/index.js @@ -1,33 +1,101 @@ -import { Button, Descriptions, Modal } from "antd"; +import { Button, Descriptions, Modal, Space, message } from "antd"; import PreviewImg from "zy-react-library/components/PreviewImg"; import PreviewPdf from "zy-react-library/components/PreviewPdf"; -import { getFileSuffix } from "zy-react-library/utils"; +import { getFileName, getFileSuffix, getFileUrl } from "zy-react-library/utils"; const ViewQualificationDetailsModal = (props) => { + const handleDownload = async (file) => { + const baseUrl = getFileUrl(); + const fileUrl = file.url || (file.filePath ? `${baseUrl}${file.filePath}` : ""); + const fileName = file.fileName || file.name || getFileName(file.filePath || fileUrl); + + if (!fileUrl) { + message.error("文件地址不存在"); + return; + } + + try { + const response = await fetch(fileUrl); + const blob = await response.blob(); + const link = document.createElement("a"); + const blobUrl = window.URL.createObjectURL(blob); + + link.href = blobUrl; + link.download = fileName; + link.style.display = "none"; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + window.URL.revokeObjectURL(blobUrl); + } + catch { + message.error("下载失败"); + } + }; + const previewFile = () => { + const files = props.data.files || []; const imgFiles = []; const pdfFiles = []; - for (let i = 0; i < props.data.files.length; i++) { - if (getFileSuffix(props.data.files[i].fileName) === "pdf") { - pdfFiles.push(props.data.files[i]); + const compressedFiles = []; + + for (let i = 0; i < files.length; i++) { + const file = files[i]; + const suffix = getFileSuffix(file.fileName || file.name || "").toLowerCase(); + + if (suffix === "pdf") { + pdfFiles.push(file); + } + else if (suffix === "zip" || suffix === "rar") { + compressedFiles.push(file); } else { - imgFiles.push(props.data.files[i]); + imgFiles.push(file); } } + + const compressedFileNodes = compressedFiles.length > 0 && ( +
0 || pdfFiles.length > 0 ? 20 : 0 }}> + + {compressedFiles.map(file => ( + + {file.fileName || file.name || getFileName(file.filePath || file.url || "")} + + + ))} + +
+ ); + if (imgFiles.length > 0 && pdfFiles.length > 0) { return ( <>
+ {compressedFileNodes} ); } if (imgFiles.length > 0) { - return ; + return ( + <> + + {compressedFileNodes} + + ); } if (pdfFiles.length > 0) { - return ; + return ( + <> + + {compressedFileNodes} + + ); + } + if (compressedFiles.length > 0) { + return compressedFileNodes; } }; diff --git a/src/enumerate/namespace/index.js b/src/enumerate/namespace/index.js index b88b1eb..763cb21 100644 --- a/src/enumerate/namespace/index.js +++ b/src/enumerate/namespace/index.js @@ -11,3 +11,4 @@ export const NS_QUALIFICATION_RECORDS = defineNamespace("qualificationRecords"); export const NS_QUALIFICATION_STATISTICS = defineNamespace("qualificationStatistics"); export const NS_QUALIFICATION_APPLY = defineNamespace("qualificationApply"); export const NS_HIDDEN = defineNamespace("hidden"); +export const NS_EVALUATION = defineNamespace("evaluation"); diff --git a/src/pages/Container/BranchCompany/CompositeManage/HiddenList/index.js b/src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/HiddenList/index.js similarity index 100% rename from src/pages/Container/BranchCompany/CompositeManage/HiddenList/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/HiddenList/index.js diff --git a/src/pages/Container/BranchCompany/CompositeManage/List/index.js b/src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/List/index.js similarity index 79% rename from src/pages/Container/BranchCompany/CompositeManage/List/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/List/index.js index b1ba08e..43d8907 100644 --- a/src/pages/Container/BranchCompany/CompositeManage/List/index.js +++ b/src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/List/index.js @@ -1,7 +1,7 @@ import ListPage from "~/pages/Container/Supervision/EvaluationManage/CompositeManage/List"; function List(props) { - return ; + return ; } export default List; diff --git a/src/pages/Container/BranchCompany/CompositeManage/ProjectList/index.js b/src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/ProjectList/index.js similarity index 100% rename from src/pages/Container/BranchCompany/CompositeManage/ProjectList/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/ProjectList/index.js diff --git a/src/pages/Container/BranchCompany/CompositeManage/ReView/index.js b/src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/ReView/index.js similarity index 100% rename from src/pages/Container/BranchCompany/CompositeManage/ReView/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/ReView/index.js diff --git a/src/pages/Container/BranchCompany/CompositeManage/ScoreList/index.js b/src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/ScoreList/index.js similarity index 100% rename from src/pages/Container/BranchCompany/CompositeManage/ScoreList/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/ScoreList/index.js diff --git a/src/pages/Container/BranchCompany/CompositeManage/index.js b/src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/index.js similarity index 100% rename from src/pages/Container/BranchCompany/CompositeManage/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/CompositeManage/index.js diff --git a/src/pages/Container/BranchCompany/EvaluationManage/HiddenList/index.js b/src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/HiddenList/index.js similarity index 100% rename from src/pages/Container/BranchCompany/EvaluationManage/HiddenList/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/HiddenList/index.js diff --git a/src/pages/Container/BranchCompany/EvaluationManage/List/index.js b/src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/List/index.js similarity index 100% rename from src/pages/Container/BranchCompany/EvaluationManage/List/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/List/index.js diff --git a/src/pages/Container/BranchCompany/EvaluationManage/ProjectList/index.js b/src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/ProjectList/index.js similarity index 100% rename from src/pages/Container/BranchCompany/EvaluationManage/ProjectList/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/ProjectList/index.js diff --git a/src/pages/Container/BranchCompany/EvaluationManage/ReView/index.js b/src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/ReView/index.js similarity index 100% rename from src/pages/Container/BranchCompany/EvaluationManage/ReView/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/ReView/index.js diff --git a/src/pages/Container/BranchCompany/EvaluationManage/ScoreList/index.js b/src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/ScoreList/index.js similarity index 100% rename from src/pages/Container/BranchCompany/EvaluationManage/ScoreList/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/ScoreList/index.js diff --git a/src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/index.js b/src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/index.js new file mode 100644 index 0000000..0851a4f --- /dev/null +++ b/src/pages/Container/BranchCompany/EvaluationManage/EvaluationManage/index.js @@ -0,0 +1,5 @@ +function EvaluationManage(props) { + return (
{props.children}
); +} + +export default EvaluationManage; diff --git a/src/pages/Container/BranchCompany/HiddenView/index.js b/src/pages/Container/BranchCompany/EvaluationManage/HiddenView/index.js similarity index 72% rename from src/pages/Container/BranchCompany/HiddenView/index.js rename to src/pages/Container/BranchCompany/EvaluationManage/HiddenView/index.js index b71cfa4..753e3ea 100644 --- a/src/pages/Container/BranchCompany/HiddenView/index.js +++ b/src/pages/Container/BranchCompany/EvaluationManage/HiddenView/index.js @@ -1,4 +1,4 @@ -// import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj"; +import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj"; import Page from "zy-react-library/components/Page"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; @@ -7,7 +7,7 @@ function HiddenView() { return ( - {/**/} + ); } diff --git a/src/pages/Container/BranchCompany/Qualification/Apply/Add/index.js b/src/pages/Container/BranchCompany/Qualification/Apply/Add/index.js index 21b87a6..53f5fb7 100644 --- a/src/pages/Container/BranchCompany/Qualification/Apply/Add/index.js +++ b/src/pages/Container/BranchCompany/Qualification/Apply/Add/index.js @@ -529,7 +529,7 @@ const FileUpload = (props) => { { form.setFieldValue("deleteFiles", [...(form.getFieldValue("deleteFiles") || []), file]); }} diff --git a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/Add/index.js b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/Add/index.js index c155bb7..47816d0 100644 --- a/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/Add/index.js +++ b/src/pages/Container/Stakeholder/ProjectReview/ProjectFilingApplication/Add/index.js @@ -270,7 +270,8 @@ const StepOneComponent = (props) => { }, [qualificationsTypeId]); return ( { + if (value === undefined || value === null || value === "") { + return Promise.resolve(); + } + + const score = Number(value); + + if (!Number.isInteger(score) || score < 1 || score > 100) { + return Promise.reject(new Error("\u9879\u76ee\u5206\u6570\u53ea\u5141\u8bb8\u8f93\u51651-100\u6b63\u6574\u6570")); + } + + return Promise.resolve(); +}; + +const disabledEvaluationMonth = (current) => { + if (!current) { + return false; + } + + const minMonth = dayjs().startOf("month").subtract(3, "month"); + const maxMonth = dayjs().endOf("month"); + + return current.isBefore(minMonth, "month") || current.isAfter(maxMonth, "month"); +}; function List(props) { const [form] = Form.useForm(); const [configModalOpen, setConfigModalOpen] = useState(false); const [currentRecord, setCurrentRecord] = useState(null); - const { tableProps, getData } = useTable(props["inCheckList"], { + const { tableProps, getData } = useTable(props["evaluationCorpPage"], { form, transform: (formData) => { return { ...formData, - startTime: formData.time?.[0], - endTime: formData.time?.[1], + startTime: formData.time?.[0] ? formData.time?.[0] + " 00:00:00" :"", + endTime: formData.time?.[1] ? formData.time?.[1] + " 23:59:59" :"", }; }, @@ -33,7 +60,7 @@ function List(props) { ( + { title: "项目数", dataIndex: "projectCount",render:(_, record) => ( ) }, { title: "已验收/隐患数", dataIndex: "manageDeptName",render:(_, record) => ( ) }, - { title: "处罚金处罚次数", dataIndex: "qualificationsTypeName" }, - { title: "处罚金总额(元)", dataIndex: "companyName" }, + { title: "处罚金处罚次数", dataIndex: "penaltyTimes" }, + { title: "处罚金总额(元)", dataIndex: "totalPenaltyAmount" }, { title: "已缴纳金额(元)", - dataIndex: "projectStatus", + dataIndex: "paidAmount", render: (_, record) => getLabelName({ list: PROJECT_STATUS_MAP, status: record.projectStatus }), }, { @@ -81,7 +108,7 @@ function List(props) { width: 150, render: (_, record) => ( - {/*{props.permission(props.pfbtn) && (*/} + {props.permission(props.pfbtn) && ( - {/*)}*/} - {/*{props.permission(props.dflbbtn || "jgd-xgfzhkpgl-dflb") && (*/} + )} + {props.permission(props.dflbbtn || "jgd-xgfzhkpgl-dflb") && ( - {/*)}*/} + )} ), }, @@ -113,9 +140,7 @@ function List(props) { && ( { setConfigModalOpen(false); @@ -131,13 +156,26 @@ function List(props) { function AddModalComponent(props) { const [form] = Form.useForm(); - + useEffect(() => { + console.log(props); + },[]) + const splitYearMonth =(dateStr)=> { + const [year, month] = dateStr.split('-'); + return { year, month }; + } const onCancel = () => { form.resetFields(); props.onCancel(); }; const onSubmit = async (values) => { - const res = await props.requestEdit(submitValues); + values.corpinfoId = props.currentData.corpinfoId; + values.corpinfoName = props.currentData.corpinfoName; + + const result = splitYearMonth(values.tims) + values.year = result.year; + values.month = result.month; + + const res = await props.evaluationAdd(values); if (res?.success) { onCancel(); props.getData(); @@ -163,22 +201,27 @@ function AddModalComponent(props) { options={[ { - name: "algorithmTypeIds", + name: "tims", label: "评分阶段", render:FORM_ITEM_RENDER_ENUM.DATE_MONTH, span: 24, + componentProps: { + disabledDate: disabledEvaluationMonth, + }, }, { name: "score", label: "项目分数", - render:FORM_ITEM_RENDER_ENUM.NUMBER, - + render:FORM_ITEM_RENDER_ENUM.INTEGER, + useConstraints: false, componentProps:{ - max:"100", - min:"1", - step:"1", + max: 100, + min: 1, + precision: 0, + step: 1, }, + rules: [{ validator: validatorScore }], span: 24, }, { @@ -196,4 +239,4 @@ function AddModalComponent(props) { } const AddModal = AddModalComponent; -export default Connect([NS_QUALIFICATION_STATISTICS], true)(Permission(List)); +export default Connect([NS_EVALUATION], true)(Permission(List)); diff --git a/src/pages/Container/Supervision/EvaluationManage/CompositeManage/ProjectList/index.js b/src/pages/Container/Supervision/EvaluationManage/CompositeManage/ProjectList/index.js index 6e2faf7..2475617 100644 --- a/src/pages/Container/Supervision/EvaluationManage/CompositeManage/ProjectList/index.js +++ b/src/pages/Container/Supervision/EvaluationManage/CompositeManage/ProjectList/index.js @@ -11,17 +11,20 @@ import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import useTable from "zy-react-library/hooks/useTable"; import { getLabelName } from "zy-react-library/utils"; import { PROJECT_ONELEVEL_STATUS_MAP, PROJECT_STATUS_MAP } from "~/enumerate/constant"; -import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace"; - +import {NS_EVALUATION, NS_QUALIFICATION_STATISTICS} from "~/enumerate/namespace"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; function ProjectList(props) { const [form] = Form.useForm(); - const { tableProps, getData } = useTable(props["inCheckList"], { + const query = useGetUrlQuery(); + const { tableProps, getData } = useTable(props["projectPageNoPermission"], { form, usePermission:false, useStorageQueryCriteria:false, - // params: { - // noneCompleted: props.noneCompleted ? props.noneCompleted : 2, - // }, + params: { + eqCorpinfoId: query.corpinfoId, + eqProjectStatus:4, + + }, }); @@ -54,7 +57,6 @@ function ProjectList(props) { width: 120, render: (_, record) => ( - {/*{props.permission(props.ckbtn || "jgd-xgfzhkpgl-xmlb-info") && (*/} - {/*)}*/} - ), }, @@ -77,4 +77,4 @@ function ProjectList(props) { } -export default Connect([NS_QUALIFICATION_STATISTICS], true)(Permission(ProjectList)); +export default Connect([NS_EVALUATION], true)(Permission(ProjectList)); diff --git a/src/pages/Container/Supervision/EvaluationManage/CompositeManage/ScoreList/index.js b/src/pages/Container/Supervision/EvaluationManage/CompositeManage/ScoreList/index.js index 9a354ac..1094439 100644 --- a/src/pages/Container/Supervision/EvaluationManage/CompositeManage/ScoreList/index.js +++ b/src/pages/Container/Supervision/EvaluationManage/CompositeManage/ScoreList/index.js @@ -5,18 +5,22 @@ import Page from "zy-react-library/components/Page"; import Search from "zy-react-library/components/Search"; import Table from "zy-react-library/components/Table"; import useTable from "zy-react-library/hooks/useTable"; -import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace"; +import {NS_EVALUATION} from "~/enumerate/namespace"; import {FORM_ITEM_RENDER_ENUM} from "zy-react-library/enum/formItemRender"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; function ScoreList(props) { const [form] = Form.useForm(); - const { tableProps, getData } = useTable(props["inCheckList"], { + const query = useGetUrlQuery(); + + const { tableProps, getData } = useTable(props["evaluationList"], { form, usePermission:false, useStorageQueryCriteria:false, transform: (formData) => { return { ...formData, + eqCorpinfoId: query.corpinfoId, }; }, @@ -26,7 +30,7 @@ function ScoreList(props) { - {/**/} + ); } diff --git a/src/pages/Container/Supervision/Qualification/ViewInfo/index.js b/src/pages/Container/Supervision/Qualification/ViewInfo/index.js index fee86df..9e25621 100644 --- a/src/pages/Container/Supervision/Qualification/ViewInfo/index.js +++ b/src/pages/Container/Supervision/Qualification/ViewInfo/index.js @@ -142,7 +142,7 @@ function ViewInfo(props) { { label: "公司名称", children: corpInfoData.corpName }, { label: "企业状态", children: (corpInfoData.corpStateName) ? corpInfoData.corpStateName : "-" }, { label: "开户人", children: corpInfoData.createName }, - { label: "统一社会信用代码", children: corpInfoData.code }, + { label: "统一社会信号代码", children: corpInfoData.code }, { label: "属地", children: corpInfoData.cityName }, { label: "所属行业",