From 60adfa2eb14c3cf8ab6202195d96dff90f32c060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E5=87=AF?= <2448379534@qq.com> Date: Wed, 24 Jun 2026 11:26:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E6=AE=96=E6=94=BE=E6=B5=81=E5=92=8C?= =?UTF-8?q?=E7=8F=8D=E7=A8=80=E5=8A=A8=E6=A4=8D=E7=89=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/api/zxdzw/index.ts | 35 + frontend/src/api/zzfl/index.ts | 76 ++ frontend/src/components/BasicTable/index.vue | 9 +- .../components/NormalAddedSituation.vue | 9 +- .../components/NormalResearchSituation.vue | 8 +- frontend/src/components/MapModal/index.vue | 65 +- .../src/components/SidePanelItem/index.vue | 13 +- .../JiuZhuZhanQingKuangJieShao.vue | 460 +++++----- .../ZhenXiZhiWuYuanMod/Dwjzqk/index.vue | 339 +++++--- .../ZhiWuYuanDetailTable.vue | 293 +++++++ .../index.vue | 328 +++++-- .../modules/fishSurvey/FishChangeTu/index.vue | 109 +-- .../ZengZhiZhanQingKuangTwoLayers.vue | 588 +++++++++++++ .../zengZhiJiHuaWanChengQingKuang/index.vue | 807 ++++++++++++------ .../modules/zengZhiZhanJieShaoMod/index.vue | 472 ++++++---- .../index.vue | 260 ++++++ .../zengzhizhanjiansheyunxing/index.vue | 276 ++++-- .../modules/zengzhizhanyunxingsjtj/index.vue | 436 ++++++---- frontend/src/store/modules/model.ts | 3 +- frontend/src/utils/request.ts | 2 +- .../views/zengZhiFangLiu/yuLieZengZhiZhan.vue | 2 +- 21 files changed, 3332 insertions(+), 1258 deletions(-) create mode 100644 frontend/src/api/zxdzw/index.ts create mode 100644 frontend/src/api/zzfl/index.ts create mode 100644 frontend/src/modules/ZhenXiZhiWuYuanMod/ZhiWuYuanJianSheJiJieRuQingKuangBar/ZhiWuYuanDetailTable.vue create mode 100644 frontend/src/modules/zengZhiJiHuaWanChengQingKuang/TwoLayers/ZengZhiZhanQingKuangTwoLayers.vue create mode 100644 frontend/src/modules/zengzhizhanjiansheyunxing/WholeValuedStationOverviewDetail/index.vue diff --git a/frontend/src/api/zxdzw/index.ts b/frontend/src/api/zxdzw/index.ts new file mode 100644 index 00000000..5dd14221 --- /dev/null +++ b/frontend/src/api/zxdzw/index.ts @@ -0,0 +1,35 @@ +import request from '@/utils/request'; + + +export function vpcGetKendoListCust(data: any) { + return request({ + url: '/api/wmp-env-server/env/vpc/GetKendoListCust', + method: 'post', + data + }); +} + +// 植物园建设及接入情况 - 表格数据 +export function vmsstbprptGetKendoList(data: any) { + return request({ + url: '/api/dec-lygk-base-server/base/vmsstbprpt/GetKendoList', + method: 'post', + data + }); +} +// 动物救助情况 +export function wvaGetKendoListCust(data: any) { + return request({ + url: '/api/wmp-env-server/env/wva/GetKendoListCust', + method: 'post', + data + }); +} +//植物园情况介绍 +// export function vpcGetKendoListCust(data: any) { +// return request({ +// url: '/api/wmp-env-server/env/vpc/GetKendoListCust', +// method: 'post', +// data +// }); +// } \ No newline at end of file diff --git a/frontend/src/api/zzfl/index.ts b/frontend/src/api/zzfl/index.ts new file mode 100644 index 00000000..426de90f --- /dev/null +++ b/frontend/src/api/zzfl/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; + +// 增殖站建设运行情况 - 概览统计 +export function overviewGetKendoListCust(data: any) { + return request({ + url: '/fb/station/overview/GetKendoListCust', + method: 'post', + data + }); +} + +// 增殖站概况详情 - 全国概览接口(all=true时使用) +export function qgcoverviewGetOverviewSecond(data: any) { + return request({ + url: '/fb/station/qgcoverview/getOverviewSecond', + method: 'post', + data + }); +} + +// 增殖站概况详情 - 普通接口(all=false时使用) +export function overviewGetOverviewSecond(data: any) { + return request({ + url: '/fb/station/overview/getOverviewSecond', + method: 'post', + data + }); +} +//增殖站介绍 /api/dec-lygk-base-server/base/msstbprpt/GetKendoList +export function msstbprptGetKendoList(data: any) { + return request({ + url: '/fb/msstbprpt/GetKendoList', + method: 'post', + data + }); +} +// 增殖站运行数据统计 +export function qgcgetFbStaticsData(data: any) { + return request({ + url: '/fb/station/qgc/getFbStaticsData', + method: 'post', + data + }); +} +// 增殖计划完成情况,下拉框 /////// +export function fishTypegetStcdList(data: any) { + return request({ + url: '/fb/fishType/getStcdList', + method: 'post', + data + }); +} +//增殖计划完成情况-数量完成情况////////////// +export function fishCountGetKendoListCust(data: any) { + return request({ + url: '/fb/fishCount/GetKendoListCust', + method: 'post', + data + }); +} +//增殖计划完成情况-种类完成情况/////////// +export function fishTypeGetKendoListCust(data: any) { + return request({ + url: '/fb/fishType/GetKendoListCust', + method: 'post', + data + }); +} +// 增殖站运行情况统计列表 (TwoLayers 弹窗表格) /////////////// +export function msfbrdmGetKendoListCust(data: any) { + return request({ + url: '/fb/msfbrdm/qgc/GetKendoListCust', + method: 'post', + data + }); +} \ No newline at end of file diff --git a/frontend/src/components/BasicTable/index.vue b/frontend/src/components/BasicTable/index.vue index 0671418a..20dde34a 100644 --- a/frontend/src/components/BasicTable/index.vue +++ b/frontend/src/components/BasicTable/index.vue @@ -215,7 +215,7 @@ const getList = async (filter?: Record) => { let finalTotal = 0; if (props.transformData) { - const result = props.transformData(res); + const result:any = props.transformData(res); finalRecords = result.records || result.data || []; finalTotal = result.total || 0; } else { @@ -392,8 +392,11 @@ const enhancedColumns = computed(() => { } // 处理 merge 配置 - if (enhancedCol.merge && enhancedCol.dataIndex) { - enhancedCol.customCell = createMergeCellHandler(enhancedCol.dataIndex); + if (enhancedCol.merge) { + const mergeField = enhancedCol.dataIndex || enhancedCol.mergeWith; + if (mergeField) { + enhancedCol.customCell = createMergeCellHandler(mergeField); + } // 如果有 slots.customRender,移除 slots if (enhancedCol.slots?.customRender) { diff --git a/frontend/src/components/MapModal/components/NormalAddedSituation.vue b/frontend/src/components/MapModal/components/NormalAddedSituation.vue index cc974823..89747e55 100644 --- a/frontend/src/components/MapModal/components/NormalAddedSituation.vue +++ b/frontend/src/components/MapModal/components/NormalAddedSituation.vue @@ -295,7 +295,14 @@ watch( () => props.isActive, active => { if (active && !hasLoaded.value) { - getYearList(); + console.log('isActive', modelStore.filter.year); + if (modelStore.filter.year) { + searchParams.value.tm = modelStore.filter.year; + getFtpOptions(); + } else { + getYearList(); + } + hasLoaded.value = true; } }, diff --git a/frontend/src/components/MapModal/components/NormalResearchSituation.vue b/frontend/src/components/MapModal/components/NormalResearchSituation.vue index defccd9a..de9bed47 100644 --- a/frontend/src/components/MapModal/components/NormalResearchSituation.vue +++ b/frontend/src/components/MapModal/components/NormalResearchSituation.vue @@ -150,7 +150,13 @@ watch( () => props.isActive, active => { if (active && !hasLoaded.value) { - getYearList(); + // getYearList(); + if (modelStore.filter.year) { + searchParams.value.tm = modelStore.filter.year; + refreshTable(); + } else { + getYearList(); + } hasLoaded.value = true; } }, diff --git a/frontend/src/components/MapModal/index.vue b/frontend/src/components/MapModal/index.vue index 3e974242..2f61d81d 100644 --- a/frontend/src/components/MapModal/index.vue +++ b/frontend/src/components/MapModal/index.vue @@ -209,7 +209,7 @@ v-show="currentActiveKey === 'ProcessDiagram'" :is-active="currentActiveKey === 'ProcessDiagram'" /> - + { - try { - const res = await getStInfoByStcd({ stcd }); - const data = res?.data || res; - if (data && data.relList) { - const jianCei = data.relList.find( - (item: any) => item.sttpCode === 'WTVT' - ); - const aiShiBie = data.relList.filter((item: any) => - item?.sttpCode?.startsWith('AI') - ); - - if (!jianCei) { - // 无垂向水温子站点,过滤掉垂向水温 Tab - tabsConfig.value = tabsConfig.value.filter( - (item: any) => item.type !== 'VerticalWaterTemperature' - ); - } else { - modelStore.verticalWaterStcd = jianCei.stcd; - } - - if (!aiShiBie.length) { - // 无 AI 识别子站点,过滤掉 AI 识别 Tab - tabsConfig.value = tabsConfig.value.filter( - (item: any) => item.type !== 'AIYXSB' - ); - } else { - modelStore.aiSites = aiShiBie; - } - } - } catch (error) { - console.error('垂向水温/AI 检查失败:', error); - } -}; - -// 功能7: 视频存在性检查 -const checkVideoExists = async (stcd: string) => { - try { - const res = await getVideoList({ - filter: { - logic: 'and', - filters: [{ field: 'stcd', operator: 'eq', value: stcd }] - } - }); - if (!res?.data?.data?.length && !res?.data?.records?.length) { - // 无视频数据,过滤掉视频 Tab - tabsConfig.value = tabsConfig.value.filter( - (item: any) => item.type !== 'video' - ); - } - } catch (error) { - console.error('视频检查失败:', error); - } -}; - // 功能8: 鱼类栖息地数据类型检查 (React: isLCJ && sttpCode === 'WE') const checkFishTab = async (stcd: string) => { try { @@ -604,7 +547,7 @@ const setQGCTabList = async (_tabs: any, stcd: string) => { // 2. 垂向水温 & AI 识别检查(对所有类型执行,与 React 一致) const res4 = await getStInfoByStcd({ stcd }); let newTabs = [...tabs]; - + // debugger if (res4 && res4.data && res4.data.relList) { const relList = res4.data.relList; const jianCei = relList.find((item: any) => item.sttpCode === 'WTVT'); @@ -722,14 +665,14 @@ const applyTabFilters = async (params: any) => { // LCJ 鱼类栖息地数据类型检查 await checkFishTab(stcd); } else if ( - ((baseId === '07' || baseId === '02') && sttpCode === 'WQ') || + ( sttpCode === 'WQ') || sttpCode === 'WQFB' || sttpCode === 'wq' ) { // 水质 AI 预测检查(React 逻辑:WQ 需要条件,WQFB/wq 无条件) await checkAnalysisAvailability(stcd); } else if ( - ((baseId === '07' || baseId === '02') && sttpCode === 'WT') || + ( sttpCode === 'WT') || sttpCode === 'wt' ) { // 水温站特殊处理(React 逻辑:WT 需要条件,wt 无条件) diff --git a/frontend/src/components/SidePanelItem/index.vue b/frontend/src/components/SidePanelItem/index.vue index a464c85c..c9e04764 100644 --- a/frontend/src/components/SidePanelItem/index.vue +++ b/frontend/src/components/SidePanelItem/index.vue @@ -64,6 +64,7 @@ @focus="handleFocus" @blur="handleBlur" @change="handleChange" + @select="handleTreeSelect1" >
@@ -668,7 +669,16 @@ const handleTreeSelect = (selectedKeys: string | string[], info: any) => { }; } }; - +const handleTreeSelect1 = (selectedKeys: string | string[], info: any) => { + // debugger + // 保存选中节点的额外属性(如 lgtd、lttd 等) + if (info && typeof info === 'object') { + selectedNodeExtra.value = { + lgtd: info.lgtd, + lttd: info.lttd + }; + } +}; /** * 处理树节点展开/收起事件 * @param keys 展开的节点键值数组 @@ -679,6 +689,7 @@ const handleTreeExpand = (keys: string[]) => { // 下拉选择框事件处理 const handleChange = (value: string) => { + // Handle change }; diff --git a/frontend/src/modules/DongWuJiuZhuZhan/JiuZhuZhanQingKuangJieShao.vue b/frontend/src/modules/DongWuJiuZhuZhan/JiuZhuZhanQingKuangJieShao.vue index e1ac0ce1..d65599df 100644 --- a/frontend/src/modules/DongWuJiuZhuZhan/JiuZhuZhanQingKuangJieShao.vue +++ b/frontend/src/modules/DongWuJiuZhuZhan/JiuZhuZhanQingKuangJieShao.vue @@ -1,76 +1,94 @@ \ No newline at end of file + diff --git a/frontend/src/modules/ZhenXiZhiWuYuanMod/Dwjzqk/index.vue b/frontend/src/modules/ZhenXiZhiWuYuanMod/Dwjzqk/index.vue index a04d568a..e23d04fc 100644 --- a/frontend/src/modules/ZhenXiZhiWuYuanMod/Dwjzqk/index.vue +++ b/frontend/src/modules/ZhenXiZhiWuYuanMod/Dwjzqk/index.vue @@ -1,56 +1,64 @@ \ No newline at end of file +:deep(.ant-empty-description){ + text-indent:0em !important; +} + diff --git a/frontend/src/modules/ZhenXiZhiWuYuanMod/ZhiWuYuanJianSheJiJieRuQingKuangBar/ZhiWuYuanDetailTable.vue b/frontend/src/modules/ZhenXiZhiWuYuanMod/ZhiWuYuanJianSheJiJieRuQingKuangBar/ZhiWuYuanDetailTable.vue new file mode 100644 index 00000000..4c679be4 --- /dev/null +++ b/frontend/src/modules/ZhenXiZhiWuYuanMod/ZhiWuYuanJianSheJiJieRuQingKuangBar/ZhiWuYuanDetailTable.vue @@ -0,0 +1,293 @@ + + + + + diff --git a/frontend/src/modules/ZhenXiZhiWuYuanMod/ZhiWuYuanJianSheJiJieRuQingKuangBar/index.vue b/frontend/src/modules/ZhenXiZhiWuYuanMod/ZhiWuYuanJianSheJiJieRuQingKuangBar/index.vue index 0dc3fd67..2ace8474 100644 --- a/frontend/src/modules/ZhenXiZhiWuYuanMod/ZhiWuYuanJianSheJiJieRuQingKuangBar/index.vue +++ b/frontend/src/modules/ZhenXiZhiWuYuanMod/ZhiWuYuanJianSheJiJieRuQingKuangBar/index.vue @@ -1,135 +1,275 @@ \ No newline at end of file + +.chart-container { + width: 100%; + height: 100%; + display: block; + box-sizing: border-box; +} + diff --git a/frontend/src/modules/fishSurvey/FishChangeTu/index.vue b/frontend/src/modules/fishSurvey/FishChangeTu/index.vue index b2c4c93f..2a5cceec 100644 --- a/frontend/src/modules/fishSurvey/FishChangeTu/index.vue +++ b/frontend/src/modules/fishSurvey/FishChangeTu/index.vue @@ -4,13 +4,9 @@ :datetimePicker="datetimePicker" @update-values="handlePanelChange" > - -
- -
-
-
-
+ +
+
@@ -18,10 +14,11 @@ diff --git a/frontend/src/modules/zengZhiJiHuaWanChengQingKuang/TwoLayers/ZengZhiZhanQingKuangTwoLayers.vue b/frontend/src/modules/zengZhiJiHuaWanChengQingKuang/TwoLayers/ZengZhiZhanQingKuangTwoLayers.vue new file mode 100644 index 00000000..cb8f0849 --- /dev/null +++ b/frontend/src/modules/zengZhiJiHuaWanChengQingKuang/TwoLayers/ZengZhiZhanQingKuangTwoLayers.vue @@ -0,0 +1,588 @@ + + + + + diff --git a/frontend/src/modules/zengZhiJiHuaWanChengQingKuang/index.vue b/frontend/src/modules/zengZhiJiHuaWanChengQingKuang/index.vue index fd5fc382..420540fe 100644 --- a/frontend/src/modules/zengZhiJiHuaWanChengQingKuang/index.vue +++ b/frontend/src/modules/zengZhiJiHuaWanChengQingKuang/index.vue @@ -1,339 +1,606 @@ \ No newline at end of file + +.center-container { + width: 100%; + height: 280px; + min-height: 280px; + display: flex; + align-items: center; + justify-content: center; +} + diff --git a/frontend/src/modules/zengZhiZhanJieShaoMod/index.vue b/frontend/src/modules/zengZhiZhanJieShaoMod/index.vue index 97385ea1..777d8ec2 100644 --- a/frontend/src/modules/zengZhiZhanJieShaoMod/index.vue +++ b/frontend/src/modules/zengZhiZhanJieShaoMod/index.vue @@ -1,76 +1,92 @@ \ No newline at end of file + diff --git a/frontend/src/modules/zengzhizhanjiansheyunxing/WholeValuedStationOverviewDetail/index.vue b/frontend/src/modules/zengzhizhanjiansheyunxing/WholeValuedStationOverviewDetail/index.vue new file mode 100644 index 00000000..4fb71fe7 --- /dev/null +++ b/frontend/src/modules/zengzhizhanjiansheyunxing/WholeValuedStationOverviewDetail/index.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/frontend/src/modules/zengzhizhanjiansheyunxing/index.vue b/frontend/src/modules/zengzhizhanjiansheyunxing/index.vue index 984a919f..ec72eb90 100644 --- a/frontend/src/modules/zengzhizhanjiansheyunxing/index.vue +++ b/frontend/src/modules/zengzhizhanjiansheyunxing/index.vue @@ -1,128 +1,232 @@ \ No newline at end of file + diff --git a/frontend/src/modules/zengzhizhanyunxingsjtj/index.vue b/frontend/src/modules/zengzhizhanyunxingsjtj/index.vue index 45df0cd5..8fb0cb3b 100644 --- a/frontend/src/modules/zengzhizhanyunxingsjtj/index.vue +++ b/frontend/src/modules/zengzhizhanyunxingsjtj/index.vue @@ -1,214 +1,326 @@ diff --git a/frontend/src/store/modules/model.ts b/frontend/src/store/modules/model.ts index 38fe7274..ada3f354 100644 --- a/frontend/src/store/modules/model.ts +++ b/frontend/src/store/modules/model.ts @@ -53,7 +53,8 @@ export const useModelStore = defineStore('model', () => { stllgzlx: '', // 生态流量 - 规则类型 stllTmType: '', // 生态流量 - 时间类型 tm: '', - rangeTm: [] + rangeTm: [], + year:'', }); return { params, diff --git a/frontend/src/utils/request.ts b/frontend/src/utils/request.ts index 324c2374..14e9e2e8 100644 --- a/frontend/src/utils/request.ts +++ b/frontend/src/utils/request.ts @@ -34,7 +34,7 @@ service.interceptors.request.use( config.headers._sysid = '10EC2E0B-AEA9-4757-83A2-201BA1BC54E9'; config.headers.authorization = - 'bearer 0952e56d-8a77-4c43-abe4-a44367a22d73'; + 'bearer cb68557d-2861-497d-b708-6b73ae68ba95'; config.baseURL = '/'; } else { const user = useUserStoreHook(); diff --git a/frontend/src/views/zengZhiFangLiu/yuLieZengZhiZhan.vue b/frontend/src/views/zengZhiFangLiu/yuLieZengZhiZhan.vue index badbb66a..e4c1d948 100644 --- a/frontend/src/views/zengZhiFangLiu/yuLieZengZhiZhan.vue +++ b/frontend/src/views/zengZhiFangLiu/yuLieZengZhiZhan.vue @@ -21,7 +21,7 @@ watch( wbsCode.value = newVal.wbsCode; } }, - { deep: true } + { deep: true, immediate: true } );