From 71802724b1ffae2718006cc1d297d066ab70fe2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E5=87=AF?= <2448379534@qq.com> Date: Thu, 18 Jun 2026 09:29:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=B1=BC=E7=B1=BB=E8=B0=83=E6=9F=A5=E8=A3=85?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/api/yldc/index.ts | 64 +++ .../src/assets/images/fish_survey_liang.png | Bin 0 -> 5992 bytes .../src/assets/images/fish_survey_shu.png | Bin 0 -> 6358 bytes .../src/assets/images/fish_survey_zhong.png | Bin 0 -> 6048 bytes .../components/CommonAttachmentModal.vue | 9 +- .../MapModal/components/NoLiveVideo.vue | 100 +++- frontend/src/components/MapModal/index.vue | 2 +- .../src/components/MapModal/setting.config.ts | 18 +- .../src/components/SidePanelItem/index.vue | 35 +- .../EnvironmentalQualityTwoLayers.vue | 8 +- .../TwoLayers/HJMZDTwoLays.vue | 2 +- .../modules/EnvironmentalQuality/index.vue | 8 +- frontend/src/modules/GYZLLB/index.vue | 2 +- .../chuixiangshuiwenChangeMod/index.vue | 105 ++-- .../src/modules/churukushuiwenMod/index.vue | 13 +- .../modules/fishSurvey/FishChangeTu/index.vue | 338 ++++++++++++ .../fishSurvey/FishIntroduce/index.vue | 500 +++++++++++------- .../modules/fishSurvey/FishVideo/index.vue | 170 ++++-- .../SurveyQingKuang/DeviceTableModal.vue | 407 ++++++++++++++ .../fishSurvey/SurveyQingKuang/index.vue | 177 +++++++ .../fishSurvey/ZhuanZhiIntroduce/index.vue | 462 +++++++++------- .../ModalPage/index.vue | 4 +- .../modules/qixidiliuliangbianhua/index.vue | 4 +- .../modules/qixidishuiwenbianhua/index.vue | 4 +- .../xianZhiYanChenBianHua/index.vue | 2 +- .../xieFangFenBu/index.vue | 2 +- .../ShengTaiLiuLiangDaBQKTwoLayer.vue | 3 +- .../src/modules/shengtaidabiaoMod/index.vue | 4 +- .../modules/shengtaidabiaoTwoMod/index.vue | 6 +- .../src/modules/shuiWenNianNeiFenBu/index.vue | 19 +- .../modules/shuizhijiancegongzuoQK/index.vue | 6 +- .../modules/stllyanchengChangeMod/index.vue | 2 +- frontend/src/store/modules/model.ts | 4 +- .../views/fish-survey/fishSurveyZhuanZhi.vue | 112 +++- .../components/LiveVideoBox.vue | 116 +++- .../shuiHuanJingZhiLiangZhuangKuang.vue | 2 +- 36 files changed, 2127 insertions(+), 583 deletions(-) create mode 100644 frontend/src/api/yldc/index.ts create mode 100644 frontend/src/assets/images/fish_survey_liang.png create mode 100644 frontend/src/assets/images/fish_survey_shu.png create mode 100644 frontend/src/assets/images/fish_survey_zhong.png create mode 100644 frontend/src/modules/fishSurvey/FishChangeTu/index.vue create mode 100644 frontend/src/modules/fishSurvey/SurveyQingKuang/DeviceTableModal.vue create mode 100644 frontend/src/modules/fishSurvey/SurveyQingKuang/index.vue diff --git a/frontend/src/api/yldc/index.ts b/frontend/src/api/yldc/index.ts new file mode 100644 index 00000000..4643b2f1 --- /dev/null +++ b/frontend/src/api/yldc/index.ts @@ -0,0 +1,64 @@ +import request from '@/utils/request'; +//获取有数据的流域 +export function wbsbGetKendoList(data: any) { + return request({ + url: '/fpr/wbsb/GetKendoList', + method: 'post', + data + }); +} +//获取鱼类调查装置 +export function msstbprptGetKendoList(data: any) { + return request({ + url: '/fpr/msstbprpt/GetKendoList', + method: 'post', + data + }); +} +//获取鱼类介绍 +export function fishDicGetKendoList(data: any) { + return request({ + url: '/fpr/fishDic/GetKendoList', + method: 'post', + data + }); +} +//获取鱼类调查统计数据 +export function getFprdDataInfo(data: any) { + return request({ + url: '/fpr/sdFprdR/getFprdDataInfo', + method: 'post', + data + }); +} +// +export function sdFprdRGetKendoListCust(data: any) { + return request({ + url: '/fpr/sdFprdR/GetKendoListCust', + method: 'post', + data + }); +} +//装置名称 /api/dec-lygk-base-server/base/vmsstbprpt/GetKendoList +export function vmsstbprptGetKendoList(data: any) { + return request({ + url: '/fpr/vmsstbprpt/GetKendoList', + method: 'post', + data + }); +} +//鱼种类 /api/wmp-env-server/sdFprdR/getFishInfo +export function sdFprdRgetFishInfo() { + return request({ + url: '/fpr/sdFprdR/getFishInfo', + method: 'post', + }); +} +//获取鱼类变化信息 +export function sdFprdRGetFtpChangeInfo(data: { baseId: string; year: string }) { + return request({ + url: '/fpr/sdFprdR/getFtpChangeInfo', + method: 'post', + data + }); +} \ No newline at end of file diff --git a/frontend/src/assets/images/fish_survey_liang.png b/frontend/src/assets/images/fish_survey_liang.png new file mode 100644 index 0000000000000000000000000000000000000000..d81b210f9d77430328406254c9b16c73e15cc168 GIT binary patch literal 5992 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
- + +
@@ -52,7 +57,7 @@ import { ref, watch } from 'vue'; import { getIdUrl } from '@/api/mapModal'; import PdfView from '@/components/pdf/pdfView.vue'; - +import LiveVideoBox from '@/views/shiPinJianKong/components/LiveVideoBox.vue'; interface AttachmentFileItem { id: string; name: string; diff --git a/frontend/src/components/MapModal/components/NoLiveVideo.vue b/frontend/src/components/MapModal/components/NoLiveVideo.vue index 17b5eb60..2158f2f4 100644 --- a/frontend/src/components/MapModal/components/NoLiveVideo.vue +++ b/frontend/src/components/MapModal/components/NoLiveVideo.vue @@ -23,7 +23,7 @@ v-model:value="dateRange" format="YYYY-MM-DD" value-format="YYYY-MM-DD" - style="width: 100%" + style="width: 300px" @change="handleDateChange" /> @@ -281,7 +281,9 @@ watch( .video-mode { display: flex; - height: 600px; + height: 60vh; + min-height: 400px; + max-height: 800px; gap: 12px; .video-main { @@ -309,16 +311,24 @@ watch( flex-direction: column; border: 1px solid #e8e8e8; border-radius: 4px; + min-width: 0; .sidebar-search { padding: 8px; display: flex; align-items: center; border-bottom: 1px solid #e8e8e8; + flex-wrap: wrap; + gap: 8px; + + :deep(.ant-picker) { + max-width: 100%; + } } .sidebar-list { - height: 600px; + flex: 1; + min-height: 0; overflow-y: auto; display: grid; grid-template-columns: repeat(2, 1fr); @@ -339,13 +349,13 @@ watch( } &.active { - border-color: #1890ff; - background: #e6f7ff; + // border-color: #1890ff; + // background: #e6f7ff; } .item-thumb { width: 100%; - height: 105px; + height: 143px; background: #1a1a1a; overflow: hidden; display: flex; @@ -375,8 +385,8 @@ watch( .item-time { padding: 4px; - font-size: 11px; - color: #666; + font-size: 14px; + color: #000000D9; text-align: center; white-space: nowrap; overflow: hidden; @@ -393,4 +403,78 @@ watch( } } } + +// 响应式适配 +@media screen and (max-width: 1400px) { + .no-live-video { + .video-mode { + height: 55vh; + gap: 10px; + + .video-main { + flex: 0 0 65%; + } + + .video-sidebar { + flex: 0 0 35%; + + .sidebar-list { + grid-template-columns: repeat(2, 1fr); + gap: 6px; + padding: 6px; + } + } + } + } +} + +@media screen and (max-width: 1200px) { + .no-live-video { + .video-mode { + height: 50vh; + gap: 8px; + + .video-main { + flex: 0 0 70%; + } + + .video-sidebar { + flex: 0 0 30%; + + .sidebar-list { + grid-template-columns: 1fr; + } + + .sidebar-search { + :deep(.ant-picker-range) { + width: 100% !important; + } + } + } + } + } +} + +@media screen and (max-width: 768px) { + .no-live-video { + .video-mode { + flex-direction: column; + height: auto; + + .video-main { + flex: none; + height: 50vh; + } + + .video-sidebar { + flex: none; + height: 40vh; + + .sidebar-list { + grid-template-columns: repeat(2, 1fr); + } + } + } + } +} diff --git a/frontend/src/components/MapModal/index.vue b/frontend/src/components/MapModal/index.vue index 09e4f41e..3e974242 100644 --- a/frontend/src/components/MapModal/index.vue +++ b/frontend/src/components/MapModal/index.vue @@ -677,7 +677,7 @@ const setQGCTabList = async (_tabs: any, stcd: string) => { }; const res2 = await getVideoList(params); console.log('', modelStore.params.sttp); - // debugger + // if ( res2?.data?.data?.length > 0 || res2?.data?.records?.length > 0 || diff --git a/frontend/src/components/MapModal/setting.config.ts b/frontend/src/components/MapModal/setting.config.ts index ea097c15..aeea96a7 100644 --- a/frontend/src/components/MapModal/setting.config.ts +++ b/frontend/src/components/MapModal/setting.config.ts @@ -310,7 +310,9 @@ const FPTabs1: Array = [ name: '基础信息', key: 'basicInfo', type: 'basic', - url: '/api/dec-lygk-base-server/base/msstbprpt/getStcdInfo' + default: true, // 默认显示 + url: '/api/dec-lygk-base-server/base/msstbprpt/getStcdInfo', + }, { name: '实时视频', @@ -396,14 +398,14 @@ const FBTabs: Array = [ } } ] + }, + { + name: '实时视频', + key: 'videoInfo', + type: 'video', + url: '/video/dataStcdFrame/getVideoMonitorList' } // { - // name: '实时视频', - // key: 'videoInfo', - // type: 'video', - // url: '/video/dataStcdFrame/getVideoMonitorList' - // } - // { // name: "全景影像", // key: "panoramaInfo", // type: "panorama" @@ -873,7 +875,7 @@ const noLiveVideoTabs: Array = [ }, { name: '录像视频', - key: 'videoInfo', + key: 'noLiveVideo', type: 'noLiveVideo', url: '/video/dataStcdFrame/getVideoMonitorList' } diff --git a/frontend/src/components/SidePanelItem/index.vue b/frontend/src/components/SidePanelItem/index.vue index df4bbf5a..a464c85c 100644 --- a/frontend/src/components/SidePanelItem/index.vue +++ b/frontend/src/components/SidePanelItem/index.vue @@ -53,7 +53,12 @@ show-search placeholder="请选择" :size="'small'" - style="width: 120px" + :style="{ width: select.width || '80px' }" + :dropdown-style="{ + maxHeight: '400px', + overflow: 'auto', + minWidth: '200px' + }" :options="select.options" :filter-option="filterOption" @focus="handleFocus" @@ -84,7 +89,7 @@ value: 'value', children: 'children' }" - tree-node-filter-prop="label" + tree-node-filter-prop="title" popup-class-name="no-wrap-tree-select" @select="handleTreeSelect" @expand="handleTreeExpand" @@ -177,11 +182,12 @@ interface PromptConfig { } interface SelectConfig { - picker: any; - format: any; - show: boolean; - value: string | undefined; - options: SelectProps['options']; + picker?: any; + format?: any; + show?: boolean; + value?: string | undefined; + options?: SelectProps['options']; + width?: string; } // 定义组件名(便于调试和递归) @@ -239,7 +245,8 @@ const props = defineProps({ default: () => ({ show: false, value: undefined, - options: [] + options: [], + width: '' }) }, moreSelect: { @@ -652,7 +659,7 @@ const handleTreeSelect = (selectedKeys: string | string[], info: any) => { } moreSelectValue.value = selectedValue; - + // // 保存选中节点的额外属性(如 lgtd、lttd 等) if (info && typeof info === 'object') { selectedNodeExtra.value = { @@ -683,11 +690,16 @@ const handleFocus = () => { // Handle focus }; -const filterOption = (input: string, option?: { label: string; value: string }) => { +const filterOption = ( + input: string, + option?: { label: string; value: string } +) => { if (!option) return false; const label = option.label?.toLowerCase() || ''; const value = option.value?.toLowerCase() || ''; - return label.includes(input.toLowerCase()) || value.includes(input.toLowerCase()); + return ( + label.includes(input.toLowerCase()) || value.includes(input.toLowerCase()) + ); }; // 文字提示容器 @@ -759,7 +771,6 @@ const emitAllValues = () => { } else { payload.scopeDate = []; } - emit('update-values', payload); }; diff --git a/frontend/src/modules/EnvironmentalQuality/TwoLayers/EnvironmentalQualityTwoLayers.vue b/frontend/src/modules/EnvironmentalQuality/TwoLayers/EnvironmentalQualityTwoLayers.vue index ac7acf40..e871f270 100644 --- a/frontend/src/modules/EnvironmentalQuality/TwoLayers/EnvironmentalQualityTwoLayers.vue +++ b/frontend/src/modules/EnvironmentalQuality/TwoLayers/EnvironmentalQualityTwoLayers.vue @@ -596,7 +596,7 @@ const handleSearch = () => { // console.log( typeOne.value ) // console.log( formState.dtinType ) // console.log(typeOne.value == 'all' && formState.dtinType !='') - // debugger + // const filters: any[] = [ formState.dataDimensionVal != 'all' ? { field: 'baseId', @@ -660,7 +660,7 @@ const handleSearch = () => { // 刷新表格 tableRef.value?.getList(filter) if (kong.value) { - // debugger + // fetchPieData() } kong.value = true @@ -781,7 +781,7 @@ watch( () => props.typeOne, (newVal) => { typeOne.value = newVal - // debugger + // } ) @@ -798,7 +798,7 @@ watch( () => formState.types, (newType, oldType) => { if (!formState.dateValues || newType === oldType) return - // debugger + // const currentValue: any = formState.dateValues if (newType === 'year') { diff --git a/frontend/src/modules/EnvironmentalQuality/TwoLayers/HJMZDTwoLays.vue b/frontend/src/modules/EnvironmentalQuality/TwoLayers/HJMZDTwoLays.vue index 250a3217..d89fd1b2 100644 --- a/frontend/src/modules/EnvironmentalQuality/TwoLayers/HJMZDTwoLays.vue +++ b/frontend/src/modules/EnvironmentalQuality/TwoLayers/HJMZDTwoLays.vue @@ -564,7 +564,7 @@ watch( if (!stcd) { return; } - // debugger + // tableRef.value.tableData = []; getCol({ stcd, startTime, endTime }); }, diff --git a/frontend/src/modules/EnvironmentalQuality/index.vue b/frontend/src/modules/EnvironmentalQuality/index.vue index 2d3c4279..d2c9a511 100644 --- a/frontend/src/modules/EnvironmentalQuality/index.vue +++ b/frontend/src/modules/EnvironmentalQuality/index.vue @@ -319,7 +319,7 @@ const initChart = (): Promise => { const getEchartsData = async () => { // 1. 格式验证 const currentValue = datetimePicker.value.value; - // debugger + // if (select.value.value === 'year') { // 年度模式:验证是否为 YYYY 格式(4位数字) if (!/^\d{4}$/.test(currentValue)) { @@ -361,7 +361,7 @@ const getEchartsData = async () => { if( ! baseid.value){ return } - // debugger + // let params = { "filter": { "logic": "and", @@ -439,7 +439,7 @@ const getEchartsData = async () => { ] }; console.log('请求参数:', params); - // debugger + // // 4. 调用API并处理数据 loading.value = true; try { @@ -687,7 +687,7 @@ const updateChartData = (currentLabel: string, lastYearLabel: string) => { if (barData) { // 新增:获取对应的 baseid 或 rstcd const selectedId = chartDataIdMap.value[dataIndex] || ''; - // debugger + // clickedBarData.value = { name: barData.name.replace('\n', ''), // 去除换行符 current: barData.current, diff --git a/frontend/src/modules/GYZLLB/index.vue b/frontend/src/modules/GYZLLB/index.vue index fbc8e841..91f70884 100644 --- a/frontend/src/modules/GYZLLB/index.vue +++ b/frontend/src/modules/GYZLLB/index.vue @@ -714,7 +714,7 @@ const getechartsdata = async (yearOne: string) => { stopAutoPlay(); return; } - // debugger + // // 缓存全量数据 cachedApiData.value = responseData; currentYear.value = yearOne; diff --git a/frontend/src/modules/chuixiangshuiwenChangeMod/index.vue b/frontend/src/modules/chuixiangshuiwenChangeMod/index.vue index 0f04e34d..fb8619e4 100644 --- a/frontend/src/modules/chuixiangshuiwenChangeMod/index.vue +++ b/frontend/src/modules/chuixiangshuiwenChangeMod/index.vue @@ -37,7 +37,7 @@ import SidePanelItem from '@/components/SidePanelItem/index.vue'; import { useJidiSelectEventStore } from '@/store/modules/jidiSelectEvent'; import { getChuiXiangShuiWenTreeStcd, getCxswList } from '@/api/sw'; import { useModelStore } from '@/store/modules/model'; -import { useMapModalStore } from '@/store/modules/mapModal'; +// import { useMapModalStore } from '@/store/modules/mapModal'; import { MapClass } from '@/components/gis/map.class'; const modelStore = useModelStore(); @@ -356,7 +356,6 @@ const selectOptions = async () => { const data = { filter, sort }; const res = await getChuiXiangShuiWenTreeStcd(data); let dataOne = res?.data?.data || res.data; - if (dataOne.length > 0) { const treeData = dataOne.map(item => { return { @@ -547,7 +546,7 @@ const initChart = () => { )}-${lastDay} 23:59:59`; console.log(endTime); modelStore.modalVisible = true; - modelStore.params.sttp = 'WT'; + modelStore.params.sttp = 'WTRV'; modelStore.params.enfc = '1'; modelStore.title = stnm; // modelStore.isBasicEdit = true; @@ -663,53 +662,53 @@ const updateChart = () => { chartInstance.setOption(option, { notMerge: true }); }; -const handleChartClick = (params: any) => { - if (!params || !params.seriesName) return; +// const handleChartClick = (params: any) => { +// if (!params || !params.seriesName) return; - const matchMonth = params.seriesName.match(/\d+/); - const monthNum = matchMonth ? parseInt(matchMonth[0]) : 1; +// const matchMonth = params.seriesName.match(/\d+/); +// const monthNum = matchMonth ? parseInt(matchMonth[0]) : 1; - const year = - typeof datetimePicker.value.value === 'string' - ? parseInt(datetimePicker.value.value) - : datetimePicker.value.value; +// const year = +// typeof datetimePicker.value.value === 'string' +// ? parseInt(datetimePicker.value.value) +// : datetimePicker.value.value; - const startTime = `${year}-${String(monthNum).padStart(2, '0')}-01 00:00:00`; - const lastDay = new Date(year, monthNum, 0).getDate(); - const endTime = `${year}-${String(monthNum).padStart( - 2, - '0' - )}-${lastDay} 23:59:59`; +// const startTime = `${year}-${String(monthNum).padStart(2, '0')}-01 00:00:00`; +// const lastDay = new Date(year, monthNum, 0).getDate(); +// const endTime = `${year}-${String(monthNum).padStart( +// 2, +// '0' +// )}-${lastDay} 23:59:59`; - const currentStcd = select.value.value; - let currentStnm = ''; +// const currentStcd = select.value.value; +// let currentStnm = ''; - select.value.options.forEach((station: any) => { - station.children?.forEach((child: any) => { - if (child.value === currentStcd) { - currentStnm = child.title; - } - }); - }); +// select.value.options.forEach((station: any) => { +// station.children?.forEach((child: any) => { +// if (child.value === currentStcd) { +// currentStnm = child.title; +// } +// }); +// }); - import('@/store/modules/model').then(({ useModelStore }) => { - import('@/components/MapModal/setting.config').then(({ handleTabs }) => { - const modelStore = useModelStore(); +// import('@/store/modules/model').then(({ useModelStore }) => { +// import('@/components/MapModal/setting.config').then(({ handleTabs }) => { +// const modelStore = useModelStore(); - modelStore.params = { - sttp: 'WT', - stcd: currentStcd, - titleName: currentStnm, - enfc: '1', - timeRange: [startTime, endTime] - } as any; +// modelStore.params = { +// sttp: 'WT', +// stcd: currentStcd, +// titleName: currentStnm, +// enfc: '1', +// timeRange: [startTime, endTime] +// } as any; - modelStore.title = currentStnm ? `${currentStnm} ` : ''; - modelStore.tabList = handleTabs(modelStore.params); - modelStore.modalVisible = true; - }); - }); -}; +// modelStore.title = currentStnm ? `${currentStnm} ` : ''; +// modelStore.tabList = handleTabs(modelStore.params); +// modelStore.modalVisible = true; +// }); +// }); +// }; // ==================== 生命周期和监听 ==================== @@ -750,19 +749,9 @@ watch( // }, // { deep: true } // ); -const handlePanelChange1 = (data: any, type: string) => { +const handlePanelChange1 = (data: any) => { console.log('当前所有控件状态:', data); if (data.moreSelect && data.datetime) { - if (type == 'click') { - const mapClass = MapClass.getInstance(); - mapClass.flyTopanto( - [ - Number(data.selectedNodeExtra.lgtd), - Number(data.selectedNodeExtra.lttd) - ], - 15 - ); - } year.value = data.datetime; fetchChartData(data.moreSelect, data.datetime); } else { @@ -772,6 +761,16 @@ const handlePanelChange1 = (data: any, type: string) => { selected.value = {}; showemit.value = false; } + if (data?.selectedNodeExtra?.lttd && data?.selectedNodeExtra?.lgtd) { + const mapClass = MapClass.getInstance(); + mapClass.flyTopanto( + [ + Number(data.selectedNodeExtra.lgtd), + Number(data.selectedNodeExtra.lttd) + ], + 15 + ); + } }; diff --git a/frontend/src/modules/churukushuiwenMod/index.vue b/frontend/src/modules/churukushuiwenMod/index.vue index 71ff0fb7..388895b7 100644 --- a/frontend/src/modules/churukushuiwenMod/index.vue +++ b/frontend/src/modules/churukushuiwenMod/index.vue @@ -52,6 +52,7 @@ import SidePanelItem from '@/components/SidePanelItem/index.vue'; import { getVmsstbprpt, inOutOneGetKendoListCust } from '@/api/sw'; import { useJidiSelectEventStore } from '@/store/modules/jidiSelectEvent'; import churukushuiwen from './churukushuiwen.vue'; +import { MapClass } from '@/components/gis/map.class'; // ==================== 组件基础配置 ==================== // 定义组件名(便于调试和递归) defineOptions({ @@ -608,10 +609,12 @@ const handleModalClose = () => { */ const handlePanelChange1 = (data: any, type: string) => { // TODO: 后续可扩展联动逻辑 - if (data.moreSelect) { + if (data.moreSelect && data.scopeDate) { paramsOne.value.value = data.moreSelect; - } - if (type == 'click') { + paramsOne.value.tm = data.scopeDate; + fetchChartData(); + } + if (data?.selectedNodeExtra?.lttd && data?.selectedNodeExtra?.lgtd) { const mapClass = MapClass.getInstance(); mapClass.flyTopanto( [ @@ -621,8 +624,6 @@ const handlePanelChange1 = (data: any, type: string) => { 13 ); } - paramsOne.value.tm = data.scopeDate; - fetchChartData(); }; /** @@ -695,7 +696,6 @@ const getselsectData = async () => { console.log('res', res); const data = res?.data?.data || res?.data; const obj: any = {}; - if (data) { // 将扁平数据转换为树形结构(按基地分组) data.map(e => { @@ -733,7 +733,6 @@ const getselsectData = async () => { return indexA - indexB; }); console.log('treeData', treeData); - // 更新下拉框选项 select.value.options = treeData; diff --git a/frontend/src/modules/fishSurvey/FishChangeTu/index.vue b/frontend/src/modules/fishSurvey/FishChangeTu/index.vue new file mode 100644 index 00000000..b2c4c93f --- /dev/null +++ b/frontend/src/modules/fishSurvey/FishChangeTu/index.vue @@ -0,0 +1,338 @@ + + + + + diff --git a/frontend/src/modules/fishSurvey/FishIntroduce/index.vue b/frontend/src/modules/fishSurvey/FishIntroduce/index.vue index 220c21f7..e910b751 100644 --- a/frontend/src/modules/fishSurvey/FishIntroduce/index.vue +++ b/frontend/src/modules/fishSurvey/FishIntroduce/index.vue @@ -1,76 +1,98 @@ \ No newline at end of file + diff --git a/frontend/src/modules/fishSurvey/FishVideo/index.vue b/frontend/src/modules/fishSurvey/FishVideo/index.vue index 324687dd..7c4a9546 100644 --- a/frontend/src/modules/fishSurvey/FishVideo/index.vue +++ b/frontend/src/modules/fishSurvey/FishVideo/index.vue @@ -1,76 +1,144 @@ \ No newline at end of file + diff --git a/frontend/src/modules/fishSurvey/SurveyQingKuang/DeviceTableModal.vue b/frontend/src/modules/fishSurvey/SurveyQingKuang/DeviceTableModal.vue new file mode 100644 index 00000000..68e8558b --- /dev/null +++ b/frontend/src/modules/fishSurvey/SurveyQingKuang/DeviceTableModal.vue @@ -0,0 +1,407 @@ + + + + + diff --git a/frontend/src/modules/fishSurvey/SurveyQingKuang/index.vue b/frontend/src/modules/fishSurvey/SurveyQingKuang/index.vue new file mode 100644 index 00000000..a823e004 --- /dev/null +++ b/frontend/src/modules/fishSurvey/SurveyQingKuang/index.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/frontend/src/modules/fishSurvey/ZhuanZhiIntroduce/index.vue b/frontend/src/modules/fishSurvey/ZhuanZhiIntroduce/index.vue index 24c07ee7..d2bca5f2 100644 --- a/frontend/src/modules/fishSurvey/ZhuanZhiIntroduce/index.vue +++ b/frontend/src/modules/fishSurvey/ZhuanZhiIntroduce/index.vue @@ -1,75 +1,111 @@ \ No newline at end of file + diff --git a/frontend/src/modules/guoyusheshijiansheqingkuang/ModalPage/index.vue b/frontend/src/modules/guoyusheshijiansheqingkuang/ModalPage/index.vue index 3806a835..aec41654 100644 --- a/frontend/src/modules/guoyusheshijiansheqingkuang/ModalPage/index.vue +++ b/frontend/src/modules/guoyusheshijiansheqingkuang/ModalPage/index.vue @@ -308,7 +308,7 @@ const buildFilter = () => { // 处理排序变化 const handleSortChange = (info: { field: string; order: string | null }) => { - // debugger + // if (info.field && info.order) { sortState.value = info; } else { @@ -356,6 +356,8 @@ const handleViewDetail = (record: any, type: string) => { modelStore.params.sttp = lastValue modelStore.title = record.stnm; modelStore.params.stcd = record.stcd; + modelStore.params.bldsttCcode = record.bldsttCcode; + // } // console.log('【查看详情】', record) }; diff --git a/frontend/src/modules/qixidiliuliangbianhua/index.vue b/frontend/src/modules/qixidiliuliangbianhua/index.vue index cb30c56f..8fff3e8e 100644 --- a/frontend/src/modules/qixidiliuliangbianhua/index.vue +++ b/frontend/src/modules/qixidiliuliangbianhua/index.vue @@ -609,13 +609,13 @@ const getselsectData = async () => { value: item.stcd }; }); - // debugger + // }; const convertDateRange = (dateRange: string[]) => { if (!dateRange || dateRange.length !== 2) { return null; } - // debugger + // const [startStr, endStr] = dateRange; diff --git a/frontend/src/modules/qixidishuiwenbianhua/index.vue b/frontend/src/modules/qixidishuiwenbianhua/index.vue index 42cb222a..08100bb2 100644 --- a/frontend/src/modules/qixidishuiwenbianhua/index.vue +++ b/frontend/src/modules/qixidishuiwenbianhua/index.vue @@ -514,7 +514,7 @@ const convertDateRange = (dateRange: string[]) => { if (!dateRange || dateRange.length !== 2) { return null; } - // debugger + // const [startStr, endStr] = dateRange; @@ -634,7 +634,7 @@ const getselsectData = async () => { value: item.stcd }; }); - // debugger + // }; //// watch( diff --git a/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xianZhiYanChenBianHua/index.vue b/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xianZhiYanChenBianHua/index.vue index b1e98f89..2de69007 100644 --- a/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xianZhiYanChenBianHua/index.vue +++ b/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xianZhiYanChenBianHua/index.vue @@ -170,7 +170,7 @@ const chartRef = ref(); // 处理图表点击事件 const handleChartClick = (params: any) => { - // debugger + // console.log('点击数据点:', params); const { name, value, data } = params; modelStore.modalVisible = true; diff --git a/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFenBu/index.vue b/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFenBu/index.vue index 7245ee49..30ae4cb3 100644 --- a/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFenBu/index.vue +++ b/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFenBu/index.vue @@ -404,7 +404,7 @@ const fetchData = async () => { }); data.value = processedData; - // debugger + // // 提取唯一的基地名称作为 X 轴数据 echartsXData.value = [ ...new Set(processedData.map(item => item.basename)) diff --git a/frontend/src/modules/shengtaidabiaoMod/TwoLayer/ShengTaiLiuLiangDaBQKTwoLayer.vue b/frontend/src/modules/shengtaidabiaoMod/TwoLayer/ShengTaiLiuLiangDaBQKTwoLayer.vue index a7921bb2..1791ddf0 100644 --- a/frontend/src/modules/shengtaidabiaoMod/TwoLayer/ShengTaiLiuLiangDaBQKTwoLayer.vue +++ b/frontend/src/modules/shengtaidabiaoMod/TwoLayer/ShengTaiLiuLiangDaBQKTwoLayer.vue @@ -37,6 +37,7 @@ :allow-clear="false" format="YYYY-MM-DD" style="width: 260px" + :presets="DateSetting.RangeButton.days1" /> @@ -103,7 +104,7 @@ import { useJidiSelectEventStore } from '@/store/modules/jidiSelectEvent'; import { dayGetKendoListCust, hourGetKendoListCust } from '@/api/stll'; import BasicTable from '@/components/BasicTable/index.vue'; import { useModelStore } from '@/store/modules/model'; - +import { DateSetting } from '@/utils/enumeration'; const modelStore = useModelStore(); const props = defineProps<{ options?: any[]; diff --git a/frontend/src/modules/shengtaidabiaoMod/index.vue b/frontend/src/modules/shengtaidabiaoMod/index.vue index 7cdf61dc..5c9c4353 100644 --- a/frontend/src/modules/shengtaidabiaoMod/index.vue +++ b/frontend/src/modules/shengtaidabiaoMod/index.vue @@ -244,7 +244,7 @@ const getData = async () => { // 根据API响应结构规范处理数据 if (res.data && res.data.list) { const apiList = res.data.list; - // debugger + // // 只使用前两条数据(type: 1 和 type: 2) if (apiList && apiList.length > 0) { dataArr.value = apiList.slice(0, 2).map((item: any) => ({ @@ -311,7 +311,7 @@ const getcont = async () => { if (list) { titleData.value = list } - // debugger + // }; // 页面加载时执行的逻辑 onMounted(() => { diff --git a/frontend/src/modules/shengtaidabiaoTwoMod/index.vue b/frontend/src/modules/shengtaidabiaoTwoMod/index.vue index f384b4f0..dd15352e 100644 --- a/frontend/src/modules/shengtaidabiaoTwoMod/index.vue +++ b/frontend/src/modules/shengtaidabiaoTwoMod/index.vue @@ -307,7 +307,7 @@ const initChart = () => { const handleChartClick = (params: any) => { const categoryName = params.name; const currentIndex = params.dataIndex; - // debugger + // // 设置弹框标题 detailModalTitle.value = @@ -318,7 +318,7 @@ const handleChartClick = (params: any) => { // 获取当前点击项的详细数据 const baseId = mode.value === 'top' ? chartData.value.baseIds[currentIndex] : undefined; const qecPerformance = mode.value === 'left' ? chartData.value.qecPerformances[currentIndex] : undefined; - // debugger + // const currentItem = { baseId: baseId, @@ -505,7 +505,7 @@ const getcont = async () => { if (list) { titleData.value = list; } - // debugger + // }; // 页面加载时执行的逻辑 onMounted(() => { diff --git a/frontend/src/modules/shuiWenNianNeiFenBu/index.vue b/frontend/src/modules/shuiWenNianNeiFenBu/index.vue index 42ec49b6..adec0042 100644 --- a/frontend/src/modules/shuiWenNianNeiFenBu/index.vue +++ b/frontend/src/modules/shuiWenNianNeiFenBu/index.vue @@ -224,6 +224,7 @@ const getselectData = async () => { // 合并结果并设置选项 select.value.options = [...dataMapNameArr, ...otherArr]; + // // if (baseid.value == 'all') { // select.value.value = '008640202300001021' @@ -536,23 +537,23 @@ onBeforeUnmount(() => { //监听子组件的数据变化 const handlePanelChange1 = (data: any, type: string) => { console.log('当前所有控件状态:', data); - if (type == 'click') { + // 当选择器或日期变化时,重新加载图表数据 + if (data.moreSelect || data.datetime) { + select.value.value = data.moreSelect; + datetimePicker.value.value = data.datetime; + // + getshuiwenList(); + } + if (data?.selectedNodeExtra?.lttd && data?.selectedNodeExtra?.lgtd) { const mapClass = MapClass.getInstance(); mapClass.flyTopanto( [ Number(data.selectedNodeExtra.lgtd), Number(data.selectedNodeExtra.lttd) ], - 15 + 15 ); } - // 当选择器或日期变化时,重新加载图表数据 - if (data.moreSelect || data.datetime) { - select.value.value = data.moreSelect; - datetimePicker.value.value = data.datetime; - // debugger - getshuiwenList(); - } }; const baseid = ref(''); watch( diff --git a/frontend/src/modules/shuizhijiancegongzuoQK/index.vue b/frontend/src/modules/shuizhijiancegongzuoQK/index.vue index 6732ea46..d655156f 100644 --- a/frontend/src/modules/shuizhijiancegongzuoQK/index.vue +++ b/frontend/src/modules/shuizhijiancegongzuoQK/index.vue @@ -208,7 +208,7 @@ const getDataList = async () => { } // const params = [data1, data2] const res1 = await msstbprptGetKendoList(data1); - // debugger + // let finalData = facilities.value.map((item) => ({ ...item, count: 0 })) if (res1.data) { const { data } = res1 @@ -220,7 +220,7 @@ const getDataList = async () => { }) } console.log(finalData) - // debugger/ + // / const res2 = await msstbprptGetKendoList(data2); if (res2.data) { const responseData = res2?.data?.data @@ -231,7 +231,7 @@ const getDataList = async () => { } facilities.value = finalData console.log(finalData) - // debugger + // } catch (error) { console.error('获取数据失败:', error); } finally { diff --git a/frontend/src/modules/stllyanchengChangeMod/index.vue b/frontend/src/modules/stllyanchengChangeMod/index.vue index a8882c91..905d6795 100644 --- a/frontend/src/modules/stllyanchengChangeMod/index.vue +++ b/frontend/src/modules/stllyanchengChangeMod/index.vue @@ -166,7 +166,7 @@ const getSelect = async () => { } if (data && data.length > 0) { - // debugger; + // ; select.value.value = data[0].wbsCode; selectData.value = data[0].wbsCode; // 同步选中第一个 select.value.options = data.map(item => ({ diff --git a/frontend/src/store/modules/model.ts b/frontend/src/store/modules/model.ts index 58cc6681..38fe7274 100644 --- a/frontend/src/store/modules/model.ts +++ b/frontend/src/store/modules/model.ts @@ -34,6 +34,7 @@ export const useModelStore = defineStore('model', () => { sttpMap?: string; // 新增:站点类型映射 dtinType?: string; bldstt: string; + bldsttCcode: string; }>({ sttp: 'eng', stcd: '', @@ -45,7 +46,8 @@ export const useModelStore = defineStore('model', () => { sttpCode: '', sttpMap: '', dtinType: '', - bldstt: '' + bldstt: '', + bldsttCcode:'' }); const filter = ref({ stllgzlx: '', // 生态流量 - 规则类型 diff --git a/frontend/src/views/fish-survey/fishSurveyZhuanZhi.vue b/frontend/src/views/fish-survey/fishSurveyZhuanZhi.vue index 527d7a48..040cfe26 100644 --- a/frontend/src/views/fish-survey/fishSurveyZhuanZhi.vue +++ b/frontend/src/views/fish-survey/fishSurveyZhuanZhi.vue @@ -1,9 +1,73 @@ - + diff --git a/frontend/src/views/shiPinJianKong/components/LiveVideoBox.vue b/frontend/src/views/shiPinJianKong/components/LiveVideoBox.vue index a038dcf4..269ba916 100644 --- a/frontend/src/views/shiPinJianKong/components/LiveVideoBox.vue +++ b/frontend/src/views/shiPinJianKong/components/LiveVideoBox.vue @@ -14,6 +14,13 @@
+ +
+
+ +
数据源错误,无法加载视频
+
+
@@ -31,6 +38,9 @@ import videojs from 'video.js'; import 'video.js/dist/video-js.css'; const baseUrl = import.meta.env.VITE_APP_ATTACHMENT_URL; +// 错误提示显示状态 +const showError = ref(false); + // 注册 HLS 支持(video.js 8.x 内置了 HLS 支持) interface VideoData { @@ -89,6 +99,11 @@ const initPlayer = () => { player.dispose(); player = null; } + + // 重试计数器(用于限制重试次数) + let retryCount = 0; + const maxRetries = 5; + try { // 创建 video 元素 const videoElement = document.createElement('video'); @@ -195,36 +210,55 @@ const initPlayer = () => { const error = player.error(); console.error('播放器错误:', error); - // 保持最后一帧画面,不显示错误提示 - // 在后台静默重试 - let retryCount = 0; - const maxRetries = 10; + // 检查是否已达到最大重试次数 + if (retryCount >= maxRetries) { + console.warn(`已达到最大重试次数(${maxRetries}次),停止重试`); + // 显示自定义错误提示层 + showError.value = true; + return; + } - const attemptReload = () => { - if (retryCount < maxRetries && player && videoUrl.value) { - retryCount++; - setTimeout(() => { - try { - player.src({ - src: videoUrl.value, - type: videoType // 指定视频类型 - }); - player.load(); - player.play(); - } catch (e) { - if (retryCount < maxRetries) { - attemptReload(); + // 增加重试计数 + retryCount++; + console.log(`视频加载失败,正在进行第 ${retryCount}/${maxRetries} 次重试...`); + + // 立即显示自定义错误提示层 + showError.value = true; + + // 延迟后重试 + setTimeout(() => { + try { + if (player && videoUrl.value) { + // 隐藏错误提示层(重试时) + showError.value = false; + player.src({ + src: videoUrl.value, + type: videoType + }); + player.load(); + player.play(); + } + } catch (e) { + console.error('重试加载视频失败:', e); + // 如果重试失败且未达到最大次数,继续重试 + if (retryCount < maxRetries) { + setTimeout(() => { + if (player) { + player.error(); // 触发下一次错误处理 } - } - }, 3000); + }, 100); + } } - }; - - attemptReload(); + }, 3000); }); // 监听加载完成 - player.on('loadeddata', () => {}); + player.on('loadeddata', () => { + // 加载成功时重置重试计数器 + retryCount = 0; + // 隐藏错误提示 + showError.value = false; + }); // 监听播放状态 player.on('play', () => {}); @@ -339,6 +373,40 @@ onUnmounted(() => { } } + .custom-error-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0); + display: flex; + align-items: center; + justify-content: center; + z-index: 10; + + .error-content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + .error-icon { + font-size: 48px; + margin-bottom: 12px; + opacity: 0.5; + color: #999; + } + + .error-text { + font-size: 14px; + color: #fff; + text-align: center; + margin-top: 12px; + } + } + } + .video-empty { width: 100%; height: 100%; diff --git a/frontend/src/views/shuiZhiJianCe/shuiHuanJingZhiLiangZhuangKuang.vue b/frontend/src/views/shuiZhiJianCe/shuiHuanJingZhiLiangZhuangKuang.vue index 33661117..00b92a16 100644 --- a/frontend/src/views/shuiZhiJianCe/shuiHuanJingZhiLiangZhuangKuang.vue +++ b/frontend/src/views/shuiZhiJianCe/shuiHuanJingZhiLiangZhuangKuang.vue @@ -12,7 +12,7 @@ watch( () => JidiSelectEventStore.selectedItem, (newVal) => { console.log(newVal); - // debugger + // wbsCode.value = newVal.wbsCode; }, { deep: true, immediate: true }