Merge branch 'master' into qzc-dev

qzc-dev
秦子超 2025-10-20 16:21:46 +08:00
commit f4552d8f92
2 changed files with 171 additions and 136 deletions

View File

@ -13,7 +13,9 @@ import moment from 'moment';
const Page = () => {
const dispatch = useDispatch();
const [ tableData, setTableData ] = useState([])
const [ checked, setChecked ] = useState('渗压监测')
const [checked, setChecked] = useState('渗压监测')
const [filteredWyList, setFilteredWyList] = useState([]) // 添加过滤后的位移列表状态
const [showAllWyData, setShowAllWyData] = useState(false) // 控制是否显示所有数据
const columns = useMemo(() => {
if(checked==='渗压监测'){
return [
@ -57,6 +59,15 @@ const Page = () => {
message.error('查询失败')
return
}
if (val === '位移监测') {
// 过滤符合条件的数据监测点为ZY开头且有监测时间和x、y、h方向的值
const filtered = data?.filter(item =>
item.de ||
item.dn ||
item.du
) || [];
setFilteredWyList(filtered)
}
setChecked(val)
setTableData(data)
console.log('list',data)
@ -89,12 +100,13 @@ const Page = () => {
<Table rowKey="stationCode"
sticky
columns={columns}
pagination={checked == '位移监测' ?{
pageSize: 100,
showSizeChanger: true,
pageSizeOptions: [ '100', '200']}:false}
dataSource={tableData}
scroll={{ y: "300px"}}
pagination={false}
// pagination={checked == '位移监测' ?{
// pageSize: 100,
// showSizeChanger: true,
// pageSizeOptions: [ '100', '200']}:false}
dataSource={checked != '位移监测' ?tableData : showAllWyData?tableData:filteredWyList}
scroll={{ y: "650px"}}
onRow={
(data)=>({
onClick:()=>{
@ -109,6 +121,11 @@ const Page = () => {
})
}
/>
{checked == '位移监测' &&<div style={{ display: 'flex', justifyContent: 'center', marginTop: '10px' }}>
<a onClick={() => setShowAllWyData(!showAllWyData)}>
{showAllWyData ? '收起更多信息' : '更多信息'}
</a>
</div>}
</div>
</div>
</>

View File

@ -1,5 +1,5 @@
import React, { useState, useEffect,useMemo,useRef } from 'react'
import { Table, Tabs,Modal,message,Tooltip } from 'antd';
import React, { useState, useEffect, useMemo, useRef } from 'react'
import { Table, Tabs, Modal, message, Tooltip } from 'antd';
import { useDispatch, useSelector } from 'react-redux'
import { TransformWrapper, TransformComponent } from "react-zoom-pan-pinch";
import Draggable from 'react-draggable';
@ -13,17 +13,21 @@ import TuLi from '../../Home/TuLi/Tuli6.js';
import './index.less'
export default function Page({isHome}) {
export default function Page({ isHome }) {
const dispatch = useDispatch();
const [shouqi,setShouQi] = useState(false)
const [syList,setSyList] = useState([])
const [slList,setSlList] = useState([])
const [wyList,setWyList] = useState([])
const [dmList,setDmList] = useState([])
const [shouqi, setShouQi] = useState(false)
const [syList, setSyList] = useState([])
const [slList, setSlList] = useState([])
const [wyList, setWyList] = useState([])
const [dmList, setDmList] = useState([])
const [openSy, setOpenSy] = useState(false)
const [openSl, setOpenSl] = useState(false)
const [openWy, setOpenWy] = useState(false)
const [openDm, setOpenDm] = useState(false)
const [filteredWyList, setFilteredWyList] = useState([]) // 添加过滤后的位移列表状态
const [showAllWyData, setShowAllWyData] = useState(false) // 控制是否显示所有数据
const myWidth = window.innerWidth
const myHeight = window.innerHeight
@ -31,117 +35,125 @@ export default function Page({isHome}) {
const columnsSy = [
{ title: '监测点', key: 'stationCode', dataIndex: 'stationCode',align: "center", ellipsis: true },
{ title: '所属断面', key: 'profileName', dataIndex: 'profileName',width: 110,align: "center", ellipsis: true },
{ title: '监测时间', key: 'tm', dataIndex: 'tm',align: "center",width: 110, ellipsis: true, render:(v,row)=><div style={{color:row.flag===1?'red':'#3B4859'}}>{v?.slice(5,16)}</div> },
{ title: '管水位(m)', key: 'value', dataIndex: 'value',align: "center", ellipsis: true, render:(v,row)=><div style={{color:row.status===1?'red':'#3B4859'}}>{v}</div> },
{ title: '监测点', key: 'stationCode', dataIndex: 'stationCode', align: "center", ellipsis: true },
{ title: '所属断面', key: 'profileName', dataIndex: 'profileName', width: 110, align: "center", ellipsis: true },
{ title: '监测时间', key: 'tm', dataIndex: 'tm', align: "center", width: 110, ellipsis: true, render: (v, row) => <div style={{ color: row.flag === 1 ? 'red' : '#3B4859' }}>{v?.slice(5, 16)}</div> },
{ title: '管水位(m)', key: 'value', dataIndex: 'value', align: "center", ellipsis: true, render: (v, row) => <div style={{ color: row.status === 1 ? 'red' : '#3B4859' }}>{v}</div> },
]
const columnsSl = [
{ title: '监测点', key: 'stationCode', dataIndex: 'stationCode',align: "center", ellipsis: true },
{ title: '监测时间', key: 'tm', dataIndex: 'tm',align: "center",width: 150, ellipsis: true, render:(v,row)=><div style={{color:row.flag===1?'red':'#3B4859'}}>{v?.slice(5,16)}</div> },
{ title: '渗流量(L/s)', key: 'value', dataIndex: 'value',align: "center", ellipsis: true, render:(v,row)=><div style={{color:row.status===1?'red':'#3B4859'}}>{v}</div> },
{ title: '监测点', key: 'stationCode', dataIndex: 'stationCode', align: "center", ellipsis: true },
{ title: '监测时间', key: 'tm', dataIndex: 'tm', align: "center", width: 150, ellipsis: true, render: (v, row) => <div style={{ color: row.flag === 1 ? 'red' : '#3B4859' }}>{v?.slice(5, 16)}</div> },
{ title: '渗流量(L/s)', key: 'value', dataIndex: 'value', align: "center", ellipsis: true, render: (v, row) => <div style={{ color: row.status === 1 ? 'red' : '#3B4859' }}>{v}</div> },
]
const columnsWy = [
{ title: '监测点', key: 'cdnm', dataIndex: 'cdnm',align: "center",width: 150, ellipsis: true },
{ title: '监测时间', key: 'tm', dataIndex: 'tm',align: "center",width: 80, ellipsis: true, render:(v,row)=><div style={{color:row.flag===1?'red':'#3B4859'}}><div>{v?.slice(5,10)}</div><div>{v?.slice(11,16)||'-'}</div></div> },
{ title: <div><div>x方向</div><div>(mm)</div></div>, key: 'de', dataIndex: 'de',align: "center", ellipsis: true, render:(v,row)=><div style={{color:row.xstatus===1?'red':'#3B4859'}}>{v||'-'}</div> },
{ title: <div><div>y方向</div><div>(mm)</div></div>, key: 'dn', dataIndex: 'dn',align: "center", ellipsis: true, render:(v,row)=><div style={{color:row.ystatus===1?'red':'#3B4859'}}>{v||'-'}</div> },
{ title: <div><div>h方向</div><div>(mm)</div></div>, key: 'du', dataIndex: 'du',align: "center", ellipsis: true, render:(v,row)=><div style={{color:row.hstatus===1?'red':'#3B4859'}}>{v||'-'}</div> },
{ title: '监测点', key: 'cdnm', dataIndex: 'cdnm', align: "center", width: 150, ellipsis: true },
{ title: '监测时间', key: 'tm', dataIndex: 'tm', align: "center", width: 80, ellipsis: true, render: (v, row) => <div style={{ color: row.flag === 1 ? 'red' : '#3B4859' }}><div>{v?.slice(5, 10)}</div><div>{v?.slice(11, 16) || '-'}</div></div> },
{ title: <div><div>x方向</div><div>(mm)</div></div>, key: 'de', dataIndex: 'de', align: "center", ellipsis: true, render: (v, row) => <div style={{ color: row.xstatus === 1 ? 'red' : '#3B4859' }}>{v || '-'}</div> },
{ title: <div><div>y方向</div><div>(mm)</div></div>, key: 'dn', dataIndex: 'dn', align: "center", ellipsis: true, render: (v, row) => <div style={{ color: row.ystatus === 1 ? 'red' : '#3B4859' }}>{v || '-'}</div> },
{ title: <div><div>h方向</div><div>(mm)</div></div>, key: 'du', dataIndex: 'du', align: "center", ellipsis: true, render: (v, row) => <div style={{ color: row.hstatus === 1 ? 'red' : '#3B4859' }}>{v || '-'}</div> },
]
useEffect(()=>{
useEffect(() => {
getSyData()
getSlData()
getWyData()
getDmData()
},[])
}, [])
const getSyData = async()=>{
const {code, data} = await httpget2(apiurl.home.sy)
const getSyData = async () => {
const { code, data } = await httpget2(apiurl.home.sy)
if(code!==200){
if (code !== 200) {
return
}
setSyList(data||[])
setSyList(data || [])
}
const getSlData = async()=>{
const {code, data} = await httpget2(apiurl.home.sl)
if(code!==200){
const getSlData = async () => {
const { code, data } = await httpget2(apiurl.home.sl)
if (code !== 200) {
return
}
setSlList(data||[])
setSlList(data || [])
}
const getWyData = async()=>{
const {code, data} = await httpget2(apiurl.home.wy)
if(code!==200){
const getWyData = async () => {
const { code, data } = await httpget2(apiurl.home.wy)
if (code !== 200) {
return
}
const list = data?.map((item) => ({ ...item, stationCode: item.cd }))
setWyList(list||[])
setWyList(list || [])
// 过滤符合条件的数据监测点为ZY开头且有监测时间和x、y、h方向的值
const filtered = list?.filter(item =>
item.de ||
item.dn ||
item.du
) || []
setFilteredWyList(filtered)
}
const getDmData = async()=>{
const {code, data} = await httppost2(apiurl.home.dmList)
if(code!==200){
const getDmData = async () => {
const { code, data } = await httppost2(apiurl.home.dmList)
if (code !== 200) {
return
}
console.log('断面',data)
console.log('断面', data)
setDmList(data)
}
return (
<div className='gcaqjc_bzt'>
<TransformWrapper
limitToBounds={false}
initialScale={0.7}
initialPositionX={((myWidth-660)/2)-(isHome?450:750)}
initialPositionY={((myHeight-60)/2)-(isHome?500:430)}
initialPositionX={((myWidth - 660) / 2) - (isHome ? 450 : 750)}
initialPositionY={((myHeight - 60) / 2) - (isHome ? 500 : 430)}
maxScale={100}
minScale={0.5}
>
<TransformComponent>
<div style={{width:'calc( 100vw - 320px)',height:'calc( 100vh - 85px)',position:'relative'}}>
<div style={{ width: 'calc( 100vw - 320px)', height: 'calc( 100vh - 85px)', position: 'relative' }}>
<img width={1500} src={`${process.env.PUBLIC_URL}/assets/xyt/fxdd/bzt6.svg`} alt="" id="img" draggable="false" />
{
syList.map((item)=>
<div className={'gcaqjc_bzt_sy_'+item.stationCode} onClick={()=>{
syList.map((item) =>
<div className={'gcaqjc_bzt_sy_' + item.stationCode} onClick={() => {
setOpenSy(true)
setModalData(item)
}}>
<span>{item.stationCode}</span>
<img width={10} height={10} style={{marginTop:'-4px'}} src={`${process.env.PUBLIC_URL}/assets/xyt/fxdd/${item.status===1?'sy2.png':'sy.png'}`} alt="" id="img" draggable="false" />
<img width={10} height={10} style={{ marginTop: '-4px' }} src={`${process.env.PUBLIC_URL}/assets/xyt/fxdd/${item.status === 1 ? 'sy2.png' : 'sy.png'}`} alt="" id="img" draggable="false" />
</div>
)
}
{
slList.map((item)=>
<div className={'gcaqjc_bzt_sl_'+item.stationCode} onClick={()=>{
slList.map((item) =>
<div className={'gcaqjc_bzt_sl_' + item.stationCode} onClick={() => {
setOpenSl(true)
setModalData(item)
}}>
<span>{item.stationCode}</span>
<img width={10} height={10} style={{marginTop:'-4px'}} src={`${process.env.PUBLIC_URL}/assets/xyt/fxdd/${item.status===1?'sl2.png':'sl.png'}`} alt="" id="img" draggable="false" />
<img width={10} height={10} style={{ marginTop: '-4px' }} src={`${process.env.PUBLIC_URL}/assets/xyt/fxdd/${item.status === 1 ? 'sl2.png' : 'sl.png'}`} alt="" id="img" draggable="false" />
</div>
)
}
{
wyList.map((item)=>
<div
className={'gcaqjc_bzt_wy_'+item.cdnm}
onClick={()=>{
wyList.map((item) =>
<div
className={'gcaqjc_bzt_wy_' + item.cdnm}
onClick={() => {
setOpenWy(true)
setModalData(item)
}}
>
<span>{item.cdnm}</span>
<img width={10} height={10} style={{marginTop:'-4px'}} src={`${process.env.PUBLIC_URL}/assets/xyt/fxdd/${(item.xstatus===1||item.ystatus===1||item.hstatus===1)?'wy2.png':'wy.png'}`} alt="" id="img" draggable="false" />
<img width={10} height={10} style={{ marginTop: '-4px' }} src={`${process.env.PUBLIC_URL}/assets/xyt/fxdd/${(item.xstatus === 1 || item.ystatus === 1 || item.hstatus === 1) ? 'wy2.png' : 'wy.png'}`} alt="" id="img" draggable="false" />
</div>
)
}
@ -149,93 +161,99 @@ export default function Page({isHome}) {
</TransformComponent>
</TransformWrapper>
{
!isHome?
<div className='gcaqjc_bzt_rightBox' style={{right:shouqi?'-404px':'4px'}}>
<Tabs defaultActiveKey="1" style={{padding:'0 5px 5px 5px'}} centered>
<Tabs.TabPane tab={<div style={{fontSize:'16px',fontWeight:500,padding:'0 15px'}}>渗压监测</div>} key="1">
<div className='gcaqjc_bzt_rightBox_table'>
<Table rowKey="stationCode"
sticky
columns={columnsSy}
pagination={false}
dataSource={syList}
scroll={{ y: "650px"}}
onRow={
(data)=>({
onClick:()=>{
setOpenSy(true)
setModalData(data)
}
!isHome ?
<div className='gcaqjc_bzt_rightBox' style={{ right: shouqi ? '-404px' : '4px' }}>
<Tabs defaultActiveKey="1" style={{ padding: '0 5px 5px 5px' }} centered>
<Tabs.TabPane tab={<div style={{ fontSize: '16px', fontWeight: 500, padding: '0 15px' }}>渗压监测</div>} key="1">
<div className='gcaqjc_bzt_rightBox_table'>
<Table rowKey="stationCode"
sticky
columns={columnsSy}
pagination={false}
dataSource={syList}
scroll={{ y: "650px" }}
onRow={
(data) => ({
onClick: () => {
setOpenSy(true)
setModalData(data)
}
})
}
/>
</div>
</Tabs.TabPane>
<Tabs.TabPane tab={<div style={{fontSize:'16px',fontWeight:500,padding:'0 15px'}}>渗流监测</div>} key="2">
<div className='gcaqjc_bzt_rightBox_table'>
<Table rowKey="stationCode"
sticky
columns={columnsSl}
pagination={false}
dataSource={slList}
scroll={{ y: "650px"}}
onRow={
(data)=>({
onClick:()=>{
setOpenSl(true)
setModalData(data)
}
}
/>
</div>
</Tabs.TabPane>
<Tabs.TabPane tab={<div style={{ fontSize: '16px', fontWeight: 500, padding: '0 15px' }}>渗流监测</div>} key="2">
<div className='gcaqjc_bzt_rightBox_table'>
<Table rowKey="stationCode"
sticky
columns={columnsSl}
pagination={false}
dataSource={slList}
scroll={{ y: "650px" }}
onRow={
(data) => ({
onClick: () => {
setOpenSl(true)
setModalData(data)
}
})
}
/>
</div>
</Tabs.TabPane>
<Tabs.TabPane tab={<div style={{fontSize:'16px',fontWeight:500,padding:'0 15px'}}>位移监测</div>} key="3">
<div className='gcaqjc_bzt_rightBox_table'>
<Table rowKey="stationCode"
sticky
columns={columnsWy}
// pagination={false}
dataSource={wyList}
pagination={{
pageSize: 100,
showSizeChanger: true,
pageSizeOptions: [ '100', '200'],
}}
scroll={{ y: "650px"}}
onRow={
(data)=>({
onClick:()=>{
setOpenWy(true)
setModalData(data)
}
}
/>
</div>
</Tabs.TabPane>
<Tabs.TabPane tab={<div style={{ fontSize: '16px', fontWeight: 500, padding: '0 15px' }}>位移监测</div>} key="3">
<div className='gcaqjc_bzt_rightBox_table'>
<Table rowKey="stationCode"
sticky
columns={columnsWy}
pagination={false}
dataSource={showAllWyData ? wyList : filteredWyList}
// pagination={{
// pageSize: 100,
// showSizeChanger: true,
// pageSizeOptions: [ '100', '200'],
// }}
scroll={{ y: "650px" }}
onRow={
(data) => ({
onClick: () => {
setOpenWy(true)
setModalData(data)
}
})
}
/>
}
/>
<div style={{ display: 'flex', justifyContent: 'center', marginTop: '10px' }}>
<a onClick={() => setShowAllWyData(!showAllWyData)}>
{showAllWyData ? '收起更多信息' : '更多信息'}
</a>
</div>
</div>
</Tabs.TabPane>
</Tabs>
<div className='gcaqjc_bzt_rightBox_Btn'>
<img src={`${process.env.PUBLIC_URL}/assets/xyt/fxdd/shouqi.png`} alt="" onClick={() => setShouQi(!shouqi)} />
</div>
</Tabs.TabPane>
</Tabs>
<div className='gcaqjc_bzt_rightBox_Btn'>
<img src={`${process.env.PUBLIC_URL}/assets/xyt/fxdd/shouqi.png`} alt="" onClick={()=>setShouQi(!shouqi)}/>
</div>
</div>:null
</div> : null
}
<div style={{position:'absolute',left:'30px',top:'calc( 100vh - 300px )'}}>
<TuLi/>
<div style={{ position: 'absolute', left: '30px', top: 'calc( 100vh - 300px )' }}>
<TuLi />
</div>
<Modal width={1000} wrapClassName='home_modal' bodyStyle={{padding:0}} title={null} closable={false} footer={null} open={openSy} onCancel={()=>setOpenSy(false)} destroyOnClose={true}>
<ShenYa id={modalData.stationCode} data={modalData} dispatch={dispatch} record={modalData} onCancel={()=>setOpenSy(false)}/>
<Modal width={1000} wrapClassName='home_modal' bodyStyle={{ padding: 0 }} title={null} closable={false} footer={null} open={openSy} onCancel={() => setOpenSy(false)} destroyOnClose={true}>
<ShenYa id={modalData.stationCode} data={modalData} dispatch={dispatch} record={modalData} onCancel={() => setOpenSy(false)} />
</Modal>
<Modal width={1000} wrapClassName='home_modal' bodyStyle={{padding:0}} title={null} closable={false} footer={null} open={openSl} onCancel={()=>setOpenSl(false)} destroyOnClose={true}>
<ShenLiu id={modalData.stationCode} data={modalData} dispatch={dispatch} record={modalData} onCancel={()=>setOpenSl(false)}/>
<Modal width={1000} wrapClassName='home_modal' bodyStyle={{ padding: 0 }} title={null} closable={false} footer={null} open={openSl} onCancel={() => setOpenSl(false)} destroyOnClose={true}>
<ShenLiu id={modalData.stationCode} data={modalData} dispatch={dispatch} record={modalData} onCancel={() => setOpenSl(false)} />
</Modal>
<Modal width={1000} wrapClassName='home_modal' bodyStyle={{padding:0}} title={null} closable={false} footer={null} open={openWy} onCancel={()=>setOpenWy(false)} destroyOnClose={true}>
<WeiYi id={modalData.stationCode} data={modalData} dispatch={dispatch} record={modalData} onCancel={()=>setOpenWy(false)}/>
<Modal width={1000} wrapClassName='home_modal' bodyStyle={{ padding: 0 }} title={null} closable={false} footer={null} open={openWy} onCancel={() => setOpenWy(false)} destroyOnClose={true}>
<WeiYi id={modalData.stationCode} data={modalData} dispatch={dispatch} record={modalData} onCancel={() => setOpenWy(false)} />
</Modal>
<Modal width={1000} wrapClassName='home_modal' bodyStyle={{padding:0}} title={null} closable={false} footer={null} open={openDm} onCancel={()=>setOpenDm(false)} destroyOnClose={true}>
<DuanMian id={modalData.profileCode} data={modalData} dispatch={dispatch} record={modalData} onCancel={()=>setOpenDm(false)}/>
<Modal width={1000} wrapClassName='home_modal' bodyStyle={{ padding: 0 }} title={null} closable={false} footer={null} open={openDm} onCancel={() => setOpenDm(false)} destroyOnClose={true}>
<DuanMian id={modalData.profileCode} data={modalData} dispatch={dispatch} record={modalData} onCancel={() => setOpenDm(false)} />
</Modal>
</div>
)