Compare commits

...

8 Commits

Author SHA1 Message Date
李神峰 eb4e287226 fix():冲突修改 2024-09-29 17:48:01 +08:00
李神峰 4e14d218d7 Merge branch 'lsf-dev' 2024-09-29 17:44:26 +08:00
xielei d58fd30476 Merge branch 'master' of http://10.0.41.100:3000/lishenfeng/tsg-web 2024-09-29 17:19:33 +08:00
xielei 7538450e70 页面搭建 2024-09-29 17:19:27 +08:00
秦子超 165bd1c341 地图修改 2024-09-29 16:24:07 +08:00
秦子超 e2105c1019 Merge branch 'qzc-dev' 2024-09-29 09:04:21 +08:00
秦子超 bbf2db06ac 闸门监控 2024-09-29 09:04:02 +08:00
xielei c93f08e0d0 页面搭建 2024-09-27 17:52:34 +08:00
43 changed files with 3212 additions and 1587 deletions

9
package-lock.json generated
View File

@ -50,6 +50,7 @@
"react-cookies": "^0.1.1", "react-cookies": "^0.1.1",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-konva": "^18.2.3", "react-konva": "^18.2.3",
"react-org-tree": "^1.0.1",
"react-pdf": "^7.3.3", "react-pdf": "^7.3.3",
"react-redux": "^8.0.2", "react-redux": "^8.0.2",
"react-rnd": "^10.4.11", "react-rnd": "^10.4.11",
@ -18883,6 +18884,14 @@
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
}, },
"node_modules/react-org-tree": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/react-org-tree/-/react-org-tree-1.0.1.tgz",
"integrity": "sha512-NK1d8VIAzxJyMC/Rx9MupAusoFnokYr81Hw3oEpqxqBLQmpBVAexjvPSAJmhCmsom9Zymu+BMNrjRw5D54n7aw==",
"dependencies": {
"classnames": "^2.2.6"
}
},
"node_modules/react-pdf": { "node_modules/react-pdf": {
"version": "7.3.3", "version": "7.3.3",
"resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-7.3.3.tgz", "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-7.3.3.tgz",

View File

@ -45,6 +45,7 @@
"react-cookies": "^0.1.1", "react-cookies": "^0.1.1",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-konva": "^18.2.3", "react-konva": "^18.2.3",
"react-org-tree": "^1.0.1",
"react-pdf": "^7.3.3", "react-pdf": "^7.3.3",
"react-redux": "^8.0.2", "react-redux": "^8.0.2",
"react-rnd": "^10.4.11", "react-rnd": "^10.4.11",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -49,7 +49,7 @@ export const HDRealPromiseWX = new CachePromise(
// }) // })
// .catch(() => null), // .catch(() => null),
// 5000 // 5000
() => httppost2(apiurl.station.gaugingStation.list, {"sources": ["SW","SH"],"args": ""}) () => httppost2(apiurl.station.gaugingStation.list)
.then(({ data }) => data || []) .then(({ data }) => data || [])
.then((data) => { .then((data) => {
// if (config.notShowPOI?.hd) { // if (config.notShowPOI?.hd) {

View File

@ -289,8 +289,9 @@ export async function loadMenu(): Promise<MenuItem[]> {
} }
] ]
}, },
{ id: id(), title: '法律法规', path: '/mgr/sz/flfg' },
{ id: id(), title: '制度管理', path: '/mgr/sz/zdgl' }, { id: id(), title: '制度管理', path: '/mgr/sz/zdgl' },
{ id: id(), title: '法律法规', path: '/mgr/sz/flfg' },
] ]
}, },

View File

