From 1b55cb54354904ae4e15f939285cfe533c31dce5 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Thu, 31 Jul 2025 09:50:04 +0800 Subject: [PATCH 01/13] =?UTF-8?q?feat():=20=E7=9F=A5=E8=AF=86=E5=BA=93?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Form/FileUpload/index.js | 10 +- src/models/auth/_.ts | 6 + src/models/map/index.ts | 26 + src/models/runtime/index.ts | 2 +- src/service/apiurl.js | 27 + src/service/warn.js | 9 + src/views/AppRouters.tsx | 8 +- .../SearchResultList/index.js | 46 ++ .../SearchResultList/index.less | 104 ++++ src/views/Home/homePanelsLayoutPage/index.js | 507 +++++++++++------- src/views/Home/index.tsx | 1 - src/views/sz/ddfa/form.js | 66 ++- src/views/sz/ddfa/index.js | 19 +- src/views/sz/ddfa/toolbar.js | 25 +- .../sz/khzbgl/AdcdTreeSelector/index.less | 47 ++ .../sz/khzbgl/AdcdTreeSelector/index.tsx | 311 +++++++++++ src/views/sz/khzbgl/form.js | 130 +++++ src/views/sz/khzbgl/index.js | 120 +++++ src/views/sz/khzbgl/toolbar.js | 51 ++ src/views/sz/ywgz/form.js | 147 +++++ src/views/sz/ywgz/index.js | 98 ++++ src/views/sz/ywgz/toolbar.js | 69 +++ 22 files changed, 1583 insertions(+), 246 deletions(-) create mode 100644 src/views/Home/homePanelsLayoutPage/SearchResultList/index.js create mode 100644 src/views/Home/homePanelsLayoutPage/SearchResultList/index.less create mode 100644 src/views/sz/khzbgl/AdcdTreeSelector/index.less create mode 100644 src/views/sz/khzbgl/AdcdTreeSelector/index.tsx create mode 100644 src/views/sz/khzbgl/form.js create mode 100644 src/views/sz/khzbgl/index.js create mode 100644 src/views/sz/khzbgl/toolbar.js create mode 100644 src/views/sz/ywgz/form.js create mode 100644 src/views/sz/ywgz/index.js create mode 100644 src/views/sz/ywgz/toolbar.js diff --git a/src/components/Form/FileUpload/index.js b/src/components/Form/FileUpload/index.js index 024f964a3..6977a6216 100644 --- a/src/components/Form/FileUpload/index.js +++ b/src/components/Form/FileUpload/index.js @@ -10,7 +10,7 @@ const { RangePicker } = DatePicker const { Dragger } = Upload; const url = "http://223.75.53.141:9100/gs-tsg" -const FileUpload = ({mode, fileNum=1, value, onChange}) => { +const FileUpload = ({mode, fileNum=1, value, onChange,uploadUrl}) => { const [fileList, setFileList] = useState([]) //上传文件列表 const [loading, setLoading] = useState(false) console.log(1111111,fileList); @@ -47,8 +47,8 @@ const FileUpload = ({mode, fileNum=1, value, onChange}) => { useEffect(()=>{ if(onChange && fileList){ - let oldFiles = fileList.map(item => (item.response?.data??item)) - onChange(oldFiles) + let oldFiles = fileList.map(item => (item.response?.data.fileId)) + onChange(oldFiles.join(',')) } },[fileList]) @@ -59,7 +59,7 @@ const FileUpload = ({mode, fileNum=1, value, onChange}) => { mode!=='view' && { console.log(info.dataTransfer.files); }} fileList={fileList} @@ -73,7 +73,7 @@ const FileUpload = ({mode, fileNum=1, value, onChange}) => {

} - + ) } diff --git a/src/models/auth/_.ts b/src/models/auth/_.ts index ea39817d4..33b8c5f99 100644 --- a/src/models/auth/_.ts +++ b/src/models/auth/_.ts @@ -300,6 +300,12 @@ export async function loadMenu(): Promise { { id: id(), title: '调度方案库', path: '/mgr/sz/zsk/ddfa', }, + { + id: id(), title: '业务规则库', path: '/mgr/sz/zsk/ywgz', + }, + { + id: id(), title: '工程安全知识库', path: '/mgr/sz/zsk/gcaq', + }, ] }, diff --git a/src/models/map/index.ts b/src/models/map/index.ts index e91f00260..4858950e4 100644 --- a/src/models/map/index.ts +++ b/src/models/map/index.ts @@ -126,6 +126,28 @@ export const map = createModel()({ state: initState() as MapCtrlState, reducers: { + // 新增只关闭业务图层的方法(保留基础底图) + closeBusinessLayers(state): MapCtrlState{ + const s = { ...state }; + const businessLayersClosed: Record = {}; + + // 关闭特定的业务图层 + const businessLayers = [ + "HdswLayer", "RealDrpLayer", "SYLayer", "TuRangLayer", "PicStLayer", 'AZDLayer', "QSYDWLayer", 'YHJMHLayer', + "ShuiKuLayer" + ]; + + businessLayers.forEach(layer => { + businessLayersClosed[layer] = false; + }); + + s.layerVisible = { + ...s.layerVisible, + ...businessLayersClosed, + }; + + return s; + }, setMap(state, map) { return { ...state, @@ -248,6 +270,10 @@ export const map = createModel()({ }).filter(Boolean); dispatch.runtime.setLayerSetting({ highlight: records }) + }, + // 新增只关闭业务图层的effect方法 + closeBusinessLayersEffect() { + dispatch.map.closeBusinessLayers(); }, resetMap() { dispatch.map.reset(); diff --git a/src/models/runtime/index.ts b/src/models/runtime/index.ts index 6cab31f59..20c7195f8 100644 --- a/src/models/runtime/index.ts +++ b/src/models/runtime/index.ts @@ -25,7 +25,7 @@ export const runtime = createModel()({ layerSetting: {}, layerSettingLoop: {}, hasRightPanel: true, - showGlobalSearch: false, + showGlobalSearch: true, leftActiveTab: '', rainLayerTm: '2022070108', hasAlertBox: false, diff --git a/src/service/apiurl.js b/src/service/apiurl.js index 3527a3652..e24b471bc 100644 --- a/src/service/apiurl.js +++ b/src/service/apiurl.js @@ -10,6 +10,33 @@ const service_fxdd = '/gunshiApp/tsg' const service_xyt = '/gunshiApp/tsg'//登陆先用小玉潭 const service_shzh = '/shzh' const apiurl = { + zsk: { + ddfa: { + page: service_fxdd + "/dispatchScheme/pageByTm", + save:service_fxdd + "/dispatchScheme/add", + edit: service_fxdd + "/dispatchScheme/update", + del: service_fxdd + "/dispatchScheme/delete", + upload:service_fxdd + "/dispatchScheme/file/upload/singleSimple", + }, + ywgz: { + page: service_fxdd + "/businessRule/pageByTm", + save:service_fxdd + "/businessRule/add", + edit: service_fxdd + "/businessRule/update", + del: service_fxdd + "/businessRule/delete", + upload:service_fxdd + "/businessRule/file/upload/singleSimple", + }, + gcaq: { + page: service_fxdd + "/projectSafety/pageByTm", + save:service_fxdd + "/projectSafety/add", + edit: service_fxdd + "/projectSafety/update", + del: service_fxdd + "/projectSafety/delete", + upload: service_fxdd + "/projectSafety/file/upload/singleSimple", + tree: service_fxdd + "/projectSafety/listCategory", + saveTree: service_fxdd + "/projectSafety/addCategory", + editTree: service_fxdd + "/projectSafety/updateCategory", + deleteTree: service_fxdd + "/projectSafety/delCategory", + } + }, file:{ upload:baseFileUpLoad, download:baseFileDownLoad, diff --git a/src/service/warn.js b/src/service/warn.js index 766fb3a4a..c61da0ac6 100644 --- a/src/service/warn.js +++ b/src/service/warn.js @@ -44,6 +44,15 @@ export async function getjdTreeData(params = {}) { } return data; } + +export async function getGcaqTreeData(params = {}) { + const { data, code, msg } = await httpget(apiurl.zsk.gcaq.tree) || {}; + if (code !== 200) { + message.error(msg || '请求失败'); + return []; + } + return data; +} //获取行政区划树下拉 中电科接口 export async function getAdcdTreeData() { const { data, code, msg } = await httpget(apiurl.getTreeData); diff --git a/src/views/AppRouters.tsx b/src/views/AppRouters.tsx index e0b0dbf89..bc43ee791 100644 --- a/src/views/AppRouters.tsx +++ b/src/views/AppRouters.tsx @@ -116,7 +116,8 @@ import Ddfa from './sz/ddfa' import Krgl from './KrLine' import Gsnlfx from './gxsl/gsnlfx' import Ddjl from './szydd/ddjl' - +import Ywgz from './sz/ywgz' +import Gcaq from './sz/khzbgl' const HomePage = lazy(() => import('./Home')) @@ -284,10 +285,9 @@ const AppRouters: React.FC = () => { { path: 'sz/szzf/clyj', element: }, { path: 'sz/zsk/ddfa', element: }, + { path: 'sz/zsk/ywgz', element: }, + { path: 'sz/zsk/gcaq', element: }, - - - ], }, { path: '/login', element: }, diff --git a/src/views/Home/homePanelsLayoutPage/SearchResultList/index.js b/src/views/Home/homePanelsLayoutPage/SearchResultList/index.js new file mode 100644 index 000000000..2a5eb45d2 --- /dev/null +++ b/src/views/Home/homePanelsLayoutPage/SearchResultList/index.js @@ -0,0 +1,46 @@ +import React from 'react'; +import './index.less'; +import appconsts from '../../../../service/appconsts'; + +/** + * 搜索结果列表组件 + * @param {Array} data - 搜索结果数据数组,每个项目应包含 name 和 type 属性 + * @param {Function} onItemClick - 点击列表项的回调函数 + * @param {String} title - 可选的标题,默认为"搜索结果" + */ +const SearchResultList = ({ data = [], onItemClick, title = "搜索结果" }) => { + return ( +
+ {/*
+
{title}
+
共 {data.length} 条
+
*/} +
+
+
名称
+
类型
+
+
+ {data.length > 0 ? ( + data.map((item, index) => ( +
onItemClick && onItemClick(item)} + > +
{item.name}
+
+ {appconsts.GlobalSearch_Type[item.type] || item.type} +
+
+ )) + ) : ( +
暂无搜索结果
+ )} +
+
+
+ ); +}; + +export default SearchResultList; \ No newline at end of file diff --git a/src/views/Home/homePanelsLayoutPage/SearchResultList/index.less b/src/views/Home/homePanelsLayoutPage/SearchResultList/index.less new file mode 100644 index 000000000..1b6adc787 --- /dev/null +++ b/src/views/Home/homePanelsLayoutPage/SearchResultList/index.less @@ -0,0 +1,104 @@ +.search-result-list { + width: 100%; + background-color: #fff; + border-radius: 4px; + overflow: hidden; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; + height: 100%; +} + +.search-result-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 12px 16px; + border-bottom: 1px solid #f0f0f0; + flex-shrink: 0; /* 防止头部被压缩 */ +} + +.search-result-title { + font-size: 16px; + font-weight: 500; + color: #333; +} + +.search-result-count { + font-size: 14px; + color: #999; +} + +.search-result-table { + width: 100%; + flex: 1; + display: flex; + flex-direction: column; + overflow: hidden; /* 确保内容不溢出 */ +} + +.search-result-table-header { + display: flex; + background-color: #f0f5ff; + font-weight: 500; + flex-shrink: 0; /* 防止表头被压缩 */ +} + +.search-result-table-body { + flex: 1; + overflow-y: auto; /* 添加垂直滚动 */ + scrollbar-width: thin; /* Firefox 滚动条样式 */ +} + +/* 自定义滚动条样式 */ +.search-result-table-body::-webkit-scrollbar { + width: 6px; +} + +.search-result-table-body::-webkit-scrollbar-thumb { + background-color: #d9d9d9; + border-radius: 3px; +} + +.search-result-table-body::-webkit-scrollbar-track { + background-color: #f5f5f5; +} + +.search-result-table-row { + display: flex; + border-bottom: 1px solid #f0f0f0; + cursor: pointer; + transition: background-color 0.3s; + + &:hover { + background-color: #f5f5f5; + } + + &:last-child { + border-bottom: none; + } +} + +.search-result-table-cell { + padding: 12px 16px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.name-cell { + flex: 1; + text-align: left; +} + +.type-cell { + width: 120px; + text-align: right; +} + +.search-result-empty { + padding: 40px 0; + text-align: center; + color: #999; + font-size: 14px; +} \ No newline at end of file diff --git a/src/views/Home/homePanelsLayoutPage/index.js b/src/views/Home/homePanelsLayoutPage/index.js index ff3c8cc9e..9a597a204 100644 --- a/src/views/Home/homePanelsLayoutPage/index.js +++ b/src/views/Home/homePanelsLayoutPage/index.js @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react' import { useLocation } from 'react-router' import { useDispatch, useSelector } from 'react-redux' -import { Collapse, DatePicker } from 'antd'; +import { Collapse, DatePicker, Input } from 'antd'; import './index.less' import Yujing from './item_yujing/index.js' import Yuqing from './item_yuqing' @@ -30,222 +30,337 @@ import Tuli2 from '../TuLi/Tuli2.js'; import Tuli3 from '../TuLi/Tuli3.js' import Tuli4 from '../TuLi/Tuli4.js' import Tuli5 from '../TuLi/Tuli5.js' - +import SearchResultList from './SearchResultList'; import moment from 'moment'; const { Panel } = Collapse; const { RangePicker } = DatePicker; - +const { Search } = Input; const items = [ - { key:'1', label:'综合监视', children:[ - { key:'11', label:'预警', labelRight:'预警', icon:'yujing' }, - { key:'12', label:'雨情', labelRight:'统计', icon:'yuqing' }, - { key:'13', label:'水库水情', labelRight:'实时水情', icon:'shuikushuiqing' }, - { key:'19', label:'土壤墒情', labelRight:'土壤墒情', icon:'turangshangqing' }, - { key:'15', label:'工程安全', labelRight:'工程安全监测', icon:'gongchenganquan' }, - { key:'16', label:'监测设备状态', labelRight:'监测设备运行', icon:'jianceshebeizhuangtai' }, - // { key:'17', label:'水质', labelRight:'水质', icon:'shuizhi' }, - { key:'18', label:'视频点', labelRight:'视频点', icon:'shipindian' }, - ] }, - { key:'2', label:'巡查巡检', children:[ - { key:'21', label:'巡查巡检', labelRight:'工程巡检', icon:'jianceshebeizhuangtai' }, - // { key:'22', label:'大坝', labelRight:'基本信息', icon:'daba' }, - // { key:'23', label:'溢洪道', labelRight:'基本信息', icon:'yihongdao' }, - ] }, - { key:'3', label:'洪水防御', children:[ - { key:'31', label:'危险区', labelRight:'危险区列表', icon:'weixianqu' }, - { key:'32', label:'安置点', labelRight:'安置点列表', icon:'anzhidian' }, - { key:'33', label:'企事业单位', labelRight:'企事业单位列表', icon:'qishiyedanwei' }, - { key:'34', label:'沿河居民户', labelRight:'沿河居民户列表', icon:'yanhejuminhu' }, - ] }, - { key:'4', label:'水资源调度', children:[ - { key:'41', label:'供水', labelRight:'今日供水实况', icon:'gongshui' }, - ] }, - { key:'5', label:'水库工程', children:[ - { key:'51', label:'水库', labelRight:'基本信息', icon:'shuiku' }, - { key:'52', label:'大坝', labelRight:'基本信息', icon:'daba' }, - { key:'53', label:'溢洪道', labelRight:'基本信息', icon:'yihongdao' }, - ] }, + { + key: '1', label: '综合监视', children: [ + { key: '11', label: '预警', labelRight: '预警', icon: 'yujing' }, + { key: '12', label: '雨情', labelRight: '统计', icon: 'yuqing' }, + { key: '13', label: '水库水情', labelRight: '实时水情', icon: 'shuikushuiqing' }, + { key: '19', label: '土壤墒情', labelRight: '土壤墒情', icon: 'turangshangqing' }, + { key: '15', label: '工程安全', labelRight: '工程安全监测', icon: 'gongchenganquan' }, + { key: '16', label: '监测设备状态', labelRight: '监测设备运行', icon: 'jianceshebeizhuangtai' }, + // { key:'17', label:'水质', labelRight:'水质', icon:'shuizhi' }, + { key: '18', label: '视频点', labelRight: '视频点', icon: 'shipindian' }, + ] + }, + { + key: '2', label: '巡查巡检', children: [ + { key: '21', label: '巡查巡检', labelRight: '工程巡检', icon: 'jianceshebeizhuangtai' }, + // { key:'22', label:'大坝', labelRight:'基本信息', icon:'daba' }, + // { key:'23', label:'溢洪道', labelRight:'基本信息', icon:'yihongdao' }, + ] + }, + { + key: '3', label: '洪水防御', children: [ + { key: '31', label: '危险区', labelRight: '危险区列表', icon: 'weixianqu' }, + { key: '32', label: '安置点', labelRight: '安置点列表', icon: 'anzhidian' }, + { key: '33', label: '企事业单位', labelRight: '企事业单位列表', icon: 'qishiyedanwei' }, + { key: '34', label: '沿河居民户', labelRight: '沿河居民户列表', icon: 'yanhejuminhu' }, + ] + }, + { + key: '4', label: '水资源调度', children: [ + { key: '41', label: '供水', labelRight: '今日供水实况', icon: 'gongshui' }, + ] + }, + { + key: '5', label: '水库工程', children: [ + { key: '51', label: '水库', labelRight: '基本信息', icon: 'shuiku' }, + { key: '52', label: '大坝', labelRight: '基本信息', icon: 'daba' }, + { key: '53', label: '溢洪道', labelRight: '基本信息', icon: 'yihongdao' }, + ] + }, ] -const HomePage = ({showPanels}) => { +const HomePage = ({ showPanels }) => { - const dispatch = useDispatch(); - const [ checkedObj, setCheckedObj ] = useState({}) - const [ showTable, setShowTable ] = useState(false) - const [ tms , setTms ] = useState([ - moment(moment().add(-1,'days').format('YYYY-MM-DD 08:00:00')), - moment(moment().format('YYYY-MM-DD 08:00:00')), - ]) + const dispatch = useDispatch(); + const [checkedObj, setCheckedObj] = useState({}) + const [showTable, setShowTable] = useState(false) + const [tms, setTms] = useState([ + moment(moment().add(-1, 'days').format('YYYY-MM-DD 08:00:00')), + moment(moment().format('YYYY-MM-DD 08:00:00')), + ]) + + // 在 globalSearch 函数中添加搜索结果状态 + const [searchResults, setSearchResults] = useState([]); + const globalSearch = (e) => { + if (e && e.trim() !== '') { + // 设置为空白状态 + setShowTable(true); + // 创建一个新的空对象,只保留必要的属性用于显示 + setCheckedObj({ + key: 'search', + label: '搜索结果', + labelRight: `搜索:${e}`, + icon: 'search' + }); + + // 模拟数据 + setTimeout(() => { + const mockResults = [ + { id: '1', name: '檀树岗水情站', type: 'swst', lgtd: 114.75, lttd: 31.493 }, + { id: '2', name: '檀树岗雨情站', type: 'qxst', lgtd: 114.76, lttd: 31.495 }, + { id: '3', name: '檀树岗渗压站', type: 'shst', lgtd: 114.77, lttd: 31.497 }, + { id: '4', name: '檀树岗位移站', type: 'shst', lgtd: 114.78, lttd: 31.499 }, + { id: '5', name: '檀树岗渗流站', type: 'shst', lgtd: 114.79, lttd: 31.501 }, + { id: '6', name: '檀树岗土壤墒情站', type: 'stinfo', lgtd: 114.80, lttd: 31.503 }, + { id: '7', name: '檀树岗流量站', type: 'swst', lgtd: 114.81, lttd: 31.505 }, + { id: '8', name: '檀树岗视频站', type: 'picst', lgtd: 114.82, lttd: 31.507 }, + { id: '9', name: '檀树岗湾', type: 'danad', lgtd: 114.83, lttd: 31.509 }, + { id: '10', name: '檀树湾', type: 'placement', lgtd: 114.84, lttd: 31.511 }, + { id: '11', name: '七里坪镇檀树中学', type: 'bsnssinfo', lgtd: 114.85, lttd: 31.513 }, + { id: '12', name: '檀某某', type: 'flrvvlg', lgtd: 114.86, lttd: 31.515 }, + { id: '13', name: '檀树岗调度方案', type: 'reservoir', lgtd: 114.87, lttd: 31.517 }, + { id: '14', name: '檀树岗调度规则', type: 'reservoir', lgtd: 114.88, lttd: 31.519 }, + { id: '15', name: '檀树岗工程安全知识', type: 'daminfo', lgtd: 114.89, lttd: 31.521 }, + ]; + setSearchResults(mockResults); + }, 500); + } + } + + const clickItem = (item) => { + // 判断是否为知识库或安全监测站类型 + const isKnowledgeOrMonitoringStation = item.type === 'daminfo' || item.type === 'stinfo'; + // 如果有经纬度信息,则进行处理 + if (item.lgtd && item.lttd) { + // 关闭所有已打开的弹窗 + dispatch.runtime.closeFeaturePopAll(); + // 关闭所有业务图层 + // dispatch.map.closeBusinessLayersEffect(); + // 根据类型确定弹窗类型 + let popType = item.type; + + // 对特定类型进行映射 + if (item.type === 'swst') popType = 'hdsw'; // 水文站映射到河道水位 + if (item.type === 'qxst') popType = 'drp'; // 气象站映射到雨情 + if (item.type === 'picst') popType = 'picst'; // 视频站 + // 然后根据类型打开对应图层 + if (item.type === 'swst' || item.type === 'hdsw') { + dispatch.map.setLayerVisible({ HdswLayer: true }); + } else if (item.type === 'qxst' || item.type === 'drp') { + dispatch.map.setLayerVisible({ RealDrpLayer: true }); + } else if (item.type === 'picst') { + dispatch.map.setLayerVisible({ PicStLayer: true }); + } + // 显示弹窗 + dispatch.runtime.setFeaturePop({ + type: popType, + data: item, + lgtd: item.lgtd, + lttd: item.lttd, + id: item.id + }); + + // 如果不是知识库或安全监测站类型,则进行地图定位 + if (!isKnowledgeOrMonitoringStation) { + dispatch.runtime.setCameraTarget({ + center: [item.lgtd, item.lttd], + zoom: 15, + pitch: 60 + }); + } + } + } + + useEffect(() => { + dispatch.runtime.closeFeaturePopAll() + // 如果是搜索结果,不要关闭图层 + if (checkedObj.label === '搜索结果') { + // 可以选择保持当前图层状态,或者显示某些默认图层 + return; + } + if (checkedObj.label === '水库' || checkedObj.label === '大坝' || checkedObj.label === '溢洪道' || checkedObj.label === '视频点') { + dispatch.map.setLayerVisible({ PicStLayer: true }) + } else { + dispatch.map.setLayerVisible({ PicStLayer: false }) + } + + if (checkedObj.label === '危险区' || checkedObj.label === '安置点' || checkedObj.label === '企事业单位' || checkedObj.label === '沿河居民户') { + dispatch.map.setLayerVisible({ AZDLayer: true }) + dispatch.map.setLayerVisible({ QSYDWLayer: true }) + dispatch.map.setLayerVisible({ YHJMHLayer: true }) + } else { + dispatch.map.setLayerVisible({ AZDLayer: false }) + dispatch.map.setLayerVisible({ QSYDWLayer: false }) + dispatch.map.setLayerVisible({ YHJMHLayer: false }) + } + + return () => { + dispatch.runtime.closeFeaturePopAll() + dispatch.map.setLayerVisible({ PicStLayer: false }) + dispatch.map.setLayerVisible({ AZDLayer: false }) + dispatch.map.setLayerVisible({ QSYDWLayer: false }) + dispatch.map.setLayerVisible({ YHJMHLayer: false }) + } + }, [checkedObj]) + + useEffect(() => { + setCheckedObj({ key: '12', label: '雨情', labelRight: '统计', icon: 'yuqing' }) + }, []) - useEffect(()=>{ - dispatch.runtime.closeFeaturePopAll() - if(checkedObj.label==='水库'||checkedObj.label==='大坝'||checkedObj.label==='溢洪道'||checkedObj.label==='视频点'){ - - dispatch.map.setLayerVisible({ PicStLayer: true }) - }else{ - dispatch.map.setLayerVisible({ PicStLayer: false }) - } - - if(checkedObj.label==='危险区'||checkedObj.label==='安置点'||checkedObj.label==='企事业单位'||checkedObj.label==='沿河居民户'){ - dispatch.map.setLayerVisible({ AZDLayer: true }) - dispatch.map.setLayerVisible({ QSYDWLayer: true }) - dispatch.map.setLayerVisible({ YHJMHLayer: true }) - }else{ - dispatch.map.setLayerVisible({ AZDLayer: false }) - dispatch.map.setLayerVisible({ QSYDWLayer: false }) - dispatch.map.setLayerVisible({ YHJMHLayer: false }) - } - - return ()=>{ - dispatch.runtime.closeFeaturePopAll() - dispatch.map.setLayerVisible({ PicStLayer: false }) - dispatch.map.setLayerVisible({ AZDLayer: false }) - dispatch.map.setLayerVisible({ QSYDWLayer: false }) - dispatch.map.setLayerVisible({ YHJMHLayer: false }) - } - },[checkedObj]) - - useEffect(()=>{ - setCheckedObj({ key:'12', label:'雨情', labelRight:'统计', icon:'yuqing' }) - },[]) - - - return ( -
-
-
综合展示
- { - dispatch.runtime.closeFeaturePopAll() - if(a===undefined){ - setCheckedObj({ key:'12', label:'雨情', labelRight:'统计', icon:'yuqing' }) - setShowTable(false) - }else if(a==='1'){ - setShowTable(true) - dispatch.runtime.setHome() - setCheckedObj({ key:'11', label:'预警', labelRight:'预警', icon:'yujing' }) - }else if(a==='2'){ - setShowTable(true) - // dispatch.runtime.setHome() - setCheckedObj({ key:'21', label:'巡查巡检', labelRight:'工程巡检', icon:'shuiku' }) - }else if(a==='3'){ - dispatch.runtime.setCameraTarget({ - center: [114.75, 31.493], - zoom: 13.5, - pitch: 60 - }) - setShowTable(true) - setCheckedObj({ key:'31', label:'危险区', labelRight:'危险区列表', icon:'weixianqu' }) - }else if(a==='4'){ - setCheckedObj({ key:'41', label:'供水', labelRight:'今日供水实况', icon:'gongshui' }) - }else if(a==='5'){ - setCheckedObj({ key:'51', label:'水库', labelRight:'基本信息', icon:'shuiku' }) - setShowTable(true) - }else{ - } - }} expandIconPosition="end" accordion={true} bordered={false}> - { - items.map((item,index)=> - -
-
- {item.label} -
- - } - > - { - item.children.map((item)=> - { - setCheckedObj(item) - setShowTable(true) - }}> - - {item.label} - { - (checkedObj.key===item.key&&showTable)? -
-
-
- :null - } -
- ) - } -
- ) - } -
-
+ return ( +
+
+ +
综合展示
+ { + dispatch.runtime.closeFeaturePopAll() + if (a === undefined) { + setCheckedObj({ key: '12', label: '雨情', labelRight: '统计', icon: 'yuqing' }) + setShowTable(false) + } else if (a === '1') { + setShowTable(true) + dispatch.runtime.setHome() + setCheckedObj({ key: '11', label: '预警', labelRight: '预警', icon: 'yujing' }) + } else if (a === '2') { + setShowTable(true) + // dispatch.runtime.setHome() + setCheckedObj({ key: '21', label: '巡查巡检', labelRight: '工程巡检', icon: 'shuiku' }) + } else if (a === '3') { + dispatch.runtime.setCameraTarget({ + center: [114.75, 31.493], + zoom: 13.5, + pitch: 60 + }) + setShowTable(true) + setCheckedObj({ key: '31', label: '危险区', labelRight: '危险区列表', icon: 'weixianqu' }) + } else if (a === '4') { + setCheckedObj({ key: '41', label: '供水', labelRight: '今日供水实况', icon: 'gongshui' }) + } else if (a === '5') { + setCheckedObj({ key: '51', label: '水库', labelRight: '基本信息', icon: 'shuiku' }) + setShowTable(true) + } else { + } + }} expandIconPosition="end" accordion={true} bordered={false}> + { + items.map((item, index) => + +
+
+ {item.label} +
+ + } + > + { + item.children.map((item) => + { + setCheckedObj(item) + setShowTable(true) + }}> + + {item.label} + { + (checkedObj.key === item.key && showTable) ? +
+
+
+ : null + } +
+ ) + } +
+ ) + } +
+
+ { + (checkedObj.label === '预警' || checkedObj.label === '雨情') ? +
+ : null + } + { + checkedObj.labelRight ? +
{ - (checkedObj.label === '预警'||checkedObj.label === '雨情')? -
- :null + showTable ? +
+ { + checkedObj.key != 'search' ? +
+ + {checkedObj.labelRight} +
: +
+
+
{checkedObj.labelRight}
+
+ } + +
+ {/* */} +
+
: null } - { - checkedObj.labelRight? -
- { - showTable? -
-
- - {checkedObj.labelRight} -
-
- {/* */} -
-
:null - } - { checkedObj.label === '预警' ? <>:null } - { checkedObj.label === '雨情' ? :null } - { checkedObj.label === '水库水情' ? :null } - { checkedObj.label === '土壤墒情' ? :null } - { checkedObj.label === '供水' ? :null } - { checkedObj.label === '工程安全' ? :null } - { checkedObj.label === '监测设备状态' ? :null } - {/* { checkedObj.label === '水质' ? :null } */} - { checkedObj.label === '视频点' ? :null } + {checkedObj.label === '搜索结果' ?
+ clickItem(item)} + /> +
: null} + {checkedObj.label === '预警' ? <> : null} + {checkedObj.label === '雨情' ? : null} + {checkedObj.label === '水库水情' ? : null} + {checkedObj.label === '土壤墒情' ? : null} + {checkedObj.label === '供水' ? : null} + {checkedObj.label === '工程安全' ? : null} + {checkedObj.label === '监测设备状态' ? : null} + {/* { checkedObj.label === '水质' ? :null } */} + {checkedObj.label === '视频点' ? : null} - { checkedObj.label === '巡查巡检' ? :null } + {checkedObj.label === '巡查巡检' ? : null} - { checkedObj.label === '水库' ? :null } - { checkedObj.label === '大坝' ? :null } - { checkedObj.label === '溢洪道' ? :null } + {checkedObj.label === '水库' ? : null} + {checkedObj.label === '大坝' ? : null} + {checkedObj.label === '溢洪道' ? : null} - { checkedObj.label === '危险区' ? :null } - { checkedObj.label === '安置点' ? :null } - { checkedObj.label === '企事业单位' ? :null } - { checkedObj.label === '沿河居民户' ? :null } + {checkedObj.label === '危险区' ? : null} + {checkedObj.label === '安置点' ? : null} + {checkedObj.label === '企事业单位' ? : null} + {checkedObj.label === '沿河居民户' ? : null} - { checkedObj.label === '危险区' || checkedObj.label === '安置点' || checkedObj.label === '企事业单位' || checkedObj.label === '沿河居民户'?:null } -
- :null - } + {checkedObj.label === '危险区' || checkedObj.label === '安置点' || checkedObj.label === '企事业单位' || checkedObj.label === '沿河居民户' ? : null} +
+ : null + } - { - checkedObj.label === '工程安全' ?
- -
:null - } + { + checkedObj.label === '工程安全' ?
+ +
: null + } -
- { checkedObj.label==='雨情'?:null } - { checkedObj.label==='水库水情'?:null } - { checkedObj.label==='供水'?:null } - { (checkedObj.label==='水库'||checkedObj.label==='大坝'||checkedObj.label==='溢洪道'||checkedObj.label==='视频点')?:null } - { (checkedObj.label==='危险区'||checkedObj.label==='安置点'||checkedObj.label==='企事业单位'||checkedObj.label==='沿河居民户')?:null } -
- -
- ) +
+ {checkedObj.label === '雨情' ? : null} + {checkedObj.label === '水库水情' ? : null} + {checkedObj.label === '供水' ? : null} + {(checkedObj.label === '水库' || checkedObj.label === '大坝' || checkedObj.label === '溢洪道' || checkedObj.label === '视频点') ? : null} + {(checkedObj.label === '危险区' || checkedObj.label === '安置点' || checkedObj.label === '企事业单位' || checkedObj.label === '沿河居民户') ? : null} +
+ +
+ ) } export default HomePage diff --git a/src/views/Home/index.tsx b/src/views/Home/index.tsx index bbd39d234..deb9c1f08 100644 --- a/src/views/Home/index.tsx +++ b/src/views/Home/index.tsx @@ -184,7 +184,6 @@ const HomePage = () => { {/* 地图 */} - {/*首页面板*/} {pathname === '/mgr/home' ? ( diff --git a/src/views/sz/ddfa/form.js b/src/views/sz/ddfa/form.js index f61dd1ce7..b04edd837 100644 --- a/src/views/sz/ddfa/form.js +++ b/src/views/sz/ddfa/form.js @@ -8,30 +8,46 @@ import FileUpload from '../../../components/Form/FileUpload' // import "./index.less" import moment from 'moment'; +import TextArea from 'antd/lib/input/TextArea'; -const opntios=[ - {value:0,label:'党支部工作制度'}, - {value:1,label:'行政工作制度'}, - {value:2,label:'部门工作制度'}, - {value:3,label:'安全管理制度'}, - {value:4,label:'工程管理制度'}, - {value:5,label:'技术规程'}, - {value:6,label:'岗位责任制'} + const opntios = [ + {value:1,label:'防洪调度'}, + {value:2,label:'兴利调度'}, + {value:3,label:'生态调度'}, + {value:4,label:'应急调度'}, + {value:5,label:'其他'}, ] + +const opntios1 = [ + {value:0,label:'已废弃'}, + {value:1,label:'生效中'}, + ] const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { const [form] = Form.useForm(); const [loading, setLoading] = useState(false) + const [filesParams, setFilesParams] = useState([]) const onfinish = (values) => { - debugger + const userId = localStorage.getItem("userId"); + const userName = localStorage.getItem("userName"); + values.tm = moment(values.bzsj).format("YYYY-MM-DD") if (mode === 'edit') { - // onEdit(apiurl.zdgl.edit, {...record,...values}) + onEdit(apiurl.zsk.ddfa.edit, {...record,...values,createUser:userName,fileIds: filesParams, files:undefined}) } if (mode === 'save') { - // onSave(apiurl.zdgl.add, values) + onSave(apiurl.zsk.ddfa.save, {...values,createUser:userName,fileIds: filesParams, files:undefined}) } } +useEffect(() => { + if (mode != 'save') { + const tm = record?.tm ? moment(record?.tm) : ''; + form.setFieldValue('bzsj', tm) + if (record?.files.length > 0) { + setFilesParams(record?.files.split(',')) + } + } +}, [mode]) @@ -43,30 +59,30 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { onFinish={onfinish} initialValues={record} > - - + - dateString} getValueProps={(value) => ({ value: value ? moment(value) : undefined })} > @@ -76,9 +92,20 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { - + + + + + @@ -90,7 +117,8 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { labelCol={{ span: 3 }} wrapperCol={{ span: 19 }} > - diff --git a/src/views/sz/ddfa/index.js b/src/views/sz/ddfa/index.js index 663030ed0..daee655b7 100644 --- a/src/views/sz/ddfa/index.js +++ b/src/views/sz/ddfa/index.js @@ -13,7 +13,8 @@ import { httpgetExport } from '../../../utils/request'; import { exportFile } from '../../../utils/tools'; import dayjs from 'dayjs'; -const obj={0:"党支部工作制度",1:"行政工作制度",2:"部门工作制度",3:"安全管理制度",4:"工程管理制度",5:"技术规程",6:"岗位责任制"} +const obj = { 1: "防洪调度", 2: "兴利调度", 3: "生态调度", 4: "应急调度", 5: "其他" } +const sobj = {0:'已废弃',1:'生效中'} const Page = () => { const refModal = useRef(); @@ -22,12 +23,12 @@ const Page = () => { { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" }, { title: '方案名称', key: 'name', dataIndex: 'name', ellipsis: true }, { title: '调度类型', key: 'type', dataIndex: 'type',render:(v)=><>{obj[v]}}, - { title: '简介', key: 'releaseDate', dataIndex: 'releaseDate', render: (value) => {value ? dayjs(value).format('YYYY-MM-DD') : ''}}, - { title: '编制时间', key: 'fillUnit', dataIndex: 'fillUnit'}, - { title: '附件数', key: 'minUpTime', dataIndex: 'minUpTime'}, - { title: '状态', key: 'minUpTime', dataIndex: 'minUpTime'}, - { title: '创建人', key: 'minUpTime', dataIndex: 'minUpTime'}, - { title: '最后更新时间', key: 'minUpTime', dataIndex: 'minUpTime'}, + { title: '简介', key: 'content', dataIndex: 'content'}, + { title: '编制时间', key: 'tm', dataIndex: 'tm'}, + { title: '附件数', key: 'fileCount', dataIndex: 'fileCount'}, + { title: '状态', key: 'status', dataIndex: 'status',render:(v)=><>{sobj[v]}}, + { title: '创建人', key: 'createUser', dataIndex: 'createUser'}, + { title: '最后更新时间', key: 'updateTm', dataIndex: 'updateTm'}, { title: '操作', key: 'operation', fixed: 'right', align: 'center', render: (value, row, index) => ( @@ -49,12 +50,12 @@ const Page = () => { } else if (type === 'view') { refModal.current.showView(params); } else if (type === 'del') { - refModal.current.onDeleteGet(apiurl.zdgl.del + `/${params.id}`); + refModal.current.onDeleteGet(apiurl.zsk.ddfa.del + `/${params.id}`); } } - const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.zdgl.list).find_noCode); + const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.zsk.ddfa.page).find_noCode); useEffect(() => { diff --git a/src/views/sz/ddfa/toolbar.js b/src/views/sz/ddfa/toolbar.js index 4b17964a1..a113a80e7 100644 --- a/src/views/sz/ddfa/toolbar.js +++ b/src/views/sz/ddfa/toolbar.js @@ -9,20 +9,23 @@ const ToolBar = ({ setSearchVal, onSave }) => { const onFinish = (values) => { const {releaseDate,...ret} = values if(releaseDate){ - ret.stm = moment(values.releaseDate[0]).format('YYYY-MM-DD HH:mm:ss') - ret.etm = moment(values.releaseDate[1]).format('YYYY-MM-DD HH:mm:ss') + ret.stm = moment(values.releaseDate[0]).format('YYYY-MM-DD') + ret.etm = moment(values.releaseDate[1]).format('YYYY-MM-DD') } setSearchVal(ret); } const opntios = [ - {value:0,label:'党支部工作制度'}, - {value:1,label:'行政工作制度'}, - {value:2,label:'部门工作制度'}, - {value:3,label:'安全管理制度'}, - {value:4,label:'工程管理制度'}, - {value:5,label:'技术规程'}, - {value:6,label:'岗位责任制'} + {value:1,label:'防洪调度'}, + {value:2,label:'兴利调度'}, + {value:3,label:'生态调度'}, + {value:4,label:'应急调度'}, + {value:5,label:'其他'}, + ] + + const opntios1 = [ + {value:0,label:'已废弃'}, + {value:1,label:'生效中'}, ] return ( @@ -38,8 +41,8 @@ const ToolBar = ({ setSearchVal, onSave }) => { - - + + + + + + + + + ); +}; + +export default AdcdTreeSelector; diff --git a/src/views/sz/khzbgl/form.js b/src/views/sz/khzbgl/form.js new file mode 100644 index 000000000..3b0f9cb08 --- /dev/null +++ b/src/views/sz/khzbgl/form.js @@ -0,0 +1,130 @@ +import React, { useEffect, useState, useMemo, useRef } from 'react'; +import { Form, Button, Input, Row, Upload, Col, Table, DatePicker, InputNumber, message, Image, Modal, Typography, Select } 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 FileUpload from '../../../components/Form/FileUpload' + +// import "./index.less" +import moment from 'moment'; +import TextArea from 'antd/lib/input/TextArea'; + + const opntios = [ + {value:1,label:'水资源调度'}, + {value:2,label:'防洪调度'}, + {value:3,label:'工程安全'}, + {value:4,label:'应急抢险'}, + {value:5,label:'其他'}, + ] + +const opntios1 = [ + {value:0,label:'已废弃'}, + {value:1,label:'生效中'}, + ] +const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { + const [form] = Form.useForm(); + const [loading, setLoading] = useState(false) + const [filesParams, setFilesParams] = useState([]) + const onfinish = (values) => { + const userId = localStorage.getItem("userId"); + const userName = localStorage.getItem("userName"); + values.tm = moment(values.bzsj).format("YYYY-MM-DD") + if (mode === 'edit') { + onEdit(apiurl.zsk.gcaq.edit, { ...record, ...values, createUser: userName, fileIds: filesParams, files:undefined}) + } + if (mode === 'save') { + onSave(apiurl.zsk.gcaq.save, {...values,createUser:userName,fileIds:filesParams,files:undefined,type:record?.code}) + } + } + +useEffect(() => { + if (mode != 'save') { + const tm = record?.tm ? moment(record?.tm) : ''; + form.setFieldValue('bzsj', tm) + if (record?.files.length > 0) { + setFilesParams(record?.files) + } + } +}, [mode,record]) + + + + + return ( + <> +
+ + + + + + + + + dateString} + getValueProps={(value) => ({ value: value ? moment(value) : undefined })} + > + + + + + + + + + + + + + + { setFilesParams(v)}} + value={filesParams} + /> + + + + { + mode === 'view' ? null : ( + <> + + + + + ) + } +
+ + ); +} + +export default ModalForm; diff --git a/src/views/sz/khzbgl/index.js b/src/views/sz/khzbgl/index.js new file mode 100644 index 000000000..a0ea26043 --- /dev/null +++ b/src/views/sz/khzbgl/index.js @@ -0,0 +1,120 @@ +import React, { Fragment, useRef, useMemo, useEffect, useState } from 'react'; +import BasicCrudModal from '../../../components/crud/BasicCrudModal'; +import { Table, Card, Modal, Form, Input, Button, Row, Col, Timeline, message, Tabs, Image, Switch } from 'antd'; +import { FileWordOutlined, FilePdfOutlined, FileZipOutlined, FileExcelOutlined } from '@ant-design/icons'; +import { useSelector } from 'react-redux'; +import AdcdTreeSelector from "./AdcdTreeSelector"; +import ToolBar from './toolbar'; +import ModalForm from './form'; +import apiurl from '../../../service/apiurl'; +import usePageTable from '../../../components/crud/usePageTable2'; +import { createCrudService } from '../../../components/crud/_'; +import { CrudOpRender_text } from '../../../components/crud/CrudOpRender'; + +const url = "http://223.75.53.141:9100/gs-tsg" +const Page = () => { + const role = useSelector(state => state.auth.role); + const editBtn = role?.rule?.find(item => item.menuName == "编辑") || true; + const delBtn = role?.rule?.find(item => item.menuName == "删除") || true; + const refModal = useRef(); + const columns = [ + { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" }, + { title: '标题', key: 'name', dataIndex: 'name', width: 200 }, + { title: '简介', key: 'content', dataIndex: 'content' }, + { title: '编制时间', key: 'tm', dataIndex: 'tm' }, + { title: '附件数', key: 'fileCount', dataIndex: 'fileCount' }, + { title: '创建人', key: 'createUser', dataIndex: 'createUser' }, + { title: '最后更新时间', key: 'updateTm', dataIndex: 'updateTm' }, + { + title: '操作', key: 'operation', width: 200, fixed: 'right', align: 'center', + render: (value, row, index) => ( + () => command(cmd)(row)} />) + }, + ]; + const [code, setCode] = useState() + const [searchVal, setSearchVal] = useState(false) + + + const width = useMemo(() => columns.reduce((total, cur) => total + (cur.width), 0), [columns]); + + + + const command = (type) => (params) => { + if (type === 'save') { + refModal.current.showSave({ code }); + } else if (type === 'edit') { + refModal.current.showEdit({ ...params, code }); + } else if (type === 'view') { + refModal.current.showView(params); + } else if (type === 'del') { + refModal.current.onDeleteGet(apiurl.zsk.gcaq.del + `/${params.id}`); + } + } + + + + const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.zsk.gcaq.page).find_noCode); + + const onEdit = (path, values) => { + createCrudService(path).edit(values).then((result) => { + if (result?.code === 200) { + refresh() + } + }) + } + useEffect(() => { + if (code) { + let params = { + search: { + type: code, + ...searchVal, + } + }; + search(params) + } + }, [code, searchVal]); + + + return ( + <> +
+
+ +
+
+ + + + + + + + + + + + + ); +} + +export default Page; diff --git a/src/views/sz/khzbgl/toolbar.js b/src/views/sz/khzbgl/toolbar.js new file mode 100644 index 000000000..d5ff56d26 --- /dev/null +++ b/src/views/sz/khzbgl/toolbar.js @@ -0,0 +1,51 @@ +import React, { useEffect, useState } from 'react'; +import { Form, Input, Button, DatePicker } from 'antd'; + +import moment from 'moment'; +const { RangePicker } = DatePicker; +const ToolBar = ({ setSearchVal, onSave, storeData, role }) => { + console.log("role", role); + + const addBtn = role?.rule?.find(item => item.menuName == "新增"); + const [form] = Form.useForm(); + + const onFinish = (values) => { + debugger + const { releaseDate, ...ret } = values + if (releaseDate) { + ret.stm = moment(values.releaseDate[0]).format('YYYY-MM-DD') + ret.etm = moment(values.releaseDate[1]).format('YYYY-MM-DD') + } + setSearchVal(ret); + } + + + + return ( + <> +
+
+ + + + + + + + + + { + + (onSave) ? + + + + : null + } + +
+ + ); +} + +export default ToolBar; \ No newline at end of file diff --git a/src/views/sz/ywgz/form.js b/src/views/sz/ywgz/form.js new file mode 100644 index 000000000..1461a9d5c --- /dev/null +++ b/src/views/sz/ywgz/form.js @@ -0,0 +1,147 @@ +import React, { useEffect, useState, useMemo, useRef } from 'react'; +import { Form, Button, Input, Row, Upload, Col, Table, DatePicker, InputNumber, message, Image, Modal, Typography, Select } 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 FileUpload from '../../../components/Form/FileUpload' + +// import "./index.less" +import moment from 'moment'; +import TextArea from 'antd/lib/input/TextArea'; + + const opntios = [ + {value:1,label:'水资源调度'}, + {value:2,label:'防洪调度'}, + {value:3,label:'工程安全'}, + {value:4,label:'应急抢险'}, + {value:5,label:'其他'}, + ] + +const opntios1 = [ + {value:0,label:'已废弃'}, + {value:1,label:'生效中'}, + ] +const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { + const [form] = Form.useForm(); + const [loading, setLoading] = useState(false) + const [filesParams, setFilesParams] = useState([]) + const onfinish = (values) => { + const userId = localStorage.getItem("userId"); + const userName = localStorage.getItem("userName"); + values.tm = moment(values.bzsj).format("YYYY-MM-DD") + if (mode === 'edit') { + onEdit(apiurl.zsk.ywgz.edit, { ...record, ...values, createUser: userName, fileIds: filesParams, files:undefined}) + } + if (mode === 'save') { + onSave(apiurl.zsk.ywgz.save, {...values,createUser:userName,fileIds:filesParams,files:undefined}) + } + } + +useEffect(() => { + if (mode != 'save') { + const tm = record?.tm ? moment(record?.tm) : ''; + form.setFieldValue('bzsj', tm) + if (record?.files.length > 0) { + setFilesParams(record?.files) + } + } +}, [mode,record]) + + + + + return ( + <> +
+ +
+ + + + + + + + + + + + + + + + + + + { setFilesParams(v);console.log("vvvv",v); + }} + value={filesParams} + /> + + + + { + mode === 'view' ? null : ( + <> + + + + + ) + } + + + ); +} + +export default ModalForm; diff --git a/src/views/sz/ywgz/index.js b/src/views/sz/ywgz/index.js new file mode 100644 index 000000000..cde18f795 --- /dev/null +++ b/src/views/sz/ywgz/index.js @@ -0,0 +1,98 @@ +import React, { Fragment, useRef, useMemo, useEffect, useState } from 'react'; +import BasicCrudModal from '../../../components/crud/BasicCrudModal'; +import { Table, Card, Modal, Form, Input, Button, Row, Col, Timeline, message, Tabs, Image } from 'antd'; +import { FileWordOutlined, FilePdfOutlined, FileZipOutlined, PaperClipOutlined } from '@ant-design/icons'; +import { useSelector } from 'react-redux'; +import ToolBar from './toolbar'; +import ModalForm from './form'; +import apiurl from '../../../service/apiurl'; +import usePageTable from '../../../components/crud/usePageTable2'; +import { createCrudService } from '../../../components/crud/_'; +import { CrudOpRender_text } from '../../../components/crud/CrudOpRender'; +import { httpgetExport } from '../../../utils/request'; +import { exportFile } from '../../../utils/tools'; +import dayjs from 'dayjs'; + +const obj = { 1: "水资源调度", 2: "防洪调度", 3: "工程安全", 4: "应急抢险", 5: "其他" } +const sobj = {0:'已废弃',1:'生效中'} +const Page = () => { + + const refModal = useRef(); + const [searchVal, setSearchVal] = useState(false) + const columns = [ + { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" }, + { title: '方案名称', key: 'name', dataIndex: 'name', ellipsis: true }, + { title: '调度类型', key: 'type', dataIndex: 'type',render:(v)=><>{obj[v]}}, + { title: '简介', key: 'content', dataIndex: 'content'}, + { title: '编制时间', key: 'tm', dataIndex: 'tm'}, + { title: '附件数', key: 'fileCount', dataIndex: 'fileCount'}, + { title: '状态', key: 'status', dataIndex: 'status',render:(v)=><>{sobj[v]}}, + { title: '创建人', key: 'createUser', dataIndex: 'createUser'}, + { title: '最后更新时间', key: 'updateTm', dataIndex: 'updateTm'}, + { + title: '操作', key: 'operation', fixed: 'right', align: 'center', + render: (value, row, index) => ( + () => command(cmd)(row)} + /> + ) + }, + ]; + + const command = (type) => (params) => { + if (type === 'save') { + refModal.current.showSave(); + } else if (type === 'edit') { + refModal.current.showEdit({ ...params }); + } else if (type === 'view') { + refModal.current.showView(params); + } else if (type === 'del') { + refModal.current.onDeleteGet(apiurl.zsk.ywgz.del + `/${params.id}`); + } + } + + + const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.zsk.ywgz.page).find_noCode); + + + useEffect(() => { + const params = { + search: { + ...searchVal, + } + }; + search(params) + }, [searchVal]) + + + return ( + <> +
+
+ + + +
+
+ + + + + + + ); +} + +export default Page; diff --git a/src/views/sz/ywgz/toolbar.js b/src/views/sz/ywgz/toolbar.js new file mode 100644 index 000000000..d39a95093 --- /dev/null +++ b/src/views/sz/ywgz/toolbar.js @@ -0,0 +1,69 @@ +import React, { useEffect, useState } from 'react'; +import { Form, Input, Button, DatePicker, Select } from 'antd'; +import { DownOutlined, UpOutlined } from '@ant-design/icons' + +import moment from 'moment'; +const { RangePicker } = DatePicker; +const ToolBar = ({ setSearchVal, onSave }) => { + const [form] = Form.useForm(); + const onFinish = (values) => { + const {releaseDate,...ret} = values + if(releaseDate){ + ret.stm = moment(values.releaseDate[0]).format('YYYY-MM-DD') + ret.etm = moment(values.releaseDate[1]).format('YYYY-MM-DD') + } + setSearchVal(ret); + } + + const opntios = [ + {value:1,label:'水资源调度'}, + {value:2,label:'防洪调度'}, + {value:3,label:'工程安全'}, + {value:4,label:'应急抢险'}, + {value:5,label:'其他'}, + ] + + const opntios1 = [ + {value:0,label:'已废弃'}, + {value:1,label:'生效中'}, + ] + + return ( + <> +
+
+ + + + + + + + + + + + + + + { + (onSave) ? + + + + : null + } + + +
+ + ); +} + +export default ToolBar; \ No newline at end of file From ce1be1eec653042af95bdf30e43b7c4974b6303a Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Fri, 1 Aug 2025 17:58:37 +0800 Subject: [PATCH 02/13] =?UTF-8?q?feat():=E5=BC=80=E5=8F=91=E7=9F=A5?= =?UTF-8?q?=E8=AF=86=E6=A3=80=E7=B4=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/apiurl.js | 12 ++- .../SearchResultList/index.js | 2 +- src/views/Home/homePanelsLayoutPage/index.js | 80 +++++++++++++------ src/views/sz/ddfa/form.js | 2 +- 4 files changed, 66 insertions(+), 30 deletions(-) diff --git a/src/service/apiurl.js b/src/service/apiurl.js index e24b471bc..ccbfcefaa 100644 --- a/src/service/apiurl.js +++ b/src/service/apiurl.js @@ -16,14 +16,17 @@ const apiurl = { save:service_fxdd + "/dispatchScheme/add", edit: service_fxdd + "/dispatchScheme/update", del: service_fxdd + "/dispatchScheme/delete", - upload:service_fxdd + "/dispatchScheme/file/upload/singleSimple", + upload: service_fxdd + "/dispatchScheme/file/upload/singleSimple", + getOne:service_fxdd + "/dispatchScheme/getById/" + }, ywgz: { page: service_fxdd + "/businessRule/pageByTm", save:service_fxdd + "/businessRule/add", edit: service_fxdd + "/businessRule/update", del: service_fxdd + "/businessRule/delete", - upload:service_fxdd + "/businessRule/file/upload/singleSimple", + upload: service_fxdd + "/businessRule/file/upload/singleSimple", + getOne:service_fxdd + "/businessRule/getById/" }, gcaq: { page: service_fxdd + "/projectSafety/pageByTm", @@ -34,7 +37,9 @@ const apiurl = { tree: service_fxdd + "/projectSafety/listCategory", saveTree: service_fxdd + "/projectSafety/addCategory", editTree: service_fxdd + "/projectSafety/updateCategory", - deleteTree: service_fxdd + "/projectSafety/delCategory", + deleteTree: service_fxdd + "/projectSafety/delCategory", + getOne:service_fxdd + "/projectSafety/getById/" + } }, file:{ @@ -111,6 +116,7 @@ const apiurl = { // 基本情况 home: { + globalSearch:service_fxdd +"/globalSearch/findByName", yq: service_fxdd + '/real/rain/list',//'/stStbprpB/rainfallStationDetails/rainfallList',//雨情 sk: service_fxdd + '/stStbprpB/reservoirStationDetails/realTimeWaterLevelList',//水库 skjbxx: service_fxdd+ '/attResBase/list',//水库基本信息 diff --git a/src/views/Home/homePanelsLayoutPage/SearchResultList/index.js b/src/views/Home/homePanelsLayoutPage/SearchResultList/index.js index 2a5eb45d2..af7a179a6 100644 --- a/src/views/Home/homePanelsLayoutPage/SearchResultList/index.js +++ b/src/views/Home/homePanelsLayoutPage/SearchResultList/index.js @@ -30,7 +30,7 @@ const SearchResultList = ({ data = [], onItemClick, title = "搜索结果" }) => >
{item.name}
- {appconsts.GlobalSearch_Type[item.type] || item.type} + {item.type}
)) diff --git a/src/views/Home/homePanelsLayoutPage/index.js b/src/views/Home/homePanelsLayoutPage/index.js index 9a597a204..664a5937f 100644 --- a/src/views/Home/homePanelsLayoutPage/index.js +++ b/src/views/Home/homePanelsLayoutPage/index.js @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react' import { useLocation } from 'react-router' import { useDispatch, useSelector } from 'react-redux' -import { Collapse, DatePicker, Input } from 'antd'; +import { Collapse, DatePicker, Input, Modal,message } from 'antd'; import './index.less' import Yujing from './item_yujing/index.js' import Yuqing from './item_yuqing' @@ -31,7 +31,8 @@ import Tuli3 from '../TuLi/Tuli3.js' import Tuli4 from '../TuLi/Tuli4.js' import Tuli5 from '../TuLi/Tuli5.js' import SearchResultList from './SearchResultList'; - +import { httpget } from '../../../utils/request'; +import apiurl from '../../../service/apiurl'; import moment from 'moment'; @@ -93,7 +94,7 @@ const HomePage = ({ showPanels }) => { // 在 globalSearch 函数中添加搜索结果状态 const [searchResults, setSearchResults] = useState([]); - const globalSearch = (e) => { + const globalSearch = async (e) => { if (e && e.trim() !== '') { // 设置为空白状态 setShowTable(true); @@ -104,32 +105,61 @@ const HomePage = ({ showPanels }) => { labelRight: `搜索:${e}`, icon: 'search' }); - - // 模拟数据 - setTimeout(() => { - const mockResults = [ - { id: '1', name: '檀树岗水情站', type: 'swst', lgtd: 114.75, lttd: 31.493 }, - { id: '2', name: '檀树岗雨情站', type: 'qxst', lgtd: 114.76, lttd: 31.495 }, - { id: '3', name: '檀树岗渗压站', type: 'shst', lgtd: 114.77, lttd: 31.497 }, - { id: '4', name: '檀树岗位移站', type: 'shst', lgtd: 114.78, lttd: 31.499 }, - { id: '5', name: '檀树岗渗流站', type: 'shst', lgtd: 114.79, lttd: 31.501 }, - { id: '6', name: '檀树岗土壤墒情站', type: 'stinfo', lgtd: 114.80, lttd: 31.503 }, - { id: '7', name: '檀树岗流量站', type: 'swst', lgtd: 114.81, lttd: 31.505 }, - { id: '8', name: '檀树岗视频站', type: 'picst', lgtd: 114.82, lttd: 31.507 }, - { id: '9', name: '檀树岗湾', type: 'danad', lgtd: 114.83, lttd: 31.509 }, - { id: '10', name: '檀树湾', type: 'placement', lgtd: 114.84, lttd: 31.511 }, - { id: '11', name: '七里坪镇檀树中学', type: 'bsnssinfo', lgtd: 114.85, lttd: 31.513 }, - { id: '12', name: '檀某某', type: 'flrvvlg', lgtd: 114.86, lttd: 31.515 }, - { id: '13', name: '檀树岗调度方案', type: 'reservoir', lgtd: 114.87, lttd: 31.517 }, - { id: '14', name: '檀树岗调度规则', type: 'reservoir', lgtd: 114.88, lttd: 31.519 }, - { id: '15', name: '檀树岗工程安全知识', type: 'daminfo', lgtd: 114.89, lttd: 31.521 }, - ]; - setSearchResults(mockResults); - }, 500); + const res = await httpget(apiurl.home.globalSearch, { name: e }) + if (res.code == 200) { + setSearchResults(res.data); + } } } + const importMap = { + '业务规则库': () => import('../../sz/ywgz/form'), + '调度方案库': () => import('../../sz/ddfa/form'), + '工程安全知识库': () => import('../../sz/khzbgl/form') + }; + // 业务规则库弹框 + const regularOpen = async (record) => { + debugger + const id = record?.id.split('-')[0] + const com = record.type == '业务规则库' ? + { url: apiurl.zsk.ywgz.getOne } : + record.type == '调度方案库' ? + { url: apiurl.zsk.ddfa.getOne } : + { url: apiurl.zsk.gcaq.getOne }; + const res = await httpget(com.url + id) + // 导入业务规则库的Modal组件 + // 使用映射函数进行导入 + try { + const ModalForm = await importMap[record.type](); + + Modal.destroyAll(); // 先销毁可能存在的其他Modal + const modal = Modal.confirm({ + title: `${record.name}详情`, + width: 1000, + content: ( + + ), + icon: null, + okButtonProps: { style: { display: 'none' } }, + cancelButtonProps: { style: { display: 'none' } }, + closable: true + }); + } catch (error) { + console.error('模块导入失败:', error); + message.error(`无法加载${record.type}详情,请稍后再试`); + } + return; + } const clickItem = (item) => { + + //业务规则库 + if (item.type == '业务规则库' || item.type == '调度方案库' || item.type == '工程安全知识库') { + regularOpen(item) + } + // 判断是否为知识库或安全监测站类型 const isKnowledgeOrMonitoringStation = item.type === 'daminfo' || item.type === 'stinfo'; // 如果有经纬度信息,则进行处理 diff --git a/src/views/sz/ddfa/form.js b/src/views/sz/ddfa/form.js index b04edd837..2314912fc 100644 --- a/src/views/sz/ddfa/form.js +++ b/src/views/sz/ddfa/form.js @@ -44,7 +44,7 @@ useEffect(() => { const tm = record?.tm ? moment(record?.tm) : ''; form.setFieldValue('bzsj', tm) if (record?.files.length > 0) { - setFilesParams(record?.files.split(',')) + setFilesParams(record?.files) } } }, [mode]) From 39d8bb47d06f6495fd03adf36b6f8df967715d15 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Mon, 4 Aug 2025 17:59:49 +0800 Subject: [PATCH 03/13] =?UTF-8?q?feat():=E7=9F=A5=E8=AF=86=E6=A3=80?= =?UTF-8?q?=E7=B4=A2=E7=9F=A5=E8=AF=86=E5=BA=93=E5=BC=B9=E6=A1=86=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Home/homePanelsLayoutPage/index.js | 308 +++++++++++++++---- 1 file changed, 244 insertions(+), 64 deletions(-) diff --git a/src/views/Home/homePanelsLayoutPage/index.js b/src/views/Home/homePanelsLayoutPage/index.js index 664a5937f..912d83cec 100644 --- a/src/views/Home/homePanelsLayoutPage/index.js +++ b/src/views/Home/homePanelsLayoutPage/index.js @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react' import { useLocation } from 'react-router' import { useDispatch, useSelector } from 'react-redux' -import { Collapse, DatePicker, Input, Modal,message } from 'antd'; +import { Collapse, DatePicker, Input, Modal, message } from 'antd'; import './index.less' import Yujing from './item_yujing/index.js' import Yuqing from './item_yuqing' @@ -24,7 +24,9 @@ import QSYDW from './item_qishiyedanwei' import YHJMH from './item_yanhejuminhu' import SetWxqStation from '../setMapStation/wxq' import Bzt from '../../gcaqjc/bzt2' - +import ShenLiu from '../MapCtrl/Pops/ShenLiu'; +import ShenYa from '../MapCtrl/Pops/ShenYa'; +import WeiYi from '../MapCtrl/Pops/WeiYi'; import Tuli from '../TuLi/Tuli.js' import Tuli2 from '../TuLi/Tuli2.js'; import Tuli3 from '../TuLi/Tuli3.js' @@ -33,7 +35,15 @@ import Tuli5 from '../TuLi/Tuli5.js' import SearchResultList from './SearchResultList'; import { httpget } from '../../../utils/request'; import apiurl from '../../../service/apiurl'; +import FillStyle from "ol/style/Fill"; +import GeoJSONFormat from 'ol/format/GeoJSON'; +import { Vector as VectorSource } from "ol/source"; +import StrokeStyle from "ol/style/Stroke"; +import { geometryCenter } from '../../../utils/tools' +import Feature from "ol/Feature"; +import VectorLayer from "ol/layer/Vector"; +import Style from "ol/style/Style"; import moment from 'moment'; const { Panel } = Collapse; @@ -91,6 +101,7 @@ const HomePage = ({ showPanels }) => { moment(moment().add(-1, 'days').format('YYYY-MM-DD 08:00:00')), moment(moment().format('YYYY-MM-DD 08:00:00')), ]) + let mapObj = useSelector(s => s.map.map) // 在 globalSearch 函数中添加搜索结果状态 const [searchResults, setSearchResults] = useState([]); @@ -118,88 +129,256 @@ const HomePage = ({ showPanels }) => { }; // 业务规则库弹框 const regularOpen = async (record) => { - debugger - const id = record?.id.split('-')[0] + const id = record?.unionCode const com = record.type == '业务规则库' ? - { url: apiurl.zsk.ywgz.getOne } : - record.type == '调度方案库' ? - { url: apiurl.zsk.ddfa.getOne } : - { url: apiurl.zsk.gcaq.getOne }; + { url: apiurl.zsk.ywgz.getOne } : + record.type == '调度方案库' ? + { url: apiurl.zsk.ddfa.getOne } : + { url: apiurl.zsk.gcaq.getOne }; const res = await httpget(com.url + id) // 导入业务规则库的Modal组件 - // 使用映射函数进行导入 - try { - const ModalForm = await importMap[record.type](); - - Modal.destroyAll(); // 先销毁可能存在的其他Modal - const modal = Modal.confirm({ - title: `${record.name}详情`, - width: 1000, - content: ( - - ), - icon: null, - okButtonProps: { style: { display: 'none' } }, - cancelButtonProps: { style: { display: 'none' } }, - closable: true - }); - } catch (error) { - console.error('模块导入失败:', error); - message.error(`无法加载${record.type}详情,请稍后再试`); - } + // 使用映射函数进行导入 + try { + const ModalForm = await importMap[record.type](); + + Modal.destroyAll(); // 先销毁可能存在的其他Modal + const modal = Modal.confirm({ + title: `${record.name}详情`, + width: 1000, + content: ( + + ), + icon: null, + okButtonProps: { style: { display: 'none' } }, + cancelButtonProps: { style: { display: 'none' } }, + closable: true + }); + } catch (error) { + console.error('模块导入失败:', error); + message.error(`无法加载${record.type}详情,请稍后再试`); + } return; } - const clickItem = (item) => { + // 工程安全监测点 + const renderGCaqModal = (record) => { + const row = { ...record, stationCode: record.id } + let popType = ''; - //业务规则库 - if (item.type == '业务规则库' || item.type == '调度方案库' || item.type == '工程安全知识库') { - regularOpen(item) + if (record.type == '渗压站') { + popType = 'shenya'; + } else if (record.type == '渗流站') { + popType = 'shenliu'; + } else if (record.type == '位移站') { + popType = 'weiyi'; + } + + dispatch.runtime.setFeaturePop({ + type: popType, + data: row, + lgtd: record.lgtd, + lttd: record.lttd, + id: record.id + }); + return; + } + + // 加载危险区图层数据 + const getGeoJsonData = async () => { + const radarRangeData = await fetch(`${process.env.PUBLIC_URL}/data/geojson/macheng/wxq2.geojson`) + .then(resp => resp.json()) + .then(data => data.features) + .catch(() => []); + + const wxq = {} + radarRangeData.map((item) => { + wxq[item.properties.ADCD] = item + }) + sessionStorage.setItem('wxq', JSON.stringify(wxq)) + return [...radarRangeData]; + }; + // 危险区图层 + const addLayer = () => { + getGeoJsonData().then((data) => { + debugger + var layer = new VectorLayer({ + // @ts-ignore + name: "ZHZS_WXQ", + source: new VectorSource(), + style: new Style({ + stroke: new StrokeStyle({ + color: 'rgba(255,0,0,0.9)', + width: 2, + }), + fill: new FillStyle({ + color: 'rgba(255,0,0,0.3)', + }), + }) + }); + + const features = data.map((item) => { + // debugger + const geojsonFormat = new GeoJSONFormat(); + let geometry = geojsonFormat.readGeometry(item.geometry, { + featureProjection: 'EPSG:3857', + }); + const feature = new Feature({ + geometry, + data: { ...item.properties, geometry: item.geometry, myLayerType: 'wxq' }, + }); + + return feature + }) + + features.forEach(feature => layer.getSource().addFeature(feature)); + mapObj && mapObj.addLayer(layer); + + mapObj && mapObj.on('click', function (evt) { + + //console.log("271++++",postmessageData); + + var feature = mapObj && mapObj.forEachFeatureAtPixel(evt.pixel, function (feature) { + return feature; + }); + if (feature) { + const data = feature.values_.data + + const center = geometryCenter(data.geometry); + if (data && data.myLayerType === 'wxq') { + + dispatch.runtime.setCameraTarget({ + center: [center[0], center[1]], + zoom: 18, + pitch: 60 + }) + dispatch.runtime.setFeaturePop({ + id: data.PID, + data: { ...data }, + type: 'wxq', + lgtd: center[0], + lttd: center[1], + }) + } + } + }); + + }); + } + + const clickItem = (item) => { + // 业务规则库 + if (item.type == '业务规则库' || item.type == '调度方案库' || item.type == '工程安全知识库') { + regularOpen(item) + return; // 添加return避免继续执行 + } + + // 工程安全监测点 + if (item.type == '渗压站' || item.type == '渗流站' || item.type == '位移站') { + renderGCaqModal(item) + return; // 添加return避免继续执行 } - // 判断是否为知识库或安全监测站类型 - const isKnowledgeOrMonitoringStation = item.type === 'daminfo' || item.type === 'stinfo'; // 如果有经纬度信息,则进行处理 - if (item.lgtd && item.lttd) { + if ((item.lgtd && item.lttd) || item.type == '危险区') { // 关闭所有已打开的弹窗 dispatch.runtime.closeFeaturePopAll(); - // 关闭所有业务图层 - // dispatch.map.closeBusinessLayersEffect(); - // 根据类型确定弹窗类型 + // 先关闭所有图层 + dispatch.map.setLayerVisible({ + HdswLayer: false, + RealDrpLayer: false, + PicStLayer: false, + ShuiKuLayer: false, + TuRangLayer: false, + GongShuiLayer: false + }); + // 根据类型确定弹窗类型和图层 let popType = item.type; + let layerToShow = {}; - // 对特定类型进行映射 - if (item.type === 'swst') popType = 'hdsw'; // 水文站映射到河道水位 - if (item.type === 'qxst') popType = 'drp'; // 气象站映射到雨情 - if (item.type === 'picst') popType = 'picst'; // 视频站 - // 然后根据类型打开对应图层 - if (item.type === 'swst' || item.type === 'hdsw') { - dispatch.map.setLayerVisible({ HdswLayer: true }); - } else if (item.type === 'qxst' || item.type === 'drp') { - dispatch.map.setLayerVisible({ RealDrpLayer: true }); - } else if (item.type === 'picst') { - dispatch.map.setLayerVisible({ PicStLayer: true }); + // 对特定类型进行映射和图层设置 + switch (item.type) { + case '水文站': + popType = 'hdsw'; + layerToShow = { HdswLayer: true }; + break; + case 'qxst': + case '气象站': + case '雨量站': + popType = 'drp'; + layerToShow = { RealDrpLayer: true }; + break; + case '视频站': + popType = 'tuxiang'; + layerToShow = { PicStLayer: true }; + break; + case 'shuiku': + case '水库': + popType = 'shuiku'; + layerToShow = { ShuiKuLayer: true }; + break; + case '土壤墒情站': + popType = 'turangshangqing'; + layerToShow = { TuRangLayer: true }; + break; + case '流量站': + popType = 'gongshui'; + layerToShow = { GongShuiLayer: true }; + break; + case '危险区': + popType = 'wxq'; + layerToShow = { AZDLayer: true }; + break; + default: + // 默认不设置特定图层 + break; + } + + // 设置图层可见性 + if (Object.keys(layerToShow).length > 0) { + dispatch.map.setLayerVisible(layerToShow); + } + const record = JSON.parse(item.jsonStr); + if (item.type == '危险区' || item.type == '安置点') { + addLayer() + const wxq = JSON.parse(sessionStorage.getItem('wxq'))?.[record?.adcd] || '' + if (!wxq) { + message.error('暂无经纬度数据') + return + } + const data = wxq.properties + const center = geometryCenter(wxq.geometry); + dispatch.runtime.setCameraTarget({ + center: [center[0], center[1]], + zoom: 18, + pitch: 60 + }) + dispatch.runtime.setFeaturePop({ + id: data.PID, + data: { ...data }, + type: 'wxq', + lgtd: center[0], + lttd: center[1], + }) + return; } // 显示弹窗 dispatch.runtime.setFeaturePop({ type: popType, - data: item, + data: record, lgtd: item.lgtd, lttd: item.lttd, - id: item.id + id: record.id }); - // 如果不是知识库或安全监测站类型,则进行地图定位 - if (!isKnowledgeOrMonitoringStation) { - dispatch.runtime.setCameraTarget({ - center: [item.lgtd, item.lttd], - zoom: 15, - pitch: 60 - }); - } + // 设置地图视角 + dispatch.runtime.setCameraTarget({ + center: [item.lgtd, item.lttd], + zoom: 15, + pitch: 60 + }); } } @@ -207,7 +386,8 @@ const HomePage = ({ showPanels }) => { dispatch.runtime.closeFeaturePopAll() // 如果是搜索结果,不要关闭图层 if (checkedObj.label === '搜索结果') { - // 可以选择保持当前图层状态,或者显示某些默认图层 + // 主动设置相关图层可见 + return; } if (checkedObj.label === '水库' || checkedObj.label === '大坝' || checkedObj.label === '溢洪道' || checkedObj.label === '视频点') { @@ -370,7 +550,7 @@ const HomePage = ({ showPanels }) => { {checkedObj.label === '企事业单位' ? : null} {checkedObj.label === '沿河居民户' ? : null} - {checkedObj.label === '危险区' || checkedObj.label === '安置点' || checkedObj.label === '企事业单位' || checkedObj.label === '沿河居民户' ? : null} + {checkedObj.label === '危险区' || checkedObj.label === '安置点' || checkedObj.label === '企事业单位' || checkedObj.label === '沿河居民户' ? : null} : null } From 8098b39329dbd8145bab94cdc2f12da744d27eef Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Tue, 5 Aug 2025 18:00:36 +0800 Subject: [PATCH 04/13] =?UTF-8?q?feat():=20=E5=AE=8C=E6=88=90=E6=B4=AA?= =?UTF-8?q?=E6=B0=B4=E9=98=B2=E5=BE=A1=E4=B8=8B=E7=82=B9=E4=BD=8D=E7=9A=84?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Home/homePanelsLayoutPage/index.js | 377 ++++++++++++++----- src/views/Home/setMapStation/drp.js | 2 +- src/views/Home/setMapStation/wxq.js | 9 +- 3 files changed, 293 insertions(+), 95 deletions(-) diff --git a/src/views/Home/homePanelsLayoutPage/index.js b/src/views/Home/homePanelsLayoutPage/index.js index 912d83cec..4a70dc488 100644 --- a/src/views/Home/homePanelsLayoutPage/index.js +++ b/src/views/Home/homePanelsLayoutPage/index.js @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react' +import React, { useEffect, useState,useRef } from 'react' import { useLocation } from 'react-router' import { useDispatch, useSelector } from 'react-redux' import { Collapse, DatePicker, Input, Modal, message } from 'antd'; @@ -40,11 +40,17 @@ import GeoJSONFormat from 'ol/format/GeoJSON'; import { Vector as VectorSource } from "ol/source"; import StrokeStyle from "ol/style/Stroke"; import { geometryCenter } from '../../../utils/tools' +import Text from "ol/style/Text"; import Feature from "ol/Feature"; import VectorLayer from "ol/layer/Vector"; import Style from "ol/style/Style"; import moment from 'moment'; +import { httppost2 } from "../../../utils/request"; +import Circle from 'ol/style/Circle'; +import Stroke from "ol/style/Stroke"; +import Point from 'ol/geom/Point.js'; +import { transform } from 'ol/proj'; const { Panel } = Collapse; const { RangePicker } = DatePicker; @@ -93,9 +99,11 @@ const items = [ ] const HomePage = ({ showPanels }) => { - + // 添加搜索输入框的引用 + const searchInputRef = useRef(null); const dispatch = useDispatch(); const [checkedObj, setCheckedObj] = useState({}) + const [searchVal, setSearchVal] = useState('') const [showTable, setShowTable] = useState(false) const [tms, setTms] = useState([ moment(moment().add(-1, 'days').format('YYYY-MM-DD 08:00:00')), @@ -109,6 +117,7 @@ const HomePage = ({ showPanels }) => { if (e && e.trim() !== '') { // 设置为空白状态 setShowTable(true); + setSearchVal(e) // 创建一个新的空对象,只保留必要的属性用于显示 setCheckedObj({ key: 'search', @@ -165,7 +174,7 @@ const HomePage = ({ showPanels }) => { // 工程安全监测点 const renderGCaqModal = (record) => { - const row = { ...record, stationCode: record.id } + const row = { ...record, stationCode: record.name } let popType = ''; if (record.type == '渗压站') { @@ -202,8 +211,8 @@ const HomePage = ({ showPanels }) => { }; // 危险区图层 const addLayer = () => { + getGeoJsonData().then((data) => { - debugger var layer = new VectorLayer({ // @ts-ignore name: "ZHZS_WXQ", @@ -268,6 +277,113 @@ const HomePage = ({ showPanels }) => { }); } + const getColor = (val) => { + if (val === null) { + return '#8c8c8c'; + } else if (val < 0.1) { + return '#ffffff'; + } else if (val >= 0.1 && val < 10) { + return 'rgb(167, 240, 143)'; + } else if (val >= 10 && val < 25) { + return 'rgb(64, 215, 255)'; + } else if (val >= 25 && val < 50) { + return 'rgb(32, 143, 238)'; + } else if (val >= 50 && val < 100) { + return 'rgb(85, 86, 255)'; + } else if (val >= 100 && val < 250) { + return 'rgb(191, 90, 252)'; + } else { + return 'rgb(246, 66, 66)'; + } + }; + // 雨量站图层 + const addRainLayer = (arr, tms) => { + var layer = new VectorLayer({ + // @ts-ignore + name: "ZHZS_YQ", + source: new VectorSource(), + style: (feature, zIndex) => { + const drp = feature.values_.data.drp + const stnm = feature.values_.data.stnm + return [new Style({ + image: new Circle({ + radius: 5, + fill: new FillStyle({ color: getColor(drp) }), + stroke: new Stroke({ color: getColor(drp), width: 2 }) + }), + text: new Text({ + text: zIndex < 50 ? `${stnm}` : '', + offsetY: 24, + font: '12px 微软雅黑', + //backgroundFill: new FillStyle({ color: "rgba(255,255,255,0.5)" }), + fill: new FillStyle({ color: "rgba(0,0,0,0.5)" }), + stroke: new Stroke({ color: '#fff', width: 1 }), + overflow: true, + }), + zIndex: drp === 0 ? 0.01 : drp * 10 + })] + }, + zIndex: 200, + }) + + var layerDrp = new VectorLayer({ + // @ts-ignore + name: "ZHZS_YQ_DRP", + visible: true, + source: new VectorSource(), + style: (feature, zIndex) => { + const drp = feature.values_.data.drp + return [new Style({ + text: new Text({ + text: drp === null ? '-' : String(drp), + offsetY: 12, + font: '12px 微软雅黑', + //backgroundFill: new FillStyle({ color: "rgba(255,255,255,0.5)" }), + fill: new FillStyle({ color: "rgba(0,0,0,0.5)" }), + stroke: new Stroke({ color: '#fff', width: 1 }), + overflow: true, + }) + })] + }, + zIndex: 200, + }) + + + + const features = arr.map((item) => { + const point2 = transform([item.lgtd, item.lttd], 'EPSG:4326', 'EPSG:3857'); + const feature = new Feature({ + geometry: new Point(point2), + data: { ...item, myParams: tms, myLayerType: 'drp' } + }); + + return feature + }) + features.forEach(feature => layer.getSource().addFeature(feature)); + features.forEach(feature => layerDrp.getSource().addFeature(feature)); + mapObj && mapObj.addLayer(layer); + mapObj && mapObj.addLayer(layerDrp); + mapObj && mapObj.on('click', function (evt) { + + //console.log("271++++",postmessageData); + + var feature = mapObj && mapObj.forEachFeatureAtPixel(evt.pixel, function (feature) { + return feature; + }); + if (feature) { + const data = feature.values_.data + if (data && data.myLayerType === 'drp') { + dispatch.runtime.setFeaturePop({ + id: data.stcd, + data: { ...data, myParams: tms }, + type: 'drp', + lgtd: data.lgtd, + lttd: data.lttd, + }) + } + } + }); + } const clickItem = (item) => { // 业务规则库 if (item.type == '业务规则库' || item.type == '调度方案库' || item.type == '工程安全知识库') { @@ -281,89 +397,108 @@ const HomePage = ({ showPanels }) => { return; // 添加return避免继续执行 } - // 如果有经纬度信息,则进行处理 - if ((item.lgtd && item.lttd) || item.type == '危险区') { - // 关闭所有已打开的弹窗 - dispatch.runtime.closeFeaturePopAll(); - // 先关闭所有图层 - dispatch.map.setLayerVisible({ - HdswLayer: false, - RealDrpLayer: false, - PicStLayer: false, - ShuiKuLayer: false, - TuRangLayer: false, - GongShuiLayer: false - }); - // 根据类型确定弹窗类型和图层 - let popType = item.type; - let layerToShow = {}; + // 关闭所有已打开的弹窗 + dispatch.runtime.closeFeaturePopAll(); + // 先关闭所有图层 + dispatch.map.setLayerVisible({ + HdswLayer: false, + RealDrpLayer: false, + PicStLayer: false, + ShuiKuLayer: false, + TuRangLayer: false, + GongShuiLayer: false, + AZDLayer: false, + QSYDWLayer: false, + YHJMHLayer: false + }); + // 先清除已存在的同名图层 + mapObj && mapObj.getLayers().getArray().forEach(layer => { + if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1)) { + mapObj.removeLayer(layer); + } + }); + // 根据类型确定弹窗类型和图层 + let popType = item.type; + let layerToShow = {}; - // 对特定类型进行映射和图层设置 - switch (item.type) { - case '水文站': - popType = 'hdsw'; - layerToShow = { HdswLayer: true }; - break; - case 'qxst': - case '气象站': - case '雨量站': - popType = 'drp'; - layerToShow = { RealDrpLayer: true }; - break; - case '视频站': - popType = 'tuxiang'; - layerToShow = { PicStLayer: true }; - break; - case 'shuiku': - case '水库': - popType = 'shuiku'; - layerToShow = { ShuiKuLayer: true }; - break; - case '土壤墒情站': - popType = 'turangshangqing'; - layerToShow = { TuRangLayer: true }; - break; - case '流量站': - popType = 'gongshui'; - layerToShow = { GongShuiLayer: true }; - break; - case '危险区': - popType = 'wxq'; - layerToShow = { AZDLayer: true }; - break; - default: - // 默认不设置特定图层 - break; - } + // 对特定类型进行映射和图层设置 + switch (item.type) { + // case '水文站': + // popType = 'hdsw'; + // layerToShow = { HdswLayer: true }; + // break; + // case '雨量站': + // popType = 'drp'; + // layerToShow = { RealDrpLayer: true }; + // break; + case '视频站': + popType = 'tuxiang'; + layerToShow = { PicStLayer: true }; + break; + case '水位站': + popType = 'shuiku'; + layerToShow = { ShuiKuLayer: true }; + break; + case '土壤墒情站': + popType = 'turangshangqing'; + layerToShow = { TuRangLayer: true }; + break; + case '流量站': + popType = 'gongshui'; + layerToShow = { GongShuiLayer: true }; + break; - // 设置图层可见性 - if (Object.keys(layerToShow).length > 0) { - dispatch.map.setLayerVisible(layerToShow); - } - const record = JSON.parse(item.jsonStr); - if (item.type == '危险区' || item.type == '安置点') { - addLayer() - const wxq = JSON.parse(sessionStorage.getItem('wxq'))?.[record?.adcd] || '' - if (!wxq) { - message.error('暂无经纬度数据') - return - } - const data = wxq.properties - const center = geometryCenter(wxq.geometry); - dispatch.runtime.setCameraTarget({ - center: [center[0], center[1]], - zoom: 18, - pitch: 60 - }) - dispatch.runtime.setFeaturePop({ - id: data.PID, - data: { ...data }, - type: 'wxq', - lgtd: center[0], - lttd: center[1], - }) - return; + case '安置点': + popType = 'anzhidian'; + layerToShow = { AZDLayer: true }; + break; + case '企事业单位': + popType = 'qishiyedanwei'; + layerToShow = { QSYDWLayer: true }; + break; + case '沿河居民点': + popType = 'yanhejuminhu'; + layerToShow = { YHJMHLayer: true }; + break; + default: + // 默认不设置特定图层 + break; + } + + // 设置图层可见性 + if (Object.keys(layerToShow).length > 0) { + dispatch.map.setLayerVisible(layerToShow); + } + const record = JSON.parse(item.jsonStr); + + if (item.type == '危险区') { + addLayer() + const wxq = JSON.parse(sessionStorage.getItem('wxq'))?.[record?.adcd] || '' + if (!wxq) { + message.error('暂无经纬度数据') + return } + const data = wxq.properties + const center = item.type == '危险区' ? geometryCenter(wxq.geometry) : + [record?.lgtd, record?.lttd]; + + + dispatch.runtime.setCameraTarget({ + center: [center[0], center[1]], + zoom: 18, + pitch: 60 + }) + dispatch.runtime.setFeaturePop({ + id: data.PID, + data: { ...data }, + type: 'wxq', + lgtd: center[0], + lttd: center[1], + }) + return; + } + + if (item.type == '安置点' || item.type == '企事业单位' || item.type == '沿河居民点') { // 显示弹窗 dispatch.runtime.setFeaturePop({ type: popType, @@ -372,14 +507,59 @@ const HomePage = ({ showPanels }) => { lttd: item.lttd, id: record.id }); - - // 设置地图视角 - dispatch.runtime.setCameraTarget({ - center: [item.lgtd, item.lttd], - zoom: 15, - pitch: 60 - }); } + + // 雨量站 + if (item.type == '雨量站') { + // 创建近一小时的时间范围 + const tms = [ + moment().add(-1, 'hours').format('YYYY-MM-DD HH:mm:ss'), + moment().format('YYYY-MM-DD HH:mm:ss') + ]; + + // 直接调用httppost2获取数据并添加图层 + const fetchAndAddLayer = async () => { + try { + const { data, code, msg } = await httppost2(apiurl.home.yq, { + "stm": tms[0], + "etm": tms[1] + }); + + if (code !== 200) { + message.error(msg || '请求失败'); + return; + } + + const list = data.map((i) => ({ + id: i.stcd, + ...i, + drp: i.drp + })); + + // 清除已存在的同名图层 + mapObj && mapObj.getLayers().getArray().forEach(layer => { + if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_YQ') > -1)) { + mapObj.removeLayer(layer); + } + }); + // 创建雨量站图层 + addRainLayer(list, tms) + } catch (error) { + console.error('获取雨量站数据失败', error); + } + }; + + fetchAndAddLayer(); + } + + + // 设置地图视角 + dispatch.runtime.setCameraTarget({ + center: [item.lgtd, item.lttd], + zoom: 18, + pitch: 60 + }); + } useEffect(() => { @@ -423,9 +603,18 @@ const HomePage = ({ showPanels }) => { return (
- + setSearchVal(e.target.value)} + />
综合展示
{ + // 清空搜索输入框 + setSearchVal('') dispatch.runtime.closeFeaturePopAll() if (a === undefined) { setCheckedObj({ key: '12', label: '雨情', labelRight: '统计', icon: 'yuqing' }) @@ -470,6 +659,8 @@ const HomePage = ({ showPanels }) => { { item.children.map((item) => { + // 清空搜索输入框 + setSearchVal('') setCheckedObj(item) setShowTable(true) }}> @@ -550,7 +741,7 @@ const HomePage = ({ showPanels }) => { {checkedObj.label === '企事业单位' ? : null} {checkedObj.label === '沿河居民户' ? : null} - {checkedObj.label === '危险区' || checkedObj.label === '安置点' || checkedObj.label === '企事业单位' || checkedObj.label === '沿河居民户' ? : null} + {checkedObj.label === '危险区' || checkedObj.label === '安置点' || checkedObj.label === '企事业单位' || checkedObj.label === '沿河居民户' ? : null}
: null } diff --git a/src/views/Home/setMapStation/drp.js b/src/views/Home/setMapStation/drp.js index e6f99957a..3c17b39df 100644 --- a/src/views/Home/setMapStation/drp.js +++ b/src/views/Home/setMapStation/drp.js @@ -76,7 +76,7 @@ export default function SetDrpStation({tms, setTableData}) { } - const addLayer = (arr,tms)=>{ + const addLayer = (arr, tms) => { var layer = new VectorLayer({ // @ts-ignore name:"ZHZS_YQ", diff --git a/src/views/Home/setMapStation/wxq.js b/src/views/Home/setMapStation/wxq.js index ea94af160..7e68980ae 100644 --- a/src/views/Home/setMapStation/wxq.js +++ b/src/views/Home/setMapStation/wxq.js @@ -59,7 +59,14 @@ export default function SetDrpStation({tms}) { - const addLayer = ()=>{ + const addLayer = () => { + + // 先清除已存在的同名图层 + mapObj && mapObj.getLayers().getArray().forEach(layer => { + if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1)) { + mapObj.removeLayer(layer); + } + }); getGeoJsonData().then((data) => { var layer = new VectorLayer({ // @ts-ignore From bf68ca571e5b27bf2d76a25daaee6dcc70baa415 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Wed, 6 Aug 2025 17:13:27 +0800 Subject: [PATCH 05/13] =?UTF-8?q?feat():=20=E5=AE=8C=E6=88=90=E7=9F=A5?= =?UTF-8?q?=E8=AF=86=E6=A3=80=E7=B4=A2=E5=85=A8=E9=83=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Home/homePanelsLayoutPage/index.js | 32 +++++++++++++++----- src/views/sz/ddfa/form.js | 4 +-- src/views/sz/ywgz/form.js | 4 +-- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/views/Home/homePanelsLayoutPage/index.js b/src/views/Home/homePanelsLayoutPage/index.js index 4a70dc488..1998c6f35 100644 --- a/src/views/Home/homePanelsLayoutPage/index.js +++ b/src/views/Home/homePanelsLayoutPage/index.js @@ -1,4 +1,4 @@ -import React, { useEffect, useState,useRef } from 'react' +import React, { useEffect, useState, useRef } from 'react' import { useLocation } from 'react-router' import { useDispatch, useSelector } from 'react-redux' import { Collapse, DatePicker, Input, Modal, message } from 'antd'; @@ -152,13 +152,19 @@ const HomePage = ({ showPanels }) => { Modal.destroyAll(); // 先销毁可能存在的其他Modal const modal = Modal.confirm({ - title: `${record.name}详情`, + title:
+
{record.name}详情
+
, width: 1000, content: ( - + <> +
+ + + ), icon: null, okButtonProps: { style: { display: 'none' } }, @@ -616,12 +622,18 @@ const HomePage = ({ showPanels }) => { // 清空搜索输入框 setSearchVal('') dispatch.runtime.closeFeaturePopAll() + mapObj && mapObj.getLayers().getArray().forEach(layer => { + if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1||layer.values_.name.indexOf('ZHZS_YQ') > -1)) { + mapObj.removeLayer(layer); + } + }); + dispatch.runtime.setHome() if (a === undefined) { setCheckedObj({ key: '12', label: '雨情', labelRight: '统计', icon: 'yuqing' }) setShowTable(false) } else if (a === '1') { setShowTable(true) - dispatch.runtime.setHome() + // dispatch.runtime.setHome() setCheckedObj({ key: '11', label: '预警', labelRight: '预警', icon: 'yujing' }) } else if (a === '2') { setShowTable(true) @@ -663,6 +675,12 @@ const HomePage = ({ showPanels }) => { setSearchVal('') setCheckedObj(item) setShowTable(true) + mapObj && mapObj.getLayers().getArray().forEach(layer => { + if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1 ||layer.values_.name.indexOf('ZHZS_YQ') > -1)) { + mapObj.removeLayer(layer); + } + }); + dispatch.runtime.setHome() }}> {item.label} diff --git a/src/views/sz/ddfa/form.js b/src/views/sz/ddfa/form.js index 2314912fc..010b1abee 100644 --- a/src/views/sz/ddfa/form.js +++ b/src/views/sz/ddfa/form.js @@ -75,7 +75,7 @@ useEffect(() => { name="type" rules={[{ required: true }]} > -
@@ -95,7 +95,7 @@ useEffect(() => { name="status" rules={[{ required: true }]} > - diff --git a/src/views/sz/ywgz/form.js b/src/views/sz/ywgz/form.js index 1461a9d5c..e6eec7525 100644 --- a/src/views/sz/ywgz/form.js +++ b/src/views/sz/ywgz/form.js @@ -75,7 +75,7 @@ useEffect(() => { name="type" rules={[{ required: true }]} > - @@ -95,7 +95,7 @@ useEffect(() => { name="status" rules={[{ required: true }]} > - From a187c6fec3e4b179e94b85dff2a39600cf2283e7 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Thu, 7 Aug 2025 10:45:42 +0800 Subject: [PATCH 06/13] =?UTF-8?q?fix():=20=E4=BF=AE=E5=A4=8D=E5=9B=BE?= =?UTF-8?q?=E5=B1=82=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Home/MapCtrl/Pops/DuanMian/drpOption.js | 6 +++--- src/views/Home/MapCtrl/Pops/ShenYa/drpOption.js | 6 +++--- src/views/Home/homePanelsLayoutPage/index.js | 8 +++++++- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/views/Home/MapCtrl/Pops/DuanMian/drpOption.js b/src/views/Home/MapCtrl/Pops/DuanMian/drpOption.js index 0bdb86d26..31fbe8d9b 100644 --- a/src/views/Home/MapCtrl/Pops/DuanMian/drpOption.js +++ b/src/views/Home/MapCtrl/Pops/DuanMian/drpOption.js @@ -25,7 +25,7 @@ export default function drpOption(data) { // 显示图例 show: true, // 图例的位置 - data: ["压测管水位", "库水位"], + data: ["测压管水位", "库水位"], }, xAxis: [ { @@ -57,7 +57,7 @@ export default function drpOption(data) { // gridIndex: 1, type: 'value', position: 'left', - name: "压测管水位(m)", + name: "测压管水位(m)", nameTextStyle: { padding: [0, 0, 10, 10], color:'#333333', @@ -128,7 +128,7 @@ export default function drpOption(data) { { // xAxisIndex: 1, yAxisIndex: 0, - name: '压测管水位', + name: '测压管水位', type: 'line', color: "#d6eaec", lineStyle: { diff --git a/src/views/Home/MapCtrl/Pops/ShenYa/drpOption.js b/src/views/Home/MapCtrl/Pops/ShenYa/drpOption.js index c7f062fb4..136e632f1 100644 --- a/src/views/Home/MapCtrl/Pops/ShenYa/drpOption.js +++ b/src/views/Home/MapCtrl/Pops/ShenYa/drpOption.js @@ -41,7 +41,7 @@ export default function drpOption(data,yjData) { // 显示图例 show: true, // 图例的位置 - data: ["压测管水位", "库水位"], + data: ["测压管水位", "库水位"], }, xAxis: [ { @@ -73,7 +73,7 @@ export default function drpOption(data,yjData) { // gridIndex: 1, type: 'value', position: 'left', - name: "压测管水位(m)", + name: "测压管水位(m)", nameTextStyle: { padding: [0, 0, 10, 10], color:'#333333', @@ -144,7 +144,7 @@ export default function drpOption(data,yjData) { { // xAxisIndex: 1, yAxisIndex: 0, - name: '压测管水位', + name: '测压管水位', type: 'line', color: "#d6eaec", lineStyle: { diff --git a/src/views/Home/homePanelsLayoutPage/index.js b/src/views/Home/homePanelsLayoutPage/index.js index 1998c6f35..7b08de6da 100644 --- a/src/views/Home/homePanelsLayoutPage/index.js +++ b/src/views/Home/homePanelsLayoutPage/index.js @@ -23,6 +23,7 @@ import AnZhiDian from './item_anzhidian' import QSYDW from './item_qishiyedanwei' import YHJMH from './item_yanhejuminhu' import SetWxqStation from '../setMapStation/wxq' +import SetDrpStation from '../setMapStation/drp' import Bzt from '../../gcaqjc/bzt2' import ShenLiu from '../MapCtrl/Pops/ShenLiu'; import ShenYa from '../MapCtrl/Pops/ShenYa'; @@ -419,10 +420,13 @@ const HomePage = ({ showPanels }) => { }); // 先清除已存在的同名图层 mapObj && mapObj.getLayers().getArray().forEach(layer => { - if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1)) { + if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1 || + layer.values_.name.indexOf('ZHZS_YQ') > -1 || + layer.values_.name.indexOf('ZHZS_YQ_DRP') > -1)) { mapObj.removeLayer(layer); } }); + debugger // 根据类型确定弹窗类型和图层 let popType = item.type; let layerToShow = {}; @@ -760,6 +764,8 @@ const HomePage = ({ showPanels }) => { {checkedObj.label === '沿河居民户' ? : null} {checkedObj.label === '危险区' || checkedObj.label === '安置点' || checkedObj.label === '企事业单位' || checkedObj.label === '沿河居民户' ? : null} + {checkedObj.label === '搜索结果' ? {}} /> : null} + : null } From a2b0d00cfbc853169ffff2853720bdda7c87e201 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Thu, 7 Aug 2025 10:58:46 +0800 Subject: [PATCH 07/13] =?UTF-8?q?fix():=20=E7=BB=A7=E7=BB=AD=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=9B=BE=E5=B1=82=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Home/homePanelsLayoutPage/index.js | 30 ++++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/views/Home/homePanelsLayoutPage/index.js b/src/views/Home/homePanelsLayoutPage/index.js index 7b08de6da..12de0025a 100644 --- a/src/views/Home/homePanelsLayoutPage/index.js +++ b/src/views/Home/homePanelsLayoutPage/index.js @@ -421,12 +421,12 @@ const HomePage = ({ showPanels }) => { // 先清除已存在的同名图层 mapObj && mapObj.getLayers().getArray().forEach(layer => { if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1 || - layer.values_.name.indexOf('ZHZS_YQ') > -1 || - layer.values_.name.indexOf('ZHZS_YQ_DRP') > -1)) { - mapObj.removeLayer(layer); + layer.values_.name.indexOf('ZHZS_YQ') > -1 || + layer.values_.name.indexOf('ZHZS_YQ_DRP') > -1)) { + layer.getSource().clear() } }); - debugger + // 根据类型确定弹窗类型和图层 let popType = item.type; let layerToShow = {}; @@ -547,11 +547,11 @@ const HomePage = ({ showPanels }) => { })); // 清除已存在的同名图层 - mapObj && mapObj.getLayers().getArray().forEach(layer => { - if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_YQ') > -1)) { - mapObj.removeLayer(layer); - } - }); + // mapObj && mapObj.getLayers().getArray().forEach(layer => { + // if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_YQ') > -1)) { + // mapObj.removeLayer(layer); + // } + // }); // 创建雨量站图层 addRainLayer(list, tms) } catch (error) { @@ -627,8 +627,8 @@ const HomePage = ({ showPanels }) => { setSearchVal('') dispatch.runtime.closeFeaturePopAll() mapObj && mapObj.getLayers().getArray().forEach(layer => { - if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1||layer.values_.name.indexOf('ZHZS_YQ') > -1)) { - mapObj.removeLayer(layer); + if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1 || layer.values_.name.indexOf('ZHZS_YQ') > -1 || layer.values_.name.indexOf('ZHZS_YQ_DRP') > -1)) { + layer.getSource().clear() } }); dispatch.runtime.setHome() @@ -680,8 +680,8 @@ const HomePage = ({ showPanels }) => { setCheckedObj(item) setShowTable(true) mapObj && mapObj.getLayers().getArray().forEach(layer => { - if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1 ||layer.values_.name.indexOf('ZHZS_YQ') > -1)) { - mapObj.removeLayer(layer); + if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1 || layer.values_.name.indexOf('ZHZS_YQ') > -1 || layer.values_.name.indexOf('ZHZS_YQ_DRP') > -1)) { + layer.getSource().clear() } }); dispatch.runtime.setHome() @@ -764,8 +764,8 @@ const HomePage = ({ showPanels }) => { {checkedObj.label === '沿河居民户' ? : null} {checkedObj.label === '危险区' || checkedObj.label === '安置点' || checkedObj.label === '企事业单位' || checkedObj.label === '沿河居民户' ? : null} - {checkedObj.label === '搜索结果' ? {}} /> : null} - + {checkedObj.label === '搜索结果' ? { }} /> : null} + : null } From 77e9dede4575222327e1798c9e81e37bef609421 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Fri, 8 Aug 2025 15:05:05 +0800 Subject: [PATCH 08/13] =?UTF-8?q?feat():=20=E7=9F=A5=E8=AF=86=E5=BA=93?= =?UTF-8?q?=E9=99=84=E4=BB=B6=E6=96=B0=E5=A2=9Eloading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Form/FileUpload/index.js | 6 ++++- src/views/Home/MapCtrl/Markers/PicStMarker.js | 27 ++++++++++++++++++- src/views/Home/homePanelsLayoutPage/index.js | 4 ++- src/views/sz/ddfa/form.js | 15 ++++++++--- src/views/sz/khzbgl/form.js | 2 +- src/views/sz/khzbgl/toolbar.js | 3 +++ src/views/sz/ywgz/form.js | 2 +- src/views/sz/ywgz/index.js | 4 +-- 8 files changed, 52 insertions(+), 11 deletions(-) diff --git a/src/components/Form/FileUpload/index.js b/src/components/Form/FileUpload/index.js index 6977a6216..757f1e2bc 100644 --- a/src/components/Form/FileUpload/index.js +++ b/src/components/Form/FileUpload/index.js @@ -10,7 +10,7 @@ const { RangePicker } = DatePicker const { Dragger } = Upload; const url = "http://223.75.53.141:9100/gs-tsg" -const FileUpload = ({mode, fileNum=1, value, onChange,uploadUrl}) => { +const FileUpload = ({mode, fileNum=1, value, onChange,uploadUrl,onLoadingChange}) => { const [fileList, setFileList] = useState([]) //上传文件列表 const [loading, setLoading] = useState(false) console.log(1111111,fileList); @@ -19,13 +19,17 @@ const FileUpload = ({mode, fileNum=1, value, onChange,uploadUrl}) => { const fileChange = (info) => { if (info.file.status === "done") { setLoading(false); + if(onLoadingChange) onLoadingChange(false); } + if (info.file.status === "uploading") { setLoading(true); + if(onLoadingChange) onLoadingChange(true); } if (info.file.status === "error") { message.error("文件上传失败") setLoading(false); + if(onLoadingChange) onLoadingChange(false); } setFileList(info.fileList) } diff --git a/src/views/Home/MapCtrl/Markers/PicStMarker.js b/src/views/Home/MapCtrl/Markers/PicStMarker.js index 5b6d84468..d24d28bba 100644 --- a/src/views/Home/MapCtrl/Markers/PicStMarker.js +++ b/src/views/Home/MapCtrl/Markers/PicStMarker.js @@ -1,6 +1,7 @@ import React, { useEffect } from 'react'; import { Table, Tabs,Modal,message,Tooltip } from 'antd'; import { zindexmarker } from '../zindex'; +import {useDispatch, useSelector} from "react-redux"; const { css, @@ -35,7 +36,7 @@ const dist2 = 8000 * 8000; function PicStMarker({ data, dispatch, setting, zoom, distSq }) { - +const getLayerVisible = useSelector((s) => s.map.layerVisible) const highlight = setting; let zindexOffset = 1; @@ -171,6 +172,30 @@ function PicStMarker({ data, dispatch, setting, zoom, distSq }) { // // ) } + + { + (zoom > 12 || distSq < dist2 || highlight) && ( +
+ {data?.name} +
+ ) + } ) } diff --git a/src/views/Home/homePanelsLayoutPage/index.js b/src/views/Home/homePanelsLayoutPage/index.js index 12de0025a..579f6a948 100644 --- a/src/views/Home/homePanelsLayoutPage/index.js +++ b/src/views/Home/homePanelsLayoutPage/index.js @@ -104,8 +104,9 @@ const HomePage = ({ showPanels }) => { const searchInputRef = useRef(null); const dispatch = useDispatch(); const [checkedObj, setCheckedObj] = useState({}) - const [searchVal, setSearchVal] = useState('') + const [searchVal, setSearchVal] = useState() const [showTable, setShowTable] = useState(false) + const [wxqData, setWxqData] = useState({}) const [tms, setTms] = useState([ moment(moment().add(-1, 'days').format('YYYY-MM-DD 08:00:00')), moment(moment().format('YYYY-MM-DD 08:00:00')), @@ -607,6 +608,7 @@ const HomePage = ({ showPanels }) => { useEffect(() => { setCheckedObj({ key: '12', label: '雨情', labelRight: '统计', icon: 'yuqing' }) + getGeoJsonData() }, []) diff --git a/src/views/sz/ddfa/form.js b/src/views/sz/ddfa/form.js index 010b1abee..49e611656 100644 --- a/src/views/sz/ddfa/form.js +++ b/src/views/sz/ddfa/form.js @@ -26,7 +26,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { const [form] = Form.useForm(); const [loading, setLoading] = useState(false) const [filesParams, setFilesParams] = useState([]) - + const [fileUploading, setFileUploading] = useState(false) // 新增文件上传状态 const onfinish = (values) => { const userId = localStorage.getItem("userId"); const userName = localStorage.getItem("userName"); @@ -120,7 +120,9 @@ useEffect(() => { { setFilesParams(v); }} + onLoadingChange={(isLoading) => setFileUploading(isLoading)} /> @@ -129,8 +131,13 @@ useEffect(() => { mode === 'view' ? null : ( <> - diff --git a/src/views/sz/khzbgl/form.js b/src/views/sz/khzbgl/form.js index 3b0f9cb08..a645f6174 100644 --- a/src/views/sz/khzbgl/form.js +++ b/src/views/sz/khzbgl/form.js @@ -103,7 +103,7 @@ useEffect(() => { > { setFilesParams(v)}} value={filesParams} diff --git a/src/views/sz/khzbgl/toolbar.js b/src/views/sz/khzbgl/toolbar.js index d5ff56d26..591e40ccd 100644 --- a/src/views/sz/khzbgl/toolbar.js +++ b/src/views/sz/khzbgl/toolbar.js @@ -34,6 +34,9 @@ const ToolBar = ({ setSearchVal, onSave, storeData, role }) => { + + + { (onSave) ? diff --git a/src/views/sz/ywgz/form.js b/src/views/sz/ywgz/form.js index e6eec7525..9b1e1c998 100644 --- a/src/views/sz/ywgz/form.js +++ b/src/views/sz/ywgz/form.js @@ -119,7 +119,7 @@ useEffect(() => { > { setFilesParams(v);console.log("vvvv",v); }} diff --git a/src/views/sz/ywgz/index.js b/src/views/sz/ywgz/index.js index cde18f795..5a8db4d9e 100644 --- a/src/views/sz/ywgz/index.js +++ b/src/views/sz/ywgz/index.js @@ -21,8 +21,8 @@ const Page = () => { const [searchVal, setSearchVal] = useState(false) const columns = [ { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" }, - { title: '方案名称', key: 'name', dataIndex: 'name', ellipsis: true }, - { title: '调度类型', key: 'type', dataIndex: 'type',render:(v)=><>{obj[v]}}, + { title: '规则名称', key: 'name', dataIndex: 'name', ellipsis: true }, + { title: '规则类型', key: 'type', dataIndex: 'type',render:(v)=><>{obj[v]}}, { title: '简介', key: 'content', dataIndex: 'content'}, { title: '编制时间', key: 'tm', dataIndex: 'tm'}, { title: '附件数', key: 'fileCount', dataIndex: 'fileCount'}, From 46df02e1c531b889324d74eb297366bfa1361ef6 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Mon, 1 Sep 2025 17:55:23 +0800 Subject: [PATCH 09/13] =?UTF-8?q?feat():=E6=B8=97=E6=B5=81=E3=80=81?= =?UTF-8?q?=E6=B8=97=E5=8E=8B=E3=80=81=E4=BD=8D=E7=A7=BB=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + src/service/apiurl.js | 4 +- src/views/gcaqjc/sjtjcx/ndsltjb/index.js | 12 +-- src/views/gcaqjc/sjtjcx/ndwytjb/index.js | 22 ++--- src/views/gcaqjc/sjtjcx/ndwytjb/toolbar.js | 8 +- src/views/gcaqjc/sjtjcx/sjlr/sy/form.js | 100 +++++++-------------- src/views/gcaqjc/sjtjcx/sjlr/sy/index.js | 20 +++-- src/views/gcaqjc/sjtjcx/sjlr/sy/toolbar.js | 2 +- src/views/gcaqjc/sjtjcx/sjlr/wy/form.js | 87 +++++++++++------- src/views/gcaqjc/sjtjcx/sjlr/wy/index.js | 20 +++-- src/views/gcaqjc/sjtjcx/sjlr/wy/toolbar.js | 2 +- src/views/gcaqjc/sjtjcx/sljc/index.js | 15 ++-- src/views/gcaqjc/sjtjcx/syjc/index.js | 18 ++-- src/views/gcaqjc/sjtjcx/syjc/toolbar.js | 8 +- src/views/gcaqjc/sjtjcx/wyjc/index.js | 13 +-- src/views/gcaqjc/sjtjcx/wyjc/toolbar.js | 4 +- src/views/rcgl/byfz/bypc/index.js | 18 ++-- src/views/rcgl/byfz/bypc/toolbar.js | 4 +- 18 files changed, 179 insertions(+), 179 deletions(-) diff --git a/.gitignore b/.gitignore index 34bd26a1b..e17b975ff 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ # production /build +build.zip # misc .DS_Store diff --git a/src/service/apiurl.js b/src/service/apiurl.js index ccbfcefaa..7d8558ec7 100644 --- a/src/service/apiurl.js +++ b/src/service/apiurl.js @@ -9,6 +9,7 @@ const baseFileView = "http://223.75.53.141:9100/gs-tsg"//文件回显地址 const service_fxdd = '/gunshiApp/tsg' const service_xyt = '/gunshiApp/tsg'//登陆先用小玉潭 const service_shzh = '/shzh' +const baseTest = "http://223.75.53.141:81/" const apiurl = { zsk: { ddfa: { @@ -565,7 +566,8 @@ const apiurl = { srcData: service_fxdd + '/attCctvBase/preview/', videoBystcd: service_fxdd + '/stbprp/cctv/listByStcd/', videoList:service_fxdd + '/attCctvBase/list', - ysyToken:service_fxdd + '/ysy/getAccessToken' + ysyToken: service_fxdd + '/ysy/getAccessToken', + preview:baseTest + 'isc/liveAddressLimited' }, //基本情况 jbqk: { diff --git a/src/views/gcaqjc/sjtjcx/ndsltjb/index.js b/src/views/gcaqjc/sjtjcx/ndsltjb/index.js index 138a02459..edb40a265 100644 --- a/src/views/gcaqjc/sjtjcx/ndsltjb/index.js +++ b/src/views/gcaqjc/sjtjcx/ndsltjb/index.js @@ -49,9 +49,9 @@ const Page = () => { width: 100, align: "center", children: trData?.map(item => ({ - title: item.stationCode, - key: item.stationCode, - dataIndex: item.stationCode, + title: item.mpcd, + key: item.mpcd, + dataIndex: item.mpcd, width: 100, align: "center", render: (rec, record) => {rec?? "-"} @@ -106,7 +106,7 @@ const Page = () => { const exportExcel = () => { let params = { ...searchVal, - stationCodes: trData.map(s => s.stationCode), + stationCodes: trData.map(s => s.mpcd), type:2, id:1 } @@ -126,7 +126,7 @@ const Page = () => { if (trData && trData.length > 0) { const params = { ...searchVal, - stationCodes: trData.map(s => s.stationCode), + stationCodes: trData.map(s => s.mpcd), type:2 }; getTableData(params) @@ -138,7 +138,7 @@ const Page = () => { if (trData && trData?.length > 0) { let params = { ...searchVal, - stationCodes:trData.map(s => s.stationCode), + stationCodes:trData.map(s => s.mpcd), type:2 } getTable2Data(params) diff --git a/src/views/gcaqjc/sjtjcx/ndwytjb/index.js b/src/views/gcaqjc/sjtjcx/ndwytjb/index.js index c08b1dd8c..3b91bfb51 100644 --- a/src/views/gcaqjc/sjtjcx/ndwytjb/index.js +++ b/src/views/gcaqjc/sjtjcx/ndwytjb/index.js @@ -16,7 +16,7 @@ const Page = () => { const [table2Data, setTable2Data] = useState([]) const [loading, setLoading] = useState(false) const [wyObj, setWyObj] = useState(false) - const wyList = ["X","Y","H"] + const wyList = ["e","n","u"] const columns1 = [ { title: '序号', key: 'inx', dataIndex: 'inx', width: 150, align:"center"}, ]; @@ -55,13 +55,13 @@ const Page = () => { if (trData.length > 0 && wyObj) { let dm = trData?.map(item => ( { - title: item.stationCode, + title: item.cd, width: 100, align: "center", children: wyList?.map(s => ({ title: s, - key: `${s}_${item.stationCode}`, - dataIndex: `${s}_${item.stationCode}`, + key: `${s}_${item.cd}`, + dataIndex: `${s}_${item.cd}`, width: 100, align: "center", render: (rec, record) => {rec?? "-"} @@ -83,10 +83,10 @@ const Page = () => { let newArr = []; let newData = res.data?.map((s, i) => { newArr.push(s.list?.map((c, i) => ({ - [c.stationCode]: c.value || '-', - [`X_${c.stationCode}`]:c.x , - [`Y_${c.stationCode}`]:c.y , - [`H_${c.stationCode}`]:c.h , + [c.cd]: c.value || '-', + [`e_${c.cd}`]:c.de , + [`n_${c.cd}`]:c.dn , + [`u_${c.cd}`]:c.du , tm: c.tm, }))) return { @@ -125,7 +125,7 @@ const Page = () => { const exportExcel = () => { let params = { ...searchVal, - stationCodes: [trData.find(s => s.stationCode == wyObj.wy)?.stationCode], + stationCodes: [trData.find(s => s.cd == wyObj.wy)?.cd], type:2, id:1 } @@ -156,7 +156,7 @@ const Page = () => { if (trData && trData.length > 0) { const params = { ...searchVal, - stationCodes: trData.map(s => s.stationCode), + stationCodes: trData.map(s => s.cd), }; getTableData(params) @@ -167,7 +167,7 @@ const Page = () => { if (trData && trData?.length > 0) { let params = { ...searchVal, - stationCodes:[trData.find(s => s.stationCode == wyObj.wy)?.stationCode], + stationCodes:[trData.find(s => s.cd == wyObj.wy)?.cd], } getTable2Data(params) } diff --git a/src/views/gcaqjc/sjtjcx/ndwytjb/toolbar.js b/src/views/gcaqjc/sjtjcx/ndwytjb/toolbar.js index 1cb071455..5bbeec8db 100644 --- a/src/views/gcaqjc/sjtjcx/ndwytjb/toolbar.js +++ b/src/views/gcaqjc/sjtjcx/ndwytjb/toolbar.js @@ -31,15 +31,15 @@ const ToolBar = ({ setSearchVal, setDmName, exportFile, role,list,setWyObj }) => useEffect(() => { let time = moment() form.setFieldValue("tm", time) - form.setFieldValue("wy","WY-01") + form.setFieldValue("wy","07") setSearchVal({ year: moment().format("YYYY")}) - setWyObj({ wy: "WY-01"}) + setWyObj({ wy: "07"}) }, []) useEffect(() => { if (list.length > 0) { const newList = list.map(item => ({ - label: item.stationCode, - value:item.stationCode + label: item.cd, + value:item.cd })) setSource(newList) } diff --git a/src/views/gcaqjc/sjtjcx/sjlr/sy/form.js b/src/views/gcaqjc/sjtjcx/sjlr/sy/form.js index 296a9f2c7..8cb5eed83 100644 --- a/src/views/gcaqjc/sjtjcx/sjlr/sy/form.js +++ b/src/views/gcaqjc/sjtjcx/sjlr/sy/form.js @@ -37,7 +37,7 @@ const ModalForm = ({ mode, record,onEdit,onSave,onSimilarSave }) => { const getStationCode = async () => { try { const res = await httppost2(apiurl.gcaqjc.gcaqyj.yjgzpz.list) - setCodeList(res.data.map(s=>({label:s.stationCode,value:s.stationCode,profileCode:s.profileCode}))); + setCodeList(res.data); } catch (error) { console.log(error); } @@ -58,94 +58,60 @@ const ModalForm = ({ mode, record,onEdit,onSave,onSimilarSave }) => { initialValues={record} > -
+ dateString} - getValueProps={(value) => ({ value: value ? moment(value) : undefined })} - rules={[{required: true}]} - > - - - - - - { - form.setFieldValue('stationCode',null) - setDmCode(v) - }} - /> + - - - - + + + + + + dmCode?o.profileCode===dmCode:true)} + options={codeList.map(o => ({ label: o.mpcd, value: o.mpcd }))} /> dateString} + getValueProps={(value) => ({ value: value ? moment(value) : undefined })} > - + - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/src/views/gcaqjc/sjtjcx/sjlr/sy/index.js b/src/views/gcaqjc/sjtjcx/sjlr/sy/index.js index 4724924b8..dda8f6784 100644 --- a/src/views/gcaqjc/sjtjcx/sjlr/sy/index.js +++ b/src/views/gcaqjc/sjtjcx/sjlr/sy/index.js @@ -18,14 +18,16 @@ const Page = () => { const refModal = useRef(); const [searchVal, setSearchVal] = useState(false) const columns = [ - { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align:"center" }, - { title: '监测时间', key: 'tm', dataIndex: 'tm', align:"center", }, - { title: '监测断面', key: 'profileName', dataIndex: 'profileName', align:"center", }, - { title: '测点编号', key: 'stationCode', dataIndex: 'stationCode', align:"center", }, - { title: '测压管水位(m)', key: 'value', dataIndex: 'value', align:"center", }, - { title: '渗压(KPa)', key: 'press', dataIndex: 'press', align:"center", }, - { title: '振弦(Hz)', key: 'vib', dataIndex: 'vib', align:"center", }, - { title: '温度(℃)', key: 'temp', dataIndex: 'temp', align:"center", }, + { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align:"center" }, + { title: '水库代码', key: 'rscd', dataIndex: 'rscd', width: 200, ellipsis: true, align:"center" }, + { title: '水工建筑物编号', key: 'hycncd', dataIndex: 'hycncd', width: 200, align:"center"}, + { title: '测点编号', key: 'mpcd', dataIndex: 'mpcd', width: 200, align:"center"}, + { title: '测量时间', key: 'mstm', dataIndex: 'mstm', width: 200, align:"center"}, + { title: '温度(°C)', key: 'tm', dataIndex: 'tm', width: 250, ellipsis: true,align:"center", }, + { + title: '渗流压力水位(m)', key: 'spprwl', dataIndex: 'spprwl', width: 200, align:"center", + }, + { title: '更新时间', key: 'updateTm', dataIndex: 'updateTm', width: 200, ellipsis: true,align:"center", }, { title: '操作', key: 'operation', width: 240, fixed: 'right',align: 'center', render: (value, row, index) => ( @@ -48,7 +50,7 @@ const Page = () => { } else if (type === 'view') { refModal.current.showView(params); } else if (type === 'del') { - const url = apiurl.gcaqjc.sjtjcx.sjlr.syjc.del + params.stationCode+'/'+params.tm + const url = apiurl.gcaqjc.sjtjcx.sjlr.syjc.del + params.mpcd+'/'+params.mstm refModal.current.onDeleteGet(url); } } diff --git a/src/views/gcaqjc/sjtjcx/sjlr/sy/toolbar.js b/src/views/gcaqjc/sjtjcx/sjlr/sy/toolbar.js index 744a24560..eabb5c798 100644 --- a/src/views/gcaqjc/sjtjcx/sjlr/sy/toolbar.js +++ b/src/views/gcaqjc/sjtjcx/sjlr/sy/toolbar.js @@ -51,7 +51,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => { const getStationCode = async () => { try { const res = await httppost2(apiurl.gcaqjc.gcaqyj.yjgzpz.list) - setCodeList(res.data.map(s=>({label:s.stationCode,value:s.stationCode,profileCode:s.profileCode}))); + setCodeList(res.data.map(s=>({label:s.mpcd,value:s.mpcd,profileCode:s.mpcd}))); } catch (error) { console.log(error); } diff --git a/src/views/gcaqjc/sjtjcx/sjlr/wy/form.js b/src/views/gcaqjc/sjtjcx/sjlr/wy/form.js index 80a716f76..91198633b 100644 --- a/src/views/gcaqjc/sjtjcx/sjlr/wy/form.js +++ b/src/views/gcaqjc/sjtjcx/sjlr/wy/form.js @@ -14,7 +14,6 @@ const ModalForm = ({ mode, record,onEdit,onSave,onSimilarSave }) => { const [dmCode,setDmCode] = useState('') const onFinish = (values) => { - debugger if (mode === 'edit') { onEdit(apiurl.gcaqjc.sjtjcx.sjlr.wyjc.edit,{...record,...values}) } @@ -38,7 +37,7 @@ const ModalForm = ({ mode, record,onEdit,onSave,onSimilarSave }) => { const getStationCode = async () => { try { const res = await httppost2(apiurl.gcaqjc.sjtjcx.wycx.list) - setCodeList(res.data.map(s=>({label:s.stationCode,value:s.stationCode,profileCode:s.profileCode}))); + setCodeList(res.data); } catch (error) { console.log(error); } @@ -58,6 +57,55 @@ const ModalForm = ({ mode, record,onEdit,onSave,onSimilarSave }) => { onFinish={onFinish} initialValues={record} > + + ({label:s.resCd,value:s.resCd}))} + /> + + + ({label:s.cd,value:s.cd}))} + /> + + + + + + + + + + + + + { getValueProps={(value) => ({ value: value ? moment(value) : undefined })} rules={[{required: true}]} > - - - - - - - - - - - - - + + + { mode==='view'?null:( <> diff --git a/src/views/gcaqjc/sjtjcx/sjlr/wy/index.js b/src/views/gcaqjc/sjtjcx/sjlr/wy/index.js index a3ee0d491..70f2e5176 100644 --- a/src/views/gcaqjc/sjtjcx/sjlr/wy/index.js +++ b/src/views/gcaqjc/sjtjcx/sjlr/wy/index.js @@ -18,12 +18,18 @@ const Page = () => { const refModal = useRef(); const [searchVal, setSearchVal] = useState(false) const columns = [ - { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align:"center" }, - { title: '监测时间', key: 'tm', dataIndex: 'tm', align:"center", }, - { title: '测点编号', key: 'stationCode', dataIndex: 'stationCode', align:"center", }, - { title: 'X方向表面位移(mm)', key: 'x', dataIndex: 'x', align:"center", }, - { title: 'Y方向表面位移(mm)', key: 'y', dataIndex: 'y', align:"center", }, - { title: 'H方向表面位移(mm)', key: 'h', dataIndex: 'h', align:"center", }, + { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align:"center" }, + { title: '水库编码设备编码', key: 'resCd', dataIndex: 'resCd', width: 200, ellipsis: true, align:"center" }, + { title: '测点编号', key: 'cd', dataIndex: 'cd', width: 200, align:"center"}, + { + title: 'e方向变形值(mm)', key: 'de', dataIndex: 'de', width: 200, align:"center", + }, + { title: 'n方向变形值(mm)', key: 'dn', dataIndex: 'dn', width: 200, ellipsis: true,align:"center", }, + + { title: 'u方向变形值(mm)', key: 'du', dataIndex: 'du', width: 200, ellipsis: true, align: "center", }, + { title: '站点高程', key: 'alt', dataIndex: 'alt', width: 200, align:"center"}, + { title: '监测时间', key: 'tm', dataIndex: 'tm', width: 200, align:"center"}, + { title: '更新时间', key: 'updateTm', dataIndex: 'updateTm', width: 200, align:"center"}, { title: '操作', key: 'operation', width: 240, fixed: 'right',align: 'center', render: (value, row, index) => ( @@ -46,7 +52,7 @@ const Page = () => { } else if (type === 'view') { refModal.current.showView(params); } else if (type === 'del') { - const url = apiurl.gcaqjc.sjtjcx.sjlr.wyjc.del + params.stationCode+'/'+params.tm + const url = apiurl.gcaqjc.sjtjcx.sjlr.wyjc.del + params.cd+'/'+params.tm refModal.current.onDeleteGet(url); } } diff --git a/src/views/gcaqjc/sjtjcx/sjlr/wy/toolbar.js b/src/views/gcaqjc/sjtjcx/sjlr/wy/toolbar.js index 48c9a40cb..9116f4aaf 100644 --- a/src/views/gcaqjc/sjtjcx/sjlr/wy/toolbar.js +++ b/src/views/gcaqjc/sjtjcx/sjlr/wy/toolbar.js @@ -51,7 +51,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => { const getStationCode = async () => { try { const res = await httppost2(apiurl.gcaqjc.sjtjcx.wycx.list) - setCodeList(res.data.map(s=>({label:s.stationCode,value:s.stationCode}))); + setCodeList(res.data.map(s=>({label:s.cd,value:s.cd}))); } catch (error) { console.log(error); } diff --git a/src/views/gcaqjc/sjtjcx/sljc/index.js b/src/views/gcaqjc/sjtjcx/sljc/index.js index d335f8ab9..a2860e6ca 100644 --- a/src/views/gcaqjc/sjtjcx/sljc/index.js +++ b/src/views/gcaqjc/sjtjcx/sljc/index.js @@ -14,14 +14,17 @@ const Page = () => { const [searchVal, setSearchVal] = useState(false) const columns = [ { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align:"center" }, - { title: '上报时间', key: 'tm', dataIndex: 'tm', width: 200, ellipsis: true, align:"center" }, - { title: '测点编号', key: 'stationCode', dataIndex: 'stationCode', width: 200, align:"center"}, + { title: '水库代码', key: 'rscd', dataIndex: 'rscd', width: 200, ellipsis: true, align:"center" }, + { title: '水工建筑物编号', key: 'hycncd', dataIndex: 'hycncd', width: 200, align:"center"}, + { title: '测点编号', key: 'mpcd', dataIndex: 'mpcd', width: 200, align:"center"}, + { title: '测量时间', key: 'mstm', dataIndex: 'mstm', width: 200, align:"center"}, + { title: '温度(°C)', key: 'tm', dataIndex: 'tm', width: 250, ellipsis: true,align:"center", }, + { title: '渗流量(l/s)', key: 'spqn', dataIndex: 'spqn', width: 250, ellipsis: true,align:"center", }, { - title: '通道号', key: 'chan', dataIndex: 'chan', width: 200, align:"center", + title: '标准水温渗流量(l/s)', key: 'stspqn', dataIndex: 'stspqn', width: 200, align:"center", }, - { title: '水深(mm)', key: 'l', dataIndex: 'l', width: 200, ellipsis: true,align:"center", }, - - { title: '流量(L/s)', key: 'q', dataIndex: 'q', width: 250, ellipsis: true,align:"center", }, + { title: '创建时间', key: 'createTime', dataIndex: 'createTime', width: 200, ellipsis: true,align:"center" }, + { title: '更新时间', key: 'updateTm', dataIndex: 'updateTm', width: 200, ellipsis: true,align:"center" }, ]; diff --git a/src/views/gcaqjc/sjtjcx/syjc/index.js b/src/views/gcaqjc/sjtjcx/syjc/index.js index d20b7466e..3a3f3c123 100644 --- a/src/views/gcaqjc/sjtjcx/syjc/index.js +++ b/src/views/gcaqjc/sjtjcx/syjc/index.js @@ -15,17 +15,15 @@ const Page = () => { const [searchVal, setSearchVal] = useState(false) const columns = [ { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align:"center" }, - { title: '上报时间', key: 'tm', dataIndex: 'tm', width: 200, ellipsis: true, align:"center" }, - { title: '监测断面', key: 'profileName', dataIndex: 'profileName', width: 200, ellipsis: true, align:"center" }, - { title: '测点编号', key: 'stationCode', dataIndex: 'stationCode', width: 200, align:"center"}, + { title: '水库代码', key: 'rscd', dataIndex: 'rscd', width: 200, ellipsis: true, align:"center" }, + { title: '水工建筑物编号', key: 'hycncd', dataIndex: 'hycncd', width: 200, align:"center"}, + { title: '测点编号', key: 'mpcd', dataIndex: 'mpcd', width: 200, align:"center"}, + { title: '测量时间', key: 'mstm', dataIndex: 'mstm', width: 200, align:"center"}, + { title: '温度(°C)', key: 'tm', dataIndex: 'tm', width: 250, ellipsis: true,align:"center", }, { - title: '通道号', key: 'chan', dataIndex: 'chan', width: 200, align:"center", + title: '渗流压力水位(m)', key: 'spprwl', dataIndex: 'spprwl', width: 200, align:"center", }, - { title: '测压管水位(m)', key: 'value', dataIndex: 'value', width: 200, ellipsis: true,align:"center", }, - - { title: '渗压(KPa)', key: 'press', dataIndex: 'press', width: 200, ellipsis: true,align:"center", }, - { title: '振弦(Hz)', key: 'vib', dataIndex: 'vib', width: 250, ellipsis: true,align:"center", }, - { title: '温度(°C)', key: 'temp', dataIndex: 'temp', width: 250, ellipsis: true,align:"center", }, + { title: '更新时间', key: 'updateTm', dataIndex: 'updateTm', width: 200, ellipsis: true,align:"center", }, ]; @@ -64,7 +62,7 @@ const Page = () => { role={role} /> -
+
diff --git a/src/views/gcaqjc/sjtjcx/syjc/toolbar.js b/src/views/gcaqjc/sjtjcx/syjc/toolbar.js index 5961f2336..789b281c4 100644 --- a/src/views/gcaqjc/sjtjcx/syjc/toolbar.js +++ b/src/views/gcaqjc/sjtjcx/syjc/toolbar.js @@ -50,7 +50,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => { const getStationCode = async () => { try { const res = await httppost2(apiurl.gcaqjc.gcaqyj.yjgzpz.list) - setCodeList(res.data.map(s=>({label:s.stationCode,value:s.stationCode,profileCode:s.profileCode}))); + setCodeList(res.data.map(s=>({label:s.mpcd,value:s.mpcd,profileCode:s.mpcd}))); } catch (error) { console.log(error); } @@ -126,18 +126,18 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => { options={optionsType} /> - + { - form.setFieldValue('stationCode',null) + form.setFieldValue('mpcd',null) setDmCode(v) }} /> - + { const [searchVal, setSearchVal] = useState(false) const columns = [ { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align:"center" }, - { title: '监测时间', key: 'tm', dataIndex: 'tm', width: 200, ellipsis: true, align:"center" }, - { title: '测点编号', key: 'stationCode', dataIndex: 'stationCode', width: 200, align:"center"}, + { title: '水库编码设备编码', key: 'resCd', dataIndex: 'resCd', width: 200, ellipsis: true, align:"center" }, + { title: '测点编号', key: 'cd', dataIndex: 'cd', width: 200, align:"center"}, { - title: 'X方向表面位移(mm)', key: 'x', dataIndex: 'x', width: 200, align:"center", + title: 'e方向变形值(mm)', key: 'de', dataIndex: 'de', width: 200, align:"center", }, - { title: 'Y方向表面位移(mm)', key: 'y', dataIndex: 'y', width: 200, ellipsis: true,align:"center", }, + { title: 'n方向变形值(mm)', key: 'dn', dataIndex: 'dn', width: 200, ellipsis: true,align:"center", }, - { title: 'H方向表面位移(mm)', key: 'h', dataIndex: 'h', width: 200, ellipsis: true,align:"center", }, + { title: 'u方向变形值(mm)', key: 'du', dataIndex: 'du', width: 200, ellipsis: true, align: "center", }, + { title: '站点高程', key: 'alt', dataIndex: 'alt', width: 200, align:"center"}, + { title: '监测时间', key: 'tm', dataIndex: 'tm', width: 200, align:"center"}, + { title: '更新时间', key: 'updateTm', dataIndex: 'updateTm', width: 200, align:"center"}, ]; diff --git a/src/views/gcaqjc/sjtjcx/wyjc/toolbar.js b/src/views/gcaqjc/sjtjcx/wyjc/toolbar.js index 914813874..4dddc4d1d 100644 --- a/src/views/gcaqjc/sjtjcx/wyjc/toolbar.js +++ b/src/views/gcaqjc/sjtjcx/wyjc/toolbar.js @@ -40,7 +40,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => { const getStationCode = async () => { try { const res = await httppost2(apiurl.gcaqjc.sjtjcx.wycx.list) - setCodeList(res.data.map(s=>({label:s.stationCode,value:s.stationCode}))); + setCodeList(res.data.map(s=>({label:s.cdNm,value:s.cd}))); } catch (error) { console.log(error); } @@ -113,7 +113,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData,role }) => { options={optionsType} /> - + { const columns = [ { title: '监测时间', - dataIndex: 'reportDate', - key: 'reportDate', + dataIndex: 'obDate', + key: 'obDate', width: 180, align:'center' }, { title: '测点编号', - dataIndex: 'pileNumber', - key: 'pileNumber', + dataIndex: 'mnNo', + key: 'mnNo', width: 120, align:'center' }, { title: '有无白蚁', - dataIndex: 'isHarm', + dataIndex: 'status', align:'center', - key: 'isHarm', + key: 'status', width: 100, render:(text, record) => { // 如果 isHarm 为 null 或 undefined,显示无 @@ -105,10 +105,10 @@ const Page = () => { return ( - {text ? (isHandle ? '无' : '有') : '无'} + {!text ? '无' : '有'} ); } @@ -220,7 +220,7 @@ const Page = () => { // role={role} /> -
+
diff --git a/src/views/rcgl/byfz/bypc/toolbar.js b/src/views/rcgl/byfz/bypc/toolbar.js index 97a4ab865..033b9bcee 100644 --- a/src/views/rcgl/byfz/bypc/toolbar.js +++ b/src/views/rcgl/byfz/bypc/toolbar.js @@ -15,7 +15,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData, role }) => { dateSo = moment(values.year).format('YYYY-MM-DD') } delete values.year - setSearchVal({...values, searchDate:dateSo}); + setSearchVal({...values, obDate:dateSo}); } // useEffect(() => { @@ -37,7 +37,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData, role }) => { style={{ width: "240px" }} /> - + Date: Tue, 2 Sep 2025 17:27:53 +0800 Subject: [PATCH 10/13] =?UTF-8?q?feat():=20=E6=B8=97=E5=8E=8B=E3=80=81?= =?UTF-8?q?=E6=B8=97=E6=B5=81=E5=92=8C=E4=BD=8D=E7=A7=BB=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Home/homePanelsLayoutPage/item_gongcheng.js | 13 ++++++++----- src/views/gcaqjc/bzt2/index.js | 15 ++++++++++----- src/views/gcaqjc/sjtjcx/ndsltjb/index.js | 2 +- src/views/gcaqjc/sjtjcx/ndwytjb/index.js | 4 ++-- src/views/rcgl/byfz/bypc/index.js | 4 ++-- src/views/rcgl/byfz/bypc/toolbar.js | 2 +- 6 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/views/Home/homePanelsLayoutPage/item_gongcheng.js b/src/views/Home/homePanelsLayoutPage/item_gongcheng.js index df37a6ebf..03dc12f78 100644 --- a/src/views/Home/homePanelsLayoutPage/item_gongcheng.js +++ b/src/views/Home/homePanelsLayoutPage/item_gongcheng.js @@ -29,11 +29,11 @@ const Page = () => { ] }else{ return [ - { title: '监测点', key: 'stationCode', dataIndex: 'stationCode',align: "center",width: 80, ellipsis: true }, + { title: '监测点', key: 'cd', dataIndex: 'cd',align: "center",width: 80, ellipsis: true }, { title: '监测时间', key: 'tm', dataIndex: 'tm',align: "center",width: 80, ellipsis: true, render:(v,row)=>
{v?.slice(5,10)}
{v?.slice(11,16)}
}, - { title:
X方向
(mm)
, key: 'x', dataIndex: 'x',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, - { title:
Y方向
(mm)
, key: 'y', dataIndex: 'y',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, - { title:
H方向
(mm)
, key: 'h', dataIndex: 'h',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, + { title:
e方向
(mm)
, key: 'de', dataIndex: 'de',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, + { title:
n方向
(mm)
, key: 'dn', dataIndex: 'dn',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, + { title:
u方向
(mm)
, key: 'du', dataIndex: 'du',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, ] } }, [checked]); @@ -89,7 +89,10 @@ const Page = () => {
{v?.slice(5,10)}
{v?.slice(11,16)}
}, - { title:
X方向
(mm)
, key: 'x', dataIndex: 'x',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, - { title:
Y方向
(mm)
, key: 'y', dataIndex: 'y',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, - { title:
H方向
(mm)
, key: 'h', dataIndex: 'h',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, + { title:
e方向
(mm)
, key: 'de', dataIndex: 'de',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, + { title:
n方向
(mm)
, key: 'dn', dataIndex: 'dn',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, + { title:
u方向
(mm)
, key: 'du', dataIndex: 'du',align: "center", ellipsis: true, render:(v,row)=>
{v}
}, ] @@ -194,8 +194,13 @@ export default function Page({isHome}) {
({ diff --git a/src/views/gcaqjc/sjtjcx/ndsltjb/index.js b/src/views/gcaqjc/sjtjcx/ndsltjb/index.js index edb40a265..2561fce2c 100644 --- a/src/views/gcaqjc/sjtjcx/ndsltjb/index.js +++ b/src/views/gcaqjc/sjtjcx/ndsltjb/index.js @@ -70,7 +70,7 @@ const Page = () => { let newArr = []; let newData = res.data?.map((s, i) => { newArr.push(s.list?.map(c => ({ - [c.stationCode]: c.value || '-', + [c.stationCode]: (c.value || c.value == 0) ? c.value : '-', tm:c.tm }))) return { diff --git a/src/views/gcaqjc/sjtjcx/ndwytjb/index.js b/src/views/gcaqjc/sjtjcx/ndwytjb/index.js index 3b91bfb51..aa851779c 100644 --- a/src/views/gcaqjc/sjtjcx/ndwytjb/index.js +++ b/src/views/gcaqjc/sjtjcx/ndwytjb/index.js @@ -83,7 +83,7 @@ const Page = () => { let newArr = []; let newData = res.data?.map((s, i) => { newArr.push(s.list?.map((c, i) => ({ - [c.cd]: c.value || '-', + [c.cd]: (c.value || c.value == 0) ? c.value : '-', [`e_${c.cd}`]:c.de , [`n_${c.cd}`]:c.dn , [`u_${c.cd}`]:c.du , @@ -171,7 +171,7 @@ const Page = () => { } getTable2Data(params) } - }, [trData,wyObj]) + }, [trData,wyObj,searchVal]) useEffect(() => { getDmTree() diff --git a/src/views/rcgl/byfz/bypc/index.js b/src/views/rcgl/byfz/bypc/index.js index 3e5948157..befb635cd 100644 --- a/src/views/rcgl/byfz/bypc/index.js +++ b/src/views/rcgl/byfz/bypc/index.js @@ -83,8 +83,8 @@ const Page = () => { }, { title: '测点编号', - dataIndex: 'mnNo', - key: 'mnNo', + dataIndex: 'order', + key: 'order', width: 120, align:'center' }, diff --git a/src/views/rcgl/byfz/bypc/toolbar.js b/src/views/rcgl/byfz/bypc/toolbar.js index 033b9bcee..7d1b4afd5 100644 --- a/src/views/rcgl/byfz/bypc/toolbar.js +++ b/src/views/rcgl/byfz/bypc/toolbar.js @@ -37,7 +37,7 @@ const ToolBar = ({ setSearchVal, onSave, storeData, role }) => { style={{ width: "240px" }} /> - + Date: Tue, 9 Sep 2025 09:47:13 +0800 Subject: [PATCH 11/13] =?UTF-8?q?fix():=20=E4=BF=AE=E6=94=B9=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E9=99=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/rcgl/jdkh/khzbgl/AdcdTreeSelector/index.tsx | 3 +++ src/views/sz/khzbgl/AdcdTreeSelector/index.tsx | 3 +++ src/views/sz/khzbgl/form.js | 11 +++++++---- src/views/sz/ywgz/form.js | 8 +++++--- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/views/rcgl/jdkh/khzbgl/AdcdTreeSelector/index.tsx b/src/views/rcgl/jdkh/khzbgl/AdcdTreeSelector/index.tsx index fab5b67a3..5a50d899c 100644 --- a/src/views/rcgl/jdkh/khzbgl/AdcdTreeSelector/index.tsx +++ b/src/views/rcgl/jdkh/khzbgl/AdcdTreeSelector/index.tsx @@ -74,6 +74,9 @@ const AdcdTreeSelector: React.FC = ({ onSelectFun, setAdcd, showCheckbox setTreeData(adcdTreedata); setLoading(false); setOrderMax(Math.max(...adcdTreedata.map((item:any) => item?.orderIndex))) + }else { + setLoading(false); + setTreeData([]) } }; // @ts-ignore diff --git a/src/views/sz/khzbgl/AdcdTreeSelector/index.tsx b/src/views/sz/khzbgl/AdcdTreeSelector/index.tsx index 1d2773cc5..f07ad4629 100644 --- a/src/views/sz/khzbgl/AdcdTreeSelector/index.tsx +++ b/src/views/sz/khzbgl/AdcdTreeSelector/index.tsx @@ -74,6 +74,9 @@ const AdcdTreeSelector: React.FC = ({ onSelectFun, setAdcd, showCheckbox setTreeData(adcdTreedata); setLoading(false); setOrderMax(Math.max(...adcdTreedata.map((item:any) => item?.orderIndex))) + } else { + setLoading(false); + setTreeData([]) } }; // @ts-ignore diff --git a/src/views/sz/khzbgl/form.js b/src/views/sz/khzbgl/form.js index a645f6174..865663f69 100644 --- a/src/views/sz/khzbgl/form.js +++ b/src/views/sz/khzbgl/form.js @@ -26,6 +26,8 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { const [form] = Form.useForm(); const [loading, setLoading] = useState(false) const [filesParams, setFilesParams] = useState([]) + const [fileUploading, setFileUploading] = useState(false) // 新增文件上传状态 + const onfinish = (values) => { const userId = localStorage.getItem("userId"); const userName = localStorage.getItem("userName"); @@ -105,8 +107,9 @@ useEffect(() => { mode={mode} fileNum={999} uploadUrl={apiurl.zsk.gcaq.upload} - onChange={(v) => { setFilesParams(v)}} - value={filesParams} + onChange={(v) => { setFilesParams(v)}} + value={filesParams} + onLoadingChange={(isLoading) => setFileUploading(isLoading)} /> @@ -115,8 +118,8 @@ useEffect(() => { mode === 'view' ? null : ( <> - diff --git a/src/views/sz/ywgz/form.js b/src/views/sz/ywgz/form.js index 9b1e1c998..6873a0a26 100644 --- a/src/views/sz/ywgz/form.js +++ b/src/views/sz/ywgz/form.js @@ -26,6 +26,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { const [form] = Form.useForm(); const [loading, setLoading] = useState(false) const [filesParams, setFilesParams] = useState([]) + const [fileUploading, setFileUploading] = useState(false) // 新增文件上传状态 const onfinish = (values) => { const userId = localStorage.getItem("userId"); const userName = localStorage.getItem("userName"); @@ -121,9 +122,10 @@ useEffect(() => { mode={mode} fileNum={999} uploadUrl={apiurl.zsk.ywgz.upload} - onChange={(v) => { setFilesParams(v);console.log("vvvv",v); + onChange={(v) => { setFilesParams(v);console.log("vvvv",v); }} value={filesParams} + onLoadingChange={(isLoading) => setFileUploading(isLoading)} /> @@ -132,8 +134,8 @@ useEffect(() => { mode === 'view' ? null : ( <> - From 55c49fc5e85902b424b7b5b9fc4a590227a26154 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Wed, 10 Sep 2025 10:40:35 +0800 Subject: [PATCH 12/13] =?UTF-8?q?feat():=E8=A7=86=E9=A2=91=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E6=A0=91=E5=BD=A2=E6=A0=B7=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/video/treeData.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/views/video/treeData.tsx b/src/views/video/treeData.tsx index 1fcf51ee6..1dc26c424 100644 --- a/src/views/video/treeData.tsx +++ b/src/views/video/treeData.tsx @@ -33,7 +33,15 @@ const TreeData = (props: any) => { console.log(props.treeListData); const [checkNode, setCheckNode] = useState([]); + const [spType, setSpType] = useState(2) const onSelect = async (selectedKeys: (any | never[]), info: any) => { + if (info.selected) { + if (info.node.type) { + setSpType(info.node.type) + } + } else { + setSpType(2) + } if(!info.node.isLeaf && !info.node.selected)return if(selectedKeys.length < props.size){ setCheckNode(selectedKeys) @@ -85,7 +93,7 @@ const TreeData = (props: any) => { // setCheckNode(selectedKeys) },[props.videoArr]) // useEffect(()=>{}) - return
+ return
{props.treeListData.length !== 0 && Date: Wed, 10 Sep 2025 15:39:03 +0800 Subject: [PATCH 13/13] =?UTF-8?q?feat():=E9=9A=90=E8=97=8F=E6=B0=B4?= =?UTF-8?q?=E5=BA=93=E6=B0=B4=E6=96=87=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Home/MapCtrl/Markers/ShuiKuLayer.js | 5 ++++- src/views/Home/homePanelsLayoutPage/index.js | 2 ++ src/views/Home/homePanelsLayoutPage/item_shuiku.js | 9 +++++---- src/views/sq/qth/sksq/index.js | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/views/Home/MapCtrl/Markers/ShuiKuLayer.js b/src/views/Home/MapCtrl/Markers/ShuiKuLayer.js index d29e5d0fd..ca20e2945 100644 --- a/src/views/Home/MapCtrl/Markers/ShuiKuLayer.js +++ b/src/views/Home/MapCtrl/Markers/ShuiKuLayer.js @@ -94,7 +94,10 @@ export default class ShuiKuLayer extends BaseLayer { // } // }); // } - const list = data.map((i)=>{ + + + const list = data.filter(o=>o.stnm==='檀树岗' || o.stnm==='檀树岗(新)') + .map((i) => { return { id : i.stcd, name: i.stnm, diff --git a/src/views/Home/homePanelsLayoutPage/index.js b/src/views/Home/homePanelsLayoutPage/index.js index 579f6a948..132ac12cf 100644 --- a/src/views/Home/homePanelsLayoutPage/index.js +++ b/src/views/Home/homePanelsLayoutPage/index.js @@ -628,6 +628,7 @@ const HomePage = ({ showPanels }) => { // 清空搜索输入框 setSearchVal('') dispatch.runtime.closeFeaturePopAll() + dispatch.map.setLayerVisible({ ShuiKuLayer: false }) mapObj && mapObj.getLayers().getArray().forEach(layer => { if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1 || layer.values_.name.indexOf('ZHZS_YQ') > -1 || layer.values_.name.indexOf('ZHZS_YQ_DRP') > -1)) { layer.getSource().clear() @@ -681,6 +682,7 @@ const HomePage = ({ showPanels }) => { setSearchVal('') setCheckedObj(item) setShowTable(true) + dispatch.map.setLayerVisible({ ShuiKuLayer: false }) mapObj && mapObj.getLayers().getArray().forEach(layer => { if (layer.values_.name && (layer.values_.name.indexOf('ZHZS_WXQ') > -1 || layer.values_.name.indexOf('ZHZS_YQ') > -1 || layer.values_.name.indexOf('ZHZS_YQ_DRP') > -1)) { layer.getSource().clear() diff --git a/src/views/Home/homePanelsLayoutPage/item_shuiku.js b/src/views/Home/homePanelsLayoutPage/item_shuiku.js index 10c0f6321..be6309441 100644 --- a/src/views/Home/homePanelsLayoutPage/item_shuiku.js +++ b/src/views/Home/homePanelsLayoutPage/item_shuiku.js @@ -25,13 +25,13 @@ const Page = () => { },[]) const getData = async (params) => { - const data = await reservoirlist(params) || [] - const list = [...data.filter(o=>o.stnm==='檀树岗(新)'),...data.filter(o=>o.stnm!=='檀树岗(新)')] + const data = await reservoirlist(params) || [] + // const list = [...data.filter(o=>o.stnm==='檀树岗(新)'),...data.filter(o=>o.stnm!=='檀树岗(新)')] + const list = [...data.filter(o=>o.stnm==='檀树岗'),...data.filter(o=>o.stnm==='檀树岗(新)')] setData(list) } const getShuiKu = () => { - SkRealPromiseWX.get().then((res) => { const list = [...res].map((i)=>{ return { @@ -40,7 +40,8 @@ const Page = () => { ...i } }) - const list2 = [...list.filter(o=>o.stnm==='檀树岗(新)'),...list.filter(o=>o.stnm!=='檀树岗(新)')] + // const list2 = [...list.filter(o=>o.stnm==='檀树岗(新)'),...list.filter(o=>o.stnm!=='檀树岗(新)')] + const list2 = [...list.filter(o=>o.stnm==='檀树岗'),...list.filter(o=>o.stnm==='檀树岗(新)')] console.log('res',list2); const data = list2[checked] dispatch.runtime.setFeaturePop({ diff --git a/src/views/sq/qth/sksq/index.js b/src/views/sq/qth/sksq/index.js index 15bab8363..1bea7b587 100644 --- a/src/views/sq/qth/sksq/index.js +++ b/src/views/sq/qth/sksq/index.js @@ -17,7 +17,7 @@ export default function Sksq() { const getData = async (params) => { const data = await reservoirlist(params) - setTableData(data); + setTableData(data.filter(o=>o.stnm==='檀树岗' || o.stnm==='檀树岗(新)')); } useEffect(() => { let option = {