diff --git a/components/HiddenInfo/gwj/index.js b/components/HiddenInfo/gwj/index.js index 2465e33..952b9cf 100644 --- a/components/HiddenInfo/gwj/index.js +++ b/components/HiddenInfo/gwj/index.js @@ -1,16 +1,17 @@ import { request } from "@cqsjjb/jjb-common-lib/http"; -import { Descriptions, Divider, Spin } from "antd"; +import { Button, Descriptions, Divider, Spin } from "antd"; import dayjs from "dayjs"; import { useEffect, useState } from "react"; +import { HIDDEN_SOURCE_ENUM, HIDDEN_STATE_ENUM } from "../../../enum/hidden/gwj"; +import { UPLOAD_FILE_TYPE_ENUM } from "../../../enum/uploadFile/gwj"; +import useDownloadFile from "../../../hooks/useDownloadFile"; +import useGetFile from "../../../hooks/useGetFile"; +import useGetUrlQuery from "../../../hooks/useGetUrlQuery"; +import { getFileName, getFileSuffix, getLabelName } from "../../../utils"; import HeaderBack from "../../HeaderBack"; import VideoIcon from "../../Icon/VideoIcon"; import PreviewImg from "../../PreviewImg"; import PreviewPdf from "../../PreviewPdf"; -import { UPLOAD_FILE_TYPE_ENUM } from "../../../enum/uploadFile/gwj"; -import useGetFile from "../../../hooks/useGetFile"; -import { getLabelName, getFileName } from "../../../utils"; -import { HIDDEN_SOURCE_ENUM, HIDDEN_STATE_ENUM } from "../../../enum/hidden/gwj"; -import useGetUrlQuery from "../../../hooks/useGetUrlQuery"; /** * 隐患查看组件(港务局版本) @@ -43,6 +44,7 @@ function HiddenInfo(props) { const [loading, setLoading] = useState(true); const { getFile } = useGetFile(); const query = useGetUrlQuery(); + const { loading: downloadFileLoading, downloadFile } = useDownloadFile(); const getData = async () => { request(`/hidden/hidden/${id || query[idKey]}`, "get").then((res) => { @@ -74,292 +76,306 @@ function HiddenInfo(props) { return (
{isShowHeaderBack && } - +
- 隐患信息 - }, - ...(hiddenVideoFiles.length > 0 ? [{ label: "隐患视频", children: }] : []), - ]} - /> - { - (info.hiddenUserPresetsCO && Object.keys(info.hiddenUserPresetsCO).length > 0) && ( - <> - 整改信息(发现人预填) - - - ) - } - { - (info.isConfirm === 1 && info.hiddenConfirmUserCO && Object.keys(info.hiddenConfirmUserCO).length > 0) && ( - <> - 隐患确认 - - - ) - } - { - info.hiddenExtensionList && info.hiddenExtensionList.length > 0 && ( - <> - 延期信息 + 隐患信息 + ( - }, - ] - : []), - { - label: "延期审核状态", - children: ( - <> - {item.state === 1 && 待审核} - {item.state === 2 && 审批中} - {item.state === 3 && 已通过} - {item.state === 4 && 已拒绝} - {item.state === 5 && 已撤回} - - ), - }, - ...((item.state === 3 || item.state === 4) ? [{ label: "延期审核时间", children: item.updateTime }] : []), - ]} - /> - ), - ) - } - - ) - } - { - info.hiddenSpecialList && info.hiddenSpecialList.length > 0 && ( - <> - 特殊处置审核信息 + label: "隐患上报位置(经纬度)", + children: [info.longitude && `经度:${info.longitude}`, info.latitude && `纬度:${info.latitude}`].filter(Boolean).join(" "), + }, + { label: "隐患位置描述", children: info.positionDesc }, + { label: "隐患发现人", children: info.creatorName }, + { label: "隐患发现时间", children: dayjs(info.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") }, { - info.hiddenSpecialList.map(item => ( - }, - { label: "是否更换整改负责人", children: item.rectifyUserCO && Object.keys(item.rectifyUserCO).length > 0 ? "是" : "否" }, - ...( - item.rectifyUserCO && Object.keys(item.rectifyUserCO).length > 0 - ? [{ label: "整改负责人", children: item.rectifyUserCO.userName }] - : []), - ] - : []), - { - label: "特殊处置审核状态", - children: ( - <> - {item.state === 1 && 待审核} - {item.state === 2 && 审批中} - {item.state === 3 && 已通过} - {item.state === 4 && 已拒绝} - {item.state === 5 && 已撤回} - - ), - }, - ]} - /> - ), + label: "整改类型", + children: getLabelName({ + list: [{ bianma: "1", name: "立即整改" }, { bianma: "2", name: "延期整改" }], + status: info.rectificationType, + }), + }, + { + label: "是否相关方", + children: getLabelName({ + list: [{ bianma: "1", name: "是" }, { bianma: "2", name: "否" }], + status: info.isRelated, + }), + }, + { label: "隐患图片", children: }, + ...(hiddenVideoFiles.length > 0 ? [{ label: "隐患视频", children: }] : []), + ]} + /> + { + (info.hiddenUserPresetsCO && Object.keys(info.hiddenUserPresetsCO).length > 0) && ( + <> + 整改信息(发现人预填) + + + ) + } + { + (info.isConfirm === 1 && info.hiddenConfirmUserCO && Object.keys(info.hiddenConfirmUserCO).length > 0) && ( + <> + 隐患确认 + + + ) + } + { + info.hiddenExtensionList && info.hiddenExtensionList.length > 0 && ( + <> + 延期信息 + { + info.hiddenExtensionList.map(item => ( + + : + ), + }, + ] + : []), + { + label: "延期审核状态", + children: ( + <> + {item.state === 1 && 待审核} + {item.state === 2 && 审批中} + {item.state === 3 && 已通过} + {item.state === 4 && 已拒绝} + {item.state === 5 && 已撤回} + + ), + }, + ...((item.state === 3 || item.state === 4) ? [{ label: "延期审核时间", children: item.updateTime }] : []), + ]} + /> + ), + ) + } + + ) + } + { + info.hiddenSpecialList && info.hiddenSpecialList.length > 0 && ( + <> + 特殊处置审核信息 + { + info.hiddenSpecialList.map(item => ( + + : + ), + }, + { label: "是否更换整改负责人", children: item.rectifyUserCO && Object.keys(item.rectifyUserCO).length > 0 ? "是" : "否" }, + ...( + item.rectifyUserCO && Object.keys(item.rectifyUserCO).length > 0 + ? [{ label: "整改负责人", children: item.rectifyUserCO.userName }] + : []), + ] + : []), + { + label: "特殊处置审核状态", + children: ( + <> + {item.state === 1 && 待审核} + {item.state === 2 && 审批中} + {item.state === 3 && 已通过} + {item.state === 4 && 已拒绝} + {item.state === 5 && 已撤回} + + ), + }, + ]} + /> + ), + ) + } + + ) + } + { + (info.hiddenRectifyUserCO && Object.keys(info.hiddenRectifyUserCO).length > 0) && ( + <> + 整改信息 + }, + { label: "整改方案", children: info.hiddenRectifyUserCO.isRectificationScheme === 0 ? "无" : "有" }, + ...((info.hiddenRectifyUserCO.isRectificationScheme === 1 && info.hiddenRectifyUserCO.hiddenSchemeCO && Object.keys(info.hiddenRectifyUserCO.hiddenSchemeCO).length > 0) + ? [ + { label: "治理标准", children: info.hiddenRectifyUserCO.hiddenSchemeCO.governStanDards }, + { label: "治理方法", children: info.hiddenRectifyUserCO.hiddenSchemeCO.governMethod }, + { label: "经费落实", children: info.hiddenRectifyUserCO.hiddenSchemeCO.expenditure }, + { label: "负责人员", children: info.hiddenRectifyUserCO.hiddenSchemeCO.principal }, + { label: "工时安排", children: info.hiddenRectifyUserCO.hiddenSchemeCO.programming }, + { label: "时限要求", children: info.hiddenRectifyUserCO.hiddenSchemeCO.timeLimitFor }, + { label: "工作要求", children: info.hiddenRectifyUserCO.hiddenSchemeCO.jobRequireMent }, + { label: "其他事项", children: info.hiddenRectifyUserCO.hiddenSchemeCO.otherBusiness }, + { label: "方案图片", children: }, + ] + : []), + ]} + /> + + ) + } + { + info.isQualified === 1 + ? ( + (info.hiddenAcceptUserCO && Object.keys(info.hiddenAcceptUserCO).length > 0) + ? ( + <> + 验收信息 + }, + ]} + /> + + ) + : ( + <> + 验收打回信息 + + + ) ) - } - - ) - } - { - (info.hiddenRectifyUserCO && Object.keys(info.hiddenRectifyUserCO).length > 0) && ( - <> - 整改信息 - }, - { label: "整改方案", children: info.hiddenRectifyUserCO.isRectificationScheme === 0 ? "无" : "有" }, - ...((info.hiddenRectifyUserCO.isRectificationScheme === 1 && info.hiddenRectifyUserCO.hiddenSchemeCO && Object.keys(info.hiddenRectifyUserCO.hiddenSchemeCO).length > 0) - ? [ - { label: "治理标准", children: info.hiddenRectifyUserCO.hiddenSchemeCO.governStanDards }, - { label: "治理方法", children: info.hiddenRectifyUserCO.hiddenSchemeCO.governMethod }, - { label: "经费落实", children: info.hiddenRectifyUserCO.hiddenSchemeCO.expenditure }, - { label: "负责人员", children: info.hiddenRectifyUserCO.hiddenSchemeCO.principal }, - { label: "工时安排", children: info.hiddenRectifyUserCO.hiddenSchemeCO.programming }, - { label: "时限要求", children: info.hiddenRectifyUserCO.hiddenSchemeCO.timeLimitFor }, - { label: "工作要求", children: info.hiddenRectifyUserCO.hiddenSchemeCO.jobRequireMent }, - { label: "其他事项", children: info.hiddenRectifyUserCO.hiddenSchemeCO.otherBusiness }, - { label: "方案图片", children: }, - ] - : []), - ]} - /> - - ) - } - { - info.isQualified === 1 - ? ( - (info.hiddenAcceptUserCO && Object.keys(info.hiddenAcceptUserCO).length > 0) - ? ( - <> - 验收信息 - }, - ]} - /> - - ) - : ( - <> - 验收打回信息 - - - ) - ) - : null - } - 安全环保验收信息 - -
+ : null + } + 安全环保验收信息 + +
); diff --git a/components/Pdf/index.d.ts b/components/Pdf/index.d.ts index 7fb7e98..0d23d75 100644 --- a/components/Pdf/index.d.ts +++ b/components/Pdf/index.d.ts @@ -3,6 +3,8 @@ import type { CSSProperties, FC } from "react"; export interface PdfProps { /** pdf 文件地址 */ file: string; + /** pdf 文件名 */ + name?: string; /** 是否显示弹窗 */ visible?: boolean; /** 关闭弹窗的方法 */ diff --git a/components/Pdf/index.js b/components/Pdf/index.js index 45c309b..f72885c 100644 --- a/components/Pdf/index.js +++ b/components/Pdf/index.js @@ -1,6 +1,7 @@ -import { Button, message, Modal, Spin } from "antd"; +import { message, Modal, Spin } from "antd"; import { useState } from "react"; import { Document, Page, pdfjs } from "react-pdf"; +import useDownloadFile from "../../hooks/useDownloadFile"; import { getFileUrl } from "../../utils/index"; /** @@ -11,6 +12,7 @@ function Pdf(props) { visible = false, onCancel, file, + name, inline = false, style = {}, } = props; @@ -70,6 +72,21 @@ function Pdf(props) { return renderPdfContent(); } + const { loading: downloadFileLoading, downloadFile } = useDownloadFile(); + + const onDownloadFile = () => { + Modal.confirm({ + title: "提示", + content: "确定要下载此文件吗?", + onOk: () => { + downloadFile({ + url: fileUrl, + name, + }); + }, + }); + }; + // 默认弹窗模式 return ( 关闭} + cancelText="关闭" + okText="下载" + onOk={onDownloadFile} + loading={downloadFileLoading} > {renderPdfContent()} diff --git a/components/PreviewPdf/index.js b/components/PreviewPdf/index.js index 0ffee69..085bdd9 100644 --- a/components/PreviewPdf/index.js +++ b/components/PreviewPdf/index.js @@ -15,16 +15,19 @@ const PreviewPdf = (props) => { } = props; const [visible, setVisible] = useState(false); - const [src, setSrc] = useState(""); + const [currentSrc, setCurrentSrc] = useState(""); + const [currentName, setCurrentName] = useState(""); - const previewPdf = (src) => { + const previewPdf = (src, name) => { setVisible(true); - setSrc(src); + setCurrentSrc(src); + setCurrentName(name); }; const onCancel = () => { setVisible(false); - setSrc(""); + setCurrentSrc(""); + setCurrentName(""); }; // 单个文件预览模式 @@ -33,13 +36,14 @@ const PreviewPdf = (props) => { <> {name} - @@ -57,7 +61,7 @@ const PreviewPdf = (props) => { @@ -66,7 +70,8 @@ const PreviewPdf = (props) => { ))}