@ -9,7 +9,7 @@ function initState() {
AdcdLayer: false,//行政区划 AdcdLayer: false,//行政区划
AdcdBorderInLayer: true,//乡镇边界 AdcdBorderInLayer: true,//乡镇边界
AdcdAllLayer: false,//县行政区划图层 AdcdAllLayer: false,//县行政区划图层
HeLiuZhuJiLayer:true,//12条河流注记 HeLiuZhuJiLayer:false,//12条河流注记
RealDrpLayer: false,//雨量监测 RealDrpLayer: false,//雨量监测
RealDrpAllLayer: false,//监测站网-雨情站点 RealDrpAllLayer: false,//监测站网-雨情站点
HdswLayer: false,//河道水位监测 HdswLayer: false,//河道水位监测
@ -30,7 +30,7 @@ function initState() {
BouaOutLayer: false,//咸丰县边界_省外 BouaOutLayer: false,//咸丰县边界_省外
BouaOutsideLayer:true,//咸丰县以外边界 BouaOutsideLayer:true,//咸丰县以外边界
highroadLayer:false,//省级公路 highroadLayer:true,//省级公路
jcsjLayer:true,//监测数据 jcsjLayer:true,//监测数据

View File

@ -122,8 +122,8 @@ export const runtime = createModel<RootModel>()({
...state, ...state,
cameraTarget: { cameraTarget: {
bound: [ bound: [
[114.966, 31.459, 0], [114.746, 31.479, 0],
[114.976, 31.479, 0], [114.776, 31.509, 0],
], ],
zoom: localStorage.getItem('mapZoom'), zoom: localStorage.getItem('mapZoom'),
pitch: config.homePitch, pitch: config.homePitch,

View File

@ -103,6 +103,11 @@ const apiurl = {
gsPage: service_fxdd + "/stWaterR/list",//供水分页 gsPage: service_fxdd + "/stWaterR/list",//供水分页
yj_qxyj: service_fxdd + "/stQxWarnR/home/warn",//首页气象预警 yj_qxyj: service_fxdd + "/stQxWarnR/home/warn",//首页气象预警
xcxj_dcl: service_fxdd + "/inspect/detail/handle/list",//巡查巡检-待处理问题
xcxj_by: service_fxdd + "/inspect/task/month",//巡查巡检-本月巡查记录
xcxj_bn: service_fxdd + "/inspect/task/year",//巡查巡检-本年巡查记录
}, },
//防汛调度-小玉潭 //防汛调度-小玉潭
fxdd_xyt: { fxdd_xyt: {

View File

@ -34,7 +34,7 @@ export default class Map2D extends BaseMap {
init() { init() {
console.log("++++++++++初始化地图、图层++++++++++"); console.log("++++++++++初始化地图、图层++++++++++");
// const extent = [114.65, 30.85 , 115.48, 31.60]; //视图中心位置 // const extent = [114.65, 30.85 , 115.48, 31.60]; //视图中心位置
const extent = [114.966, 31.459 , 114.976, 31.479]; //视图中心位置 const extent = [114.746, 31.479 , 114.776, 31.509]; //视图中心位置
console.log("@@@@ map init 38++++", extent); console.log("@@@@ map init 38++++", extent);
// const fitE = [extent[0] + ew, extent[1] + eh, extent[2] - ew, extent[3] - eh]; // const fitE = [extent[0] + ew, extent[1] + eh, extent[2] - ew, extent[3] - eh];
@ -172,7 +172,7 @@ export default class Map2D extends BaseMap {
var view = map.getView(); var view = map.getView();
var resolution = view.getResolution(); var resolution = view.getResolution();
if (resolution <20){ if (resolution <120){
map && map.getLayers().getArray().forEach((layer)=> { map && map.getLayers().getArray().forEach((layer)=> {
// if( (layer.values_.name) && ((layer.values_.name).indexOf("HL2Layer")>-1) ){ // if( (layer.values_.name) && ((layer.values_.name).indexOf("HL2Layer")>-1) ){
if( (layer.values_.name) && ((layer.values_.name).indexOf("highroadLayer")>-1) ){ if( (layer.values_.name) && ((layer.values_.name).indexOf("highroadLayer")>-1) ){

View File

@ -117,7 +117,7 @@ export default class LayerMgr2D extends LayerMgr {
this.addLayer(new SatelliteImage2D({ visible: visible[SatelliteImage2D.LayerName], setting, dispatch })); this.addLayer(new SatelliteImage2D({ visible: visible[SatelliteImage2D.LayerName], setting, dispatch }));
//乡镇边界 //乡镇边界
this.addLayer(new AdcdBorderInLayer2D({ visible: visible[AdcdBorderInLayer2D.LayerName], setting, dispatch })); this.addLayer(new AdcdBorderInLayer2D({ visible: visible[AdcdBorderInLayer2D.LayerName], setting, dispatch }));
//咸丰县外的边界 //县外的边界
// this.addLayer(new BouaOutsideLayer2D({ visible: visible[BouaOutsideLayer2D.LayerName], setting, dispatch })); // this.addLayer(new BouaOutsideLayer2D({ visible: visible[BouaOutsideLayer2D.LayerName], setting, dispatch }));

View File

@ -45,7 +45,7 @@ export default class BouaLayer2D extends POILayer2D {
async dataPromise() { async dataPromise() {
const address = localStorage.getItem('address'); const address = localStorage.getItem('address');
const a1 = await fetch(`${process.env.PUBLIC_URL}/data/geojson/macheng/麻城市.geojson`) const a1 = await fetch(`${process.env.PUBLIC_URL}/data/geojson/macheng/县界.geojson`)
.then(resp => resp.json()) .then(resp => resp.json())
.then(data => data.features) .then(data => data.features)
.then(features => features.map(o => ({ .then(features => features.map(o => ({

View File

@ -112,7 +112,7 @@ export default class HLLayer2D extends POILayer2D {
return null; return null;
} }
const RVNM = e.props.RVNM const RVNM = e.props.RVNM
const LEVEL = e.props.LEVEL const LEVEL = e.props.LEVEL || e.props.LEVLE
return this.getStyle(RVNM,LEVEL); return this.getStyle(RVNM,LEVEL);
} }
} }

View File

@ -14,7 +14,7 @@ export default class highroadLayer2D extends POILayer2D {
this._style1 = new Style({ this._style1 = new Style({
zIndex: 6,//zindex2d.boua2, zIndex: 6,//zindex2d.boua2,
stroke: new StrokeStyle({ stroke: new StrokeStyle({
color: '#d5d5d9',//'rgba(138,189,165)', color: 'rgba(138,189,165,0.1)',
width: 4, width: 4,
}), }),
}); });

View File

@ -30,11 +30,11 @@ function renderMarker({ status, warning }, { width, highlight }) {
// } // }
return ` return `
<div style="cursor:pointer"> <div style="position:relative">
<svg t="1619076397355" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4205" width="${width}" height="${width}"> <svg t="1616148185046" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4230" width="${width}">
<path d="M512 25.6l277.94432 972.8H234.05568z" fill="${color1}" p-id="4206" data-spm-anchor-id="a313x.7781069.0.i9" class="selected"></path>
<path d="M512 164.57216l208.45568 764.34432H303.54432z" fill="${color1}" p-id="4207" data-spm-anchor-id="a313x.7781069.0.i6" class=""></path>
</svg> </svg>
<img width="${width}" style="position:absolute;top:0;left:0" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAA1CAYAAAAgYencAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAJLSURBVFhHxZk/T8JAGIcBo8HBhMTFmDgbJ930Uxg/pnECYqJlUiZ10k033dRFoiCl/LO/9lqupXd977w7nqW9K4GH6/v+eoRqtV6tbxxvnlRWwNyf+5HAzuf+F45s3hnDi+/zGixGnf41m3NK+LleDSd++6cVzTjGb/ebsYA3cL4Cwf3wbtab9iKB2cfkHRPRFUeMOgMPx0gAJBOuCG97E8dUIJlwwfRt/Dp+8h9xngpgAhfY0Cq+t+i6VADwF2wSVn/adVkB7oItkDtBd3DDhlkBXMAL2NAKCD3+MzICLlIxH3oZAWA7FfOhtyxgMRWj9AtDjw0jlgRspmJR2C0JAFupWBR2hQI2UhErm6QfT6GAjVQU1VahADCdiqLuEgsYTEVZvggFTKai7L2EAiZTUbaaQgFgKhVl9SQXMJCKZR0lFTCRimXFLBUA/03FsjoiCOgXImUFSwWKnmBUKDVUKgB0i5HSRTQBjXZEjgTd33TvJ4IkgDpQTcXxQ/zTiw2FkATib7PYyVIYtmirRhIAqg8n6p6CLqDweJ68BM/U/QRZgP89Vwb12wOyAKDehrBoyempJEBJRVT+6La8/RKUBCipGK6S0oZWSQCUpaLK8gN1AUkqxrsotdhWFpClIjX9eJQFZKlITT8eZQEgakdKl+TREyhIRQQVEpANyWgJFKWiSvrxaAmA/G3Q2TMAbQH+fqPydXfP2gJ8KqL3VTcsCdoCIElF1fQzRv1062w3OJjXGmsNNuUW/Muyfbl3xYarYf2wfsRONahU/gBd1OeNjK84SwAAAABJRU5ErkJggg=="
alt="" className="panel-icon" />
</div> </div>
`; `;
} }
@ -55,7 +55,7 @@ function HdswMarker({ data, dispatch, setting, zoom, distSq }) {
} }
useEffect(() => { useEffect(() => {
const width = 12; const width = 8;
const placeholder = document.getElementById(`marker_hdsw_${data.id}`); const placeholder = document.getElementById(`marker_hdsw_${data.id}`);
if (!placeholder) { if (!placeholder) {

View File

@ -137,12 +137,12 @@ function HdswPop({ id, dispatch, data }) {
{/* <Tabs.TabPane tab="" key="3"> {/* <Tabs.TabPane tab="" key="3">
<Txjc record={data}/> <Txjc record={data}/>
</Tabs.TabPane> */} </Tabs.TabPane> */}
<Tabs.TabPane tab="视频监测" key="4"> {/* <Tabs.TabPane tab="" key="4">
<Spjc record={data}/> <Spjc record={data}/>
</Tabs.TabPane> </Tabs.TabPane> */}
<Tabs.TabPane tab="周边雨情" key="5"> {/* <Tabs.TabPane tab="" key="5">
<DrpStAround data={data}/> <DrpStAround data={data}/>
</Tabs.TabPane> </Tabs.TabPane> */}
</Tabs> </Tabs>
</Modal> </Modal>

View File

@ -0,0 +1,62 @@
import React, { useEffect, useState } from 'react';
import moment from "moment"
import {
CloseOutlined,
} from '@ant-design/icons';
import { Modal, Tabs } from 'antd';
import Sqjcsj from '../components/Sqjcsj'
import Swllgx from '../components/Swllgx'
import './TangYanBa.less'
function HdswPop2({ id, data, dispatch }) {
const closePop = () => {
dispatch.runtime.closeFeaturePop(id);
};
const width = 1050;
return (
<>
<div className="dp-popup" style={{ position: 'absolute', top: 0, width,left: 0,height:646, lineHeight: 1,backgroundColor:'#fff',borderRadius:'10px'}}>
<div className="dp-popup-content" style={{height:'100%',borderRadius:'10px'}}>
<div className="content-body tyb skpop" id='tyb' style={{ height: '100%' }}>
<div className="normalModalStyle" style={{borderRadius:10}}>
<div className="normalModalStyle_title" style={{marginBottom:0}}>
<div className="normalModalStyle_title_icon"></div>
<span>{data?.name}&emsp;</span>
{data?.sttp &&
<span style={
{
display:"inline-block",
padding: "5px 10px",
color: "#74a7ff",
border: "1px solid #74a7ff",
borderRadius: "5px"
}
}> {{MM: '气象站',PP: '雨量站',RR: '水库水文站',ZZ: '河道水位站',ZQ:"河道水文站"}?.[data?.sttp]}{{'SH':'山洪','SW':'水文','QX':'气象','SK':'水库'}?.[data.source]}</span>}
<div className="normalModalStyle_title_cancel">
<CloseOutlined onClick={closePop} style={{color:"#333"}}/>
</div>
</div>
<div style={{paddingLeft:15}}>
<Tabs defaultActiveKey="1">
<Tabs.TabPane tab="监测数据" key="1">
<Sqjcsj record={data}/>
</Tabs.TabPane>
<Tabs.TabPane tab="水位流量关系" key="2">
<Swllgx record={data}/>
</Tabs.TabPane>
</Tabs>
</div>
</div>
</div >
<div className="boxfoot"></div>
</div>
</div>
</>
)
}
export default React.memo(HdswPop2);

View File

@ -36,7 +36,7 @@ function Wxq({ id, data, dispatch }) {
<div className="title"> <div className="title">
<div className="name flex flexac"> <div className="name flex flexac">
<div className='nameBorder'></div> <div className='nameBorder'></div>
{data.name || detail?.name} {data.NAME || detail?.name}
</div> </div>
<div className="extra"> <div className="extra">
<CloseOutlined onClick={closePop} style={{color:"#333"}}/> <CloseOutlined onClick={closePop} style={{color:"#333"}}/>

View File

@ -4,6 +4,7 @@ import { useDispatch, useSelector } from 'react-redux'
import PciStPop from './PciStPop'; import PciStPop from './PciStPop';
import HdswPop from './HdswPop'; import HdswPop from './HdswPop';
import HdswPop2 from './HdswPop2'
import ShuikuPop from './ShuikuPop'; import ShuikuPop from './ShuikuPop';
import ShuikuPop2 from './ShuikuPop2' import ShuikuPop2 from './ShuikuPop2'
import ShuiDianZhanPop from './ShuiDianZhanPop'; import ShuiDianZhanPop from './ShuiDianZhanPop';
@ -88,7 +89,12 @@ function FeaturePops({ mapobj }) {
</Modal> </Modal>
) )
}else if (type === 'hdsw') { }else if (type === 'hdsw') {
Comp = HdswPop; // Comp = HdswPop;
return (
<Modal width={1050} wrapClassName='home_modal' bodyStyle={{padding:0}} title={null} closable={false} footer={null} open={true} onCancel={()=>dispatch.runtime.closeFeaturePop(id)} destroyOnClose={true}>
<HdswPop2 id={id} data={data} dispatch={dispatch} record={data}/>
</Modal>
)
}else if (type === 'shuiku' || type === InfoPopNames.RealSkPop) { }else if (type === 'shuiku' || type === InfoPopNames.RealSkPop) {
// 水库 // 水库
// Comp = ShuikuPop; // Comp = ShuikuPop;

View File

@ -24,7 +24,7 @@ export default function TuLi() {
<div className='homePage_tuli2_row_item_icon2'> <div className='homePage_tuli2_row_item_icon2'>
<img width={13} height={13} src={`${process.env.PUBLIC_URL}/assets/xyt/homeImg/shi.png`} alt="" /> <img width={13} height={13} src={`${process.env.PUBLIC_URL}/assets/xyt/homeImg/shi.png`} alt="" />
</div> </div>
<div className='homePage_tuli2_row_item_text2'>麻城市</div> <div className='homePage_tuli2_row_item_text2'>红安县</div>
</div> </div>
</div> </div>

View File

@ -24,7 +24,7 @@ export default function TuLi() {
<div className='homePage_tuli2_row_item_icon2'> <div className='homePage_tuli2_row_item_icon2'>
<img width={13} height={13} src={`${process.env.PUBLIC_URL}/assets/xyt/homeImg/shi.png`} alt="" /> <img width={13} height={13} src={`${process.env.PUBLIC_URL}/assets/xyt/homeImg/shi.png`} alt="" />
</div> </div>
<div className='homePage_tuli2_row_item_text2'>麻城市</div> <div className='homePage_tuli2_row_item_text2'>红安县</div>
</div> </div>
</div> </div>

View File

@ -24,7 +24,7 @@ export default function TuLi() {
<div className='homePage_tuli2_row_item_icon2'> <div className='homePage_tuli2_row_item_icon2'>
<img width={13} height={13} src={`${process.env.PUBLIC_URL}/assets/xyt/homeImg/shi.png`} alt="" /> <img width={13} height={13} src={`${process.env.PUBLIC_URL}/assets/xyt/homeImg/shi.png`} alt="" />
</div> </div>
<div className='homePage_tuli2_row_item_text2'>麻城市</div> <div className='homePage_tuli2_row_item_text2'>红安县</div>
</div> </div>
</div> </div>

View File

@ -24,7 +24,7 @@ export default function TuLi() {
<div className='homePage_tuli2_row_item_icon2'> <div className='homePage_tuli2_row_item_icon2'>
<img width={13} height={13} src={`${process.env.PUBLIC_URL}/assets/xyt/homeImg/shi.png`} alt="" /> <img width={13} height={13} src={`${process.env.PUBLIC_URL}/assets/xyt/homeImg/shi.png`} alt="" />
</div> </div>
<div className='homePage_tuli2_row_item_text2'>麻城市</div> <div className='homePage_tuli2_row_item_text2'>红安县</div>
</div> </div>
</div> </div>

View File

@ -131,7 +131,7 @@ const HomePage = ({showPanels}) => {
setCheckedObj({ key:'21', label:'巡查巡检', labelRight:'工程巡检', icon:'shuiku' }) setCheckedObj({ key:'21', label:'巡查巡检', labelRight:'工程巡检', icon:'shuiku' })
}else if(a==='3'){ }else if(a==='3'){
dispatch.runtime.setCameraTarget({ dispatch.runtime.setCameraTarget({
center: [114.96, 31.453], center: [114.75, 31.493],
zoom: 13.5, zoom: 13.5,
pitch: 60 pitch: 60
}) })

View File

@ -12,9 +12,11 @@ const Page = () => {
console.log('aaa',data); console.log('aaa',data);
useEffect(()=>{ useEffect(()=>{
dispatch.map.setLayerVisible({ ShuiKuLayer: true }) dispatch.map.setLayerVisible({ ShuiKuLayer: true })
dispatch.map.setLayerVisible({ HdswLayer: true })
getData() getData()
return ()=>{ return ()=>{
dispatch.map.setLayerVisible({ ShuiKuLayer: false }) dispatch.map.setLayerVisible({ ShuiKuLayer: false })
dispatch.map.setLayerVisible({ HdswLayer: false })
} }
},[]) },[])

View File

@ -21,41 +21,52 @@ const Page = ({mySetTms}) => {
const dispatch = useDispatch(); const dispatch = useDispatch();
let mapObj = useSelector(s => s.map.map) let mapObj = useSelector(s => s.map.map)
const [ dataObj, setDataObj ] = useState({}) const [ dataObj, setDataObj ] = useState({})
const [ open, setOpen ] = useState(false) const [ data, setData ] = useState([])
const [ key , setkey ] = useState('') const [ data2, setData2 ] = useState([])
const [ tms , setTms ] = useState([ const [ data3, setData3 ] = useState(0)
moment().add(-1,'days').format('YYYY-MM-DD HH:mm:ss'),
moment().format('YYYY-MM-DD HH:mm:ss'),
])
const columns1 = [ const columns1 = [
{ title: '巡查完成日期', key: 'stnm', dataIndex: 'stnm',align: "center", ellipsis: true }, { title: '巡查完成日期', key: 'finishTime', dataIndex: 'finishTime',align: "center", ellipsis: true },
{ title: '巡查人', key: 'drp', dataIndex: 'drp',align: "center" }, { title: '巡查人', key: 'inspectUserName', dataIndex: 'inspectUserName',align: "center" },
{ title: '异常项次', key: 'drp', dataIndex: 'drp',align: "center" }, { title: '异常项次', key: 'problemNum', dataIndex: 'problemNum',align: "center" },
]; ];
const columns2 = [ const columns2 = [
{ title: '上报时间', key: 'stnm', dataIndex: 'stnm',align: "center", ellipsis: true }, { title: '上报时间', key: 'handleTime', dataIndex: 'handleTime',align: "center", ellipsis: true },
{ title: '巡检问题描述', key: 'drp', dataIndex: 'drp',align: "center" }, { title: '巡检问题描述', key: 'problemDesc', dataIndex: 'problemDesc',align: "center" },
]; ];
useEffect(()=>{ useEffect(()=>{
(async()=>{ (
const params = { async()=>{
start:tms[0], const { code, data } = await httppost2(apiurl.home.xcxj_dcl)
end:tms[1]
}
const { code, data } = await httppost2(apiurl.home.yj_qxyj,params)
if(code!==200){ if(code!==200){
message.error('请求失败') message.error('请求失败')
return return
} }
mySetTms([ setData(data)
moment(tms[0]), },
moment(tms[1])
]) async()=>{
setDataObj(data) const { code, data } = await httppost2(apiurl.home.xcxj_by)
})() if(code!==200){
message.error('请求失败')
return
}
setData2(data)
},
async()=>{
const { code, data } = await httppost2(apiurl.home.xcxj_bn)
if(code!==200){
message.error('请求失败')
return
}
setData3(data)
}
)()
},[]) },[])
@ -104,16 +115,16 @@ const Page = ({mySetTms}) => {
<div className="xunchaxunjian"> <div className="xunchaxunjian">
<div className="bodyBox"> <div className="bodyBox">
<div className="bodyBoxItem"> <div className="bodyBoxItem">
<div className="num" style={{color:'#04D919'}}>{dataObj.qxWarn?.length||0}</div> <div className="num" style={{color:'#04D919'}}>{data3||0}</div>
<div className="content">本月巡查</div> <div className="content">本月巡查</div>
</div> </div>
<div className="bodyBoxItem"> <div className="bodyBoxItem">
<div className="num" style={{color:'#04D919'}}>{dataObj.shiftWarn?.length||0}</div> <div className="num" style={{color:'#04D919'}}>{data2?.length||0}</div>
<div className="content">本年巡查</div> <div className="content">本年巡查</div>
<div></div> <div></div>
</div> </div>
<div className="bodyBoxItem"> <div className="bodyBoxItem">
<div className="num">{dataObj.pressWarn?.length||0}</div> <div className="num">{data?.length||0}</div>
<div className="content">未处理异常</div> <div className="content">未处理异常</div>
<div></div> <div></div>
</div> </div>
@ -133,10 +144,7 @@ const Page = ({mySetTms}) => {
sticky sticky
columns={columns1} columns={columns1}
pagination={false} pagination={false}
dataSource={[ dataSource={data2}
{stnm:'05-19 日常巡检',drp:10,data:{"type":"MultiLineString","coordinates":[[[108.946468916,29.839743716],[108.94648914,29.839752481],[108.946539808,29.839746046],[108.946613728,29.839728456],[108.946710354,29.839695317]]]}},
{stnm:'2',drp:11,data:{"type":"MultiLineString","coordinates":[[[108.81539631,29.812984419],[108.815424872,29.813001491],[108.815487593,29.813061075],[108.815576108,29.813157977],[108.815677919,29.813283716]]]}},
]}
scroll={{ y: "300px"}} scroll={{ y: "300px"}}
onRow={ onRow={
(data)=>({ (data)=>({
@ -170,10 +178,7 @@ const Page = ({mySetTms}) => {
sticky sticky
columns={columns2} columns={columns2}
pagination={false} pagination={false}
dataSource={[ dataSource={data}
{stnm:'1',drp:10},
{stnm:'2',drp:11},
]}
scroll={{ y: "300px"}} scroll={{ y: "300px"}}
onRow={ onRow={
(data)=>({ (data)=>({

View File

@ -29,7 +29,7 @@
top: 30px; top: 30px;
border-radius: 5px; border-radius: 5px;
border: 1px solid #eee; border: 1px solid #eee;
transition: all 0.2s ease 0s;
.ant-tabs-nav{ .ant-tabs-nav{
margin-bottom: 5px; margin-bottom: 5px;

View File

@ -1,4 +1,5 @@
import React, { useEffect, useMemo, useState } from 'react' import React, { useEffect, useMemo, useState } from 'react'
import { Modal, Tabs, Descriptions, Image } from 'antd';
import { Stage } from 'react-konva'; import { Stage } from 'react-konva';
import Sider from './Sider'; import Sider from './Sider';
import Topper1 from './Topper1'; import Topper1 from './Topper1';
@ -10,6 +11,7 @@ import HFivePlayer from '../../../components/video1Plary'
import './index.less'; import './index.less';
import { httpget, httpget2, httppost2 } from '../../../utils/request'; import { httpget, httpget2, httppost2 } from '../../../utils/request';
import apiurl from '../../../service/apiurl'; import apiurl from '../../../service/apiurl';
const url = "http://223.75.53.141:9102/test.by-lyf.tmp"
const CanvasW = 1080 const CanvasW = 1080
const CanvasH = 640 const CanvasH = 640
const waterRatio = 0 const waterRatio = 0
@ -180,6 +182,7 @@ const Page = () => {
const [damList, setDamList ] = useState([]) const [damList, setDamList ] = useState([])
const [videoList, setVideoList ] = useState([]) const [videoList, setVideoList ] = useState([])
const [videoArr, setvideoArr] = useState({}) const [videoArr, setvideoArr] = useState({})
const [open, setOpen] = useState(false)
const hole = 3;//zmobj.gaorNum; const hole = 3;//zmobj.gaorNum;
@ -235,7 +238,7 @@ const Page = () => {
} }
const getVideoSrc = async (current) => { const getVideoSrc = async (current) => {
const res = await httpget2(`${apiurl.gsxl.zfzl.videosrc}${'32023a7f27d8448fa10511f24e96acff'}`) const res = await httpget2(`${apiurl.gsxl.zfzl.videosrc}${current}`)//32023a7f27d8448fa10511f24e96acff
if (res.code == 200 && res.data?.length !== 0) { if (res.code == 200 && res.data?.length !== 0) {
setvideoArr({src:res.data}) setvideoArr({src:res.data})
}else{ }else{
@ -338,11 +341,44 @@ const Page = () => {
} }
</div> </div>
</div> </div>
<div className='sg_zmjk_right_more'>查看更多信息</div> <div className='sg_zmjk_right_more' onClick={()=>setOpen(true)}>查看更多信息</div>
</dvi> </dvi>
</div> </div>
</div> </div>
</div> </div>
<Modal
open={open}
width={1000}
title=""
footer={null}
onCancel={() => {
setOpen(false)
}}
>
<div style={{height:'600px'}}>
<Tabs>
<Tabs.TabPane tab="基本信息" key="item-1">
<Descriptions bordered size="small" column={3} >
<Descriptions.Item label="启闭设备类型" style={{ width: '16.5%' }}>{{1:'卷扬式',2:'螺杆式',3:'凹轮式',4:'涡轮式',5:'丝杆式'}?.[data?.hdgrTp]||'-'}</Descriptions.Item>
<Descriptions.Item label="动力类型" style={{ width: '16.5%' }}>{{1:'手动',2:'电动',3:'手电两用'}?.[data?.pwrTp]||'-'}</Descriptions.Item>
<Descriptions.Item label="水闸类型" style={{ width: '16.5%' }}>{{1:'分(泄)洪闸',2:'节制闸',3:'排(退)水闸',4:'引(进)水闸',5:'挡潮闸',6:'船闸',9:'其他'}?.[data?.wagaType]||'-'}</Descriptions.Item>
<Descriptions.Item label="进口高程">{data?.inEle||'-'} m</Descriptions.Item>
<Descriptions.Item label="出口高程">{data?.outEle||'-'} m</Descriptions.Item>
<Descriptions.Item label="闸门孔数">{data?.gaorNum||'-'} </Descriptions.Item>
<Descriptions.Item label="设计流量">{data?.dsfl||'-'} /s</Descriptions.Item>
<Descriptions.Item label="实达流量">{data?.stfl||'-'} /s</Descriptions.Item>
<Descriptions.Item label="闸门尺寸">{data?.gateSize||'-'} m*m</Descriptions.Item>
<Descriptions.Item label="工程等级">{{1:'',2:'Ⅱ',3:'Ⅲ',4:'Ⅳ',5:''}?.[data?.engGrad]||'-'}</Descriptions.Item>
<Descriptions.Item label="运行状况">{{1:'在用良好',2:'在用故障',3:'停用'}?.[data?.runStat]||'-'}</Descriptions.Item>
<Descriptions.Item label="建成时间">{data?.compDate||'-'}</Descriptions.Item>
</Descriptions>
</Tabs.TabPane>
<Tabs.TabPane tab="工程图片" key="item-2">
<Image width={800} src={url + data?.files?.filePath} alt='' />
</Tabs.TabPane>
</Tabs>
</div>
</Modal>
</> </>
); );
} }

View File

@ -11,8 +11,13 @@ const Page = () => {
<Image src={title} />保护对象 <Image src={title} />保护对象
</div> </div>
<div className={styles.content}> <div className={styles.content}>
水库防洪标准按50年一遇设计1000年一遇校核设计洪水位111.51校核洪水位 112.75 ,水库担负着红安县城七里坪杏花城关等城镇以及京九铁路汉麻连络线省道S234国道G230,京九铁路汉麻联络线等交通设施安全的防洪重任防洪保护人口32万 水库防洪标准按
保护耕地 15 万亩 <span className={styles.color}>50</span>
年一遇设计<span className={styles.color}>1000</span><span className={styles.color}>111.51</span>
校核洪水位 <span className={styles.color}>112.75</span> ,
水库担负着红安县城七里坪杏花城关等城镇
以及京九铁路汉麻连络线省道S234国道G230,京九铁路汉麻联络线等交通设施安全的防洪重任防洪保护人口<span className={styles.color}>32</span>
保护耕地 <span className={styles.color}>15</span>
</div> </div>
</div> </div>

View File

@ -8,3 +8,6 @@
font-size: 17px; font-size: 17px;
padding: 0 20px; padding: 0 20px;
} }
.color{
color: #409eff;
}

View File

@ -223,6 +223,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
onDrop={(info) => { console.log(info.dataTransfer.files); }} onDrop={(info) => { console.log(info.dataTransfer.files); }}
fileList={fileList} fileList={fileList}
disabled={loading} disabled={loading}
maxCount={1}
// onSuccess={handleSuccess} // onSuccess={handleSuccess}
> >
<p className="ant-upload-text">点击或拖拽文件到此区域上传</p> <p className="ant-upload-text">点击或拖拽文件到此区域上传</p>

View File

@ -48,7 +48,7 @@ const Page = () => {
title: '施行日期', key: 'implementationDate', dataIndex: 'implementationDate' title: '施行日期', key: 'implementationDate', dataIndex: 'implementationDate'
}, },
{ {
title: '上传时间', key: 'eventsDesc', dataIndex: 'eventsDesc' title: '上传时间', key: 'uploadDate', dataIndex: 'uploadDate'
}, },
{ {
title: '附件', key: 'files', dataIndex: 'files',render:(v,r)=><a onClick={()=>download(v[0].fileId,v[0]?.fileName)}><PaperClipOutlined />{v[0]?.fileName}</a> title: '附件', key: 'files', dataIndex: 'files',render:(v,r)=><a onClick={()=>download(v[0].fileId,v[0]?.fileName)}><PaperClipOutlined />{v[0]?.fileName}</a>

View File

@ -39,8 +39,7 @@ const Page = ({ uploadUrl, downloadUrl, type, getFormInfo, formJsonData }) => {
const [isModal, setIsModal] = useState(false) const [isModal, setIsModal] = useState(false)
const getInfo = () => { const getInfo = () => {
form.validateFields().then((values) => { form.validateFields().then((values) => {
getFormInfo({ ...values, ...fileListHj }) getFormInfo({ ...fileListHj,...values, })
form.resetFields()
setFileList([]) setFileList([])
}).catch((errorInfo) => { }).catch((errorInfo) => {
console.log(errorInfo, 'error'); console.log(errorInfo, 'error');
@ -131,7 +130,9 @@ const Page = ({ uploadUrl, downloadUrl, type, getFormInfo, formJsonData }) => {
} }
useEffect(() => { useEffect(() => {
setFileHj(formJsonData) setFileHj(formJsonData)
form.setFieldsValue(formJsonData)
}, []) }, [])
return ( return (
<Form form={form} onFinish={onFinish} > <Form form={form} onFinish={onFinish} >

View File

@ -1,4 +1,85 @@
const treeData = [
{
value: '行政处理',
title: '行政处理',
children: [
{
value: '责令停止违法行为',
title: '责令停止违法行为',
},
{
value: '责令补办许可手续',
title: '责令补办许可手续',
},
{
value: '责令限期拆除',
title: '责令限期拆除',
},
{
value: '责令采取补救措施',
title: '责令采取补救措施',
},
{
value: '责令停止施工',
title: '责令停止施工',
},
{
value: '责令赔偿损失',
title: '责令赔偿损失',
},
],
},
{
value: '行政处罚',
title: '行政处罚',
children: [
{
value: '警告',
title: '警告',
},
{
value: '罚款',
title: '罚款',
},
{
value: '没收违法所得、非法财产',
title: '没收违法所得、非法财产',
},
{
value: '责令停产停业',
title: '责令停产停业',
},
{
value: '暂扣许可证、执照',
title: '暂扣许可证、执照',
},
{
value: '吊销许可证、执照',
title: '吊销许可证、执照',
},
],
},
{
value: '行政强制措施',
title: '行政强制措施',
children: [
{
value: '查封或扣押设施',
title: '查封或扣押设施',
},
{
value: '查封或扣罚财务',
title: '查封或扣罚财务',
},
{
value: '其他',
title: '其他',
},
],
},
];
const basicData = [ const basicData = [
{ {
label: '填报人', label: '填报人',
@ -76,7 +157,7 @@ const basicData = [
}, },
{ {
label: '违法时间', label: '违法时间',
key: 'IllegalDate', key: 'illegalDate',
type: 'DatePicker', type: 'DatePicker',
span: 12 span: 12
}, },
@ -144,14 +225,17 @@ const clqkData = [
{ {
label: '处理依据', label: '处理依据',
key: 'treatmentBasis', key: 'treatmentBasis',
type: 'input', type: 'TreeSelect',
span: 12, span: 12,
treeData:[],
fieldNames:{label: 'legalName', value: 'legalName', children: 'children'}
}, },
{ {
label: '处理措施', label: '处理措施',
key: 'treatmentMeasure', key: 'treatmentMeasure',
type: 'Select', type: 'TreeSelect',
span: 12 span: 12,
treeData:treeData
}, },
{ {
label: '移送处理情况', label: '移送处理情况',
@ -188,6 +272,7 @@ const clqkData = [
{ {
label: '直接损失金额(万元)', label: '直接损失金额(万元)',
key: 'directLossAmount', key: 'directLossAmount',
labelCol:{span:7},
type: 'input', type: 'input',
span: 12 span: 12
}, },

View File

@ -33,11 +33,23 @@ const items = [
const Page = ({ mode, onCrudSuccess,record,submit }) => { const Page = ({ mode, onCrudSuccess,record,submit }) => {
const [formData,setFormData] =useState({}) const [formData,setFormData] =useState({})
const [clqkDataConfig,setConfig] =useState([])
// debugger; // debugger;
const [key, setKeys] = useState('1') const [key, setKeys] = useState('1')
const onChange = (key) => { const onChange = async(key) => {
console.log(key); console.log(key);
setKeys(key) setKeys(key)
if(key == 2){
const res = await httpget(apiurl.szzf.clyj.tree)
const arr = clqkData.map(item=>{
if(item.key == 'treatmentBasis'){
item.treeData = res.data
}
return item
})
setConfig(arr)
}
}; };
const getFormInfo = (e) => { const getFormInfo = (e) => {
if(!e){ if(!e){
@ -48,7 +60,7 @@ const Page = ({ mode, onCrudSuccess,record,submit }) => {
...formData, ...formData,
...e, ...e,
caseDate: dayjs(e.caseDate).format("YYYY-MM-DD HH:mm:ss"), caseDate: dayjs(e.caseDate).format("YYYY-MM-DD HH:mm:ss"),
IllegalDate: e.IllegalDate ? dayjs(e.IllegalDate).format("YYYY-MM-DD HH:mm:ss") : e.IllegalDate, illegalDate: e.illegalDate ? dayjs(e.v).format("YYYY-MM-DD HH:mm:ss") : e.illegalDate,
} }
if (mode == 'save') { if (mode == 'save') {
@ -80,7 +92,8 @@ const Page = ({ mode, onCrudSuccess,record,submit }) => {
} }
useEffect(()=>{ useEffect(()=>{
if(mode == 'edit' || mode =='view'){ if(mode == 'edit' || mode =='view'){
httpget(apiurl.szzf.ajdj.detail + record.id).then(res=>{ httpget(apiurl.szzf.ajdj.detail + record.id).then(async res=>{
let obj = { let obj = {
createName: localStorage.getItem('userName'), createName: localStorage.getItem('userName'),
createTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), createTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
@ -89,12 +102,12 @@ const Page = ({ mode, onCrudSuccess,record,submit }) => {
if(res.data?.caseDate){ if(res.data?.caseDate){
obj.caseDate=dayjs(res.data.caseDate) obj.caseDate=dayjs(res.data.caseDate)
} }
// if(res.data?.illegalDate){ if(res.data?.illegalDate){
// obj.illegalDate=dayjs(res.data.illegalDate) obj.illegalDate=dayjs(res.data.illegalDate)
// }
if(res.data.IllegalDate){
obj.IllegalDate = dayjs(res.data.IllegalDate)
} }
// if(res.data.IllegalDate){
// obj.IllegalDate = dayjs(res.data.IllegalDate)
// }
setFormData({...res.data,...obj}) setFormData({...res.data,...obj})
}) })
@ -113,7 +126,7 @@ const Page = ({ mode, onCrudSuccess,record,submit }) => {
<Tabs defaultActiveKey="1" items={items} onChange={onChange} /> <Tabs defaultActiveKey="1" items={items} onChange={onChange} />
<> <>
{key == 1 && <BascForm formJson={basicData} formJsonData={formData} fileKey='files1'type={mode} getFormInfo={getFormInfo} uploadUrl={apiurl.szzf.ajdj.upload} downloadUrl={apiurl.szzf.ajdj.download}></BascForm>} {key == 1 && <BascForm formJson={basicData} formJsonData={formData} fileKey='files1'type={mode} getFormInfo={getFormInfo} uploadUrl={apiurl.szzf.ajdj.upload} downloadUrl={apiurl.szzf.ajdj.download}></BascForm>}
{key == 2 && <BascForm formJson={clqkData} fileKey='files2' formJsonData={formData} type={mode} getFormInfo={getFormInfo} uploadUrl={apiurl.szzf.ajdj.upload} downloadUrl={apiurl.szzf.ajdj.download}></BascForm>} {key == 2 && <BascForm formJson={clqkDataConfig} fileKey='files2' formJsonData={formData} type={mode} getFormInfo={getFormInfo} uploadUrl={apiurl.szzf.ajdj.upload} downloadUrl={apiurl.szzf.ajdj.download}></BascForm>}
{key == 3 && <BascForm formJson={xzfy} formJsonData={formData} type={mode} getFormInfo={getFormInfo} uploadUrl={apiurl.szzf.ajdj.upload} downloadUrl={apiurl.szzf.ajdj.download}></BascForm>} {key == 3 && <BascForm formJson={xzfy} formJsonData={formData} type={mode} getFormInfo={getFormInfo} uploadUrl={apiurl.szzf.ajdj.upload} downloadUrl={apiurl.szzf.ajdj.download}></BascForm>}
{key == 4 && <Bajz formJson={xzfy} formJsonData={formData} type={mode} getFormInfo={getFormInfo} uploadUrl={apiurl.szzf.ajdj.upload} downloadUrl={apiurl.szzf.ajdj.download}></Bajz>} {key == 4 && <Bajz formJson={xzfy} formJsonData={formData} type={mode} getFormInfo={getFormInfo} uploadUrl={apiurl.szzf.ajdj.upload} downloadUrl={apiurl.szzf.ajdj.download}></Bajz>}
{key == 5 && <Lsyx formJson={xzfy} formJsonData={formData} type={mode} getFormInfo={getFormInfo} uploadUrl={apiurl.szzf.ajdj.upload} downloadUrl={apiurl.szzf.ajdj.download}></Lsyx>} {key == 5 && <Lsyx formJson={xzfy} formJsonData={formData} type={mode} getFormInfo={getFormInfo} uploadUrl={apiurl.szzf.ajdj.upload} downloadUrl={apiurl.szzf.ajdj.download}></Lsyx>}

View File

@ -166,6 +166,7 @@ const FormZdy = ({ fileKey,typeName = "ddForm", formJson, getFormInfo, type, for
<Form.Item <Form.Item
label={item.label} label={item.label}
name={item.key} name={item.key}
labelCol={item.labelCol}
rules={[{ required: item.required, message: '请输入' + item.label }]} rules={[{ required: item.required, message: '请输入' + item.label }]}
> >
<Input disabled={type == 'view' || item.disabled} placeholder={item.placeholder} addonAfter={item.addonAfter}/> <Input disabled={type == 'view' || item.disabled} placeholder={item.placeholder} addonAfter={item.addonAfter}/>

View File

@ -178,6 +178,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
onDrop={(info) => { console.log(info.dataTransfer.files); }} onDrop={(info) => { console.log(info.dataTransfer.files); }}
fileList={fileList} fileList={fileList}
disabled={loading} disabled={loading}
maxCount={1}
// onSuccess={handleSuccess} // onSuccess={handleSuccess}
> >
<p className="ant-upload-text">点击或拖拽文件到此区域上传</p> <p className="ant-upload-text">点击或拖拽文件到此区域上传</p>

View File

@ -44,6 +44,7 @@ export default function jgOption(data1) {
align: 'center', // 文字水平对齐方式默认自动leftrightcenter align: 'center', // 文字水平对齐方式默认自动leftrightcenter
fontSize: 16, // 字体大小 fontSize: 16, // 字体大小
color: '#000', // 字体颜色 color: '#000', // 字体颜色
overflow: 'breakAll',
formatter: (params) => { formatter: (params) => {
// let newName = '' // let newName = ''
// let len = params.data.title.length // let len = params.data.title.length
@ -110,6 +111,7 @@ export default function jgOption(data1) {
width:200, width:200,
color: '#000', color: '#000',
padding: [10, 10], padding: [10, 10],
overflow:'break',
backgroundColor: { backgroundColor: {
image: four, image: four,
}, },