From 07d05d20ede56714a910f3ef32a9ecdf86bdd2b1 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Tue, 10 Mar 2026 17:57:18 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E5=B7=A5=E7=A8=8B=E8=A6=81=E7=B4=A0-?= =?UTF-8?q?=E6=B0=B4=E5=BA=93=E5=88=92=E7=95=8C=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/apiurl.js | 7 +- src/views/Home/MapCtrl/Pops/QSYDW.js | 2 +- src/views/Home/MapCtrl/Pops/YHJMH.js | 2 +- .../ReservoirDemarcation/index.less | 3 + .../components/Demarcation.js | 218 ++++++++++++++++++ .../components/MainBuildingInfo.js | 70 +++--- .../components/RunningInfo.js | 67 ++++++ .../EngineeringElements/index.js | 8 + 8 files changed, 345 insertions(+), 32 deletions(-) create mode 100644 src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/Demarcation.js create mode 100644 src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/RunningInfo.js diff --git a/src/service/apiurl.js b/src/service/apiurl.js index bf2f3db..435b23c 100644 --- a/src/service/apiurl.js +++ b/src/service/apiurl.js @@ -106,12 +106,17 @@ const apiurl = { shuikuBasicinfo: { detail: service + "/attResBase/list", update: service + "/attResBase/update", - getFile: service + "/attResBase/file/get" + getFile: service + "/attResBase/file/get", + mangeFile: service + '/screen/manageHouseImg/get', }, buildInfo: { detail: service + "/attResBuilding/info", update: service + "/attResBuilding/update", }, + skhj: { + detail: service + '/reservoirDemarcationInfo/get', + list: service + '/propertyCertificate/list', + }, kr: { list: service + "/stZvarlB/list", save: service + "/stZvarlB/insert", diff --git a/src/views/Home/MapCtrl/Pops/QSYDW.js b/src/views/Home/MapCtrl/Pops/QSYDW.js index 5d71888..9ec345c 100644 --- a/src/views/Home/MapCtrl/Pops/QSYDW.js +++ b/src/views/Home/MapCtrl/Pops/QSYDW.js @@ -6,7 +6,7 @@ import moment from "moment" function QSYDW({ id, data, dispatch }) { console.log(data); - const url = "http://223.75.53.141:9100/gs-hsz" + const url = "http://223.75.53.141:9100/gs-ss" const width = 500; const closePop = () => { diff --git a/src/views/Home/MapCtrl/Pops/YHJMH.js b/src/views/Home/MapCtrl/Pops/YHJMH.js index a58ee5b..6b925a5 100644 --- a/src/views/Home/MapCtrl/Pops/YHJMH.js +++ b/src/views/Home/MapCtrl/Pops/YHJMH.js @@ -6,7 +6,7 @@ import moment from "moment" function YHJMH({ id, data, dispatch }) { console.log(data); - const url = "http://223.75.53.141:9100/gs-hsz" + const url = "http://223.75.53.141:9100/gs-ss" const width = 500; const closePop = () => { dispatch.runtime.closeFeaturePop(id); diff --git a/src/views/Home/components/Business/SiGuan/components/ReservoirDemarcation/index.less b/src/views/Home/components/Business/SiGuan/components/ReservoirDemarcation/index.less index 7ae1b41..31a39aa 100644 --- a/src/views/Home/components/Business/SiGuan/components/ReservoirDemarcation/index.less +++ b/src/views/Home/components/Business/SiGuan/components/ReservoirDemarcation/index.less @@ -82,11 +82,14 @@ .label { font-size: 14px; color: #fff; + white-space: nowrap; } .value { font-size: 14px; color: #00D8FF; + white-space: nowrap; + } } } diff --git a/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/Demarcation.js b/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/Demarcation.js new file mode 100644 index 0000000..387edb3 --- /dev/null +++ b/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/Demarcation.js @@ -0,0 +1,218 @@ +import React, { useState, useEffect } from 'react'; +import { Descriptions,Image,Table,Button } from 'antd'; +import { PaperClipOutlined} from '@ant-design/icons'; +import apiurl from '@/service/apiurl'; +import { httpget } from '@/utils/request'; +import { download } from '@/utils/tools'; +import PdfView from '@/views/Home/components/UI/PdfView'; +const MainBuildingInfo = () => { + // 不动产 + const columns = [ + { title: '序号', key: 'id', dataIndex: 'id', width: 60, align: "center", render: (v, r, i) => {i+ 1} }, + { title: '名称', key: 'name', dataIndex: 'name' }, + { title: '面积(万亩)', key: 'area', dataIndex: 'area' }, + { title: '描述', key: 'area', dataIndex: 'area' }, + { + title: '附件', key: 'files', dataIndex: 'files', + render: (v, r) => + }, + ] + const [data, setData] = useState({}) + const [managementFiles, setManagementFiles] = useState([]); + const [protectionFiles, setProtectionFiles] = useState([]); + const [propertyFiles, setPropertyFiles] = useState([]); + const [propertyData, setPropertyData] = useState([]) + const [pdfInfo, setPdfInfo] = useState({ visible: false, title: '', fileId: '' }); + const [imagePreview, setImagePreview] = useState({ visible: false, src: '' }); + const commonLabelStyle = { + width: '200px', + textAlign: 'right', + }; + + const descriptionStyle = { + marginBottom: '20px', + }; + + const getDescriptionsProps = (title) => ({ + title: {title}, + column: 3, + bordered: true, + size: 'small', + className: 'engineering-descriptions', + labelStyle: commonLabelStyle, + style: descriptionStyle, + }); + + const getData = async () => { + try { + const res = await httpget(apiurl.sq.qys.projectAndWater.skhj.detail) + if (res.code == 200) { + // 处理三个附件字段 + const processFiles = (files) => { + if (files && Array.isArray(files)) { + return files.map(file => ({ + uid: file.fileId, + name: file.fileName, + status: 'done', + url: `/gunshiApp/ss/reservoirDemarcationInfo/file/download/${file.fileId}`, + response: { data: file } + })); + } + return []; + }; + setManagementFiles(processFiles(res.data.managementScopeAreaFiles)); + setProtectionFiles(processFiles(res.data.protectionScopeFiles)); + setPropertyFiles(processFiles(res.data.propertyCertificateAreaFiles)); + setData(res.data) + } + } catch (error) { + console.log(error); + } + } + + const handlePreviewFile = (file) => { + const fileData = file.response?.data || { + fileName: file.name, + fileId: file.uid + }; + handlePreview({ files: [fileData] }); + } + + const handlePreview = (item) => { + const file = item?.files?.[0]; + if (!file || !file.fileName) return; + const fileName = file.fileName; + const fileId = file.fileId; + const extension = fileName.split('.').pop().toLowerCase(); + const downloadUrl = `/gunshiApp/ss/propertyCertificate/file/download/${fileId}`; + if (['jpg', 'jpeg', 'png', 'gif', 'bmp'].includes(extension)) { + setImagePreview({ + visible: true, + src: downloadUrl + }); + } else if (extension === 'pdf') { + setPdfInfo({ + visible: true, + title: fileName, + fileId: fileId + }); + } else { + download(downloadUrl) + } + }; + const getPropertyList = async () => { + try { + const res = await httpget(apiurl.sq.qys.projectAndWater.skhj.list) + if (res.code == 200) { + setPropertyData(res.data) + } + } catch (error) { + console.log(error); + } + } + + useEffect(() => { + getData() + getPropertyList() + }, []) + + + return ( +
+ + {data.managementScopeArea || '-'} + {data.managementScopeAreaExplain || '-'} + + {managementFiles.map(file => ( +
+ + { + handlePreviewFile(file) + }} + > + {file.name} + + +
+ ))} +
+ {data.protectionScopeArea || '-'} + {data.protectionScopeAreaExplain || '-'} + + {protectionFiles.map(file => ( +
+ + { + handlePreviewFile(file) + }} + > + {file.name} + + +
+ ))} +
+ {data.totalUseArea || '-'} + {data.totalUseAreaExplain || '-'} + + {propertyFiles.map(file => ( +
+ + { + handlePreviewFile(file) + }} + > + {file.name} + + +
+ ))} +
+
+ +
+
不动产权信息
+ + + + {/* PDF Viewer */} + {pdfInfo.visible && ( + setPdfInfo({ ...pdfInfo, visible: false })} + title={pdfInfo.title} + fileId={pdfInfo.fileId} + url="/gunshiApp/ss/propertyCertificate/file/download/" + /> + )} + + {/* Image Preview */} +
+ { + setImagePreview({ ...imagePreview, visible: value }); + }, + }} + /> +
+ + ); +}; + +export default MainBuildingInfo; diff --git a/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/MainBuildingInfo.js b/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/MainBuildingInfo.js index 0ba2398..368b394 100644 --- a/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/MainBuildingInfo.js +++ b/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/MainBuildingInfo.js @@ -32,58 +32,70 @@ const MainBuildingInfo = ({data={}}) => { {/* 主坝 */} {info.mainType || '-'} + {info.mainFoundation || '-'} {info.mainCrestElevation || '-'} {info.mainCrestLength || '-'} {info.mainCrestWidth || '-'} {info.mainMaxHeight || '-'} + {info.mainTopOfWaveBarrierElevation || '-'} + {info.mainFoundControlType || '-'} {/* 副坝 */} {info.auxType || '-'} + {info.auxFoundation || '-'} {info.auxCrestElevation || '-'} {info.auxCrestLength || '-'} {info.auxCrestWidth || '-'} {info.auxMaxHeight || '-'} + {info.auxHeartWallCrestElevation || '-'} + {info.auxFoundControlType || '-'} {/* 溢洪道 */} {info.spillwayType || '-'} - {info.spillwayCrestType || '-'} - {info.spillwayFoundation || '-'} - {info.spillwayCrestElevation || '-'} - {info.spillwayNetWidth || '-'} + {info.spillwayFoundation || '-'} {info.spillwayEnergyDissipation || '-'} - {info.spillwayCheckFloodDischarge || '-'} - {info.spillwayDesignFloodDischarge || '-'} - {info.spillwayScouringDischarge || '-'} + {info.spillwayInBottomElevation || '-'} + {info.spillwayBottomWidth || '-'} + {info.spillwayCanalDepth || '-'} + {info.spillwayMaxDischarge || '-'} + {info.spillwayZeroMaxDischarge || '-'} - {/* 灌溉发电洞 */} - - {info.irrigationType || '-'} - {info.irrigationLiningType || '-'} - {info.irrigationFoundation || '-'} - {info.irrigationInletElevation || '-'} - {info.irrigationCrossSection || '-'} - {info.irrigationLength || '-'} - {info.irrigationDesignFlow || '-'} - {info.irrigationGateType || '-'} - {info.irrigationHoistType || '-'} + + + {info.mwaterType || '-'} + {info.mwaterCrossSection || '-'} + {info.mwaterInletElevation || '-'} + {info.mwaterLength || '-'} + {info.mwaterDesignFlow || '-'} + {info.mwaterLiningType || '-'} - {/* 放空洞 */} - - {info.emptyingType || '-'} - {info.emptyingLiningType || '-'} - {info.emptyingFoundation || '-'} - {info.emptyingInletElevation || '-'} - {info.emptyingCrossSection || '-'} - {info.emptyingLength || '-'} - {info.emptyingDesignFlow || '-'} - {info.emptyingGateType || '-'} - {info.emptyingHoistType || '-'} + + + {info.awaterType || '-'} + {info.awaterFoundation || '-'} + {info.awaterCrossSection || '-'} + {info.awaterThick || '-'} + {info.awaterInletElevation || '-'} + {info.awaterLength || '-'} + {info.awaterMaxFlow || '-'} + {info.awaterLiningType || '-'} + + + + {info.waterConveyanceType || '-'} + {info.waterConveyanceFoundation || '-'} + {info.waterConveyanceCrossSection || '-'} + {info.waterConveyanceThick || '-'} + {info.waterConveyanceInletElevation || '-'} + {info.waterConveyanceLength || '-'} + {info.waterConveyanceMaxFlow || '-'} + {info.waterConveyanceLiningType || '-'} ); diff --git a/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/RunningInfo.js b/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/RunningInfo.js new file mode 100644 index 0000000..7f173d2 --- /dev/null +++ b/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/components/RunningInfo.js @@ -0,0 +1,67 @@ +import React, { useState, useEffect } from 'react'; +import { Descriptions, Image } from 'antd'; +import { httpget } from '@/utils/request'; +import apiurl from '@/service/apiurl'; +import { config } from '@/config'; +const BasicInfo = ({ data }) => { + const [fileList, setFileList] = useState([]) //上传文件列表 + // 获取管理用房图片 + const getManagePic = async () => { + try { + const result = await httpget(apiurl.sq.qys.projectAndWater.shuikuBasicinfo.mangeFile) + if (result.code == 200) { + const files = result.data?.files || []; + if (files.length > 0) { + const newFiles = files.map(item => ({ + filePath: item.filePath, + fileId: item.fileId + })) + setFileList(newFiles) + } + } + } catch (error) { + console.log(error); + } + } + + useEffect(() => { + getManagePic() + }, []) + + return ( +
+ + {data?.competentDepartment} + {data?.managementUnit} + {data?.chargePerson} + {data?.regSn} + {data?.regTime} + {data?.issuingAuthority} + {data?.issuingTime} + {data?.managementHousing} + +
+ { + fileList.length > 0 ? + fileList.map(item =>
+ +
) : null + } +
+
+
+
+ ); +}; + +export default BasicInfo; diff --git a/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/index.js b/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/index.js index c2a9217..e4389aa 100644 --- a/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/index.js +++ b/src/views/Home/components/Business/SiQuan/components/ModalComponents/EngineeringElements/index.js @@ -5,6 +5,8 @@ import BasicInfo from './components/BasicInfo'; import MainFeatureParams from './components/MainFeatureParams'; import MainBuildingInfo from './components/MainBuildingInfo'; import CapacityCurve from './components/CapacityCurve'; +import RunningInfo from './components/RunningInfo' +import Demarcation from './components/Demarcation' import XlCurve from './components/XlCurve'; import { httpget,httppost } from '@/utils/request'; import apiurl from '@/service/apiurl'; @@ -21,6 +23,8 @@ const EngineeringElements = ({ data }) => { { label: '工程基础信息', value: 'basic' }, { label: '主要特征参数', value: 'params' }, { label: '主要建筑物信息', value: 'buildings' }, + { label: '运行管理信息', value: 'running' }, + { label: '水库划界信息', value: 'demarcation' }, { label: '水库库容曲线', value: 'capacity-curve' }, { label: '水库泄流曲线', value: 'discharge-curve' }, ]; @@ -73,6 +77,10 @@ const EngineeringElements = ({ data }) => { return ; case 'buildings': return ; + case 'running': + return ; + case 'demarcation': + return ; case 'capacity-curve': return ; case 'discharge-curve':