From a0499b9b354c629e19f92f6e97477d27fd04368c Mon Sep 17 00:00:00 2001 From: zh <972939975@qq.com> Date: Thu, 11 Sep 2025 20:51:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/I18n/zh-CN.ts | 2 +- .../assets/images/second/clearAnalysis.png | Bin 0 -> 844 bytes src/renderer/src/axios/index.ts | 5 +- src/renderer/src/common/initMapData.ts | 26 ++++++--- .../components/leftSide/leftSideFirst.vue | 2 +- .../components/leftSide/leftSideSecond.vue | 2 +- .../tree/components/hooks/rightOperate.ts | 55 ++++++++++++------ .../src/views/components/tree/hooks/tree.ts | 39 ++++++------- 8 files changed, 76 insertions(+), 55 deletions(-) create mode 100644 src/renderer/src/assets/images/second/clearAnalysis.png diff --git a/src/renderer/src/I18n/zh-CN.ts b/src/renderer/src/I18n/zh-CN.ts index f9d50f4..59dc626 100644 --- a/src/renderer/src/I18n/zh-CN.ts +++ b/src/renderer/src/I18n/zh-CN.ts @@ -91,7 +91,7 @@ export default { cutFill: "土方分析", globalContour: "全局等高线", contour: "等高线", - clear: "清除", + clearAnalysis: "清除", }, measure: { projectionArea: "投影面积", diff --git a/src/renderer/src/assets/images/second/clearAnalysis.png b/src/renderer/src/assets/images/second/clearAnalysis.png new file mode 100644 index 0000000000000000000000000000000000000000..8a08304a44377630b37d9c1e70d822020d5f7db9 GIT binary patch literal 844 zcmV-S1GD^zP)Px#1am@3R0s$N2z&@+hyVZr_DMuRRA_+5)P@zC*v04 zcHX0rzP(QEQ>`fh*LPl1SK~nQT;3J9`JCT;+hq-56)p>0|X!;Ki?T z23xWO?oz9=+y9c{!K{xPdAe1u>?8uq^Ko)--;QGr)}~u2-~|&;WnkfgnJfli`kgGS(>`Fn`0@ya*cF9ug$ax1(z++>a15_Ie>{t%A49dmIXew&;oN~8owP8!+lVH8# zxY#~fsJk2{lgrt)($wJAsC6-3`0k%UBVd@rCNyW{Q8s{bo4o%5O!gE%3N8P7SbYH-4)WGscS^j>3o9)7ndIk{ z&w49mmGuo`%mUET2%0M+%d;KwaE+M;_z}=_8bd3sky(G%UO?O*YrxN+=wAxJ7};jKRJ^qGt&GV^<&m0000() let baseURL: any if (window && window.process && window.process.type === 'renderer') { - baseURL = localStorage.getItem('ip') || 'http://192.168.110.25:8848' || 'http://127.0.0.1:8808' + // baseURL = localStorage.getItem('ip') ||'http://192.168.110.25:8848'|| 'http://127.0.0.1:8808' + baseURL = 'http://127.0.0.1:8848' } else { baseURL = 'http://192.168.110.25:8848' } // 创建自定义配置的axios实例 const service: AxiosInstance = axios.create({ - baseURL: 'http://192.168.110.25:8848', + baseURL: baseURL, timeout: 10000, headers: { 'Content-Type': 'application/json', diff --git a/src/renderer/src/common/initMapData.ts b/src/renderer/src/common/initMapData.ts index f3dd0cf..396dd72 100644 --- a/src/renderer/src/common/initMapData.ts +++ b/src/renderer/src/common/initMapData.ts @@ -1,6 +1,13 @@ export const initMapData = async (type, data) => { let entityObject let options + let baseURL + if (window && window.process && window.process.type === 'renderer') { + // baseURL = localStorage.getItem('ip') ||'http://192.168.110.25:8848'|| 'http://127.0.0.1:8808' + baseURL = 'http://127.0.0.1:8848' + } else { + baseURL = 'http://192.168.110.25:8848' + } switch (type) { case 'groundText': entityObject = new YJ.Obj.GroundText(window.earth, data) @@ -40,20 +47,21 @@ export const initMapData = async (type, data) => { entityObject = new YJ.Obj.ModelObject(window.earth, data) break case 'terrain': - data.host = 'http://192.168.110.25:8848' + data.host = baseURL entityObject = new YJ.Obj.Terrain(window.earth, data) break case 'layer': - data.host = 'http://192.168.110.25:8848' + data.host = baseURL + console.log('data',data) entityObject = new YJ.Obj.Layer(window.earth, data) break case 'tileset': - data.host = 'http://192.168.110.25:8848' + data.host = baseURL entityObject = new YJ.Obj.Tileset(window.earth, data) entityObject.load((res) => { // 等模型加载完后再加载压平模型 - Array.from((window as any).pressModelMap.keys()).forEach((key:any) => { + Array.from((window as any).pressModelMap.keys()).forEach((key: any) => { if (key.indexOf("_" + data.id) > -1) { const nodes = (window as any).pressModelMap.get(key); if (nodes) { @@ -61,7 +69,7 @@ export const initMapData = async (type, data) => { // nodeType[nodes.source_type].render(nodes); const flatData = JSON.parse(nodes.params) const entity = window.earth.entityMap.get(flatData.modelId).entity - let flat:any = new YJ.Analysis.Flat(window.earth, entity, { + let flat: any = new YJ.Analysis.Flat(window.earth, entity, { positions: flatData.positions, height: flatData.height, name: nodes.sourceName @@ -74,16 +82,16 @@ export const initMapData = async (type, data) => { }) break - case 'path': + case 'path': entityObject = new YJ.Obj.TrajectoryMotion(window.earth, data) break - case 'wallStereoscopic': + case 'wallStereoscopic': entityObject = new YJ.Obj.WallStereoscopic(window.earth, data) break - case 'diffuseScan': + case 'diffuseScan': entityObject = new YJ.Obj.CircleDiffuse(window.earth, data) break - case 'radarScan': + case 'radarScan': entityObject = new YJ.Obj.RadarScan(window.earth, data) break default: diff --git a/src/renderer/src/views/components/leftSide/leftSideFirst.vue b/src/renderer/src/views/components/leftSide/leftSideFirst.vue index dfc03ab..494a0df 100644 --- a/src/renderer/src/views/components/leftSide/leftSideFirst.vue +++ b/src/renderer/src/views/components/leftSide/leftSideFirst.vue @@ -97,7 +97,7 @@ const menuList: any = ref([ 'cutFill', 'contour', 'globalContour', - 'clear' + 'clearAnalysis' ] }, // 测量 diff --git a/src/renderer/src/views/components/leftSide/leftSideSecond.vue b/src/renderer/src/views/components/leftSide/leftSideSecond.vue index 79e03ee..7a24870 100644 --- a/src/renderer/src/views/components/leftSide/leftSideSecond.vue +++ b/src/renderer/src/views/components/leftSide/leftSideSecond.vue @@ -245,7 +245,7 @@ const methodMap = { }) }, //分析清除 - clear() { + clearAnalysis() { YJ.Analysis.Clear() }, //----------------工具------------------ diff --git a/src/renderer/src/views/components/tree/components/hooks/rightOperate.ts b/src/renderer/src/views/components/tree/components/hooks/rightOperate.ts index d399823..cf74fa4 100644 --- a/src/renderer/src/views/components/tree/components/hooks/rightOperate.ts +++ b/src/renderer/src/views/components/tree/components/hooks/rightOperate.ts @@ -36,14 +36,40 @@ export const useRightOperate = () => { } ipcRenderer.send('open-directory-dialog', options); // 监听主进程返回的结果 + //@ts-ignore ipcRenderer.once('selectedItem', async (event, filePaths) => { if (filePaths.length > 0) { let id = new YJ.Tools().randomString() + + + // 检查文件名是否有效 + if (typeof filePaths[0] !== 'string' || filePaths[0].trim() === '') { + return false; + } + + // 获取最后一个点的位置 + const lastDotIndex = filePaths[0].lastIndexOf('.'); + + // 如果没有点或者点是最后一个字符,则不是有效的文件后缀 + if (lastDotIndex === -1 || lastDotIndex === filePaths[0].length - 1) { + return false; + } + + // 提取后缀并转换为小写进行比较 + const extension = filePaths[0].slice(lastDotIndex + 1).toLowerCase(); + + let params2:any = {} + if(extension === 'mbtiles') { + params2.alpha = 1 + params2.brightness = 1 + } + + let params: any = { id: id, sourcePath: filePaths[0], parentId: parentId, - params: '', + params: JSON.stringify(params2), } // filePaths[0].split('\\').pop() let res = await TreeApi.addModelSource(params) @@ -54,25 +80,16 @@ export const useRightOperate = () => { type: 'success' }) res.data.id = id - if (res.data.params) { - let params = JSON.parse(res.data.params) - if (!params.id) { - params.id = res.data.id - } - initMapData(res.data.sourceType, params) + let params = JSON.parse(res.data.params) + let detail = JSON.parse(res.data.detail) + if (!params.id) { + params.id = res.data.id } - else { - //@ts-ignore - if (res.data.detail) { - //@ts-ignore - let detail = JSON.parse(res.data.detail) - if (!detail.id) { - detail.id = res.data.id - } - initMapData(res.data.sourceType, detail) - } + if (!params.name) { + params.name = res.data.sourceName } - cusAddNodes(window.treeObj, params.parentId, [res.data]) + initMapData(res.data.sourceType, {...detail, ...params}) + cusAddNodes(window.treeObj, params.parentId, [{...detail, ...params}]) } } }); @@ -196,7 +213,7 @@ export const useRightOperate = () => { .then(async () => { let selectNodes = getSelectedNodes(window.treeObj) let source_ids = cusRemoveNode(window.treeObj, selectNodes) - const res = await TreeApi.removeDirectory({ ids:source_ids }) + const res = await TreeApi.removeDirectory({ ids: source_ids }) if (res.code == 0 || res.code == 200) { ElMessage({ message: '删除成功', diff --git a/src/renderer/src/views/components/tree/hooks/tree.ts b/src/renderer/src/views/components/tree/hooks/tree.ts index 17d6b38..b9aec3e 100644 --- a/src/renderer/src/views/components/tree/hooks/tree.ts +++ b/src/renderer/src/views/components/tree/hooks/tree.ts @@ -238,7 +238,7 @@ export const useTree = () => { height: params.height, name: treeNode.sourceName }) - (window as any).pressModelEntities.set(treeNode.id, entityObject) + (window as any).pressModelEntities.set(treeNode.id, entityObject) } } else { @@ -466,15 +466,15 @@ export const useTree = () => { function generateRandomString(length = 10, includeSpecial = true) { // 基础字符集:大小写字母和数字 let chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - + // 如果需要包含特殊字符,则添加到字符集中 if (includeSpecial) { chars += '!@#$%^&*()_+-=[]{}|;:,.<>?'; } - + let result = ''; const charsLength = chars.length; - + // 循环生成指定长度的随机字符 for (let i = 0; i < length; i++) { // 生成0到字符集长度之间的随机索引 @@ -482,32 +482,27 @@ export const useTree = () => { // 将对应索引的字符添加到结果中 result += chars.charAt(randomIndex); } - + return result; } const initTreeCallBack = () => { if (window.earth) { for (let i = 0; i < zNodes.value.length; i++) { - if (zNodes.value[i].params) { - let params = JSON.parse(zNodes.value[i].params) - if (!params.id) { - params.id = zNodes.value[i].id - } - initMapData(zNodes.value[i].sourceType, params) - + if(zNodes.value[i].sourceType === 'directory') { + continue } - else { - //@ts-ignore - if (zNodes.value[i].detail) { - //@ts-ignore - let detail = JSON.parse(zNodes.value[i].detail) - if (!detail.id) { - detail.id = zNodes.value[i].id - } - initMapData(zNodes.value[i].sourceType, detail) - } + //@ts-ignore + let params = JSON.parse(zNodes.value[i].params||'{}') + //@ts-ignore + let detail = JSON.parse(zNodes.value[i].detail||'{}') + if (!params.id) { + params.id = zNodes.value[i].id } + if (!params.name) { + params.name = zNodes.value[i].sourceName + } + initMapData(zNodes.value[i].sourceType, { ...detail, ...params }) } } }