diff --git a/src/views/gcaqjc/gcaqfx/jrx/index.js b/src/views/gcaqjc/gcaqfx/jrx/index.js index 7437e078a..25f3a012c 100644 --- a/src/views/gcaqjc/gcaqfx/jrx/index.js +++ b/src/views/gcaqjc/gcaqfx/jrx/index.js @@ -1,5 +1,5 @@ -import React, { useState, useEffect,useMemo,useRef } from 'react' -import { Table, Card,Button,message,Popconfirm } from 'antd'; +import React, { useState, useEffect, useMemo, useRef } from 'react' +import { Table, Card, Button, message, Popconfirm,Spin } from 'antd'; import ToolBar from './toolbar'; import { useSelector } from 'react-redux'; import ReactEcharts from 'echarts-for-react'; @@ -12,26 +12,34 @@ import jrxOption from "./jrxOptions" import { Rnd } from "react-rnd" export default function Xmzlmb() { + const typeName = { + '大坝B0+130': '1', + '大坝B0+132': '2', + '大坝B0+250': '3', + '大坝B0+252': '4', + '大坝B0+370': '5', + '大坝B0+372': '6', + } const role = useSelector(state => state.auth.role); - const [code, setCode] = useState([]) const [searchVal, setSearchVal] = useState({}) const [dataSources, setDateSources] = useState([]) - const [table2Data, setTable2Data] = useState([]) const [dmList, setDmList] = useState([]) const [trData, setTrData] = useState([]) const [swiper, setSwiper] = useState(false) const [timer, setTimer] = useState(100); // 定时器 - const [dbType, setDbType] = useState('1') + const [dbType, setDbType] = useState('1'); + const [dbType1, setDbType1] = useState('1'); + const [loading, setLoading] = useState(false); const echartsRef = useRef(null) const jrxOptions = useMemo(() => { - if (dataSources && dbType) { - return jrxOption(dataSources[0],dbType) + if (dataSources && dbType && dbType1) { + return jrxOption(dataSources[0], dbType,dbType1) } else { return dataSources[0]; } - }, [dataSources,dbType]) - + }, [dataSources, dbType,dbType1]) + const columns = [ { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" }, { title: '时间', key: 'tm', dataIndex: 'tm', width: 150, align: "center" }, @@ -40,56 +48,60 @@ export default function Xmzlmb() { const zcColumns = [ { title: '结果分析', key: 'status', dataIndex: 'status', width: 150, align: "center", - render: (rec, record) => {rec == 1 ? "正常" : rec == 0 ? "异常" : ''} - }, + render: (rec, record) => {rec == 1 ? "正常" : rec == 0 ? "异常" : ''} + }, ]; const columns1 = useMemo(() => { - if (trData.length > 0) { - let newCol = trData.map(s => ({ + if (trData.length > 0) { + let newCol = trData.map(s => ({ title: `${s}(m)`, key: s, dataIndex: s, width: 150, align: "center", - render: (rec, record) => {rec || "-"} - })) - return [...columns,...newCol,...zcColumns]; - } - },[trData]) + render: (rec, record) => {rec || "-"} + })) + return [...columns, ...newCol, ...zcColumns]; + } + }, [trData]) const width = useMemo(() => columns1?.reduce((total, cur) => total + (cur.width), 0), [columns1]); // 单图多线以及数据表的数据 - const getTableData = async(params) => { + const getTableData = async (params) => { + setLoading(true); try { const res = await httppost2(apiurl.gcaqjc.gcaqfx.jrx.page, params) let newArr = []; let newData = res.data.map((s, i) => { - newArr.push(s.list.map(c => ({ - [c.stationCode]: c.value || '-', - tm: c.tm, - + newArr.push(s.list.map(c => ({ + [c.stationCode]: c.value || '-', + tm: c.tm, + }))) return { tm: s.tm, rz: s.rz, status: s.status || '', - inx:i+1 + inx: i + 1 } }) let filterData = newArr.filter(s => s.length > 0).flat() let result = newData.map(s => { let tm1 = s.tm; let r = filterData.filter(t => { - return t.tm == tm1 + return t.tm == tm1 }) let obj = {}; r.forEach(s1 => { - obj = {...s1,...obj} + obj = { ...s1, ...obj } }) return { ...s, ...obj, } }) + if (result.length > 0) { + setLoading(false) + } // let res1 = result.map(item => ({...item,rz:(item.rz - 100).toFixed(2)})) //为了测试 最后需要删除 setDateSources(result) } catch (error) { @@ -97,25 +109,17 @@ export default function Xmzlmb() { } } - // 多图单线数据 - const getTable2Data = async (params) => { - try { - const res = await httppost2(apiurl.gcaqjc.sjtjcx.czcx.list1, params) - setTable2Data(res.data) - } catch (error) { - console.log(error); - } - } + const exportExcel = () => { let params = { ...searchVal, profileName: dmList.find(s => s.id == code).projNm, stationCodes: trData, - id:1 + id: 1 } httppost5(apiurl.gcaqjc.gcaqfx.jrx.export, params).then(res => { - exportFile(`浸润线.xlsx`,res.data) - }) + exportFile(`浸润线.xlsx`, res.data) + }) } const getDmList = async () => { @@ -127,11 +131,11 @@ export default function Xmzlmb() { } } - const getDmTree = async() => { + const getDmTree = async () => { try { const res = await httppost2(apiurl.gcaqjc.sjtjcx.czcx.tree) let filterData = res.data.filter(s => s.profileCode == code) - setTrData(filterData[0].children) + setTrData(filterData[0]?.children) } catch (error) { console.log(error); } @@ -139,7 +143,7 @@ export default function Xmzlmb() { const InitialScroll = (data) => { - let index = 0; + let index = 0; const v = document.getElementsByClassName("ant-table-body")[0]; if (data.length >= Number(1)) { // 只有当大于10条数据的时候 才会看起滚动 @@ -149,9 +153,9 @@ export default function Xmzlmb() { Math.ceil(v.scrollTop) >= parseFloat((v.scrollHeight - v.clientHeight).toString()) ) { v.scrollTop = 0; - // setTimeout(() => { v.scrollTop = 0 }, 1000) + // setTimeout(() => { v.scrollTop = 0 }, 1000) } - echartsRef.current.getEchartsInstance().setOption(jrxOption(dataSources[index % dataSources.length],dbType)) + echartsRef.current.getEchartsInstance().setOption(jrxOption(dataSources[index % dataSources.length], dbType,dbType1)) index++; }, Number(1000)); setTimer(time); // 定时器保存变量 利于停止 @@ -161,24 +165,7 @@ export default function Xmzlmb() { const [scale, setScale] = useState(1) const scaleRef = useRef(null) scaleRef.current = scale; - // 放大 - const zoomIn = () => { - const img = document.getElementById("img"); - scaleRef.current += 0.05 - // setScale(scaleRef.current) - img.style.transform = `scale(${scaleRef.current})`; - } - - // 缩小 - const zoomOut = () => { - console.log(scaleRef); - const img = document.getElementById("img"); - if (scaleRef.current > 1) { - scaleRef.current -= 0.05 - // setScale(scaleRef.current) - } - img.style.transform = `scale(${scaleRef.current})`; - } + useEffect(() => { if (trData.length > 0 && searchVal) { let params = { @@ -186,30 +173,33 @@ export default function Xmzlmb() { ...searchVal } getTableData(params) - getTable2Data(params) } - + }, [trData, searchVal]); - + useEffect(() => { - if (code) { + if (code.length) { getDmTree() } if (timer) { clearInterval(timer) } - if (dmList.length > 0 && code) { + if (dmList.length > 0 && code.length) { let name = dmList.find(s => s.id == code)?.projNm - let type = name == "大坝B0+060" ? "1" : - name == "大坝B0+090" ? "2" : - name == "大坝B0+120" ? "3" : '' + let type = (name == "大坝B0+130" || name == "大坝B0+132") ? "1" : + (name == "大坝B0+250" || name == "大坝B0+252") ? "2" : + (name == "大坝B0+370" || name == "大坝B0+372") ? "3" : ''; + let type1 = typeName[name]; setDbType(type) + setDbType1(type1) } - }, [code]) + }, [code, dmList]) + + useEffect(() => { getDmList() }, []) - + useEffect(() => { if (swiper && dataSources.length > 0) { InitialScroll(dataSources) @@ -220,12 +210,11 @@ export default function Xmzlmb() { clearInterval(timer); // 停止定时器 } }, [swiper, dataSources]) - - useEffect(()=>{ + useEffect(() => { let scale = 1 const img = document.getElementById("img"); + if (!img) return; const fun = (e) => { - console.log(1111) // 大于0:滚轮向上滚动 小于0:滚轮向下滚动 if (e.wheelDelta > 0) { scale += 0.05; @@ -241,93 +230,78 @@ export default function Xmzlmb() { img.style.transform = `scale(${scale})`; } } - } + } img.addEventListener("wheel",fun) return ()=>{ img.removeEventListener("wheel",fun) } - - },[]) - - return ( -