From 78ee8a921f97b0c42f02238f3933d72adb6346c5 Mon Sep 17 00:00:00 2001 From: zh <972939975@qq.com> Date: Fri, 17 Oct 2025 10:28:26 +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 --- package.json | 2 + resources/java/stop.bat | 2 +- src/main/index.ts | 101 +++- src/renderer/src/I18n/zh-CN.ts | 34 +- src/renderer/src/I18n/zh-EN.ts | 535 +++++++----------- src/renderer/src/I18n/zh-TW.ts | 6 +- src/renderer/src/api/gisApi.ts | 1 + src/renderer/src/api/systemApi.ts | 19 + src/renderer/src/assets/i18n/index.js | 19 - src/renderer/src/assets/i18n/lang/local_en.js | 348 ------------ src/renderer/src/assets/i18n/lang/local_tw.js | 320 ----------- src/renderer/src/assets/i18n/lang/local_zh.js | 330 ----------- .../src/components/Pagination/index.vue | 16 +- .../src/components/dialog/baseDialog.vue | 30 +- .../src/components/upload/uploadFiles.vue | 4 +- src/renderer/src/main.ts | 22 +- .../components/bottomSide/bottomSide.vue | 40 +- .../setPup/components/graphLabelManage.vue | 4 +- .../setPup/components/modelManage.vue | 4 +- .../setPup/components/photoManage.vue | 6 +- .../components/setPup/components/setting.vue | 26 +- .../headers/components/weather/index.vue | 1 + .../headers/components/weather/timeLIne.ts | 1 + .../src/views/components/headers/index.vue | 2 +- .../components/propertyBox/CircleObject.vue | 6 +- .../components/propertyBox/addGroundText.vue | 6 +- .../components/propertyBox/addStandText.vue | 6 +- .../components/propertyBox/attackArrow.vue | 29 +- .../components/propertyBox/attribute.vue | 284 +++++++++- .../propertyBox/billboardObject.vue | 5 +- .../components/propertyBox/circleDiffuse.vue | 47 +- .../propertyBox/curvelineObject.vue | 6 +- .../components/propertyBox/explosion.vue | 31 +- .../views/components/propertyBox/flyLine.vue | 29 +- .../components/propertyBox/graphObject.vue | 32 +- .../components/propertyBox/groundText.vue | 7 +- .../views/components/propertyBox/layer.vue | 29 +- .../components/propertyBox/modelObject.vue | 32 +- .../propertyBox/particleEffects.vue | 47 +- .../components/propertyBox/polygonObject.vue | 5 +- .../propertyBox/polyhedronObject.vue | 47 +- .../components/propertyBox/polylineObject.vue | 5 +- .../components/propertyBox/radarScan.vue | 7 +- .../propertyBox/radarScanStereoscopic.vue | 47 +- .../components/propertyBox/standText.vue | 5 +- .../views/components/propertyBox/terrain.vue | 5 +- .../views/components/propertyBox/tileset.vue | 5 +- .../propertyBox/trajectoryMotion.vue | 47 +- .../views/components/propertyBox/vector.vue | 2 +- .../propertyBox/wallRealStereoscopic.vue | 7 +- .../propertyBox/wallStereoscopic.vue | 47 +- .../components/propertyBox/waterSurface.vue | 47 +- .../views/components/propertyBox/weather.vue | 110 ---- .../tree/components/hooks/rightOperate.ts | 6 +- .../src/views/components/tree/entityClick.ts | 129 +++-- .../src/views/components/tree/hooks/tree.ts | 104 ++-- .../src/views/components/tree/index.vue | 28 +- src/renderer/src/views/home/index.vue | 2 +- src/renderer/src/views/login/useSetUp.ts | 54 +- 59 files changed, 1240 insertions(+), 1938 deletions(-) create mode 100644 src/renderer/src/api/systemApi.ts delete mode 100644 src/renderer/src/assets/i18n/index.js delete mode 100644 src/renderer/src/assets/i18n/lang/local_en.js delete mode 100644 src/renderer/src/assets/i18n/lang/local_tw.js delete mode 100644 src/renderer/src/assets/i18n/lang/local_zh.js delete mode 100644 src/renderer/src/views/components/propertyBox/weather.vue diff --git a/package.json b/package.json index 527bb42..2827909 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,8 @@ "element-plus": "^2.10.4", "express": "^5.1.0", "file-saver": "^2.0.5", + "ini": "^5.0.0", + "js-yaml": "^4.1.0", "mitt": "^3.0.1", "moment": "^2.30.1", "pinia": "^3.0.3", diff --git a/resources/java/stop.bat b/resources/java/stop.bat index 9cb7db5..c123d7e 100644 --- a/resources/java/stop.bat +++ b/resources/java/stop.bat @@ -36,4 +36,4 @@ for %%J in (!TARGET_JARS!) do ( :: 清理临时文件 del "!TEMP_FILE!" >nul 2>&1 echo. && echo 操作完成 -endlocal && pause \ No newline at end of file +endlocal \ No newline at end of file diff --git a/src/main/index.ts b/src/main/index.ts index 9d1ac06..dd86d0a 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -4,10 +4,12 @@ import { electronApp, optimizer, is } from '@electron-toolkit/utils' import icon from '../../resources/earth.png?asset' import { Recorder } from "../preload/recorder"; import fs from 'fs' -import { exec } from 'child_process' +import { exec, spawn } from 'child_process' import dayjs from 'dayjs' +import os from "os"; import { GetHomeDir } from './config' import { start, getServer } from "./app"; +const yaml = require("js-yaml"); // 开发环境路径处理 - 确保添加正确的file协议 @@ -113,13 +115,28 @@ function createWindow(): void { allowRunningInsecureContent: true } }) + let ymlBatPath = process.env.NODE_ENV === 'development' ? path.resolve(app.getAppPath(), 'resources', 'java', 'app', 'application.yml') : path.join(process.resourcesPath, 'app.asar.unpacked', 'resources', 'java', 'app', 'application.yml') + ymlBatPath = process.platform === 'win32' ? ymlBatPath.replace(/^(\w:)/, '/$1') : ymlBatPath + ipcMain.on("getIniConfig", (event, option) => { + let ymlPath = ymlBatPath.substring(1, 200) + console.log("iniPath", ymlPath); + + const ymlContent = yaml.load(fs.readFileSync(ymlPath, 'utf8')); + + if(option) { + ymlContent.server.port = option.port + fs.writeFileSync(ymlPath, yaml.dump(ymlContent)); + } + + event.sender.send("YmlConfig", ymlContent); + }); ipcMain.on("restart", () => { // app.relaunch(); // app.quit(); // cleanupProcess.kill(); // app.relaunch(); isRestart = true - windowAllClosed() + closeAllWindows() }); // 监听启动页完成的消息 ipcMain.on('splash-completed', () => { @@ -254,11 +271,6 @@ function createWindow(): void { event.sender.send("dirFiles", data); }); - ipcMain.on("restart", (e) => { - closeChild(); - app.relaunch(); - app.exit(); - }); let _winMap = new Map(); // 监听渲染进程创建新窗口的请求 @@ -289,6 +301,45 @@ function createWindow(): void { ipcMain.handle('get-_winMap', () => { return _winMap }) + ipcMain.on("openFFPlay", (e, obj) => { + let cmd = ""; + let platform = os.platform(); + if (platform === "win32") { + cmd = "ffplay.exe"; + } else { + cmd = "ffplay"; + } + let title = obj.name; + let child = spawn( + path.join(GetHomeDir(), `/ffplay/${cmd}`), + [ + "-window_title", + title, + "-x", + "1300", + "-y", + "730", + "-rtsp_transport", + "tcp", + obj.url, + ], + { + cwd: path.join(GetHomeDir(), "/ffplay/"), + stdio: "ignore", + // shell: true, + } + ).on("exit", (err) => { + console.log("out"); + console.log(err); + e.sender.send("openFFPlayOut", err); + }); + + /* .on("stdout", function(err, m) { + console.log(m); + });*/ + console.log("child", child.pid); + child.unref(); + }); // 设置窗口标题和图标 mainWindow.webContents.setWindowOpenHandler((details) => { shell.openExternal(details.url) @@ -399,7 +450,7 @@ function windowAllClosed() { console.log('所有窗口已关闭,执行清理脚本...'); getServer().close(() => { // 执行批处理文件 - const cleanupProcess = exec(stopBatPath.substring(1, 200), (error, stdout, stderr) => { + const cleanupProcess = exec('D:/project/electron-4.0/electron-4/resources/java/stop.bat', (error, stdout, stderr) => { if (error) { console.error(`清理脚本执行失败: ${error.message}`); } @@ -409,17 +460,14 @@ function windowAllClosed() { if (stdout) { console.log(`清理脚本输出: ${stdout}`); } - - // 脚本执行完成后强制退出 - forceQuit(); + if (isQuitting) { + forceQuit(); + } }); // 监听子进程退出事件(确保即使脚本出错也能退出) cleanupProcess.on('exit', (code) => { console.log(`清理脚本退出,代码: ${code}`); - if (isQuitting) { - forceQuit(); - } }); // 超时保护:防止脚本卡住导致应用无法退出 @@ -429,7 +477,7 @@ function windowAllClosed() { cleanupProcess.kill(); // 终止卡住的脚本 forceQuit(); } - }, 2000); // 2秒超时 + }, 3000); // 3秒超时 }) } @@ -442,19 +490,34 @@ function forceQuit() { // isRestart = false // app.relaunch(); // } - let child = exec('taskkill /F /T /PID ' + process.pid, (error) => { - if (error) console.error('强制终止失败:', error); - child.kill(); - }); + // let child = exec('taskkill /F /T /PID ' + process.pid, (error) => { + // if (error) console.error('强制终止失败:', error); + // child.kill(); + // }); if (isRestart) { app.relaunch(); } + console.log('------退出-------'); + app.exit(); + app.quit(); } else { // 其他系统 process.exit(0); } } +function closeAllWindows() { + // 1. 获取所有已打开的窗口 + const allWindows = BrowserWindow.getAllWindows(); + + // 2. 遍历关闭每个窗口 + allWindows.forEach(window => { + if (!window.isDestroyed()) { // 避免操作已销毁的窗口(防止报错) + window.close(); + } + }); +} + console.log('=================================================') global.sharedObject = { hasService: false, diff --git a/src/renderer/src/I18n/zh-CN.ts b/src/renderer/src/I18n/zh-CN.ts index c285a7f..538b8a0 100644 --- a/src/renderer/src/I18n/zh-CN.ts +++ b/src/renderer/src/I18n/zh-CN.ts @@ -1,15 +1,6 @@ -import { title } from "process"; - export default { - week: { - 0: '星期日', - 1: '星期一', - 2: '星期二', - 3: '星期三', - 4: '星期四', - 5: '星期五', - 6: '星期六' - }, + title: '实景三维电子沙盘系统', + week: ['星期日', '星期一', '星期二','星期三', '星期四','星期五', '星期六'], tree: { title: '图层指挥舱', // title: "综合信息", @@ -20,7 +11,8 @@ export default { search: '搜索', treePlaceholder: '关键词搜索', selectPlaceholder: '请选择', - selectNoText: '无数据' + selectNoText: '无数据', + confirm: '确定' }, rightMenu: { addDirectory: '添加文件夹', @@ -73,7 +65,7 @@ export default { diffuseScan: "扩散光波", radarScan: "雷达光波", scanStereoscopic: "立体雷达", - polyhedronObject: "多边体", + polyhedronObject: "多面体", water: "水面", fountain: '喷泉', waterL: '喷射水柱', @@ -107,7 +99,6 @@ export default { lopeDistanceMeasures: '坡度', coorMeasure: "坐标", clear: "清除测量", - }, tool: { routePlan: "路径规划", @@ -132,7 +123,6 @@ export default { gdbImport: "gdb导入", circleStatistics: "圆形统计", polygonStatistics: "多边形统计", - }, bottomMenu: { groundText: '贴地文字', @@ -148,11 +138,11 @@ export default { pincerArrow: '双箭头', rendezvous: '集结地', rectangle: '矩形', - unLock: '锁定', - Lock: '解锁' + unLock: '解锁', + Lock: '锁定' }, system: { - systemTitle: '系统设置', + systemTitle: '系统面板', authorize: '授权信息', setting: '系统设置', project: '工程信息', @@ -172,10 +162,16 @@ export default { noAuthexpire: '暂未授权', }, systemSetting: { + setStyle: '风格设置', + setCoordinates: '坐标设置', + setUnit: '单位设置', + setFunction: '功能设置', setLanguage: '语言设置', theme: '主题换肤', defaultView: '设置', + defaultViewLabel: '默认视角', defaultData: '添加', + defaultDataLabel: '在线数据', intoBack: '进入', management: '后台管理', showCompass: '导航器', @@ -226,4 +222,4 @@ export default { title: '图标选择', setting: '默认图标参数设置' } -} +} as const diff --git a/src/renderer/src/I18n/zh-EN.ts b/src/renderer/src/I18n/zh-EN.ts index 61e3f0c..472af95 100644 --- a/src/renderer/src/I18n/zh-EN.ts +++ b/src/renderer/src/I18n/zh-EN.ts @@ -1,326 +1,6 @@ export default { - login: { - signIn: 'Sign In' - }, - dashboard: { - langLable: 'English' - }, - leftMenu: { - firstMenu: { - measure: 'measure', - tool: 'tool', - effect: 'effect', - bigData: 'bigData', - modelLibrary: 'modelLibrary', - situation: 'situationLibrary', - onlinePictureSource: 'onlinePictureSource', - analysis: 'analysis', - militaryMark: 'militaryMark', - ersanwei: 'two and three-dimensional', - junbiao3d: '3D military logo' - }, - secondMenu: { - //模型库 - imports: 'import', - // 测量二级菜单 - projectionArea: 'projectionArea', - areaMeasure: 'areaMeasure', - distanceMeasure: 'Ground contact', - heightMeasure: 'height', - triangleMeasure: 'triangle', - lopeDistanceMeasures: 'slope', - projectionDistanceMeasure: 'Projection distance', - MeasureAzimuth: 'Azimuth measurement', - - MeasureAngle: 'MeasureAngle', - coorMeasure: 'coordinate', - clearMeasure: 'clear', - clear: 'clear', - // projectionArea: "projectionArea", - // distanceMeasure: "distanceMeasure", - // heightMeasure: "heightMeasure", - // triangleMeasure: "triangleMeasure", - // coorMeasure: "coordinateMeasure", - // clearMeasure: "clearMeasure", - clearPlanning: 'clearPlanning', - // 工具二级菜单 - BIMEdit: 'BIMEdit', - goodsSearch: 'goodsSearch', - goodsSearchPolygon: 'goodsSearchPolygon', - goodsSearchCircle: 'goodsSearchCircle', - rangeQuery: 'rangeQuery', - // floodSimulation: "floodSimulation", - destoryRecord: 'destoryRecord', - floodSimulation: 'flood', - clearQuery: 'clearQuery', - graffiti: 'graffiti', - clearGraffiti: 'clearGraffiti', - HDScreen: 'HDScreen', - HDScreenHD: 'HDScreenHD', - areaScreen: 'areaScreen', - coorLocation: 'coorLocation', - perspective: 'perspective', - Intervisibility: 'View Analysis', - tilesetClipping: 'tilesetClipping', - transform: 'transform model', - videoRecording: 'videoRecording', - clearTilesetClipping: 'clearTileset', - pressModel: 'press Model', - terrainDig: 'terrainDig', - pictureLocation: 'pictureLocation', - roam: 'roam', - annotationAggregation: 'MarkPoint', - mouseLocation: 'mouseLocation', - mouseOver: 'mouseOver', - importImg: 'Panoramic association', - gdbImport: 'GDB import', - projConvert: 'Degrees, minutes, and seconds', - projectionConvert: 'Projection conversion', - peopleRoomLink: 'Human house association', - splitScreen: 'Roller blind comparison', - - // 特效库二级菜单 - fire: 'fire', - smoke: 'smoke', - explosion: 'explosion', - water: 'waterSurface', - diffuseScan: 'radar', - radarScan: 'diffused', - scanStereoscopic: 'scanStereoscopic', - wallStereoscopic: 'elecFence', - entityWall: 'entityWall', - polyhedronObject: 'multilateral', - clearTrajectoryMotion: 'clearTrajectoryMotion', - cube: 'cube', - trajectoryMotion: 'trackMotion', - roadDraw: 'roadDraw', - lineDraw: 'lineDraw', - rain: 'rain', - snow: 'snow', - fog: 'fog', - nightVision: 'night Vision', - skystarry: 'Starry sky', - illumination: 'Illumination', - light: 'light', - heatMap: 'heatMap', - importPanorama: 'panorama', - fountain: 'fountain', - flyLine: 'flyLine', - - waterL: 'water column', - groundText: 'GroundText', - standText: 'StandText', - - // fire: "fire", - // water: "waterSurface", - // annotationAggregation: "annotationAggregation", - // diffuseScan: "radarLightWave", - // radarScan: "diffusedLightWave", - // wallStereoscopic: "electronicFence", - // polyhedronObject: "multilateralBody", - // cube: "cube", - // trajectoryMotion: "trajectoryMotion", - // roadDraw: "roadDraw", - // lineDraw: "lineDraw", - // rain: "rain", - // snow: "snow", - - // 分析二级菜单 - inundationAnalysis: 'inundation', - visualFieldAnalysis: 'viewshed analysis', - visualFieldAnalysis2: 'round analysis', - profileAnalysis: 'profile', - cutFill: 'cutFill', - slopeDirection: 'slopeDirection', - contour: 'contour', - qcontour: 'Global contour' - // inundationAnalysis: "inundationAnalysis", - // visualFieldAnalysis: "visualFieldAnalysis", - // profileAnalysis: "profileAnalysis", - } - }, - bottomMenu: { - groundText: 'Ground text', - standText: '3D text', - point: 'point', - line: 'line', - curve: 'curve', - panel: 'panel', - ellipse: 'ellipse', - sector: 'sector', - circle: 'circle', - attackArrow: 'attackArrow', - pincerArrow: 'pincerArrow', - rect: 'rect', - assemble: 'assemble', - unLock: 'unLock' - }, - headerTitles: { - systemTitle: 'System setting', - udp: 'Physical sandbox', - ConcurrencyControl: 'Concurrency Control', - localIP: 'Local IP', - localPort: 'Local Port', - weather: 'Weather', - week: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - equipment: { - title: 'equipment', - addEquipment: 'add Equipment', - downloadEquipment: 'download Equipment', - bulkImport: 'bulk Import' - }, - // 0827 - isc: { - title: 'ISCPlatform', - url: 'url', - setInfo: 'setInfo', - updateEquipment: 'updateEquipment' - }, - iconTitle: { - reset: 'default view', - fullScreen: 'full screen', - set: 'setting', - shrink: 'shrink', - logout: 'logout', - locate: 'Satellite positioning', - air: 'UAV', - excel: 'Excel' - }, - - auth: 'Authorization', - Engineering: 'Engineering', - Hikang: 'Hikang platform', - Version: 'Version', - Theme: 'System Setting', - Service: 'Service access', - Satellite: 'Satellite', - searchWay: { - title: 'search mode', - searchWayList: { - poi: 'Offline search', - net: 'Online search' - } - }, - confirm: 'confirm', - auths: { - authTime: 'Auth time', - authType: 'Auth status', - authCode: 'Auth code', - upload: 'import', - authexpire: 'auth expire' - }, - service: { - offline: 'Offline', - official: 'Official', - customize: 'customize', - agreements: { - Agreement: 'Agreement', - setAgreement: 'Protocol setting', - port: 'port', - location: 'location' - } - }, - Engineerings: { - import: 'Road import', - importProject: 'Project import', - cover: 'cover', - increase: 'increase', - derive: 'Project derive', - importPOI: 'importPOI' - }, - Hikangs: { - enable: 'enable' - }, - versions: { - version_code: 'Version number', - version_update: 'Check for updates' - }, - systemSetting: { - setLanguage: 'Language', - theme: 'Thematic', - defaultView: 'defaultView', - defaultData: 'Add online data', - management: 'management', - showCompass: 'show compass', - showLatitudeLongitudeNetwork: 'show Latitude And Longitude Network', - showFangliNet: 'Fangli Net', - showDistanceLegend: 'show distanceLegend', - showToolBar: 'show infoBar', - showFPS: 'show fps', - showMapX: 'show mapX', - occlusion: 'Point occlusion', - coordinateSystem: 'System Coordinate system', - switch: 'switch', - battery: 'Battery Info', - sheetIndexStatusSwitch: 'Standard map sheet', - skinList: { - yingguangse: 'Fluorescent', - gonganlan: 'Tech Blue', - hong: 'Sun Red' - } - }, - model: { - title: 'model', - createModelLibrary: 'create Model Library', - selectModelLibrary: 'select Model Library', - addModelType: 'add Model Type', - importModel: 'import Model', - updatePoster: 'update Poster', - preview: 'preview', - updateModel: 'update Model', - deleteModel: 'delete Model', - editModel: 'editModel' - }, - graphLabel: { - title: 'graph Label', - edit: 'edit', - delete: 'delete', - importGraph: 'import graph', - addLine: 'add line', - addPanel: 'add panel', - addCircle: 'add circle', - createGraphLabelLibrary: 'create GraphLabel Library', - selectGraphLabelLibrary: 'select GraphLabel Library', - addGraphLabelType: 'add GraphLabel Type', - importGraphLabel: 'import GraphLabel' - }, - user: { - title: 'title', - deleteUser: 'delete user', - createUser: 'create user', - importUser: 'import user', - role: 'Permissions management', - deleteRole: 'delete role', - createRole: 'create role', - depart: 'depart', - createDepart: 'create depart', - deleteDepart: 'delete depart', - editDepart: 'edit depart' - }, - terrain: { - terrainSetting: 'Terrain setting' - } - }, - - rightMenu: { - addResource: 'add map data', - addDirectory: 'add Directory', - pictureLocation: 'add photo data', - importPanorama: 'add panoramic data', - edit: 'edit Node', - del: 'delete Node', - setView: 'set View', - resetView: 'reset View', - layerRaise: 'layer Raise', - layerLower: 'layer Lower', - layerToTop: 'layer ToTop', - layerToBottom: 'layer ToBottom', - addTrajectory: 'addTra jectory', - addXlsx: 'add Xlsx', - resetPerspective: 'reset Perspective', - showAttr: 'show Attribute', - importHeader: 'import Header' - }, + title: 'Realistic 3D electronic sand table system', + week: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], tree: { // title: "Information", title: 'Layer Control', @@ -331,6 +11,215 @@ export default { search: 'search', treePlaceholder: 'Please enter a keyword to search', selectPlaceholder: 'select', - selectNoText: 'no select' + selectNoText: 'no select', + confirm: 'confirm' + }, + rightMenu: { + addResource: 'add map data', + addDirectory: 'add Directory', + pictureLocation: 'add photo data', + importPanorama: 'add panoramic data', + addBIM: 'add BIM', + edit: 'edit Node', + del: 'delete Node', + setView: 'set View', + resetView: 'reset View', + layerRaise: 'layer Raise', + layerLower: 'layer Lower', + layerToTop: 'layer ToTop', + layerToBottom: 'layer ToBottom', + tilesetClipping: 'tileset Clipping', + addTrajectory: 'addTra jectory', + addXlsx: 'add Xlsx', + showAttr: 'show Attribute', + importHeader: 'import Header', + resetPerspective: 'reset Perspective', + }, + iconTitle: { + reset: 'default view', + fullScreen: 'full screen', + set: 'setting', + shrink: 'shrink', + logout: 'logout', + locate: 'Satellite positioning', + air: 'UAV', + excel: 'Excel' + }, + firstMenu: { + measure: 'measure', + tool: 'tool', + effect: 'effect', + bigData: 'bigData', + modelLibrary: 'modelLibrary', + situation: 'situationLibrary', + onlinePictureSource: 'onlinePictureSource', + analysis: 'analysis', + militaryMark: 'militaryMark', + ersanwei: 'two and three-dimensional', + junbiao3d: '3D military logo' + }, + effect: { + trajectoryMotion: "trackMotion", + wallStereoscopic: "elecFence", + entityWall: 'entityWall', + diffuseScan: "diffused", + radarScan: "radar", + scanStereoscopic: "scanStereoscopic", + polyhedronObject: "polyhedron", + water: "water surface", + fountain: 'fountain', + waterL: 'water column', + fire: "fire", + explosion: "explosion", + smoke: "smoke", + nightVision: 'night vision', + flyLine: 'flyLine', + }, + analysis: { + inundationAnalysis: "inundation", + profileAnalysis: "profile", + sightAnalysis: "intervisibility analysis", + kenAnalysis: "Visual field analysis", + circleKen: "round analysis", + slopeDirection: "slopeDirection", + cutFill: "cutFill", + globalContour: "global contour line", + contour: "contour line", + clearAnalysis: "clear", + }, + measure: { + projectionArea: "projectionArea", + projectionDistanceMeasure: 'Projection distance', + areaMeasure: "areaMeasure", + distanceMeasure: "ground contact", + heightMeasure: "height", + triangleMeasure: "triangle", + MeasureAzimuth: 'azimuth measurement', + MeasureAngle: "MeasureAngle", + lopeDistanceMeasures: 'slope', + coorMeasure: "coordinate", + clear: "clear", + }, + tool: { + routePlan: "routePlan", + clearRoute: 'clear route', + graffiti: "graffiti", + // stopGraffiti: "结束涂鸦", + clearGraffiti: "clear graffiti", + roam: "roam", + coorLocation: "coorLocation", + mouseLocation: "mouseLocation", + annotationAggregation: "MarkPoint", + splitScreen: 'Roller blind comparison', + screenShot: 'screenShot', + highQuality: 'HDRendering', + videoRecord: 'videoRecording', + pressModel: "press Model", + terrainDig: "terrainDig", + tilesetClipping: "tilesetClipping", + clearTilesetClipping: "clearTilesetClipping", + projConvert: 'Degrees, minutes, and seconds', + projectionConvert: 'Projection conversion', + gdbImport: "GDB import", + circleStatistics: "goodsSearchCircle", + polygonStatistics: "goodsSearch Polygon", + }, + bottomMenu: { + groundText: 'Ground Text', + standText: '3D Text', + point: 'Point', + line: 'Line', + curve: 'Curve', + panel: 'Panel', + ellipse: 'Ellipse', + sector: 'Sector', + circle: 'Circle', + attackArrow: 'AttackArrow', + pincerArrow: 'PincerArrow', + rendezvous: 'Assemble', + rectangle: 'Rectangle', + unLock: 'UnLock', + Lock: 'Lock' + }, + system: { + systemTitle: 'Settings', + authorize: 'Authorization Information', + setting: 'System settings', + project: 'Engineering Information', + device: 'device management', + modelManage: 'Model management', + graphLabelManage: 'Military Icon Management', + photoManage: 'Icon Management', + version: 'Version information' + }, + auths: { + authType: 'Authorization status', + authTime: 'Authorization time', + authCode: 'Authorization code', + upload: 'import', + authexpire: 'expired', + authTempExpire: 'normal', + noAuthexpire: 'unauthorized', + }, + systemSetting: { + setStyle: 'Style setting', + setCoordinates: 'Coordinates setting', + setUnit: 'Unit setting', + setFunction: 'Function setting', + setLanguage: 'Language setting', + theme: 'Thematic peel', + defaultView: 'setting', + defaultViewLabel: 'default view', + defaultData: 'add', + defaultDataLabel: 'online data', + intoBack: 'into', + management: 'management', + showCompass: 'compass', + showLatitudeLongitudeNetwork: 'grid of latitude and longitude', + showFangliNet: 'Fangli Net', + showDistanceLegend: 'distanceLegend', + showToolBar: 'infoBar', + showFPS: 'FPS', + showMapX: 'mapX', + occlusion: 'point occlusion', + coordinateSystem: 'System Coordinate system', + sheetIndexStatusSwitch: 'Standard map sheet', + switch: 'switch', + battery: 'Battery Info', + latitude: 'geographic coordinate format', + lengthUnit: 'length', + areaUnit: 'area', + heightUnit: 'height', + speedUnit: 'speed', + administrativeArea: 'administrativeArea', + skinList: { + yingguangse: 'Fluorescent', + gonganlan: 'Tech Blue', + hong: 'Sun Red' + } + }, + searchWay: { + title: 'search mode', + searchWayList: { + poi: "Offline search", + net: "Online search", + }, + }, + ConcurrencyControl: 'Concurrency Control', + versions: { + version_code: "Version number", + version_update: "Check for updates", + }, + model: { + title: "Model", + setting: 'default settings' + }, + graph: { + title: 'Military Icon', + setting: 'default settings' + }, + photo: { + title: 'Icon', + setting: 'default settings' } } as const diff --git a/src/renderer/src/I18n/zh-TW.ts b/src/renderer/src/I18n/zh-TW.ts index e2e85d0..16122dc 100644 --- a/src/renderer/src/I18n/zh-TW.ts +++ b/src/renderer/src/I18n/zh-TW.ts @@ -1,4 +1,5 @@ export default { + title: '實景三維電子沙盤系統', login: { signIn: '登錄' }, @@ -127,10 +128,11 @@ export default { pincerArrow: '雙箭頭', rect: '矩形', assemble: '集結地', - unLock: '鎖定' + unLock: '解鎖', + Lock: '鎖定' }, headerTitles: { - systemTitle: '係統設置', + systemTitle: '係統面板', udp: '物理沙盘', ConcurrencyControl: '並發量控制', localIP: '本地IP', diff --git a/src/renderer/src/api/gisApi.ts b/src/renderer/src/api/gisApi.ts index bf4e5ce..1e6929f 100644 --- a/src/renderer/src/api/gisApi.ts +++ b/src/renderer/src/api/gisApi.ts @@ -9,6 +9,7 @@ export const GisApi = { }) }, + // 图片定位 uploadLocationImage: async (data: any) => { return await request.post({ url: `/source/uploadLocationImage`, diff --git a/src/renderer/src/api/systemApi.ts b/src/renderer/src/api/systemApi.ts new file mode 100644 index 0000000..354bfdb --- /dev/null +++ b/src/renderer/src/api/systemApi.ts @@ -0,0 +1,19 @@ +import request from '@/axios/request' + +export const SystemApi = { + // 读取系统服务端口配置 + getSystemService: async (data: any) => { + return await request.post({ + url: `/systemService/info`, + data + }) + }, + + // 修改系统服务端口配置 + updateSystemService: async (data: any) => { + return await request.post({ + url: `/systemService/updatePort`, + data + }) + } +} diff --git a/src/renderer/src/assets/i18n/index.js b/src/renderer/src/assets/i18n/index.js deleted file mode 100644 index 3de5d32..0000000 --- a/src/renderer/src/assets/i18n/index.js +++ /dev/null @@ -1,19 +0,0 @@ -import Vue from "vue"; -// 使用插件 -import VueI18n from "vue-i18n"; -import * as vx from "vuex"; -import systemSetting from "@/store/modules/systemSetting"; - -Vue.use(VueI18n); -const i18n = { - locale: systemSetting.state.lang || "zh", // 语言标识,第一次登录默认是中文 - messages: { - zh: require("./lang/local_zh"), // 中文 - en: require("./lang/local_en"), // 英语 - tw: require("./lang/local_tw"), // 台湾 - // ... //要多少语言就自己添加多少 - }, -}; - -export default i18n; -// module.exports = messages diff --git a/src/renderer/src/assets/i18n/lang/local_en.js b/src/renderer/src/assets/i18n/lang/local_en.js deleted file mode 100644 index 5e6b950..0000000 --- a/src/renderer/src/assets/i18n/lang/local_en.js +++ /dev/null @@ -1,348 +0,0 @@ -let obj = require("../../../../../config/app_config"); -module.exports = { - title: { - name: obj.productName_en, //"实景三维数字孪生系统" - }, - login: { - signIn: "Sign In", - }, - dashboard: { - langLable: "English", - }, - leftMenu: { - firstMenu: { - measure: "measure", - tool: "tool", - effect: "effect", - bigData: "bigData", - modelLibrary: "modelLibrary", - situation: "situationLibrary", - onlinePictureSource: "onlinePictureSource", - analysis: "analysis", - militaryMark: "militaryMark", - ersanwei: "two and three-dimensional", - junbiao3d: "3D military logo", - }, - secondMenu: { - //模型库 - imports: "import", - // 测量二级菜单 - projectionArea: "projectionArea", - areaMeasure: "areaMeasure", - distanceMeasure: "Ground contact", - heightMeasure: "height", - triangleMeasure: "triangle", - lopeDistanceMeasures: "slope", - projectionDistanceMeasure: "Projection distance", - MeasureAzimuth: "Azimuth measurement", - - MeasureAngle: "MeasureAngle", - coorMeasure: "coordinate", - clearMeasure: "clear", - clear: "clear", - // projectionArea: "projectionArea", - // distanceMeasure: "distanceMeasure", - // heightMeasure: "heightMeasure", - // triangleMeasure: "triangleMeasure", - // coorMeasure: "coordinateMeasure", - // clearMeasure: "clearMeasure", - clearPlanning: "clearPlanning", - // 工具二级菜单 - BIMEdit: "BIMEdit", - goodsSearch: "goodsSearch", - goodsSearchPolygon: "goodsSearchPolygon", - goodsSearchCircle: "goodsSearchCircle", - rangeQuery: "rangeQuery", - // floodSimulation: "floodSimulation", - destoryRecord: "destoryRecord", - floodSimulation: "flood", - clearQuery: "clearQuery", - graffiti: "graffiti", - clearGraffiti: "clearGraffiti", - HDScreen: "HDScreen", - HDScreenHD: "HDScreenHD", - areaScreen: "areaScreen", - coorLocation: "coorLocation", - perspective: "perspective", - Intervisibility: "View Analysis", - tilesetClipping: "tilesetClipping", - transform: "transform model", - videoRecording: "videoRecording", - clearTilesetClipping: "clearTileset", - pressModel: "press Model", - terrainDig: "terrainDig", - pictureLocation: "pictureLocation", - roam: "roam", - annotationAggregation: "MarkPoint", - mouseLocation: "mouseLocation", - mouseOver: "mouseOver", - importImg: "Panoramic association", - gdbImport: "GDB import", - projConvert: "Degrees, minutes, and seconds", - projectionConvert: "Projection conversion", - peopleRoomLink: "Human house association", - splitScreen: "Roller blind comparison", - - // 特效库二级菜单 - fire: "fire", - smoke: "smoke", - explosion: "explosion", - water: "waterSurface", - diffuseScan: "radar", - radarScan: "diffused", - scanStereoscopic: "scanStereoscopic", - wallStereoscopic: "elecFence", - entityWall: "entityWall", - polyhedronObject: "multilateral", - clearTrajectoryMotion: "clearTrajectoryMotion", - cube: "cube", - trajectoryMotion: "trackMotion", - roadDraw: "roadDraw", - lineDraw: "lineDraw", - rain: "rain", - snow: "snow", - fog: "fog", - nightVision: "night Vision", - skystarry: "Starry sky", - illumination: "Illumination", - light: "light", - heatMap: "heatMap", - importPanorama: "panorama", - fountain: "fountain", - flyLine:"flyLine", - - waterL: "water column", - groundText: "GroundText", - standText: "StandText", - - // fire: "fire", - // water: "waterSurface", - // annotationAggregation: "annotationAggregation", - // diffuseScan: "radarLightWave", - // radarScan: "diffusedLightWave", - // wallStereoscopic: "electronicFence", - // polyhedronObject: "multilateralBody", - // cube: "cube", - // trajectoryMotion: "trajectoryMotion", - // roadDraw: "roadDraw", - // lineDraw: "lineDraw", - // rain: "rain", - // snow: "snow", - - // 分析二级菜单 - inundationAnalysis: "inundation", - visualFieldAnalysis: "viewshed analysis", - visualFieldAnalysis2: "round analysis", - profileAnalysis: "profile", - cutFill: "cutFill", - slopeDirection: "slopeDirection", - contour: "contour", - qcontour:'Global contour', - // inundationAnalysis: "inundationAnalysis", - // visualFieldAnalysis: "visualFieldAnalysis", - // profileAnalysis: "profileAnalysis", - }, - }, - bottomMenu: { - groundText: "Ground text", - standText: "3D text", - point: "point", - line: "line", - curve: "curve", - panel: "panel", - ellipse: "ellipse", - sector: "sector", - circle: "circle", - attackArrow: "attackArrow", - pincerArrow: "pincerArrow", - rect: "rect", - assemble: "assemble", - unLock: "unLock", - }, - headerTitles: { - systemTitle: "System setting", - udp: "Physical sandbox", - ConcurrencyControl: "Concurrency Control", - localIP: "Local IP", - localPort: "Local Port", - weather: "Weather", - week: [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday", - ], - equipment: { - title: "equipment", - addEquipment: "add Equipment", - downloadEquipment: "download Equipment", - bulkImport: "bulk Import", - }, - // 0827 - isc: { - title: "ISCPlatform", - url: "url", - setInfo: "setInfo", - updateEquipment: "updateEquipment", - }, - iconTitle: { - reset: "default view", - fullScreen: "full screen", - set: "setting", - shrink: "shrink", - logout: "logout", - locate: "Satellite positioning", - air: "UAV", - excel: "Excel", - }, - - auth: "Authorization", - Engineering: "Engineering", - Hikang: "Hikang platform", - Version: "Version", - Theme: "System Setting", - Service: "Service access", - Satellite: "Satellite", - searchWay: { - title: "search mode", - searchWayList: { - poi: "Offline search", - net: "Online search", - }, - }, - confirm: "confirm", - auths: { - authTime: "Auth time", - authType: "Auth status", - authCode: "Auth code", - upload: "import", - authexpire: "auth expire", - }, - service: { - offline: "Offline", - official: "Official", - customize: "customize", - agreements: { - Agreement: "Agreement", - setAgreement: "Protocol setting", - port: "port", - location: "location", - }, - }, - Engineerings: { - import: "Road import", - importProject: "Project import", - cover: "cover", - increase: "increase", - derive: "Project derive", - importPOI: "importPOI", - }, - Hikangs: { - enable: "enable", - }, - versions: { - version_code: "Version number", - version_update: "Check for updates", - }, - systemSetting: { - setLanguage: "Language", - theme: "Thematic", - defaultView: "defaultView", - defaultData: "Add online data", - management: "management", - showCompass: "show compass", - showLatitudeLongitudeNetwork: "show Latitude And Longitude Network", - showFangliNet: "Fangli Net", - showDistanceLegend: "show distanceLegend", - showToolBar: "show infoBar", - showFPS: "show fps", - showMapX: "show mapX", - occlusion: "Point occlusion", - coordinateSystem: "System Coordinate system", - switch: "switch", - battery: "Battery Info", - sheetIndexStatusSwitch: "Standard map sheet", - skinList: { - yingguangse: "Fluorescent", - gonganlan: "Tech Blue", - hong: "Sun Red", - }, - }, - model: { - title: "model", - createModelLibrary: "create Model Library", - selectModelLibrary: "select Model Library", - addModelType: "add Model Type", - importModel: "import Model", - updatePoster: "update Poster", - preview: "preview", - updateModel: "update Model", - deleteModel: "delete Model", - editModel: "editModel", - }, - graphLabel: { - title: "graph Label", - edit: "edit", - delete: "delete", - importGraph: "import graph", - addLine: "add line", - addPanel: "add panel", - addCircle: "add circle", - createGraphLabelLibrary: "create GraphLabel Library", - selectGraphLabelLibrary: "select GraphLabel Library", - addGraphLabelType: "add GraphLabel Type", - importGraphLabel: "import GraphLabel", - }, - user: { - title: "title", - deleteUser: "delete user", - createUser: "create user", - importUser: "import user", - role: "Permissions management", - deleteRole: "delete role", - createRole: "create role", - depart: "depart", - createDepart: "create depart", - deleteDepart: "delete depart", - editDepart: "edit depart", - }, - terrain: { - terrainSetting: "Terrain setting", - }, - }, - - rightMenu: { - addResource: "add map data", - addDirectory: "add Directory", - pictureLocation: "add photo data", - importPanorama: "add panoramic data", - edit: "edit Node", - del: "delete Node", - setView: "set View", - resetView: "reset View", - layerRaise: "layer Raise", - layerLower: "layer Lower", - layerToTop: "layer ToTop", - layerToBottom: "layer ToBottom", - addTrajectory: "addTra jectory", - addXlsx: "add Xlsx", - resetPerspective: "reset Perspective", - showAttr: "show Attribute", - importHeader: "import Header", - }, - tree: { - // title: "Information", - title: "Layer Control", - layer: "layer", - location: "location", - }, - btn: { - search: "search", - treePlaceholder: "Please enter a keyword to search", - selectPlaceholder: "select", - selectNoText: "no select", - }, -}; diff --git a/src/renderer/src/assets/i18n/lang/local_tw.js b/src/renderer/src/assets/i18n/lang/local_tw.js deleted file mode 100644 index e820c0f..0000000 --- a/src/renderer/src/assets/i18n/lang/local_tw.js +++ /dev/null @@ -1,320 +0,0 @@ -let obj = require("../../../../../config/app_config"); -module.exports = { - title: { - name: obj.productName_tw, //"实景三维数字孪生系统" - }, - login: { - signIn: "登錄", - }, - - leftMenu: { - firstMenu: { - measure: "測量庫", - tool: "工具庫", - effect: "特效庫", - bigData: "大數據", - situation: "方案庫", - modelLibrary: "模型庫", - onlinePictureSource: "在線圖源", - analysis: "分析庫", - militaryMark: "軍標庫", - ersanwei: "二三維", - junbiao3d: "三維軍標", - }, - secondMenu: { - //模型库 - imports: "導入", - // 测量二级菜单 - projectionArea: "投影面積", - areaMeasure: "貼地面積", - distanceMeasure: "貼地距離", - heightMeasure: "垂直高度", - triangleMeasure: "空間三角", - coorMeasure: "坐標", - MeasureAngle: "夹角", - lopeDistanceMeasures: "坡度", - MeasureAzimuth: "方位角", - projectionDistanceMeasure: "投影距離", - clearMeasure: "清除測量", - clear: "清除", - - // 工具二级菜单 - BIMEdit: "BIM編輯", - goodsSearch: "物资統計", - goodsSearchCircle: "圓形統計", - goodsSearchPolgon: "多邊形統計", - rangeQuery: "範圍查詢", - floodSimulation: "淹沒模擬", - clearQuery: "清除查詢", - destoryRecord: "結束錄製", - graffiti: "塗鴉", - clearGraffiti: "清除塗鴉", - HDScreen: "屏幕截圖", - HDScreenHD: "高清出图", - areaScreen: "範圍截圖", - coorLocation: "坐標定位", - perspective: "透視", - Intervisibility: "視線分析", - tilesetClipping: "剖切", - transform: "模型轉換", - videoRecording: "視頻錄製", - routePlan: "路徑規劃", - clearPlanning: "清除路徑規劃", - clearTilesetClipping: "清除剖切", - pressModel: "模型壓平", - terrainDig: "地形開挖", - pictureLocation: "照片定位", - importPanorama: "全景導入", - roam: "飛行漫遊", - annotationAggregation: "標註點聚合", - mouseLocation: "鼠標定位", - mouseOver: "結束定位", - importImg: "全景關聯", - gdbImport: "gdb導入", - projConvert: "度分秒", - projectionConvert: "投影轉換", - peopleRoomLink: "人房關聯", - splitScreen: "捲簾對比", - // 特效库二级菜单 - fire: "火焰", - smoke: "烟霧", - explosion: "爆炸", - water: "水面", - diffuseScan: "擴散光波", - radarScan: "雷達光波", - clearTrajectoryMotion: "清除軌跡", - scanStereoscopic: "立體雷達", - wallStereoscopic: "電子圍墻", - entityWall: "物體牆", - polyhedronObject: "多邊體", - cube: "立方體", - trajectoryMotion: "軌跡運動", - roadDraw: "道路繪製", - lineDraw: "線路繪製", - rain: "與", - snow: "雪", - fog: "霧", - nightVision: "夜視", - skystarry: "星空", - illumination: "光照", - light: "光照", - heatMap: "熱力圖", - fountain: "喷泉", - waterL: "喷射水柱", - groundText: "貼地文字", - standText: "立體文字", - flyLine:"飛線", - - // 分析二级菜单 - inundationAnalysis: "淹沒分析", - visualFieldAnalysis: "視域分析", - visualFieldAnalysis2: "圆形視域", - profileAnalysis: "剖面分析", - cutFill: "土方分析", - slopeDirection: "坡度坡向", - viewShed: "可視域分析", - contour: "等高線", - qcontour:'全域等高線', - }, - }, - bottomMenu: { - groundText: "貼地文字", - standText: "立體文字", - point: "點", - line: "綫", - curve: "曲線", - panel: "麵", - circle: "圓", - ellipse: "橢圓", - sector: "扇形", - attackArrow: "箭頭", - pincerArrow: "雙箭頭", - rect: "矩形", - assemble: "集結地", - unLock: "鎖定", - }, - headerTitles: { - systemTitle: "係統設置", - udp: "物理沙盘", - ConcurrencyControl: "並發量控制", - localIP: "本地IP", - localPort: "本地端口", - weather: "天气", - week: [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六", - ], - equipment: { - title: "設備管理", - addEquipment: "添加設備", - downloadEquipment: "下載模板", - bulkImport: "批量導入", - }, - // 0827 - isc: { - title: "ISC平台", - url: "平台地址", - setInfo: "設置平台信息", - updateEquipment: "更新平台設備", - }, - iconTitle: { - reset: "默认视角", - fullScreen: "全屏", - set: "設置", - shrink: "退出全屏", - locate: "北鬥定位", - logout: "退出登錄", - air: "無人機", - excel: "Excel", - }, - auth: "授權信息", - Engineering: "工程信息", - Hikang: "海康平臺", - Version: "版本信息", - Theme: "係統設置", - Service: "服务接入", - Satellite: "衛星定位", - searchWay: { - title: "搜索方式", - searchWayList: { - poi: "离線搜索", - net: "在線搜索", - }, - }, - confirm: "確認", - auths: { - authTime: "授權時間", - authType: "授權狀態", - authCode: "授權碼", - upload: "導入", - authexpire: "授權過期", - }, - service: { - offline: "離綫服務", - official: "官方服務", - customize: "自定義", - agreements: { - Agreement: "協議", - setAgreement: "協議設置", - port: "端口", - location: "地址", - }, - }, - Engineerings: { - import: "路網導入", - cover: "覆蓋", - increase: "增加", - importProject: "工程導入", - derive: "工程導齣", - importPOI: "導入POI", - }, - Hikangs: { - enable: "啓用", - }, - versions: { - version_code: "版本號", - version_update: "檢查更新", - }, - systemSetting: { - setLanguage: "語言設置", - theme: "主題换膚", - defaultView: "設置默認視角", - defaultData: "添加在線數據", - management: "後臺管理", - showCompass: "導航器", - showLatitudeLongitudeNetwork: "經緯網", - showFangliNet: "方裡網", - showDistanceLegend: "比例尺", - showToolBar: "信息欄", - showFPS: "刷新率", - showMapX: "鷹眼圖", - occlusion: "地形遮擋", - coordinateSystem: "系統坐標系", - switch: "切換", - battery: "電池資訊", - sheetIndexStatusSwitch: "標準圖幅", - skinList: { - yingguangse: "熒光色", - gonganlan: "科技藍", - hong: "烈日紅", - }, - }, - model: { - title: "模型管理", - createModelLibrary: "創建模型庫", - selectModelLibrary: "選擇模型庫", - addModelType: "添加模型類型", - importModel: "導入模型", - updatePoster: "更換縮略圖", - preview: "預覽", - updateModel: "更換模型", - deleteModel: "刪除", - editModel: "編輯", - }, - graphLabel: { - title: "軍標管理", - createGraphLabelLibrary: "創建軍標庫", - selectGraphLabelLibrary: "選擇軍標庫", - addGraphLabelType: "添加軍標類型", - importGraphLabel: "導入軍標", - edit: "編輯", - delete: "刪除", - importGraph: "導入軍標", - addLine: "添加線", - addPanel: "添加面", - addCircle: "添加圓", - }, - user: { - title: "用戶管理", - deleteUser: "刪除", - createUser: "創建用戶", - importUser: "導入用戶", - role: "权限管理", - deleteRole: "刪除", - createRole: "創建角色", - depart: "部門管理", - createDepart: "創建部門", - deleteDepart: "創建部門", - editDepart: "修改部門", - }, - terrain: { - terrainSetting: "地形設置", - }, - }, - rightMenu: { - addDirectory: "添加資料夾", - addResource: "添加地圖數據", - pictureLocation: "帶定位照片", - importPanorama: "帶定位全景", - edit: "編輯節點", - del: "刪除節點", - setView: "設置視角", - resetView: "重置視角", - layerRaise: "圖層上移", - layerLower: "圖層下移", - layerToTop: "圖層置頂", - layerToBottom: "圖層置底", - addTrajectory: "軌跡運動", - addXlsx: "添加作戰數據", - resetPerspective: "重置透視", - showAttr: "查看屬性", - importHeader: "導入表头", - }, - tree: { - // title: "綜合資訊", - title: "圖層指揮艙", - layer: "圖層", - location: "地點", - }, - btn: { - search: "搜索", - treePlaceholder: "請輸入關鍵詞進行搜索", - selectPlaceholder: "請選擇", - selectNoText: "無數據", - }, -}; diff --git a/src/renderer/src/assets/i18n/lang/local_zh.js b/src/renderer/src/assets/i18n/lang/local_zh.js deleted file mode 100644 index c292a63..0000000 --- a/src/renderer/src/assets/i18n/lang/local_zh.js +++ /dev/null @@ -1,330 +0,0 @@ -// productName -let obj = require('../../../../../config/app_config') -console.log(obj) -module.exports = { - title: { - name: obj.productName //"实景三维数字孪生系统" - }, - login: { - signIn: '登录' - }, - dashboard: { - langLable: '中文简体' - }, - leftMenu: { - firstMenu: { - measure: '测量库', - tool: '工具库', - effect: '特效库', - bigData: '大数据', - modelLibrary: '模型库', - situation: '方案库', - onlinePictureSource: '在线图源', - analysis: '分析库', - militaryMark: '军标库', - ersanwei: '二三维', - junbiao3d: '三维军标' - }, - secondMenu: { - //模型库 - imports: '导入', - // 测量二级菜单 - projectionArea: '投影面积', - areaMeasure: '贴地面积', - distanceMeasure: '贴地距离', - heightMeasure: '垂直高度', - triangleMeasure: '空间三角', - coorMeasure: '坐标', - MeasureAngle: '夹角', - clearMeasure: '清除测量', - MeasureAzimuth: '方位角', - lopeDistanceMeasures: '坡度', - projectionDistanceMeasure: '投影距离', - clear: '清除', - - // 工具二级菜单 - BIMEdit: 'BIM编辑', - goodsSearch: '物资统计', - goodsSearchPolgon: '多边形统计', - goodsSearchCircle: '圆形统计', - rangeQuery: '范围查询', - floodSimulation: '淹没模拟', - clearQuery: '清除查询', - destoryRecord: '结束录制', - graffiti: '涂鸦', - stopGraffiti: '结束涂鸦', - clearGraffiti: '清除涂鸦', - HDScreen: '屏幕截图', - HDScreenHD: '高清出图', - areaScreen: '范围截图', - coorLocation: '坐标定位', - perspective: '透视', - Intervisibility: '视线分析', - transform: '模型转换', - videoRecording: '视频录制', - routePlan: '路径规划', - tilesetClipping: '剖切', - clearTilesetClipping: '清除剖切', - pressModel: '模型压平', - terrainDig: '地形开挖', - splitScreen: '卷帘对比', - - roam: '飞行漫游', - annotationAggregation: '标注点聚合', - mouseLocation: '鼠标定位', - mouseOver: '结束定位', - importImg: '全景关联', - gdbImport: 'gdb导入', - projConvert: '度分秒', - projectionConvert: '投影转换', - peopleRoomLink: '人房关联', - - // 特效库二级菜单 - fire: '火焰', - smoke: '烟雾', - explosion: '爆炸', - water: '水面', - diffuseScan: '扩散光波', - radarScan: '雷达光波', - scanStereoscopic: '立体雷达', - wallStereoscopic: '电子围墙', - entityWall: '实体墙', - polyhedronObject: '多边体', - cube: '立方体', - trajectoryMotion: '轨迹运动', - clearTrajectoryMotion: '清除轨迹', - roadDraw: '道路绘制', - lineDraw: '线路绘制', - rain: '雨', - snow: '雪', - fog: '雾', - nightVision: '夜视', - skystarry: '星空', - illumination: '光照', - light: '光照', - heatMap: '热力图', - fountain: '喷泉', - waterL: '喷射水柱', - flyLine: '飞线', - // 分析二级菜单 - inundationAnalysis: '淹没分析', - visualFieldAnalysis: '视域分析', - visualFieldAnalysis2: '圆形视域', - profileAnalysis: '剖面分析', - cutFill: '土方分析', - slopeDirection: '坡度坡向', - contour: '等高线', - qcontour: '全局等高线', - pictureLocation: '照片定位', - importPanorama: '全景导入', - clearAnalysis: '清除' - } - }, - bottomMenu: { - groundText: '贴地文字', - standText: '立体文字', - point: '点', - line: '线', - curve: '曲线', - panel: '面', - ellipse: '椭圆', - sector: '扇形', - circle: '圆', - attackArrow: '箭头', - pincerArrow: '双箭头', - assemble: '集结地', - rect: '矩形', - unLock: '锁定', - Lock: '解锁' - }, - headerTitles: { - //顶部抬头以及系统设置页面文字汉语翻译 - systemTitle: '系统设置', - udp: '物理沙盘', - ConcurrencyControl: '并发量控制', - localIP: '本地IP', - localPort: '本地端口', - remoteIP: '远程IP', - remotePort: '远程端口', - weather: '天气', - week: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - equipment: { - title: '设备管理', - addEquipment: '添加设备', - downloadEquipment: '下载模板', - bulkImport: '批量导入' - }, - // 无人机 - air: { - title: '无人机管理', - addAir: '添加无人机', - downloadAir: '下载模板' - }, - // 0827 - isc: { - title: 'ISC平台', - url: '平台地址', - setInfo: '设置平台信息', - updateEquipment: '更新平台设备' - }, - iconTitle: { - reset: '默认视角', - fullScreen: '全屏', - set: '设置', - shrink: '退出全屏', - logout: '退出登录', - locate: '北斗定位', - air: '无人机', - excel: 'Excel' - }, - auth: '授权信息', - Engineering: '工程信息', - Hikang: '海康平台', - Version: '版本信息', - Theme: '系统设置', - Satellite: '卫星定位', - searchWay: { - title: '搜索方式', - searchWayList: { - poi: '离线搜索', - net: '在线搜索' - } - }, - Service: '服务接入', - confirm: '确认', - auths: { - authType: '授权状态', - authTime: '授权时间', - authCode: '授权码', - upload: '授权导入', - authexpire: '授权过期', - authTempExpire: '授权正常', - noAuthexpire: '暂未授权' - }, - service: { - offline: '离线服务', - official: '官方服务', - customize: '自定义', - agreements: { - Agreement: '协议', - setAgreement: '协议设置', - port: '端口', - location: '地址' - } - }, - Engineerings: { - import: '路网导入', - cover: '覆盖', - increase: '增加', - importProject: '工程覆盖导入', - consolidated: '工程合并导入', - derive: '工程导出', - importPOI: 'POI导入' - }, - Hikangs: { - enable: '启用' - }, - versions: { - version_code: '版本号', - version_update: '检查更新' - }, - systemSetting: { - setLanguage: '语言设置', - theme: '主题换肤', - defaultView: '设置默认视角', - defaultData: '添加在线数据', - management: '后台管理', - showCompass: '导航器', - showLatitudeLongitudeNetwork: '经纬网', - showFangliNet: '方里网', - showDistanceLegend: '比例尺', - showToolBar: '信息栏', - showFPS: '刷新率', - showMapX: '鹰眼图', - occlusion: '地形遮挡', - coordinateSystem: '系统坐标系', - sheetIndexStatusSwitch: '标准图幅', - switch: '切换', - battery: '电池信息', - skinList: { - yingguangse: '荧光色', - gonganlan: '科技蓝', - hong: '烈日红' - } - }, - model: { - title: '模型管理', - createModelLibrary: '创建模型库', - selectModelLibrary: '选择模型库', - addModelType: '添加模型类型', - importModel: '导入模型', - updatePoster: '更换缩略图', - preview: '预览', - updateModel: '更换模型', - deleteModel: '删除', - editModel: '编辑' - }, - graphLabel: { - title: '军标管理', - createGraphLabelLibrary: '创建军标库', - selectGraphLabelLibrary: '选择军标库', - addGraphLabelType: '添加军标类型', - importGraphLabel: '导入军标', - edit: '编辑', - delete: '删除', - importGraph: '导入军标', - addLine: '添加线', - addPanel: '添加面', - addCircle: '添加圆' - }, - user: { - title: '用户管理', - deleteUser: '删除', - createUser: '创建用户', - importUser: '导入用户', - role: '权限管理', - deleteRole: '删除', - createRole: '创建角色', - depart: '部门管理', - createDepart: '创建部门', - deleteDepart: '删除部门', - editDepart: '修改部门' - }, - terrain: { - terrainSetting: '地形设置' - } - }, - rightMenu: { - addDirectory: '添加文件夹', - addResource: '添加地图数据', - pictureLocation: '带定位照片', - importPanorama: '带定位全景', - addBIM: '添加BIM', - edit: '编辑节点', - del: '删除节点', - setView: '设置视角', - resetView: '重置视角', - layerRaise: '图层上移', - layerLower: '图层下移', - layerToTop: '图层置顶', - layerToBottom: '图层置底', - tilesetClipping: '剖切', - addTrajectory: '轨迹运动', - addXlsx: '添加作战数据', - showAttr: '查看属性', - importHeader: '导入表头', - resetPerspective: '重置透视' - }, - tree: { - title: '图层指挥舱', - // title: "综合信息", - layer: '图层', - location: '地点' - }, - btn: { - search: '搜索', - treePlaceholder: '关键词搜索', - selectPlaceholder: '请选择', - selectNoText: '无数据' - } -} diff --git a/src/renderer/src/components/Pagination/index.vue b/src/renderer/src/components/Pagination/index.vue index c45c30c..e89cf7b 100644 --- a/src/renderer/src/components/Pagination/index.vue +++ b/src/renderer/src/components/Pagination/index.vue @@ -5,12 +5,12 @@ v-model:current-page="currentPage" v-model:page-size="pageSize" :background="true" - :page-sizes="[10, 20, 30, 50, 100]" + :page-sizes="pageSizes ? pageSizes : [10, 20, 30, 50, 100]" :pager-count="pagerCount" :total="total" :small="isSmall" class="pagination" - layout="total, sizes, prev, pager, next, jumper" + :layout='"total, prev, pager, next, jumper" + (pageSizes===false?"":"sizes")' @size-change="handleSizeChange" @current-change="handleCurrentChange" /> @@ -44,6 +44,7 @@ const props = defineProps({ type: Number, default: 20 }, + pageSizes: {}, // 设置最大页码按钮数。 页码按钮的数量,当总页数超过该值时会折叠 // 移动端页码按钮的数量端默认值 5 pagerCount: { @@ -52,7 +53,7 @@ const props = defineProps({ } }) -const emit = defineEmits(['update:page', 'update:limit', 'pagination']) +const emit = defineEmits(['update:page', 'update:limit', 'update:pageSizes', 'pagination']) const currentPage = computed({ get() { return props.page @@ -71,6 +72,15 @@ const pageSize = computed({ emit('update:limit', val) } }) +const pageSizes = computed({ + get() { + return props.pageSizes + }, + set(val) { + // 触发 update:limit 事件,更新 limit 属性,从而更新 pageSize + emit('update:pageSizes', val) + } +}) const handleSizeChange = (val) => { // 如果修改后超过最大页面,强制跳转到第 1 页 if (currentPage.value * val > props.total) { diff --git a/src/renderer/src/components/dialog/baseDialog.vue b/src/renderer/src/components/dialog/baseDialog.vue index ca0db3b..7788d57 100644 --- a/src/renderer/src/components/dialog/baseDialog.vue +++ b/src/renderer/src/components/dialog/baseDialog.vue @@ -1,9 +1,15 @@ @@ -19,7 +19,9 @@ diff --git a/src/renderer/src/views/components/headers/components/weather/index.vue b/src/renderer/src/views/components/headers/components/weather/index.vue index e32fdd0..e3fe4a4 100644 --- a/src/renderer/src/views/components/headers/components/weather/index.vue +++ b/src/renderer/src/views/components/headers/components/weather/index.vue @@ -260,6 +260,7 @@ var switchFunc = () => { id: 123, speed: weatherData.speed, time: weatherData.time, + // @ts-ignore hour: document.getElementById('currentTime').textContent }) timeline.setSunShine(true) diff --git a/src/renderer/src/views/components/headers/components/weather/timeLIne.ts b/src/renderer/src/views/components/headers/components/weather/timeLIne.ts index 3e88af0..5000372 100644 --- a/src/renderer/src/views/components/headers/components/weather/timeLIne.ts +++ b/src/renderer/src/views/components/headers/components/weather/timeLIne.ts @@ -1,3 +1,4 @@ +// @ts-nocheck import { ElMessage } from 'element-plus' export default class TimeLine { constructor(sdk, speed) { diff --git a/src/renderer/src/views/components/headers/index.vue b/src/renderer/src/views/components/headers/index.vue index 4454b1d..2145a31 100644 --- a/src/renderer/src/views/components/headers/index.vue +++ b/src/renderer/src/views/components/headers/index.vue @@ -8,7 +8,7 @@ {{ date.hms }}
{{ date.ymd }} - {{ t(`week.${date.week}`) }} + {{ t(`week.4`) }}
diff --git a/src/renderer/src/views/components/propertyBox/CircleObject.vue b/src/renderer/src/views/components/propertyBox/CircleObject.vue index dd88225..d4087db 100644 --- a/src/renderer/src/views/components/propertyBox/CircleObject.vue +++ b/src/renderer/src/views/components/propertyBox/CircleObject.vue @@ -328,8 +328,8 @@ const remove = () => { type: 'warning' }) .then(async () => { - let selectNodes = getSelectedNodes(window.treeObj) - let source_ids = cusRemoveNode(window.treeObj, selectNodes) + let node = window.treeObj.getNodeByParam('id', that.options.id, null) + let source_ids = cusRemoveNode(window.treeObj, [node]) const res = await TreeApi.removeDirectory({ ids: source_ids }) if (res.code == 0 || res.code == 200) { ElMessage({ @@ -337,6 +337,7 @@ const remove = () => { type: 'success' }) that.remove() + (window as any)._entityMap.delete(source_ids[0]) } else { ElMessage({ message: res.msg || '删除失败', @@ -345,6 +346,7 @@ const remove = () => { } }) .catch(() => { + // 用户点击取消,不执行任何操作 }) } diff --git a/src/renderer/src/views/components/propertyBox/addGroundText.vue b/src/renderer/src/views/components/propertyBox/addGroundText.vue index 35f97c5..0e97c27 100644 --- a/src/renderer/src/views/components/propertyBox/addGroundText.vue +++ b/src/renderer/src/views/components/propertyBox/addGroundText.vue @@ -1,10 +1,10 @@ @@ -16,6 +16,8 @@ import { TreeApi } from '@/api/tree' import Dialog from '@/components/dialog/baseDialog.vue' import { initMapData } from '../../../common/initMapData' import { useTreeNode } from '../tree/hooks/treeNode' +import { useI18n } from 'vue-i18n' +const { t } = useI18n() const { cusAddNodes } = useTreeNode() diff --git a/src/renderer/src/views/components/propertyBox/addStandText.vue b/src/renderer/src/views/components/propertyBox/addStandText.vue index 411f3e6..989f2ef 100644 --- a/src/renderer/src/views/components/propertyBox/addStandText.vue +++ b/src/renderer/src/views/components/propertyBox/addStandText.vue @@ -1,10 +1,10 @@ @@ -16,7 +16,9 @@ import { TreeApi } from '@/api/tree' import Dialog from '@/components/dialog/baseDialog.vue' import { initMapData } from '../../../common/initMapData' import { useTreeNode } from '../tree/hooks/treeNode' +import { useI18n } from 'vue-i18n' +const { t } = useI18n() const { cusAddNodes } = useTreeNode() const baseDialog: any = ref(null) diff --git a/src/renderer/src/views/components/propertyBox/attackArrow.vue b/src/renderer/src/views/components/propertyBox/attackArrow.vue index f662fcc..2d9f37d 100644 --- a/src/renderer/src/views/components/propertyBox/attackArrow.vue +++ b/src/renderer/src/views/components/propertyBox/attackArrow.vue @@ -161,7 +161,7 @@ import attribute from './attribute.vue' import labelStyle from './labelStyle.vue' import { useTreeNode } from '@/views/components/tree/hooks/treeNode' -const { cusUpdateNode } = useTreeNode() +const { cusUpdateNode, cusRemoveNode } = useTreeNode() const title = ref('箭头') const baseDialog: any = ref(null); @@ -362,8 +362,33 @@ watch( ); const remove = () => { - that.remove() close() + ElMessageBox.confirm('此操作将永久删除节点及所有子节点, 是否继续?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(async () => { + let node = window.treeObj.getNodeByParam('id', that.options.id, null) + let source_ids = cusRemoveNode(window.treeObj, [node]) + const res = await TreeApi.removeDirectory({ ids: source_ids }) + if (res.code == 0 || res.code == 200) { + ElMessage({ + message: '删除成功', + type: 'success' + }) + that.remove() + (window as any)._entityMap.delete(source_ids[0]) + } else { + ElMessage({ + message: res.msg || '删除失败', + type: 'error' + }) + } + }) + .catch(() => { + // 用户点击取消,不执行任何操作 + }) } defineExpose({ diff --git a/src/renderer/src/views/components/propertyBox/attribute.vue b/src/renderer/src/views/components/propertyBox/attribute.vue index 3551407..dca4ce5 100644 --- a/src/renderer/src/views/components/propertyBox/attribute.vue +++ b/src/renderer/src/views/components/propertyBox/attribute.vue @@ -65,8 +65,8 @@
编辑内容 - - + +
@@ -82,28 +82,29 @@
密码
- +
+
+
+
+ 编辑内容 + + +
+
+
+
+
+
序号
+
名称
+
数量
+
+
+
+
+
{{ index + 1 }}
+
{{ item.name }}
+
+
+
+
+
+
+

暂无数据

+
+
+
+
@@ -202,6 +237,14 @@ if (window && window.process && window.process.type === 'renderer') { const baseDialog: any = ref(null) const eventBus: any = inject('bus') const attributeType = ref('richText') +const goodsKeywords = ref('') +const cameraParams = ref({ + keyWord: '', + pageSize: 5, + page: 1, + total: 0 +}) +const cameraList = ref() const props = defineProps({ entityOptions: { @@ -211,12 +254,139 @@ const props = defineProps({ }) const attribute = ref(props.entityOptions.options.attribute) -if(!props.entityOptions.options.richTextContent) -{ +if (!props.entityOptions.options.richTextContent) { props.entityOptions.options.richTextContent = '' } const richTextContent = ref(props.entityOptions.options.richTextContent) +const allGoodsList: any = ref([]) +const goodsList: any = ref([]) +const goodsFilter = () => { + if (allGoodsList.value.length) { + goodsList.value = allGoodsList.value.filter(function (item) { + item.cnt = 0 + return (item.name.indexOf(goodsKeywords.value) !== -1); + }); + for (let i = props.entityOptions.attributeGoods.length - 1; i >= 0; i--) { + for (let m = 0; m < goodsList.value.length; m++) { + if ('id' in goodsList.value[m]) { + if (goodsList.value[m].id === props.entityOptions.attributeGoods[i].id) { + goodsList.value[m].name = props.entityOptions.attributeGoods[i].name + goodsList.value[m].cnt = props.entityOptions.attributeGoods[i].cnt + break + } + } + } + } + } +} +const goodsSelect = (page) => { + allGoodsList.value = [ + // { + // id: '1', + // name: '物资1' + // }, + // { + // id: '2', + // name: '物资2' + // }, + // { + // id: '3', + // name: '物资3' + // }, + // { + // id: '4', + // name: '物资4' + // }, + // { + // id: '5', + // name: '物资5' + // }, + // { + // id: '6', + // name: '物资6' + // }, + // { + // id: '7', + // name: '物资7' + // } + ] + for (let i = props.entityOptions.attributeGoods.length - 1; i >= 0; i--) { + let flag = false + for (let m = 0; m < allGoodsList.value.length; m++) { + if ('id' in allGoodsList.value[m]) { + if (allGoodsList.value[m].id === props.entityOptions.attributeGoods[i].id) { + flag = true + break + } + } + } + if (!flag) { + props.entityOptions.attributeGoods.splice(i, 1) + } + } + goodsFilter() + console.log('props.entityOptions.attributeGoods', props.entityOptions.attributeGoods) +} +const cameraSelect = ({ page, limit }) => { + if (!props.entityOptions.attributeSelect) { + return + } + else { + let flag = false + for (let i = 0; i < props.entityOptions.attributeSelect.length; i++) { + if (props.entityOptions.attributeSelect[i].key === 'camera') { + flag = true + break + } + } + if (!flag) { + return + } + } + cameraParams.value.page = page + cameraParams.value.pageSize = limit + let url = "" + const params:any = { + cameraName: cameraParams.value.keyWord, + page: cameraParams.value.page, + pageSize: cameraParams.value.pageSize + }; + const queryString = new URLSearchParams(params).toString(); + url = `http://localhost:8891/yjearth4.0/api/v1/cameraData/list?${queryString}` + fetch(url, { + method: 'get', + headers: { + 'Content-Type': 'application/json', + "token": 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzYwOTQyMzU2fQ.TKwa0hMzsSl9bD4-iItoay2VDTQZf2zt0Lu0qgiRaUM', + "Authorization": "Bearer " + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzYwOTQyMzU2fQ.TKwa0hMzsSl9bD4-iItoay2VDTQZf2zt0Lu0qgiRaUM', + } + }).then((response) => { + if (response.status === 200) { + response.json().then((data) => { + if (data.code === 200 || data.code === 0) { + if (data.data) { + cameraParams.value.total = data.data.total + if (data.data.list && data.data.list.length > 0) { + cameraList.value = data.data.list + for (let i = 0; i < cameraList.value.length; i++) { + cameraList.value[i].checked = false + for (let j = 0; j < props.entityOptions.attributeCamera.length; j++) { + if (cameraList.value[i].deviceId == props.entityOptions.attributeCamera[j].deviceId) { + cameraList.value[i].checked = true + } + } + } + } + } + } else { + console.error(data.message) + } + }) + } + }) +} + let attributeSelect = ref([ { name: '富文本', @@ -232,11 +402,11 @@ let attributeSelect = ref([ if (props.entityOptions.type === 'BillboardObject') { attributeSelect.value.push( - // { - // name: 'IP摄像头', - // value: 'IP摄像头', - // key: 'camera' - // }, + { + name: 'IP摄像头', + value: 'IP摄像头', + key: 'camera' + }, // { // name: 'ISC摄像头', // value: 'ISC摄像头', @@ -252,17 +422,17 @@ if (props.entityOptions.type === 'BillboardObject') { value: '全景图', key: 'vr' }, - // { - // name: '物资', - // value: '物资', - // key: 'goods' - // }, + { + name: '物资', + value: '物资', + key: 'goods' + }, ) + goodsSelect(1) // 物资 + cameraSelect({page: cameraParams.value.page, limit: cameraParams.value.pageSize }) // ip摄像头 } - -const cameraName = ref('') const addlinkInput = ref('') const addvrInput = ref('') const linkEditActive: any = ref({}) @@ -374,7 +544,6 @@ const linkConfirmEdit = (index: string | number) => { const linkCancelEdit = () => { linkEditActive.value = {} } -const cameraSelect = () => { } const _addRr = () => { if (addvrInput.value) { let link = { @@ -432,8 +601,63 @@ const vrConfirmEdit = (index: string | number) => { const vrCancelEdit = () => { vrEditActive.value = {} } -const goodsFilter = () => { } + const attributeChange = () => { } + +const changeAttributeGoods = (item) => { + let flag = false + for (let m = props.entityOptions.attributeGoods.length - 1; m >= 0; m--) { + if ('id' in item) { + if (item.id === props.entityOptions.attributeGoods[m].id) { + flag = true + if (item.cnt) { + props.entityOptions.attributeGoods[m].cnt = item.cnt + } + else { + props.entityOptions.attributeGoods.splice(m, 1) + } + break + } + } + } + if (!flag) { + if (!item.cnt) { + return + } + let data = { + id: item.id, + name: item.name, + cnt: item.cnt, + } + props.entityOptions.attributeGoods.push({ ...data }) + } +} +const changeAttributeCamera = (e) => { + console.log(e) + props.entityOptions.attributeCamera = [{ ...e }] + for (let i = 0; i < cameraList.value.length; i++) { + if (cameraList.value[i].deviceId !== e.deviceId) { + cameraList.value[i].checked = false + } + } + // if (e.checked) { + // // 只选中一个 + // props.entityOptions.attributeCamera = [{...e}] + // for (let i = 0; i < cameraList.value.length; i++) { + // if (cameraList.value[i].deviceId !== e.deviceId) { + // cameraList.value[i].checked = false + // } + // } + // } + // else { + // let newArray = that.attributeCamera.filter((item) => { + // if ('deviceId' in data.data.list[i]) { + // return item.deviceId !== data.data.list[i].deviceId + // } + // }) + // that.attributeCamera = newArray + // } +} diff --git a/src/renderer/src/views/components/propertyBox/billboardObject.vue b/src/renderer/src/views/components/propertyBox/billboardObject.vue index 34a597f..6f207f9 100644 --- a/src/renderer/src/views/components/propertyBox/billboardObject.vue +++ b/src/renderer/src/views/components/propertyBox/billboardObject.vue @@ -783,8 +783,8 @@ const remove = () => { type: 'warning' }) .then(async () => { - let selectNodes = getSelectedNodes(window.treeObj) - let source_ids = cusRemoveNode(window.treeObj, selectNodes) + let node = window.treeObj.getNodeByParam('id', that.options.id, null) + let source_ids = cusRemoveNode(window.treeObj, [node]) const res = await TreeApi.removeDirectory({ ids: source_ids }) if (res.code == 0 || res.code == 200) { ElMessage({ @@ -792,6 +792,7 @@ const remove = () => { type: 'success' }) that.remove() + (window as any)._entityMap.delete(source_ids[0]) } else { ElMessage({ message: res.msg || '删除失败', diff --git a/src/renderer/src/views/components/propertyBox/circleDiffuse.vue b/src/renderer/src/views/components/propertyBox/circleDiffuse.vue index 1887a4b..81904c3 100644 --- a/src/renderer/src/views/components/propertyBox/circleDiffuse.vue +++ b/src/renderer/src/views/components/propertyBox/circleDiffuse.vue @@ -275,30 +275,31 @@ const close = () => { const remove = () => { close() ElMessageBox.confirm('此操作将永久删除节点及所有子节点, 是否继续?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let selectNodes = getSelectedNodes(window.treeObj) - let source_ids = cusRemoveNode(window.treeObj, selectNodes) - const res = await TreeApi.removeDirectory({ ids: source_ids }) - if (res.code == 0 || res.code == 200) { - ElMessage({ - message: '删除成功', - type: 'success' - }) - that.remove() - } else { - ElMessage({ - message: res.msg || '删除失败', - type: 'error' - }) - } - }) - .catch(() => { - // 用户点击取消,不执行任何操作 + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' }) + .then(async () => { + let node = window.treeObj.getNodeByParam('id', that.options.id, null) + let source_ids = cusRemoveNode(window.treeObj, [node]) + const res = await TreeApi.removeDirectory({ ids: source_ids }) + if (res.code == 0 || res.code == 200) { + ElMessage({ + message: '删除成功', + type: 'success' + }) + that.remove() + (window as any)._entityMap.delete(source_ids[0]) + } else { + ElMessage({ + message: res.msg || '删除失败', + type: 'error' + }) + } + }) + .catch(() => { + // 用户点击取消,不执行任何操作 + }) } const translate = () => { that.openPositionEditing(() => { diff --git a/src/renderer/src/views/components/propertyBox/curvelineObject.vue b/src/renderer/src/views/components/propertyBox/curvelineObject.vue index a21a9fa..d7dc4b0 100644 --- a/src/renderer/src/views/components/propertyBox/curvelineObject.vue +++ b/src/renderer/src/views/components/propertyBox/curvelineObject.vue @@ -554,8 +554,8 @@ const remove = () => { type: 'warning' }) .then(async () => { - let selectNodes = getSelectedNodes(window.treeObj) - let source_ids = cusRemoveNode(window.treeObj, selectNodes) + let node = window.treeObj.getNodeByParam('id', that.options.id, null) + let source_ids = cusRemoveNode(window.treeObj, [node]) const res = await TreeApi.removeDirectory({ ids: source_ids }) if (res.code == 0 || res.code == 200) { ElMessage({ @@ -563,6 +563,7 @@ const remove = () => { type: 'success' }) that.remove() + (window as any)._entityMap.delete(source_ids[0]) } else { ElMessage({ message: res.msg || '删除失败', @@ -571,6 +572,7 @@ const remove = () => { } }) .catch(() => { + // 用户点击取消,不执行任何操作 }) } diff --git a/src/renderer/src/views/components/propertyBox/explosion.vue b/src/renderer/src/views/components/propertyBox/explosion.vue index 1c4238b..e91fbe9 100644 --- a/src/renderer/src/views/components/propertyBox/explosion.vue +++ b/src/renderer/src/views/components/propertyBox/explosion.vue @@ -66,9 +66,9 @@ import { ref } from 'vue' import { inject } from 'vue' import { TreeApi } from '@/api/tree' import Dialog from '@/components/dialog/baseDialog.vue' -import { useTreeNode } from '../tree/hooks/treeNode' +import { useTreeNode } from '@/views/components/tree/hooks/treeNode' -const { cusUpdateNode } = useTreeNode() +const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const baseDialog: any = ref(null) const eventBus: any = inject('bus') @@ -120,8 +120,33 @@ const close = () => { baseDialog.value?.close() } const remove = () => { - that.remove() close() + ElMessageBox.confirm('此操作将永久删除节点及所有子节点, 是否继续?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(async () => { + let node = window.treeObj.getNodeByParam('id', that.options.id, null) + let source_ids = cusRemoveNode(window.treeObj, [node]) + const res = await TreeApi.removeDirectory({ ids: source_ids }) + if (res.code == 0 || res.code == 200) { + ElMessage({ + message: '删除成功', + type: 'success' + }) + that.remove() + (window as any)._entityMap.delete(source_ids[0]) + } else { + ElMessage({ + message: res.msg || '删除失败', + type: 'error' + }) + } + }) + .catch(() => { + // 用户点击取消,不执行任何操作 + }) } defineExpose({ open, diff --git a/src/renderer/src/views/components/propertyBox/flyLine.vue b/src/renderer/src/views/components/propertyBox/flyLine.vue index dc6bbca..9af9589 100644 --- a/src/renderer/src/views/components/propertyBox/flyLine.vue +++ b/src/renderer/src/views/components/propertyBox/flyLine.vue @@ -88,7 +88,7 @@ import { TreeApi } from '@/api/tree' import Dialog from '@/components/dialog/baseDialog.vue' import { useTreeNode } from '../tree/hooks/treeNode' -const { cusUpdateNode } = useTreeNode() +const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode() const baseDialog: any = ref(null) const eventBus: any = inject('bus') @@ -144,8 +144,33 @@ const close = () => { baseDialog.value?.close() } const remove = () => { - that.remove() close() + ElMessageBox.confirm('此操作将永久删除节点及所有子节点, 是否继续?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(async () => { + let node = window.treeObj.getNodeByParam('id', that.options.id, null) + let source_ids = cusRemoveNode(window.treeObj, [node]) + const res = await TreeApi.removeDirectory({ ids: source_ids }) + if (res.code == 0 || res.code == 200) { + ElMessage({ + message: '删除成功', + type: 'success' + }) + that.remove() + (window as any)._entityMap.delete(source_ids[0]) + } else { + ElMessage({ + message: res.msg || '删除失败', + type: 'error' + }) + } + }) + .catch(() => { + // 用户点击取消,不执行任何操作 + }) } defineExpose({ open, diff --git a/src/renderer/src/views/components/propertyBox/graphObject.vue b/src/renderer/src/views/components/propertyBox/graphObject.vue index 120e920..27f9c82 100644 --- a/src/renderer/src/views/components/propertyBox/graphObject.vue +++ b/src/renderer/src/views/components/propertyBox/graphObject.vue @@ -180,8 +180,7 @@