From 0f98959722c4074fbd4c8986455b7707cac5c219 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, 20 Aug 2026 09:03:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=AE=A1=E7=90=86=E5=AD=90?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F-=E7=9B=91=E6=B5=8B=E6=95=B0=E6=8D=AE-?= =?UTF-8?q?=E9=99=A4=E4=BA=86=E9=B1=BC=E7=B1=BB=E6=94=BE=E9=B1=BC=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=9A=84=E9=A1=B5=E9=9D=A2=EF=BC=8C=E5=88=AB=E7=9A=84?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=88=A0=E6=94=B9=EF=BC=8C=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=88=A0=EF=BC=8C=E6=9F=A5=E7=9C=8B=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/DataQueryMenuModule/index.ts | 48 + .../src/components/BasicTable/index.vue | 17 +- .../FishData/EditFishDataAutoModal.vue | 4 +- .../monitorData/FishData/FishDataManual.vue | 456 ---------- .../monitorData/FishData/FishDataSearch.vue | 57 +- .../src/views/monitorData/FishData/index.vue | 722 ++++++++++++++- .../FishRelease/EditFishReleaseModal.vue | 28 + .../FishRelease/FishReleaseDetailModal.vue | 420 +++++++++ .../FishRelease/FishReleaseSearch.vue | 5 + .../views/monitorData/FishRelease/index.vue | 49 + .../FlowData/EditFlowDataModal.vue | 400 +++++++++ .../monitorData/FlowData/FlowDataSearch.vue | 29 +- .../src/views/monitorData/FlowData/index.vue | 157 +++- .../FlowStation/FlowStationSearch.vue | 29 +- .../views/monitorData/FlowStation/index.vue | 83 +- .../SurfaceTemp/SurfaceTempSearch.vue | 29 +- .../views/monitorData/SurfaceTemp/index.vue | 83 +- .../VerticalTemp/VerticalTempSearch.vue | 13 + .../views/monitorData/VerticalTemp/index.vue | 61 +- .../monitorData/WaterData/WaterDataSearch.vue | 29 +- .../src/views/monitorData/WaterData/index.vue | 85 +- .../EditFishSurveyDataModal.vue | 841 ++++++++++++++++++ .../fishSurveyData/fishSurveyDataSearch.vue | 300 +++++++ .../index.vue} | 118 ++- frontend-sjgl/src/views/system/user/index.vue | 33 +- frontend-sjtb/src/views/system/user/index.vue | 34 +- .../MapModal/components/BasicInfo.vue | 101 +-- frontend/src/components/MapModal/index.vue | 11 +- frontend/src/modules/Ysdwjc/index.vue | 1 - .../chuixiangshuiwenChangeMod/index.vue | 1 - ...eixingzuchengjijieruqingkuangTwoLayers.vue | 5 +- .../qixidiheduanjianceqingkuangEJ/index.vue | 1 - .../shuiwenjiancegongzuoEJ.vue | 1 - frontend/src/modules/waterQuality/index.vue | 368 ++------ .../monitorData/FishData/FishDataAuto.vue | 404 --------- .../monitorData/FishData/FishDataManual.vue | 369 -------- .../monitorData/FishData/FishDataSearch.vue | 19 +- .../components/monitorData/FishData/index.vue | 577 +++++++++++- frontend/src/views/system/user/index.vue | 28 +- 39 files changed, 4190 insertions(+), 1826 deletions(-) delete mode 100644 frontend-sjgl/src/views/monitorData/FishData/FishDataManual.vue create mode 100644 frontend-sjgl/src/views/monitorData/FishRelease/EditFishReleaseModal.vue create mode 100644 frontend-sjgl/src/views/monitorData/FishRelease/FishReleaseDetailModal.vue create mode 100644 frontend-sjgl/src/views/monitorData/FlowData/EditFlowDataModal.vue create mode 100644 frontend-sjgl/src/views/monitorData/fishSurveyData/EditFishSurveyDataModal.vue create mode 100644 frontend-sjgl/src/views/monitorData/fishSurveyData/fishSurveyDataSearch.vue rename frontend-sjgl/src/views/monitorData/{FishData/FishDataAuto.vue => fishSurveyData/index.vue} (80%) delete mode 100644 frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/FishDataAuto.vue delete mode 100644 frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/FishDataManual.vue diff --git a/frontend-sjgl/src/api/DataQueryMenuModule/index.ts b/frontend-sjgl/src/api/DataQueryMenuModule/index.ts index 63501e8d..cb4498e5 100644 --- a/frontend-sjgl/src/api/DataQueryMenuModule/index.ts +++ b/frontend-sjgl/src/api/DataQueryMenuModule/index.ts @@ -114,6 +114,24 @@ export function getFlowDataMonthList(data) { data }); } + +// 生态流量运行数据 - 删除 +export function deleteFlowDataInfo(data) { + return request({ + url: '/eq/data/removeKendoByIds', + method: 'post', + data + }); +} + +// 生态流量运行数据 - 修改 +export function updateEqRsData(data) { + return request({ + url: '/eq/data/updateEqRsData', + method: 'post', + data + }); +} // 水质监测数据 - 断面 export function getWaterDataSectionList(data) { return request({ @@ -331,6 +349,36 @@ export function deleteFpssrlRInfo(data) { }); } +// 过鱼设施AI自动数据 - 分页查询 +export function getFpssrlAiRPageList(data) { + return request({ + url: '/fp/query/qgc/GetKendoListCustAI', + method: 'post', + data + }); +} + +// 过鱼设施AI自动数据 - 编辑 +export function updateFpssrlAiRInfo(data) { + return request({ + url: '/base/fpssrlAiR/update', + method: 'post', + headers: { + 'Content-Type': 'multipart/form-data' + }, + data + }); +} + +// 过鱼设施AI自动数据 - 删除 +export function deleteFpssrlAiRInfo(data) { + return request({ + url: '/base/fpssrlAiR/delete', + method: 'post', + data + }); +} + // 鱼类 放鱼 export function getFishReleaseList(data) { return request({ diff --git a/frontend-sjgl/src/components/BasicTable/index.vue b/frontend-sjgl/src/components/BasicTable/index.vue index 716cc092..88ab0ae9 100644 --- a/frontend-sjgl/src/components/BasicTable/index.vue +++ b/frontend-sjgl/src/components/BasicTable/index.vue @@ -54,7 +54,7 @@ interface Props { data?: any[]; enableRowSelection?: boolean; enableRowHighlight?: boolean; // 是否启用行点击高亮 - rowKey?: string; + rowKey?: string | ((record: any) => string | number); searchParams?: Record; defaultPageSize?: number; isPage?: boolean; @@ -663,7 +663,20 @@ const enhancedColumns = computed(() => { title: String(text) }, { - default: () => String(text) + default: () => + h( + 'span', + { + style: { + display: 'inline-block', + maxWidth: '100%', + overflow: 'hidden', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap' + } + }, + String(text) + ) } ) ); diff --git a/frontend-sjgl/src/views/monitorData/FishData/EditFishDataAutoModal.vue b/frontend-sjgl/src/views/monitorData/FishData/EditFishDataAutoModal.vue index 7e1219bf..1b9bdd03 100644 --- a/frontend-sjgl/src/views/monitorData/FishData/EditFishDataAutoModal.vue +++ b/frontend-sjgl/src/views/monitorData/FishData/EditFishDataAutoModal.vue @@ -210,7 +210,7 @@ - + - + -
- - - - - - - - - -
- -
-
- - - -
- -
-
- - - - - - - - -
- - - - diff --git a/frontend-sjgl/src/views/monitorData/FishData/FishDataSearch.vue b/frontend-sjgl/src/views/monitorData/FishData/FishDataSearch.vue index f1312a13..c5de8cbd 100644 --- a/frontend-sjgl/src/views/monitorData/FishData/FishDataSearch.vue +++ b/frontend-sjgl/src/views/monitorData/FishData/FishDataSearch.vue @@ -57,8 +57,10 @@ @@ -77,8 +79,8 @@ const emit = defineEmits<{ (e: 'export-btn'): void; (e: 'reset', values: any): void; (e: 'search-finish', values: any): void; - (e: 'add'): void; (e: 'seeEdit'): void; + (e: 'batch-delete'): void; }>(); const basicSearchRef = ref(); @@ -86,13 +88,13 @@ const btnLoading = ref(false); const props = defineProps<{ exportLoading?: boolean; - mway: string; + selectedCount?: number; }>(); const initSearchData = { rvcd: 'all', rstcd: null, stcd: '0086601020VP000006', - mway: props.mway + mway: '1' }; const searchData = ref({ ...initSearchData }); @@ -140,6 +142,22 @@ const searchList: any = computed(() => [ value: item.stcd })) }, + { + type: 'Radio', + name: 'mway', + label: '数据类型', + width: 140, + options: [ + { + label: '人工', + value: '1' + }, + { + label: '自动', + value: '2' + } + ] + }, { type: 'custom', name: 'jcdt', @@ -157,15 +175,13 @@ const onSearchFinish = (values: any) => { const exportBtn = () => { emit('export-btn'); }; - -const handleAdd = () => { - emit('add'); -}; - const seeEdit = () => { emit('seeEdit'); }; -const initCrossSectionList = (params, setDefault = false) => { +const batchDelete = () => { + emit('batch-delete'); +}; +const initCrossSectionList = params => { const filters = []; if (params) { if (params.rvcd != '' && params.rvcd != 'all') { @@ -185,13 +201,6 @@ const initCrossSectionList = (params, setDefault = false) => { }); } } - // 根据人工/自动站过滤过鱼设施 - filters.push({ - field: 'mway', - operator: 'eq', - dataType: 'string', - value: props.mway - }); crossSectionListLoading.value = true; getFishReleaseMonitorSectionList({ filter: { @@ -202,15 +211,6 @@ const initCrossSectionList = (params, setDefault = false) => { }).then(res => { if (res.data?.data) { crossSectionList.value = res.data?.data; - // 首次加载时默认选中第一条过鱼设施 - if (setDefault && crossSectionList.value.length > 0) { - const firstStcd = crossSectionList.value[0].stcd; - initSearchData.stcd = firstStcd; - if (basicSearchRef.value?.formData) { - basicSearchRef.value.formData.stcd = firstStcd; - } - handleSearchFinish({ ...initSearchData, stcd: firstStcd }); - } } crossSectionListLoading.value = false; }); @@ -261,8 +261,9 @@ onMounted(() => { min: `${now.subtract(5, 'year').format('YYYY-MM-DD')} 00:00:00`, max: `${now.format('YYYY-MM-DD')} 23:59:59` }; - // 首次加载:请求设施列表后默认选中第一条并触发搜索 - initCrossSectionList(undefined, true); + initCrossSectionList(); + // 使用 handleSearchFinish 确保包含 jcdt 等完整参数 + handleSearchFinish({ ...initSearchData }); }); diff --git a/frontend-sjgl/src/views/monitorData/FishData/index.vue b/frontend-sjgl/src/views/monitorData/FishData/index.vue index 34aae4f5..4473c69a 100644 --- a/frontend-sjgl/src/views/monitorData/FishData/index.vue +++ b/frontend-sjgl/src/views/monitorData/FishData/index.vue @@ -1,22 +1,697 @@ - +} diff --git a/frontend-sjgl/src/views/monitorData/FishRelease/EditFishReleaseModal.vue b/frontend-sjgl/src/views/monitorData/FishRelease/EditFishReleaseModal.vue new file mode 100644 index 00000000..70a57045 --- /dev/null +++ b/frontend-sjgl/src/views/monitorData/FishRelease/EditFishReleaseModal.vue @@ -0,0 +1,28 @@ + + + diff --git a/frontend-sjgl/src/views/monitorData/FishRelease/FishReleaseDetailModal.vue b/frontend-sjgl/src/views/monitorData/FishRelease/FishReleaseDetailModal.vue new file mode 100644 index 00000000..e847e317 --- /dev/null +++ b/frontend-sjgl/src/views/monitorData/FishRelease/FishReleaseDetailModal.vue @@ -0,0 +1,420 @@ + + + diff --git a/frontend-sjgl/src/views/monitorData/FishRelease/FishReleaseSearch.vue b/frontend-sjgl/src/views/monitorData/FishRelease/FishReleaseSearch.vue index 53684e85..971248f4 100644 --- a/frontend-sjgl/src/views/monitorData/FishRelease/FishReleaseSearch.vue +++ b/frontend-sjgl/src/views/monitorData/FishRelease/FishReleaseSearch.vue @@ -59,6 +59,7 @@ @@ -97,6 +98,7 @@ const emit = defineEmits<{ (e: 'export-btn'): void; (e: 'reset', values: any): void; (e: 'search-finish', values: any): void; + (e: 'seeEdit'): void; }>(); const basicSearchRef = ref(); @@ -157,6 +159,9 @@ const onSearchFinish = (values: any) => { const exportBtn = () => { emit('export-btn'); }; +const seeEdit = () => { + emit('seeEdit'); +}; const onValuesChange = (changedValues: any, allValues: any) => { handleValuesChange(changedValues, allValues); diff --git a/frontend-sjgl/src/views/monitorData/FishRelease/index.vue b/frontend-sjgl/src/views/monitorData/FishRelease/index.vue index ff145756..f09d6eff 100644 --- a/frontend-sjgl/src/views/monitorData/FishRelease/index.vue +++ b/frontend-sjgl/src/views/monitorData/FishRelease/index.vue @@ -5,6 +5,7 @@ @export-btn="exportBtn" @search-finish="onSearchFinish" @reset="onReset" + @seeEdit="handleSeeEdit" :exportLoading="exportLoading" ref="searchRef" /> @@ -19,13 +20,36 @@ sort: sort }" > + + + + + + + diff --git a/frontend-sjgl/src/views/monitorData/FlowData/FlowDataSearch.vue b/frontend-sjgl/src/views/monitorData/FlowData/FlowDataSearch.vue index 01440908..56097142 100644 --- a/frontend-sjgl/src/views/monitorData/FlowData/FlowDataSearch.vue +++ b/frontend-sjgl/src/views/monitorData/FlowData/FlowDataSearch.vue @@ -63,6 +63,14 @@ @@ -78,13 +86,22 @@ const emit = defineEmits<{ (e: 'export-btn'): void; (e: 'reset', values: any): void; (e: 'search-finish', values: any): void; + (e: 'seeEdit'): void; + (e: 'batch-delete'): void; }>(); const basicSearchRef = ref(); const btnLoading = ref(false); -const props = defineProps<{ - exportLoading?: boolean; -}>(); +const props = withDefaults( + defineProps<{ + exportLoading?: boolean; + selectedCount?: number; + showBatchDelete?: boolean; + }>(), + { + showBatchDelete: true + } +); const initSearchData = { rvcd: 'all', @@ -185,6 +202,12 @@ const onSearchFinish = (values: any) => { const exportBtn = () => { emit('export-btn'); }; +const seeEdit = () => { + emit('seeEdit'); +}; +const batchDelete = () => { + emit('batch-delete'); +}; const onValuesChange = (changedValues: any, allValues: any) => { handleValuesChange(changedValues, allValues); diff --git a/frontend-sjgl/src/views/monitorData/FlowData/index.vue b/frontend-sjgl/src/views/monitorData/FlowData/index.vue index 0b30103f..be0c05cf 100644 --- a/frontend-sjgl/src/views/monitorData/FlowData/index.vue +++ b/frontend-sjgl/src/views/monitorData/FlowData/index.vue @@ -5,6 +5,10 @@ @export-btn="exportBtn" @search-finish="onSearchFinish" @reset="onReset" + @seeEdit="handleSeeEdit" + @batch-delete="handleBatchDelete" + :show-batch-delete="currentSearchParams.timeScale === 'tm'" + :selected-count="selectedRowKeys.length" :exportLoading="exportLoading" ref="searchRef" /> @@ -12,6 +16,7 @@ + + + + + + + + + + diff --git a/frontend-sjgl/src/views/monitorData/fishSurveyData/fishSurveyDataSearch.vue b/frontend-sjgl/src/views/monitorData/fishSurveyData/fishSurveyDataSearch.vue new file mode 100644 index 00000000..c09002b2 --- /dev/null +++ b/frontend-sjgl/src/views/monitorData/fishSurveyData/fishSurveyDataSearch.vue @@ -0,0 +1,300 @@ + + + + + diff --git a/frontend-sjgl/src/views/monitorData/FishData/FishDataAuto.vue b/frontend-sjgl/src/views/monitorData/fishSurveyData/index.vue similarity index 80% rename from frontend-sjgl/src/views/monitorData/FishData/FishDataAuto.vue rename to frontend-sjgl/src/views/monitorData/fishSurveyData/index.vue index 32ff0de2..3c91c891 100644 --- a/frontend-sjgl/src/views/monitorData/FishData/FishDataAuto.vue +++ b/frontend-sjgl/src/views/monitorData/fishSurveyData/index.vue @@ -1,25 +1,28 @@ diff --git a/frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/FishDataManual.vue b/frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/FishDataManual.vue deleted file mode 100644 index b69f5574..00000000 --- a/frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/FishDataManual.vue +++ /dev/null @@ -1,369 +0,0 @@ - - - - diff --git a/frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/FishDataSearch.vue b/frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/FishDataSearch.vue index de348c95..b33493e8 100644 --- a/frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/FishDataSearch.vue +++ b/frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/FishDataSearch.vue @@ -80,13 +80,12 @@ const btnLoading = ref(false); const props = defineProps<{ exportLoading?: boolean; - mway: string; }>(); const initSearchData = { rvcd: 'all', rstcd: null, stcd: '0086601020VP000006', - mway: props.mway + mway: '1' }; const searchData = ref({ ...initSearchData }); @@ -134,6 +133,22 @@ const searchList: any = computed(() => [ value: item.stcd })) }, + { + type: 'Radio', + name: 'mway', + label: '数据类型', + width: 140, + options: [ + { + label: '人工', + value: '1' + }, + { + label: '自动', + value: '2' + } + ] + }, { type: 'custom', name: 'jcdt', diff --git a/frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/index.vue b/frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/index.vue index 42facee3..421d1faa 100644 --- a/frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/index.vue +++ b/frontend/src/views/DataQueryMenuModule/components/monitorData/FishData/index.vue @@ -1,42 +1,551 @@ - - + diff --git a/frontend/src/views/system/user/index.vue b/frontend/src/views/system/user/index.vue index 1dc3931d..10a2c004 100644 --- a/frontend/src/views/system/user/index.vue +++ b/frontend/src/views/system/user/index.vue @@ -47,6 +47,12 @@ const dialog = ref(false); const treeRef = ref(); const fishTreeRef = ref(); const infoForm = ref(); +//所属组织树型下拉框字段映射 +const treeSelectProps = { + value: 'id', + label: 'orgname', + children: 'childList' +}; //获取企业树形信息 const treeloading = ref(true); function getTree() { @@ -99,7 +105,8 @@ function addClick() { nickname: '', email: '', phone: '', - roleinfo: [] + roleinfo: [], + orgid: '' }; getrole(); } @@ -178,7 +185,8 @@ const info = ref({ nickname: '', email: '', phone: '', - roleinfo: [] as any[] + roleinfo: [] as any[], + orgid: '' }); //修改-用户 function editdepartment(row: any) { @@ -188,6 +196,8 @@ function editdepartment(row: any) { }); info.value = JSON.parse(JSON.stringify(row)); info.value.roleinfo = selectID; + // 回显所属组织 + info.value.orgid = row.orgid; rolesdata.value = row.roles; title.value = '修改用户'; dialogVisible.value = true; @@ -207,7 +217,8 @@ function confirmClick(formEl: any) { nickname: info.value.nickname, email: info.value.email, phone: info.value.phone, - orgid: orgId.value + // 修改时根据所属组织树型下拉框传递 + orgid: info.value.orgid }; const roleids = String(info.value.roleinfo); updataUser(params, roleids).then(() => { @@ -1274,6 +1285,17 @@ function handleClearSelection() { + + + +