diff --git a/public/assets/images/qishu.jpg b/public/assets/images/qishu.jpg new file mode 100644 index 000000000..5aa46fba4 Binary files /dev/null and b/public/assets/images/qishu.jpg differ diff --git a/public/assets/images/renchi.jpg b/public/assets/images/renchi.jpg new file mode 100644 index 000000000..0ceb71220 Binary files /dev/null and b/public/assets/images/renchi.jpg differ diff --git a/src/components/DashboardLayout/index.tsx b/src/components/DashboardLayout/index.tsx index 17fc92513..2b62b91ba 100644 --- a/src/components/DashboardLayout/index.tsx +++ b/src/components/DashboardLayout/index.tsx @@ -88,7 +88,7 @@ const DashboardLayout: React.FC = () => { navigate('/login') }else{ dispatch.auth.loadMenu(); - document.title = "小玉潭水库综合管理系统"; + document.title = "檀树岗水库现代化运行管理矩阵平台"; } },[]) @@ -148,7 +148,7 @@ const DashboardLayout: React.FC = () => { {/*{TITLE}{SUBTITLE}*/} - 小玉潭水库综合管理系统 + 檀树岗水库现代化运行管理矩阵平台
diff --git a/src/service/apiurl.js b/src/service/apiurl.js index 0a4f2a2ea..f1b072af2 100644 --- a/src/service/apiurl.js +++ b/src/service/apiurl.js @@ -4,7 +4,7 @@ import Zfzl from '../views/gxsl/zfzl' const pubapi_old = 'https://owrsvr.cloudowr.cn/svr' const pubapi = 'https://owrsvr.cloudowr.cn/pubapi' const zdkapi = 'https://slt-sh.chutianyun.gov.cn:8002' //中电科的市级平台 -const service_fxdd = '/gunshiApp/xyt' +const service_fxdd = '/gunshiApp/tsg' const service_shzh = '/shzh' const apiurl = { fxya: { @@ -852,6 +852,7 @@ const apiurl = { //实时水情 sssq: { + selectList:service_fxdd + "/real/rain/list", list: service_fxdd + '/river/water/list', //实时水情-河道水情列表 warn: service_fxdd + '/current/situation/rv/warn', //实时水情-河道水情统计 summaryInfo: service_fxdd + '/river/water/summaryInfo', //实时水情-河道水情汇总 @@ -860,7 +861,7 @@ const apiurl = { reservoirsummaryInfo: service_fxdd + '/reservoir/water/summaryInfo', //实时水情-水库水情汇总 //河道弹框详情 monitor: service_fxdd + '/river/water/monitor/data', //监测数据 - detail: service_fxdd + '/reservoir/water/detail', //监测数据-下方表格 + detail: service_fxdd + '/river/water/detail', //监测数据-下方表格 zqrl: service_fxdd + '/river/water/zqrl', //水位流量关系 channel: service_fxdd + '/reservoir/water/image/channel', //图像监测-视角 imageinfo: service_fxdd + '/reservoir/water/image/info', //图像监测-列表 diff --git a/src/views/AppRouters.tsx b/src/views/AppRouters.tsx index d68e70d5f..d66c09ad7 100644 --- a/src/views/AppRouters.tsx +++ b/src/views/AppRouters.tsx @@ -97,7 +97,9 @@ import Ssyq from './sq/qth/ssyq' // 四制 - 组织机构查看 import Zzjgck from './sz/zzjgck' +import Zrrgl from './sz/zrrgl' import Pxjhgl from './sz/pxjhgl' +import Pxjlgl from './sz/pxjlgl' const HomePage = lazy(() => import('./Home')) @@ -243,7 +245,9 @@ const AppRouters: React.FC = () => { { path: 'sq/qzq/Gcdsj', element: }, // 四制-组织机构查看 { path: 'sz/gltx/zzjgck', element: }, + { path: 'sz/gltx/zrrgl', element: }, { path: 'sz/pxgl/pxjhgl', element: }, + { path: 'sz/pxgl/pxjlgl', element: }, ], }, { path: '/login', element: }, diff --git a/src/views/Home/MapCtrl/components/Sqjcsj/index.js b/src/views/Home/MapCtrl/components/Sqjcsj/index.js index 63b37ef83..4232aace7 100644 --- a/src/views/Home/MapCtrl/components/Sqjcsj/index.js +++ b/src/views/Home/MapCtrl/components/Sqjcsj/index.js @@ -20,7 +20,6 @@ function DrpSearch({record}) { const option = useMemo(() => { if (data && data.length) { return drpOption({data,wrz:record.wrz,grz:record.grz}); - } }, [data]) @@ -50,30 +49,6 @@ function DrpSearch({record}) { useEffect(() => { let option = ""; - // 比较当前时间和早上八点 - // if (currentTime.isBefore(eightAM)) { - // option = { - // stcd: record.stcd, - // source: record.source, - // stm: moment().subtract(8, 'days').startOf('day').set({hour: 8, minute: 0}).format("YYYY-MM-DD HH:mm"), - // etm: moment().subtract(1, 'days').startOf('day').set({hour: 8, minute: 0}).format("YYYY-MM-DD HH:mm"), - // tm: [moment().subtract(8, 'days').startOf('day').set({ - // hour: 8, - // minute: 0 - // }), moment().subtract(1, 'days').startOf('day').set({hour: 8, minute: 0})], - // } - // } else { - // option = { - // stcd: record.stcd, - // source: record.source, - // stm: moment().subtract(7, 'days').startOf('day').set({hour: 8, minute: 0}).format("YYYY-MM-DD HH:mm"), - // etm: moment().startOf('day').set({hour: 8, minute: 0}).format("YYYY-MM-DD HH:mm"), - // tm: [moment().subtract(7, 'days').startOf('day').set({ - // hour: 8, - // minute: 0 - // }), moment().startOf('day').set({hour: 8, minute: 0})], - // } - // } option = { stcd: record.stcd, source: record.source, @@ -84,15 +59,18 @@ function DrpSearch({record}) { moment().add(1, 'hour').set({ minute: 0, second: 0 }), ], } - setParams(option) - setInitialDateRange(option) - getData(option) + if (record.stcd) { + setParams(option) + setInitialDateRange(option) + getData(option) + + } }, [record]) return (
-
+
查询
-
+
-
+
{ data.length > 0 ?
-
+
近1h雨量(mm)
diff --git a/src/views/sq/qth/hdsq/index.js b/src/views/sq/qth/hdsq/index.js index 4570c1e1c..34d4e0623 100644 --- a/src/views/sq/qth/hdsq/index.js +++ b/src/views/sq/qth/hdsq/index.js @@ -1,32 +1,35 @@ import React, { useEffect, useState } from 'react' -import { reservoirlist, list} from "../../../../service/sssq"; +import { zqrl, list} from "../../../../service/sssq"; import Sssw from './sssw'; import Sjcx from '../../../Home/MapCtrl/components/Sqjcsj/index' import "./index.less" -import { helpers } from '@turf/turf'; +import { Table } from 'antd'; export default function Sksq() { + + const columns = [ + {title: '水位(m)', key: 'z', dataIndex: 'z', align: 'center'}, + {title: '流量(m³/s)', key: 'q', dataIndex: 'q', align: 'center'}, + ] const [tableData, setTableData] = useState([]) - const [tableData1, setTableData1] = useState([]) - const getData = async (params) => { - setTableData(await reservoirlist(params)); - } - const getData1 = async (params) => { - setTableData1(await list(params)); - } + const [swtableData, setSwTableData] = useState([]) + const getData = async (params) => { + let res = await list(params) + setTableData(res); + getSwTableData(res[0]?.stcd) + } + + const getSwTableData = async (stcd) => { + setSwTableData(await zqrl(stcd)); + }; useEffect(() => { - let option = { - sources: ["SW", "SK"], - args: "", - }; - getData(option) - getData1({args: "",sources: ["SH", "SW"],}) + getData({args: "",sources: ["SH", "SW"],}) }, []) return (
-
+
实时水位
@@ -34,8 +37,22 @@ export default function Sksq() {
+
+
+
+ + 水位流量关系表
+
+ + +
@@ -44,7 +61,7 @@ export default function Sksq() {
- +
diff --git a/src/views/sq/qth/hdsq/sssw.js b/src/views/sq/qth/hdsq/sssw.js index b45a46ae9..69b3a30ae 100644 --- a/src/views/sq/qth/hdsq/sssw.js +++ b/src/views/sq/qth/hdsq/sssw.js @@ -1,6 +1,5 @@ import React from 'react' -import moment from 'moment' -import MyImg from '../../../Home/MapCtrl/components/Skssjc/myImg' +import {Divider} from "antd" export default function Sssw({data}) { return (
@@ -12,55 +11,27 @@ export default function Sssw({data}) {
监测水位:
-
{data?.rz ? data?.rz.toFixed(2):'-'}
+
{data?.z ? data?.z.toFixed(2):'-'}
m
-
设计洪水位:
-
{data?.desFloodLev ? data?.desFloodLev.toFixed(2):'-'}
+
警戒水位:
+
{data?.wrz ? data?.wrz.toFixed(2) : '-'}
+ +
{(data.wrz && data?.z) ? (data.wrz - data?.z).toFixed(2):'-'}
m
-
正常蓄水位:
-
{data.normWatLev ? data.normWatLev.toFixed(2):'-'}
+
危险水位:
+
{data.grz ? data.grz.toFixed(2) : '-'}
+ +
{(data.grz && data?.z) ? (data.grz - data?.z).toFixed(2):'-'}
m
- -
-
汛限水位:
-
{data.flLowLimLev ? data.flLowLimLev.toFixed(2):'-'}
-
m
-
- -
-
死水位:
-
{data.deadLev ? data.deadLev.toFixed(2):'-'}
-
m
-
-
-
坝顶高程:
-
{data.crestElev}
-
{ data.crestElev ? "m" : "-"}
-
- -
-
水库当前库容:
-
{data.nowCap}
-
万m³
-
- -
-
兴利库容:
-
{data.benResCap}
-
万m³
-
-
- -
) } diff --git a/src/views/sq/qth/sksq/index.js b/src/views/sq/qth/sksq/index.js index 0ea1dac41..68d6969b2 100644 --- a/src/views/sq/qth/sksq/index.js +++ b/src/views/sq/qth/sksq/index.js @@ -21,7 +21,7 @@ export default function Sksq() {
-
+
实时水位
diff --git a/src/views/sq/qth/ssyq/index.js b/src/views/sq/qth/ssyq/index.js index 38c5c4b69..c4e5a87d9 100644 --- a/src/views/sq/qth/ssyq/index.js +++ b/src/views/sq/qth/ssyq/index.js @@ -7,13 +7,10 @@ import "./index.less" import { httppost2 } from '../../../../utils/request'; import apiurl from '../../../../service/apiurl'; import { helpers } from '@turf/turf'; +import NormalSelect from '../../../../components/Form/NormalSelect'; export default function Sksq() { - const [tableData, setTableData] = useState([]) const [tableData1, setTableData1] = useState([]) - const getData = async (params) => { - setTableData(await reservoirlist(params)); - } - const getData1 = async () =>{ + const getData1 = async () => { const { data, code, msg } = await httppost2(apiurl.home.yq) if (code !== 200) { message.error(msg || '请求失败'); @@ -28,13 +25,28 @@ export default function Sksq() { setTableData1(list||[]) } - useEffect(() => { - let option = { - sources: ["SW", "SK"], - args: "", - }; - getData(option) - }, []) + const [selectList, setSelectList] = useState([]) + const [selected, setSelected] = useState('') + const [stcdItem, setStcdItem] = useState({}) + const getList = async() => { + try { + const res = await httppost2(apiurl.sssq.selectList) + setSelectList(res.data.map(item => ({ label: item.stnm, value: item.stcd,...item}))) + setSelected(res.data[0].stcd) + setStcdItem(res.data[0]) + } catch (error) { + console.log(error); + } + } + + const handleChange = (e) =>{ + setSelected(e); + setStcdItem(selectList.find(item => item.stcd === e)) + } + + useEffect(() => { + getList() + }, []) useEffect(() => { getData1() @@ -44,14 +56,23 @@ export default function Sksq() {
-
+
实时雨情
- 站点:{tableData[0]?.stnm} +
+ 站点: + { handleChange(e)}} + /> +
- +
@@ -62,7 +83,7 @@ export default function Sksq() {
- +
diff --git a/src/views/sq/qth/ssyq/sssw.js b/src/views/sq/qth/ssyq/sssw.js index e5883e0d0..152e7d5ab 100644 --- a/src/views/sq/qth/ssyq/sssw.js +++ b/src/views/sq/qth/ssyq/sssw.js @@ -1,36 +1,45 @@ -import React from 'react' -import moment from 'moment' -import MyImg from '../../../Home/MapCtrl/components/Skssjc/myImg' -export default function Sssw({data}) { +import React,{useState,useEffect} from 'react' +import {queryStPptnDetails} from '../../../../service/ssyq' +export default function Sssw({ data }) { + const [detail, setDetail] = useState({}) + const getDetail = async (data) => { + setDetail(await queryStPptnDetails(data)) + } + useEffect(() => { + if (data.stcd) { + getDetail(data.stcd) + } + }, [data]) + return (
雨情最新上报时间: {data?.tm}
+ >雨情最新上报时间: {detail?.tm}
-
12.5 mm
+
{detail?.h1 ?? '-' } mm
近1小时
-
12.5 mm
+
{detail?.h3 ?? '-' } mm
近3小时
-
12.5 mm
+
{detail?.h6 ?? '-' } mm
近6小时
-
12.5 mm
+
{detail?.h12 ?? '-' } mm
近12小时
-
12.5 mm
+
{detail?.h24 ?? '-' } mm
近24小时
-
12.5 mm
+
{detail?.h48 ?? '-' } mm
近48小时
diff --git a/src/views/sz/pxjhgl/RecordForm.js b/src/views/sz/pxjhgl/RecordForm.js new file mode 100644 index 000000000..6ca5d0738 --- /dev/null +++ b/src/views/sz/pxjhgl/RecordForm.js @@ -0,0 +1,392 @@ +import React,{useEffect,useState,useMemo,useRef} from 'react'; +import { Form, Button, Input, Row,Upload, Col, Table, DatePicker, InputNumber,message,Image,Modal,Typography ,Popconfirm } from 'antd'; +import { DeleteOutlined,FileWordOutlined,FilePdfOutlined,FileZipOutlined,FileExcelOutlined } from '@ant-design/icons'; +import { formItemLayout, btnItemLayout } from '../../../components/crud/FormLayoutProps'; +import apiurl from '../../../service/apiurl'; +import NormalSelect from '../../../components/Form/NormalSelect'; +import "./index.less" +import moment from 'moment'; +import { createCrudService } from '../../../components/crud/_'; +const { RangePicker } = DatePicker +const { Dragger } = Upload; +const url = "http://223.75.53.141:9102/test.by-lyf.tmp" + +const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { + + const types = [ + { + label: "水利", + value:1 + }, + { + label: "岗前培训", + value:2 + },{ + label: "在岗培训", + value:3 + },{ + label: "政治学习教育", + value:4 + },{ + label: "其他", + value:5 + }, + ] + const [details, setDetails] = useState([]) + const [form] = Form.useForm(); + const [fileList, setFileList] = useState([]) //上传文件列表 + const [iframeSrc, setIframeSrc] = useState('') + const [pdfViewOPen, setPdfViewOPen] = useState(false) + + const [loading, setLoading] = useState(false) + /** + * @description 获取查看时文件 + * @param {*} type + * @returns + */ + const getFileInfo = (params) => { + createCrudService(apiurl.fxzb.qsdw.zq.getFile).delGet({ teamId: params.teamId }).then(res => { + if (res.code === 200) { + let fileArr = res.data?.files.map(item => { + return { + name: item.fileName, + response: { + data: { + filePath: item.filePath, + fileId:item.fileId + } + }, + } + }) + setFileList(fileArr) + const result = res.data?.details.map(item => ({ ...item, key: item.detailId })) + console.log("resss",result); + + setDetails(result) + } + }) + } + /** + * @description 文件下载 + * @param {String} params 文件fileId + */ + const download = (params) => { + let downloadLink = document.createElement("a"); + downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/xyt/rescue/team/file/download/${params}`; + downloadLink.download = `${params.fileName}`; + downloadLink.style.display = "none"; + // 将链接添加到页面中 + document.body.appendChild(downloadLink); + + // 模拟点击事件,开始下载 + downloadLink.click(); + } + + /** + * @description pdf文件预览 + * @param {String} params 文件预览url + */ + const viewPdf = (params) => { + setIframeSrc(params) + setPdfViewOPen(true) + } + + + + + + useEffect(()=>{ + if (record.teamId ) { + getFileInfo(record) + } + }, [record]) + + useEffect(() => { + if (mode !== "save") { + let dataSo = [ + record.validStartDate? moment(record.validStartDate):'', + record.validEndDate? moment(record.validEndDate): '' + ] + + form.setFieldsValue({...record,dateRangeSo:dataSo}) + + } + + }, [record,mode]) + + return ( +
+
基本信息
+ {/* */} +
+ +
+ + + + + + + + + + + + + dateString} + getValueProps={(value) => ({ value: value ? moment(value) : undefined })} + + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dateString} + getValueProps={(value) => ({ value: value ? moment(value) : undefined })} + + > + + + + + + + + + + + +
+ 其他信息 +
+ + + + + { + fileList.length > 0 && fileList.map(file => { + return ( + +
+
+ {file.name.indexOf('.docx') > -1 ? +
{ download(file.response?.data?.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + file.name.indexOf('.pdf') > -1 ? +
{ viewPdf(file.response?.data?.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + file.name.indexOf('.zip') > -1 ? +
{ download(file.response?.data?.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + file.name.indexOf('.xlsx') > -1 ? +
{ download(file.response?.data?.fileId) }} + style={{ cursor: 'pointer' }} + > + +
+ : + + } + {file.name} +
+
+ +
+
+ + ) + }) + } + + + + + { + mode==='view'?null:( + <> + + + + + ) + } + + + { + setPdfViewOPen(false) + }} + > +