From d997410c9df1de0e10618b96bb28791cd749079c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E5=A4=A7=E8=83=86?= <1101282782@qq.com> Date: Tue, 30 Sep 2025 16:51:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=BA=93=E3=80=81=E5=86=9B?= =?UTF-8?q?=E6=A0=87=E5=BA=93=E3=80=81=E8=B7=AF=E5=BE=84=E8=A7=84=E5=88=92?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/api/graphLabel/index.ts | 11 +- src/renderer/src/api/model/index.ts | 8 +- src/renderer/src/api/photo/index.ts | 7 + src/renderer/src/api/route/index.ts | 30 +++- .../setPup/components/engineering.vue | 132 +++++++++++++++--- .../setPup/components/graphLabelManage.vue | 84 +++++++++-- .../setPup/components/modelManage.vue | 94 ++++++++++--- .../setPup/components/photoManage.vue | 60 ++++++-- .../headers/components/setPup/setPup.vue | 8 +- .../headers/components/setTool/setTool.vue | 13 +- .../components/leftSide/leftSideFirst.vue | 13 +- .../components/propertyBox/RoutePlanning.vue | 11 +- .../views/components/propertyBox/graph.vue | 36 ++++- .../components/propertyBox/graphObject.vue | 2 - .../components/propertyBox/graphSetting.vue | 2 +- .../views/components/propertyBox/imagePop.vue | 18 +-- .../views/components/propertyBox/model.vue | 48 +++++-- 17 files changed, 462 insertions(+), 115 deletions(-) diff --git a/src/renderer/src/api/graphLabel/index.ts b/src/renderer/src/api/graphLabel/index.ts index 9b8feb2..860a6ab 100644 --- a/src/renderer/src/api/graphLabel/index.ts +++ b/src/renderer/src/api/graphLabel/index.ts @@ -46,7 +46,7 @@ export const GraphApi = { //军标类型列表 modelTypeList: async () => { return await request.get({ - url: `/militaryLibrary/militaryTypeList` + url: `/militaryLibrary/militaryTypeTree` }) }, //添加军标文件 @@ -76,6 +76,15 @@ export const GraphApi = { data }) }, + + //拖动层级(tree) + dragModelType: async (data: any) => { + return await request.post({ + url: `/militaryLibrary/dragMilitaryType`, + data, + }) + }, + // //默认军标参数设置 // modelSetting: async (data: any) => { // return await request.post({ diff --git a/src/renderer/src/api/model/index.ts b/src/renderer/src/api/model/index.ts index 2614e2c..4fd5286 100644 --- a/src/renderer/src/api/model/index.ts +++ b/src/renderer/src/api/model/index.ts @@ -92,5 +92,11 @@ export const ModelApi = { url: `/businessConfig/list` }) }, - + //拖动层级(tree) + dragModelType: async (data: any) => { + return await request.post({ + url: `/modelLibrary/dragModelType`, + data, + }) + }, } diff --git a/src/renderer/src/api/photo/index.ts b/src/renderer/src/api/photo/index.ts index 84b6d80..c07d3fa 100644 --- a/src/renderer/src/api/photo/index.ts +++ b/src/renderer/src/api/photo/index.ts @@ -76,6 +76,13 @@ export const PhotoApi = { data }) }, + //拖动调整图标类型层级 + dragModelType: async (data: any) => { + return await request.post({ + url: `/iconLibrary/dragIconType`, + data + }) + }, // //默认图标参数设置 // modelSetting: async (data: any) => { // return await request.post({ diff --git a/src/renderer/src/api/route/index.ts b/src/renderer/src/api/route/index.ts index 09a8140..c9c620f 100644 --- a/src/renderer/src/api/route/index.ts +++ b/src/renderer/src/api/route/index.ts @@ -10,16 +10,38 @@ export const RouteApi = { }, //获取地图列表 getRouteList: async () => { - return await request.get({ - url: `/graphhopper/list` + return await request.post({ + url: `/pbfInfo/list` }) }, - //加载路网数据 + // //加载路网数据 + // loadRoute: async (data: any) => { + // return await request.post({ + // url: `/graphhopper/loadMap`, + // data, + // headersType: 'application/x-www-form-urlencoded' + // }) + // }, + //添加路网数据 loadRoute: async (data: any) => { return await request.post({ - url: `/graphhopper/loadMap`, + url: `/pbfInfo/add`, data, headersType: 'application/x-www-form-urlencoded' }) }, + //启用路网数据 + enableRoute: async (data: any) => { + return await request.post({ + url: `/pbfInfo/enable`, + data, + }) + }, + //删除路网数据 + delRoute: async (data: any) => { + return await request.post({ + url: `/pbfInfo/delete`, + data, + }) + }, } diff --git a/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue b/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue index f7e9d45..6d64b72 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue @@ -4,7 +4,7 @@ 工程设置 - --> + - - - 路网导入 - - + + 路网导入 + + -
-
+
+
@@ -33,12 +37,27 @@ />
- {{ item.fileName }} + {{ item.name }} {{ item.createdAt }}
- + 已启用 + + + 启用 + + 删除
@@ -122,10 +141,15 @@ @@ -226,6 +314,7 @@ const handleError = (error: Error) => { box-sizing: border-box; display: flex; line-height: 32px; // padding: 20px 0; + padding: 0 0 20px 0; .fankuai { width: 10px; height: 10px; @@ -267,9 +356,10 @@ const handleError = (error: Error) => { } .fileList { width: 100%; - height: 20vh; + // height: 20vh; + max-height: 20vh; box-sizing: border-box; - padding: 20px 0; + padding: 0 0 20px 0; .fileList_nav { width: 100%; diff --git a/src/renderer/src/views/components/headers/components/setPup/components/graphLabelManage.vue b/src/renderer/src/views/components/headers/components/setPup/components/graphLabelManage.vue index 77d3de5..2de41bd 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/graphLabelManage.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/graphLabelManage.vue @@ -37,6 +37,8 @@ draggable ref="treeRef" node-key="id" + empty-text="" + :default-expanded-keys="expandedKeys" @node-click="handleTypeClick" @node-contextmenu="handleContextMenu" @node-drag-start="handleDragStart" @@ -79,11 +81,15 @@ - + @@ -145,6 +151,7 @@ import { const fs = require('fs') const eventBus: any = inject('bus') var clickTreeNode: any = reactive({}) +var leftClickTreeNode: any = reactive({}) interface TypeNode { id: string @@ -159,8 +166,8 @@ interface ModelItem { id: string typeId: string name: string - thumbnail: string militaryId: string + militaryDataUrl: string } const typeTreeData = ref([]) @@ -225,12 +232,26 @@ const addType = () => { dialogVisible.value = false } +var expandedKeys: any = ref([]) +// 获取当前所有展开节点的key +const getExpandedKeys = () => { + const nodesMap = treeRef.value?.store?.nodesMap || {} + return Object.values(nodesMap) + .filter((node) => node.expanded) + .map((node) => node.key) +} + +// 节点展开/折叠时更新状态 +const updateExpandedState = () => { + const keys = getExpandedKeys() + expandedKeys.value = keys +} + //获取模型列表 eventBus.on('settingPop', (data) => { if (data) { //关闭弹框时更新模型列表 - // getModelList() - getModelListByType(showImageRow.militaryTypeId) + // getModelListByType(showImageRow.militaryTypeId) showImageRow = null } }) @@ -321,10 +342,11 @@ const importModelDB = () => { const addModelDB = (path) => { let formData = new FormData() - formData.append('modelPath', path) + formData.append('militaryPath', path) GraphApi.importModelDB(formData).then((res) => { if (res.code == 0 || res.code == 200) { ElMessage.success('导入成功') + modelList.value = [] getModelList() } }) @@ -352,6 +374,19 @@ const handleDragEnd = ( ev: DragEvents ) => { console.log('tree drag end:', dropNode, dropType, ev, draggingNode) + let nodeList = dropNode.childNodes.map((item, index) => { + return { + id: item.data.id, + parentId: dropNode.data.id, + treeIndex: index + } + }) + GraphApi.dragModelType(nodeList).then((res) => { + if (res.code == 0 || res.code == 200) { + ElMessage.success('拖拽成功') + getModelList() + } + }) } const handleDrop = (draggingNode: Node, dropNode: Node, dropType: NodeDropType, ev: DragEvents) => { console.log('tree drop:', dropNode.label, dropType) @@ -370,7 +405,7 @@ const allowDrag = (draggingNode: Node) => { //拖拽结束 //---------------------查看缩略图-------------------- -var showImageRow:any = null +var showImageRow: any = null const showImage = (row: any) => { showImageRow = row eventBus.emit('imagePopDialog', row) @@ -414,8 +449,10 @@ const toggleExpand = (row: any) => { if (row.expanded) { row.collapse() + updateExpandedState() } else { row.expand() + updateExpandedState() // getModelListByType(row.data.id) } } else { @@ -423,6 +460,7 @@ const toggleExpand = (row: any) => { } getModelListByType(row.data.id) currentTypeId.value = row.id + leftClickTreeNode = row.data // loadModelsByType(row.id) contextMenu.visible && (contextMenu.visible = false) } @@ -472,6 +510,7 @@ const handleMenuCommand = (command: string) => { const handleTypeClick = (row: any) => { getModelListByType(row.id) currentTypeId.value = row.$treeNodeId + leftClickTreeNode = row // // 模拟根据类型ID加载模型数据 // loadModelsByType(row.id) // contextMenu.visible && (contextMenu.visible = false) @@ -520,7 +559,7 @@ const handleRenameType = (row: TypeNode) => { } const handleDeleteType = (row: TypeNode) => { - ElMessageBox.confirm('是否删除数据?', '警告', { + ElMessageBox.confirm('是否删除数据?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' @@ -637,7 +676,7 @@ const getNamefromPath = (path) => { } const handleDelete = (row: any) => { - ElMessageBox.confirm('是否删除数据?', '警告', { + ElMessageBox.confirm('是否删除数据?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' @@ -828,3 +867,30 @@ onMounted(() => { letter-spacing: 1px; } + diff --git a/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue b/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue index ec57aa0..5a5f4d5 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue @@ -34,9 +34,11 @@ :allow-drop="allowDrop" :allow-drag="allowDrag" :data="typeTreeData" + :default-expanded-keys="expandedKeys" draggable ref="treeRef" node-key="id" + empty-text="" @node-click="handleTypeClick" @node-contextmenu="handleContextMenu" @node-drag-start="handleDragStart" @@ -83,7 +85,7 @@ @@ -137,7 +139,7 @@