From 0e8793f01daa9d1c510388a4c25b85255bf05c76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E5=A4=A7=E8=83=86?= <1101282782@qq.com> Date: Wed, 10 Sep 2025 10:31:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 86 ++++- package.json | 4 +- src/renderer/src/icons/svg/turn.svg | 4 + .../src/utils/HighDefinitionScreenshot.ts | 138 +++++++ src/renderer/src/utils/communication.ts | 11 + .../components/leftSide/leftSideFirst.vue | 44 +-- .../components/leftSide/leftSideSecond.vue | 192 +++++++++- .../views/components/propertyBox/Contour.vue | 13 +- .../components/propertyBox/CoorLocation.vue | 7 +- .../propertyBox/GoodsSearchCircle.vue | 340 ++++++++++++++++++ .../propertyBox/GoodsSearchPolgon.vue | 328 +++++++++++++++++ .../views/components/propertyBox/Graffiti.vue | 2 +- .../components/propertyBox/ProjConvert.vue | 283 +++++++++++++++ .../propertyBox/ProjectionConvert.vue | 171 +++++++++ .../propertyBox/TerrainExcavation.vue | 12 +- .../views/components/propertyBox/ViewShed.vue | 2 +- .../propertyBox/wallStereoscopic.vue | 0 src/renderer/src/views/home/index.vue | 12 +- 18 files changed, 1585 insertions(+), 64 deletions(-) create mode 100644 src/renderer/src/icons/svg/turn.svg create mode 100644 src/renderer/src/utils/HighDefinitionScreenshot.ts create mode 100644 src/renderer/src/views/components/propertyBox/GoodsSearchCircle.vue create mode 100644 src/renderer/src/views/components/propertyBox/GoodsSearchPolgon.vue create mode 100644 src/renderer/src/views/components/propertyBox/ProjConvert.vue create mode 100644 src/renderer/src/views/components/propertyBox/ProjectionConvert.vue delete mode 100644 src/renderer/src/views/components/propertyBox/wallStereoscopic.vue diff --git a/package-lock.json b/package-lock.json index 6a6dc25..a773dd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,11 @@ "@electron-toolkit/utils": "^4.0.0", "@ztree/ztree_v3": "^3.5.48", "axios": "^1.11.0", + "clipboard": "^2.0.11", + "dayjs": "^1.11.18", + "echarts": "^6.0.0", "electron-updater": "^6.3.9", "element-plus": "^2.10.4", - "js-md5": "^0.8.3", "mitt": "^3.0.1", "pinia": "^3.0.3", "pinia-plugin-persistedstate": "^4.4.1", @@ -30,7 +32,7 @@ "@electron-toolkit/eslint-config-ts": "^3.0.0", "@electron-toolkit/tsconfig": "^1.0.1", "@types/jquery": "^3.5.32", - "@types/node": "^22.16.5", + "@types/node": "^22.18.1", "@types/plist": "^3.0.5", "@types/verror": "^1.10.11", "@types/vue-i18n": "^6.1.3", @@ -2649,9 +2651,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.16.5", - "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.16.5.tgz", - "integrity": "sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==", + "version": "22.18.1", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.18.1.tgz", + "integrity": "sha512-rzSDyhn4cYznVG+PCzGe1lwuMYJrcBS1fc3JqSa2PvtABwWo+dZ1ij5OVok3tqfpEBCBoaR4d7upFJk73HRJDw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -4647,6 +4649,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "license": "MIT", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz", @@ -5196,9 +5209,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "version": "1.11.18", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.18.tgz", + "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", "license": "MIT" }, "node_modules/de-indent": { @@ -5361,6 +5374,12 @@ "node": ">=0.4.0" } }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "license": "MIT" + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz", @@ -5610,6 +5629,16 @@ "dev": true, "license": "MIT" }, + "node_modules/echarts": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-6.0.0.tgz", + "integrity": "sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "2.3.0", + "zrender": "6.0.0" + } + }, "node_modules/ejs": { "version": "3.1.10", "resolved": "https://registry.npmmirror.com/ejs/-/ejs-3.1.10.tgz", @@ -7248,6 +7277,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "license": "MIT", + "dependencies": { + "delegate": "^3.1.2" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", @@ -8453,11 +8491,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/js-md5": { - "version": "0.8.3", - "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.8.3.tgz", - "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==" - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", @@ -10986,6 +11019,12 @@ "dev": true, "license": "MIT" }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", + "license": "MIT" + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", @@ -12243,6 +12282,12 @@ "node": ">= 10.0.0" } }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "license": "MIT" + }, "node_modules/tiny-typed-emitter": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", @@ -12461,6 +12506,12 @@ "typescript": ">=4.8.4" } }, + "node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", @@ -13886,6 +13937,15 @@ "engines": { "node": ">= 10" } + }, + "node_modules/zrender": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-6.0.0.tgz", + "integrity": "sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==", + "license": "BSD-3-Clause", + "dependencies": { + "tslib": "2.3.0" + } } } } diff --git a/package.json b/package.json index 307d503..9aa2ede 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,8 @@ "@electron-toolkit/utils": "^4.0.0", "@ztree/ztree_v3": "^3.5.48", "axios": "^1.11.0", + "clipboard": "^2.0.11", + "dayjs": "^1.11.18", "echarts": "^6.0.0", "electron-updater": "^6.3.9", "element-plus": "^2.10.4", @@ -42,7 +44,7 @@ "@electron-toolkit/eslint-config-ts": "^3.0.0", "@electron-toolkit/tsconfig": "^1.0.1", "@types/jquery": "^3.5.32", - "@types/node": "^22.16.5", + "@types/node": "^22.18.1", "@types/plist": "^3.0.5", "@types/verror": "^1.10.11", "@types/vue-i18n": "^6.1.3", diff --git a/src/renderer/src/icons/svg/turn.svg b/src/renderer/src/icons/svg/turn.svg new file mode 100644 index 0000000..717ef5e --- /dev/null +++ b/src/renderer/src/icons/svg/turn.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/renderer/src/utils/HighDefinitionScreenshot.ts b/src/renderer/src/utils/HighDefinitionScreenshot.ts new file mode 100644 index 0000000..edfeb75 --- /dev/null +++ b/src/renderer/src/utils/HighDefinitionScreenshot.ts @@ -0,0 +1,138 @@ +export function processBase64Images(base64Data1, base64Data2, callback) { + if (!base64Data1 || !base64Data2) { + alert("请输入两个Base64图像数据"); + return; + } + // 创建Image对象并加载第一个Base64图像 + const img1 = new Image(); + img1.onload = function () { + // 创建Image对象并加载第二个Base64图像 + const img2 = new Image(); + img2.onload = function () { + // 计算拼接后的Canvas尺寸(这里示例为水平拼接,垂直拼接可调整计算方式) + const totalWidth = img1.width + img2.width; + const maxHeight = Math.max(img1.height, img2.height); + console.log("maxHeight", maxHeight); + const resultCanvas = document.createElement("canvas"); + // 设置结果Canvas的尺寸 + resultCanvas.width = totalWidth; + resultCanvas.height = maxHeight; + + // 获取Canvas绘图上下文 + const ctx = resultCanvas.getContext("2d"); + + // 绘制第一个图像(左上角开始) + ctx.drawImage(img1, 0, 0); + + // 绘制第二个图像(第一个图像右侧) + ctx.drawImage(img2, img1.width, 0); + + // 获取拼接后的Base64结果(默认为PNG格式,可指定其他格式如JPEG) + const resultBase64Data = resultCanvas.toDataURL("image/png"); + callback(resultBase64Data); + console.log("图像拼接完成,Base64结果已生成"); + }; + img2.src = base64Data1; + }; + img1.src = base64Data2; +} +/** + * 拼接两个Base64图像并返回新的Base64 + * @param {string} base641 第一个Base64图像数据 + * @param {number} width1 第一个图像要截取的宽度 + * @param {string} base642 第二个Base64图像数据 + * @param {number} width2 第二个图像要截取的宽度 + * @param {string} [format='image/png'] 输出图像格式 + * @param {number} [quality=1.0] 输出图像质量(0-1),仅对支持的格式有效 + * @returns {Promise} 拼接后的Base64图像数据 + */ +export function combineBase64Images( + base641, + width1, + base642, + width2, + format = "image/png", + quality = 1.0 +) { + return new Promise((resolve, reject) => { + // 创建canvas元素 + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + + // 设置canvas宽度和高度 + canvas.width = width1 + width2; + canvas.height = 0; // 高度将在图像加载后确定 + + // 创建图像对象 + const img1 = new Image(); + const img2 = new Image(); + + // 错误处理 + function handleError(error) { + reject(new Error(`图像处理错误: ${error.message}`)); + } + + // 监听两个图像都加载完成 + let loadedCount = 0; + function checkAllLoaded() { + loadedCount++; + if (loadedCount === 2) { + drawAndResolve(); + } + } + + // 图像1加载事件 + img1.onload = function () { + checkAllLoaded(); + }; + + // 图像2加载事件 + img2.onload = function () { + checkAllLoaded(); + }; + + // 图像加载错误事件 + img1.onerror = img2.onerror = handleError; + + // 加载图像 + img1.src = base641; + img2.src = base642; + + // 绘制图像并解析为Base64 + function drawAndResolve() { + try { + // 确定canvas高度为两个图像高度的最大值 + const height1 = img1.height; + const height2 = img2.height; + canvas.height = Math.max(height1, height2); + + // 清除画布 + ctx.clearRect(0, 0, canvas.width, canvas.height); + + // 绘制第一个图像的左侧部分 (从左往右截取width1) + ctx.drawImage(img1, 0, 0, width1, height1, 0, 0, width1, canvas.height); + + // 绘制第二个图像的右侧部分 (从右往左截取width2) + // 计算在原图上的截取起点 (从右侧开始) + const sourceX = img2.width - width2; + ctx.drawImage( + img2, + sourceX, + 0, + width2, + height2, + width1, + 0, + width2, + canvas.height + ); + + // 将canvas内容转换为Base64 + const resultBase64 = canvas.toDataURL(format, quality); + resolve(resultBase64); + } catch (error) { + handleError(error); + } + } + }); +} diff --git a/src/renderer/src/utils/communication.ts b/src/renderer/src/utils/communication.ts index 0ef8933..8bc0300 100644 --- a/src/renderer/src/utils/communication.ts +++ b/src/renderer/src/utils/communication.ts @@ -1,3 +1,4 @@ +const { ipcRenderer } = require('electron') export const $changeComponentShow = (selector: any, state: any, styleStr: any = false) => { $(selector).css({ visibility: state ? 'visible' : 'hidden' }) if (styleStr) { @@ -17,3 +18,13 @@ export const $changeComponentPop = (selector: any, state: any, styleStr: any = f if (str[0] === 'z-index') $(selector).css({ zIndex: str[1] }) } } + +export const $sendElectronChanel = (chanel: any, arg: any = null) => { + console.log('发送给electron', chanel, arg); + ipcRenderer.send(chanel, arg); +}; +export const $recvElectronChanel = (chanel: any, cb: any) => { + console.log('接收来自electron', chanel); + ipcRenderer.once(chanel, cb); +}; + diff --git a/src/renderer/src/views/components/leftSide/leftSideFirst.vue b/src/renderer/src/views/components/leftSide/leftSideFirst.vue index df13ccf..dfc03ab 100644 --- a/src/renderer/src/views/components/leftSide/leftSideFirst.vue +++ b/src/renderer/src/views/components/leftSide/leftSideFirst.vue @@ -128,28 +128,28 @@ const menuList: any = ref([ // fun: this.showSecondMenu, key: 'tool', children: [ - // 'routePlan', - // 'clearRoute', - // 'graffiti', - // // stopGraffiti: "结束涂鸦", - // 'clearGraffiti', - // 'path', - // 'coorLocation', - // 'mouseLocation', - // 'annotationAggregation', - // 'annotation', - // 'screenShot', - // 'highQuality', - // 'videoRecord', - // 'pressModel', - // 'terrainDig', - // 'tilesetClipping', - // 'clearTilesetClipping', - // 'projConvert', - // 'projectionConvert', - // 'gdbImport', - // 'circleStatistics', - // 'polygonStatistics' + 'routePlan', + 'clearRoute', + 'graffiti', + // stopGraffiti: "结束涂鸦", + 'clearGraffiti', + 'path', + 'coorLocation', + 'mouseLocation', + 'annotationAggregation', + 'annotation', + 'screenShot', + 'highQuality', + 'videoRecord', + 'pressModel', + 'terrainDig', + 'tilesetClipping', + 'clearTilesetClipping', + 'projConvert', + 'projectionConvert', + 'gdbImport', + 'circleStatistics', + 'polygonStatistics' ] }, { diff --git a/src/renderer/src/views/components/leftSide/leftSideSecond.vue b/src/renderer/src/views/components/leftSide/leftSideSecond.vue index 8dc2284..ab429c7 100644 --- a/src/renderer/src/views/components/leftSide/leftSideSecond.vue +++ b/src/renderer/src/views/components/leftSide/leftSideSecond.vue @@ -22,6 +22,11 @@ import { ref, reactive, getCurrentInstance } from 'vue' import { useTreeNode } from '../tree/hooks/treeNode' import { TreeApi } from '@/api/tree' import { renderMethods } from '../tree/hooks/renderTreeNode' +import { processBase64Images, combineBase64Images } from '@/utils/HighDefinitionScreenshot' +import { $sendElectronChanel, $recvElectronChanel } from '@/utils/communication' +import { ElMessage } from 'element-plus' +import dayjs from 'dayjs' +import fs from 'fs' const { proxy } = getCurrentInstance() const { t } = useI18n() const { findParentId, findTreeIndex, cusAddNodes } = useTreeNode() @@ -43,7 +48,7 @@ eventBus.on('graffitiObj', (data) => { }) const methodMap = { // 轨迹运动 - trajectoryMotion: ()=>{ + trajectoryMotion: () => { // let draw = new YJ.Draw.DrawPolyline(window.earth) // draw.start((err, positions) => { // if (positions.length > 1) {} @@ -83,7 +88,7 @@ const methodMap = { // console.log('addOtherSource', res) // 上树 cusAddNodes(window.treeObj, params.parentId, [params]) - eventBus.emit("openDialog", 'wallStereoscopic'); + eventBus.emit('openDialog', 'wallStereoscopic') } }) }, @@ -223,14 +228,70 @@ const methodMap = { //卷帘对比 annotation() { clickChange.annotation = !clickChange.annotation - // if (clickChange.annotation) { - // YJ.Global.splitScreen.on(window.earth) - // } else { - // YJ.Global.splitScreen.off() - // } + if (clickChange.annotation) { + YJ.Global.splitScreen.on(window.earth) + } else { + YJ.Global.splitScreen.off() + } }, //屏幕截图 - screenShot() {}, + async screenShot() { + function downloadScreen(res) { + let base64 = res.replace(/^data:image\/\w+;base64,/, '') + console.log('base64', base64) + let dataBuffer = new Buffer(base64, 'base64') + $sendElectronChanel('saveFile', { + title: '保存图片', + filename: dayjs().format('YYYYMMDDHHmmss') + '截图', + filters: [{ name: '保存图片', extensions: ['jpg'] }] + }) + $recvElectronChanel('selectedFileItem', (e, path) => { + console.log('path', fs.writeFile) + fs.writeFile(path, dataBuffer, (res) => { + console.log(res) + }) + }) + } + + if (window.splitScreen || window.multiViewportMode) { + let res = '' + let res2 = '' + let sdk + if (window.splitScreen) { + sdk = YJ.Global.splitScreen.getSdk() + } else { + sdk = YJ.Global.multiViewportMode.getSdk() + } + await new YJ.Global.ScreenShot(sdk.sdkD, (data) => { + res = data + }) + await new YJ.Global.ScreenShot(sdk.sdkP, (data) => { + res2 = data + }) + if (window.multiViewportMode) { + processBase64Images(res, res2, (mergedBase64) => { + downloadScreen(mergedBase64) + // window.multiViewportMode = false; + }) + } else { + let doms = document.querySelectorAll('.cesium-widget') + let leftWidth = doms[0].offsetWidth + let rightWidth = doms[1].offsetWidth + combineBase64Images(res2, leftWidth, res, rightWidth) + .then((result) => { + downloadScreen(result) + // window.splitScreen = false; + }) + .catch((err) => console.error('拼接失败:', err)) + } + } else { + let res = '' + await new YJ.Global.ScreenShot(window.earth, (data) => { + res = data + }) + downloadScreen(res) + } + }, //高清出图 highQuality() { // eventBus.emit('screenShotDialog') @@ -239,27 +300,130 @@ const methodMap = { //视频录制 videoRecord() { clickChange.videoRecord = !clickChange.videoRecord + + let time = 3 + this.$changeComponentShow('#secondMenu', false) + // const onKeyDown = (e) => { + + // if (e.keyCode === 27) { + // item.status = !item.status; + // $sendElectronChanel("endRecoder"); + // document.removeEventListener("keydown", onKeyDown); + // } + // }; + if (clickChange.videoRecord) { + // document.addEventListener("keydown", onKeyDown); + let loading = $root_home.openLoading(time, { + background: 'rgba(0,0,0,0)', + fullscreen: false, + customClass: 'timer' + }) + let timer = '' + const p = document.createElement('p') + p.style.color = '#fff' + p.innerHTML = '再次点击录制结束' + document.getElementsByClassName('el-loading-spinner')[0].appendChild(p) + let func = () => { + loading.setText(time--) + if (time == -1) { + clearInterval(timer) + loading.close() + console.log('开始了') + p.remove() + $sendElectronChanel('startRecoder') + } + } + func() + timer = setInterval(func, 1000) + } else { + $sendElectronChanel('endRecoder') + // document.removeEventListener("keydown", onKeyDown); + } }, //压模 pressModel() {}, //地形开挖 terrainDig() { + // if (window.checkAuthIsValid) { + // new YJ.Analysis.TerrainExcavation(window.Earth1); eventBus.emit('terrainExcavationDialog') + // } else { + // this.$message({ + // message: '您没有该功能的权限', + // type: 'warning' + // }) + // } }, //剖切 - tilesetClipping() {}, + tilesetClipping() { + // if (window.checkAuthIsValid) { + let selectedNode = window.treeObj.getSelectedNodes() + if (selectedNode.length < 1) { + ElMessage({ + message: '请在图层指挥舱选中对应模型进行操作', + type: 'warning' + }) + return + } + if (!(selectedNode[0].sourceType === 'tileset' || selectedNode[0].sourceType === 'bim')) { + ElMessage({ + message: '选中的节点不能进行剖切', + type: 'warning' + }) + return + } + let tileset = window.earth.entityMap.get(selectedNode[0].id) + let draw = new YJ.Draw.DrawPolygon(window.earth) + draw.start((err, pos) => { + let section = new YJ.Analysis.Section(window.earth, tileset.entity, { + positions: pos + }) + // _entityMap.set(selectedNode.source_id + 'pouqie', section) + }) + // } else { + // this.$message({ + // message: '您没有该功能的权限', + // type: 'warning' + // }) + // } + }, //删除剖切 - clearTilesetClipping() {}, + clearTilesetClipping() { + YJ.Analysis.ClearSection() + }, //度分秒 - projConvert() {}, + projConvert() { + eventBus.emit('projConvertDialog') + }, //投影转换 - projectionConvert() {}, + projectionConvert() { + eventBus.emit('ProjectionConvertDialog') + }, //GDB导入 gdbImport() {}, //圆形统计 - circleStatistics() {}, + circleStatistics() { + // if (window.checkAuthIsValid) { + eventBus.emit('goodsSearchCircleDialog') + // } else { + // this.$message({ + // message: '您没有该功能的权限', + // type: 'warning' + // }) + // } + }, //多边形统计 - polygonStatistics() {} + polygonStatistics() { + // if (window.checkAuthIsValid) { + eventBus.emit('goodsSearchPolgonDialog') + + // } else { + // this.$message({ + // message: "您没有该功能的权限", + // type: "warning", + // }); + // } + } } const handleClick = (value = 'projectionDistanceMeasure') => { diff --git a/src/renderer/src/views/components/propertyBox/Contour.vue b/src/renderer/src/views/components/propertyBox/Contour.vue index ed7c8d8..ec872bc 100644 --- a/src/renderer/src/views/components/propertyBox/Contour.vue +++ b/src/renderer/src/views/components/propertyBox/Contour.vue @@ -13,7 +13,7 @@
等高线 - +
@@ -145,6 +145,7 @@ @@ -158,16 +159,24 @@ import Dialog from '@/components/dialog/baseDialog.vue' const baseDialog: any = ref(null) const eventBus: any = inject('bus') +var show: any = ref(true) eventBus.on('contourDialog', () => { baseDialog.value?.open() setTimeout(() => { YJ.Global.Contour(window.earth) }) }) -const closeCallBack = (e) => {} +const closeCallBack = (e) => { + YJ.Global.ContourReset() + show.value = true +} const close = (e) => { baseDialog.value?.close() } +const sure = (e) => { + YJ.Global.ContourStartDraw(window.earth, show.value) + baseDialog.value?.close() +} diff --git a/src/renderer/src/views/components/propertyBox/CoorLocation.vue b/src/renderer/src/views/components/propertyBox/CoorLocation.vue index cc0a04c..54144fc 100644 --- a/src/renderer/src/views/components/propertyBox/CoorLocation.vue +++ b/src/renderer/src/views/components/propertyBox/CoorLocation.vue @@ -5,6 +5,7 @@ title="坐标定位" left="180px" top="100px" + width="418px" :closeCallback="closeCallBack" >