From 2f544285ad9681e2c59b0e21d93246be0248b2b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E5=A4=A7=E8=83=86?= <1101282782@qq.com> Date: Thu, 11 Sep 2025 19:40:29 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E6=9E=90?= =?UTF-8?q?=E6=B8=85=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/I18n/zh-CN.ts | 2 +- src/renderer/src/assets/i18n/lang/local_zh.js | 531 +++++++++--------- .../assets/images/second/clearAnalysis.png | Bin 0 -> 844 bytes .../components/leftSide/leftSideFirst.vue | 2 +- .../components/leftSide/leftSideSecond.vue | 2 +- 5 files changed, 265 insertions(+), 272 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/i18n/lang/local_zh.js b/src/renderer/src/assets/i18n/lang/local_zh.js index 25e986d..b270dc0 100644 --- a/src/renderer/src/assets/i18n/lang/local_zh.js +++ b/src/renderer/src/assets/i18n/lang/local_zh.js @@ -1,335 +1,328 @@ // productName -let obj = require("../../../../../config/app_config"); -console.log(obj); +let obj = require('../../../../../config/app_config') +console.log(obj) module.exports = { title: { - name: obj.productName, //"实景三维数字孪生系统" + name: obj.productName //"实景三维数字孪生系统" }, login: { - signIn: "登录", + signIn: '登录' }, dashboard: { - langLable: "中文简体", + langLable: '中文简体' }, leftMenu: { firstMenu: { - measure: "测量库", - tool: "工具库", - effect: "特效库", - bigData: "大数据", - modelLibrary: "模型库", - situation: "方案库", - onlinePictureSource: "在线图源", - analysis: "分析库", - militaryMark: "军标库", - ersanwei: "二三维", - junbiao3d: "三维军标", + measure: '测量库', + tool: '工具库', + effect: '特效库', + bigData: '大数据', + modelLibrary: '模型库', + situation: '方案库', + onlinePictureSource: '在线图源', + analysis: '分析库', + militaryMark: '军标库', + ersanwei: '二三维', + junbiao3d: '三维军标' }, secondMenu: { //模型库 - imports: "导入", + imports: '导入', // 测量二级菜单 - projectionArea: "投影面积", - areaMeasure: "贴地面积", - distanceMeasure: "贴地距离", - heightMeasure: "垂直高度", - triangleMeasure: "空间三角", - coorMeasure: "坐标", - MeasureAngle: "夹角", - clearMeasure: "清除测量", - MeasureAzimuth: "方位角", - lopeDistanceMeasures: "坡度", - projectionDistanceMeasure: "投影距离", - clear: "清除", + 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: "卷帘对比", + 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: '卷帘对比', - path: "飞行漫游", - annotationAggregation: "标注点聚合", - mouseLocation: "鼠标定位", - mouseOver: "结束定位", - importImg: "全景关联", - gdbImport: "gdb导入", - projConvert: "度分秒", - projectionConvert: "投影转换", - peopleRoomLink: "人房关联", + path: '飞行漫游', + annotationAggregation: '标注点聚合', + mouseLocation: '鼠标定位', + mouseOver: '结束定位', + importImg: '全景关联', + gdbImport: 'gdb导入', + projConvert: '度分秒', + projectionConvert: '投影转换', + peopleRoomLink: '人房关联', // 特效库二级菜单 - fire: "火焰", - smoke: "烟雾", - explosion: "爆炸", - waterSurface: "水面", - radarLightWave: "扩散光波", - diffusedLightWave: "雷达光波", - scanStereoscopic: "立体雷达", - electronicFence: "电子围墙", - entityWall: "实体墙", - multilateralBody: "多边体", - cube: "立方体", - trajectoryMotion: "轨迹运动", - clearTrajectoryMotion: "清除轨迹", - roadDraw: "道路绘制", - lineDraw: "线路绘制", - rain: "雨", - snow: "雪", - fog: "雾", - nightVision: "夜视", - skystarry: "星空", - illumination: "光照", - light: "光照", - heatMap: "热力图", - fountain: "喷泉", - waterL: "喷射水柱", - flyLine:"飞线", + fire: '火焰', + smoke: '烟雾', + explosion: '爆炸', + waterSurface: '水面', + radarLightWave: '扩散光波', + diffusedLightWave: '雷达光波', + scanStereoscopic: '立体雷达', + electronicFence: '电子围墙', + entityWall: '实体墙', + multilateralBody: '多边体', + 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: "全景导入", - }, + 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: "解锁", + 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: [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六", - ], + systemTitle: '系统设置', + udp: '物理沙盘', + ConcurrencyControl: '并发量控制', + localIP: '本地IP', + localPort: '本地端口', + remoteIP: '远程IP', + remotePort: '远程端口', + weather: '天气', + week: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], equipment: { - title: "设备管理", - addEquipment: "添加设备", - downloadEquipment: "下载模板", - bulkImport: "批量导入", + title: '设备管理', + addEquipment: '添加设备', + downloadEquipment: '下载模板', + bulkImport: '批量导入' }, // 无人机 air: { - title: "无人机管理", - addAir: "添加无人机", - downloadAir: "下载模板", + title: '无人机管理', + addAir: '添加无人机', + downloadAir: '下载模板' }, // 0827 isc: { - title: "ISC平台", - url: "平台地址", - setInfo: "设置平台信息", - updateEquipment: "更新平台设备", + title: 'ISC平台', + url: '平台地址', + setInfo: '设置平台信息', + updateEquipment: '更新平台设备' }, iconTitle: { - reset: "默认视角", - fullScreen: "全屏", - set: "设置", - shrink: "退出全屏", - logout: "退出登录", - locate: "北斗定位", - air: "无人机", - excel: "Excel", + reset: '默认视角', + fullScreen: '全屏', + set: '设置', + shrink: '退出全屏', + logout: '退出登录', + locate: '北斗定位', + air: '无人机', + excel: 'Excel' }, - auth: "授权信息", - Engineering: "工程信息", - Hikang: "海康平台", - Version: "版本信息", - Theme: "系统设置", - Satellite: "卫星定位", + auth: '授权信息', + Engineering: '工程信息', + Hikang: '海康平台', + Version: '版本信息', + Theme: '系统设置', + Satellite: '卫星定位', searchWay: { - title: "搜索方式", + title: '搜索方式', searchWayList: { - poi: "离线搜索", - net: "在线搜索", - }, + poi: '离线搜索', + net: '在线搜索' + } }, - Service: "服务接入", - confirm: "确认", + Service: '服务接入', + confirm: '确认', auths: { - authType: "授权状态", - authTime: "授权时间", - authCode: "授权码", - upload: "授权导入", - authexpire: "授权过期", + authType: '授权状态', + authTime: '授权时间', + authCode: '授权码', + upload: '授权导入', + authexpire: '授权过期' }, service: { - offline: "离线服务", - official: "官方服务", - customize: "自定义", + offline: '离线服务', + official: '官方服务', + customize: '自定义', agreements: { - Agreement: "协议", - setAgreement: "协议设置", - port: "端口", - location: "地址", - }, + Agreement: '协议', + setAgreement: '协议设置', + port: '端口', + location: '地址' + } }, Engineerings: { - import: "路网导入", - cover: "覆盖", - increase: "增加", - importProject: "工程覆盖导入", - consolidated: "工程合并导入", - derive: "工程导出", - importPOI: "POI导入", + import: '路网导入', + cover: '覆盖', + increase: '增加', + importProject: '工程覆盖导入', + consolidated: '工程合并导入', + derive: '工程导出', + importPOI: 'POI导入' }, Hikangs: { - enable: "启用", + enable: '启用' }, versions: { - version_code: "版本号", - version_update: "检查更新", + version_code: '版本号', + version_update: '检查更新' }, systemSetting: { - setLanguage: "语言设置", - theme: "主题换肤", - defaultView: "设置默认视角", - defaultData: "添加在线数据", - management: "后台管理", - showCompass: "导航器", - showLatitudeLongitudeNetwork: "经纬网", - showFangliNet: "方里网", - showDistanceLegend: "比例尺", - showToolBar: "信息栏", - showFPS: "刷新率", - showMapX: "鹰眼图", - occlusion: "地形遮挡", - coordinateSystem: "系统坐标系", - sheetIndexStatusSwitch: "标准图幅", - switch: "切换", - battery: "电池信息", + setLanguage: '语言设置', + theme: '主题换肤', + defaultView: '设置默认视角', + defaultData: '添加在线数据', + management: '后台管理', + showCompass: '导航器', + showLatitudeLongitudeNetwork: '经纬网', + showFangliNet: '方里网', + showDistanceLegend: '比例尺', + showToolBar: '信息栏', + showFPS: '刷新率', + showMapX: '鹰眼图', + occlusion: '地形遮挡', + coordinateSystem: '系统坐标系', + sheetIndexStatusSwitch: '标准图幅', + switch: '切换', + battery: '电池信息', skinList: { - yingguangse: "荧光色", - gonganlan: "科技蓝", - hong: "烈日红", - }, + yingguangse: '荧光色', + gonganlan: '科技蓝', + hong: '烈日红' + } }, model: { - title: "模型管理", - createModelLibrary: "创建模型库", - selectModelLibrary: "选择模型库", - addModelType: "添加模型类型", - importModel: "导入模型", - updatePoster: "更换缩略图", - preview: "预览", - updateModel: "更换模型", - deleteModel: "删除", - editModel: "编辑", + title: '模型管理', + createModelLibrary: '创建模型库', + selectModelLibrary: '选择模型库', + addModelType: '添加模型类型', + importModel: '导入模型', + updatePoster: '更换缩略图', + preview: '预览', + updateModel: '更换模型', + deleteModel: '删除', + editModel: '编辑' }, graphLabel: { - title: "军标管理", - createGraphLabelLibrary: "创建军标库", - selectGraphLabelLibrary: "选择军标库", - addGraphLabelType: "添加军标类型", - importGraphLabel: "导入军标", - edit: "编辑", - delete: "删除", - importGraph: "导入军标", - addLine: "添加线", - addPanel: "添加面", - addCircle: "添加圆", + title: '军标管理', + createGraphLabelLibrary: '创建军标库', + selectGraphLabelLibrary: '选择军标库', + addGraphLabelType: '添加军标类型', + importGraphLabel: '导入军标', + edit: '编辑', + delete: '删除', + importGraph: '导入军标', + addLine: '添加线', + addPanel: '添加面', + addCircle: '添加圆' }, user: { - title: "用户管理", - deleteUser: "删除", - createUser: "创建用户", - importUser: "导入用户", - role: "权限管理", - deleteRole: "删除", - createRole: "创建角色", - depart: "部门管理", - createDepart: "创建部门", - deleteDepart: "删除部门", - editDepart: "修改部门", + title: '用户管理', + deleteUser: '删除', + createUser: '创建用户', + importUser: '导入用户', + role: '权限管理', + deleteRole: '删除', + createRole: '创建角色', + depart: '部门管理', + createDepart: '创建部门', + deleteDepart: '删除部门', + editDepart: '修改部门' }, terrain: { - terrainSetting: "地形设置", - }, + terrainSetting: '地形设置' + } }, rightMenu: { - addDirectory: "添加文件夹", - addResource: "添加地图数据", - pictureLocation: "带定位照片", - importPanorama: "带定位全景", - addBIM: "添加BIM", - edit: "编辑节点", - del: "删除节点", - setView: "设置视角", - resetView: "重置视角", - layerRaise: "图层上移", - layerLower: "图层下移", - layerToTop: "图层置顶", - layerToBottom: "图层置底", - tilesetClipping: "剖切", - addTrajectory: "轨迹运动", - addXlsx: "添加作战数据", - showAttr: "查看属性", - importHeader: "导入表头", - resetPerspective: "重置透视", + addDirectory: '添加文件夹', + addResource: '添加地图数据', + pictureLocation: '带定位照片', + importPanorama: '带定位全景', + addBIM: '添加BIM', + edit: '编辑节点', + del: '删除节点', + setView: '设置视角', + resetView: '重置视角', + layerRaise: '图层上移', + layerLower: '图层下移', + layerToTop: '图层置顶', + layerToBottom: '图层置底', + tilesetClipping: '剖切', + addTrajectory: '轨迹运动', + addXlsx: '添加作战数据', + showAttr: '查看属性', + importHeader: '导入表头', + resetPerspective: '重置透视' }, tree: { - title: "图层指挥舱", + title: '图层指挥舱', // title: "综合信息", - layer: "图层", - location: "地点", + layer: '图层', + location: '地点' }, btn: { - search: "搜索", - treePlaceholder: "关键词搜索", - selectPlaceholder: "请选择", - selectNoText: "无数据", - }, -}; + search: '搜索', + treePlaceholder: '关键词搜索', + selectPlaceholder: '请选择', + selectNoText: '无数据' + } +} 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 Date: Mon, 15 Sep 2025 14:58:15 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=B7=A5=E5=85=B7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/I18n/zh-CN.ts | 5 +- src/renderer/src/api/route/index.ts | 25 ++ src/renderer/src/assets/i18n/lang/local_zh.js | 4 +- src/renderer/src/common/initMapData.ts | 8 +- .../src/components/upload/uploadFiles.vue | 4 +- src/renderer/src/main.ts | 4 + .../components/bottomSide/bottomSide.vue | 17 +- .../setPup/components/authorize.vue | 80 ++++-- .../setPup/components/engineering.vue | 165 +++++++++-- .../components/setPup/components/setting.vue | 96 ++++++- .../headers/components/setTool/setTool.vue | 2 +- .../components/leftSide/leftSideSecond.vue | 83 ++++-- .../components/propertyBox/CoorLocation.vue | 136 +++++++-- .../views/components/propertyBox/FlyRoam.vue | 6 +- .../components/propertyBox/RoutePlanning.vue | 261 ++++++++++++++++-- .../propertyBox/RoutePlanning_new.vue | 171 ++++++++++++ src/renderer/src/views/home/index.vue | 49 ++-- src/renderer/src/views/login/useLogin.ts | 27 +- 18 files changed, 979 insertions(+), 164 deletions(-) create mode 100644 src/renderer/src/api/route/index.ts create mode 100644 src/renderer/src/views/components/propertyBox/RoutePlanning_new.vue diff --git a/src/renderer/src/I18n/zh-CN.ts b/src/renderer/src/I18n/zh-CN.ts index 59dc626..54ac8fb 100644 --- a/src/renderer/src/I18n/zh-CN.ts +++ b/src/renderer/src/I18n/zh-CN.ts @@ -163,7 +163,9 @@ export default { authTime: '授权时间', authCode: '授权码', upload: '授权导入', - authexpire: '授权过期' + authexpire: '授权过期', + authTempExpire: '临时授权', + noAuthexpire: '暂未授权', }, systemSetting: { setLanguage: '语言设置', @@ -188,6 +190,7 @@ export default { areaUnit: '面积单位', heightUnit: '高度单位', speedUnit: '速度单位', + administrativeArea: '行政区划', skinList: { yingguangse: '荧光色', gonganlan: '科技蓝', diff --git a/src/renderer/src/api/route/index.ts b/src/renderer/src/api/route/index.ts new file mode 100644 index 0000000..09a8140 --- /dev/null +++ b/src/renderer/src/api/route/index.ts @@ -0,0 +1,25 @@ +//路径规划 +import request from '@/axios/request' +export const RouteApi = { + // 查看路径 + queryRoute: async (data: any) => { + return await request.post({ + url: `/graphhopper/route`, + data + }); + }, + //获取地图列表 + getRouteList: async () => { + return await request.get({ + url: `/graphhopper/list` + }) + }, + //加载路网数据 + loadRoute: async (data: any) => { + return await request.post({ + url: `/graphhopper/loadMap`, + data, + headersType: 'application/x-www-form-urlencoded' + }) + }, +} diff --git a/src/renderer/src/assets/i18n/lang/local_zh.js b/src/renderer/src/assets/i18n/lang/local_zh.js index b270dc0..205088f 100644 --- a/src/renderer/src/assets/i18n/lang/local_zh.js +++ b/src/renderer/src/assets/i18n/lang/local_zh.js @@ -197,7 +197,9 @@ module.exports = { authTime: '授权时间', authCode: '授权码', upload: '授权导入', - authexpire: '授权过期' + authexpire: '授权过期', + authTempExpire: '临时授权', + noAuthexpire: '暂未授权' }, service: { offline: '离线服务', diff --git a/src/renderer/src/common/initMapData.ts b/src/renderer/src/common/initMapData.ts index 396dd72..1614961 100644 --- a/src/renderer/src/common/initMapData.ts +++ b/src/renderer/src/common/initMapData.ts @@ -52,7 +52,7 @@ export const initMapData = async (type, data) => { break case 'layer': data.host = baseURL - console.log('data',data) + console.log('data', data) entityObject = new YJ.Obj.Layer(window.earth, data) break case 'tileset': @@ -97,8 +97,10 @@ export const initMapData = async (type, data) => { default: break } - options = structuredClone(entityObject.options) - delete options.host + if (entityObject) { + options = structuredClone(entityObject.options) + delete options.host + } // options = entityObject return options } diff --git a/src/renderer/src/components/upload/uploadFiles.vue b/src/renderer/src/components/upload/uploadFiles.vue index 4e634aa..67ccaf4 100644 --- a/src/renderer/src/components/upload/uploadFiles.vue +++ b/src/renderer/src/components/upload/uploadFiles.vue @@ -19,6 +19,7 @@ @@ -83,8 +119,8 @@ const copy = () => { .auth_info_text { color: #fff; - font-size: 18px; - font-weight: bolder; + font-size: 14px; + font-weight: 700; margin: 7px 0 15px 15px; display: flex; align-items: center; diff --git a/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue b/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue index 7d19627..72e5482 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue @@ -3,16 +3,47 @@
工程设置 - - - 路网导入 - + + + + + 路网导入 + +
-
+
+
+
+ +
+
+ {{ item.fileName }} + {{ item.createdAt }} +
+
+
+ + 删除 + +
+
+
@@ -109,7 +121,100 @@
- + --> + diff --git a/src/renderer/src/views/components/propertyBox/RoutePlanning.vue b/src/renderer/src/views/components/propertyBox/RoutePlanning.vue index aecc66a..55a4e73 100644 --- a/src/renderer/src/views/components/propertyBox/RoutePlanning.vue +++ b/src/renderer/src/views/components/propertyBox/RoutePlanning.vue @@ -5,30 +5,129 @@ title="路径规划" left="180px" top="100px" + width="527px" :closeCallback="closeCallBack" > @@ -37,6 +136,7 @@ import { ref, reactive } from 'vue' import { inject } from 'vue' import Dialog from '@/components/dialog/baseDialog.vue' +import { RouteApi } from '@/api/route/index.ts' const baseDialog: any = ref(null) const eventBus: any = inject('bus') @@ -48,29 +148,148 @@ var endLng: any = ref(null) var endLat: any = ref(null) var routePlanning: any = reactive([]) + +var svgHover: any = reactive([false, false]) eventBus.on('routePlanningDialog', () => { baseDialog.value?.open() + setTimeout(() => { + //加载路网数据 + + let host = 'http://192.168.110.25:8848' + routePlanning = new YJ.Obj.RoutePlanning(window.earth, { + gps: false, + host + }) + routePlanning.Dialog.queryCallBack = async (v) => { + console.log(v, 'vvvvvvvvv') + // await queryRoute(params, (response) => { + // if (response) { + // routePlanning.createRoute(response.list[0].positions) + // } + // }) + let res = await RouteApi.queryRoute({ + startLng: startLng.value, + startLat: startLat.value, + endLng: endLng.value, + endLat: endLat.value, + waypoints: [] + }) + routePlanning.createRoute(res.data.pathPoints) + console.log(res, 'routLIst') + } + }, 100) }) -const closeCallBack = (e) => {} -function pickStartPos() {} -function pickEndPos() {} +//加载路网数据 -const draw = (e) => {} +const addRoute = async (fileId) => { + let res = await RouteApi.loadRoute({ fileId }) + console.log(res, 'res') +} +const getList = async () => { + let list = await RouteApi.getRouteList() + if (list.data.length > 0) { + let file = list.data[list.data.length - 1] + addRoute(file.id) + } + console.log(list, 'list') +} + +const closeCallBack = (e) => { + startLng.value = null + startLat.value = null + endLng.value = null + endLat.value = null +} +const routeQuery = async (e) => { + console.log('aaaaa') + let res = await RouteApi.queryRoute({ + startLng: startLng.value, + startLat: startLat.value, + endLng: endLng.value, + endLat: endLat.value, + waypoints: [] + }) + console.log(res, 'res') +} +const clearRoute = (e) => {} +const pickStartPos = () => { + routePlanning.pickStartPos((position) => { + console.log(position, 'position') + startLng.value = position.lng + startLat.value = position.lat + }) +} +const pickEndPos = () => { + routePlanning.pickEndPos((position) => { + endLng.value = position.lng + endLat.value = position.lat + }) +} + +const close = (e) => { + baseDialog.value?.close() +} + +const changeStartLng = () => { + routePlanning.startLng = startLng.value +} +const inputStartLng = () => { + let dom: any = document.getElementById('startLng') + if (startLng.value < dom.min * 1) { + startLng.value = dom.min * 1 + } else if (startLng.value > dom.max * 1) { + startLng.value = dom.max * 1 + } +} +const changeStartLat = () => { + routePlanning.startLat = startLat.value +} +const inputStartLat = () => { + let dom: any = document.getElementById('startLat') + if (startLat.value < dom.min * 1) { + startLat.value = dom.min * 1 + } else if (startLat.value > dom.max * 1) { + startLat.value = dom.max * 1 + } +} +const changeEndLng = () => { + routePlanning.endLng = endLng.value +} +const inputEndLng = () => { + let dom: any = document.getElementById('endLng') + if (endLng.value < dom.min * 1) { + endLng.value = dom.min * 1 + } else if (endLng.value > dom.max * 1) { + endLng.value = dom.max * 1 + } +} +const changeEndLat = () => { + routePlanning.endLat = endLat.value +} +const inputEndLat = () => { + let dom: any = document.getElementById('endLat') + if (endLat.value < dom.min * 1) { + endLat.value = dom.min * 1 + } else if (endLat.value > dom.max * 1) { + endLat.value = dom.max * 1 + } +} diff --git a/src/renderer/src/views/home/index.vue b/src/renderer/src/views/home/index.vue index 98fd056..6a34e76 100644 --- a/src/renderer/src/views/home/index.vue +++ b/src/renderer/src/views/home/index.vue @@ -10,27 +10,33 @@ - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/src/renderer/src/views/home/index.vue b/src/renderer/src/views/home/index.vue index 6a34e76..cb84a9c 100644 --- a/src/renderer/src/views/home/index.vue +++ b/src/renderer/src/views/home/index.vue @@ -37,6 +37,7 @@ + - + From 0587c512f617e426413c2af09ee8cba7e24ec908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E5=A4=A7=E8=83=86?= <1101282782@qq.com> Date: Tue, 16 Sep 2025 10:27:09 +0800 Subject: [PATCH 5/8] icon --- src/renderer/src/icons/svg/stop.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/renderer/src/icons/svg/stop.svg diff --git a/src/renderer/src/icons/svg/stop.svg b/src/renderer/src/icons/svg/stop.svg new file mode 100644 index 0000000..8b6cfad --- /dev/null +++ b/src/renderer/src/icons/svg/stop.svg @@ -0,0 +1 @@ + \ No newline at end of file From 47b95acacb715f3e95a63bb4e619e6eec0e390cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E5=A4=A7=E8=83=86?= <1101282782@qq.com> Date: Tue, 16 Sep 2025 10:35:11 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=A0=81=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../headers/components/setPup/components/authorize.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/src/views/components/headers/components/setPup/components/authorize.vue b/src/renderer/src/views/components/headers/components/setPup/components/authorize.vue index bb4da7a..6fb6471 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/authorize.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/authorize.vue @@ -11,7 +11,7 @@ style="cursor: pointer" title="点击可复制" > - {{ authInfo.license_code || '23232323232323232' }} + {{ authInfo.license_code || '' }} From de34c36683d10607a68ca5cf1b0a8f010032956c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E5=A4=A7=E8=83=86?= <1101282782@qq.com> Date: Thu, 18 Sep 2025 13:42:11 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=B7=A5=E5=85=B7=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/public/sdk/custom/css/index.css | 8 +- src/renderer/src/I18n/zh-CN.ts | 8 +- src/renderer/src/assets/i18n/lang/local_zh.js | 2 +- src/renderer/src/assets/images/noData.png | Bin 0 -> 24065 bytes src/renderer/src/icons/svg/arrow.svg | 1 + src/renderer/src/icons/svg/delModel.svg | 1 + src/renderer/src/icons/svg/importModel.svg | 1 + src/renderer/src/icons/svg/more.svg | 1 + src/renderer/src/icons/svg/rename.svg | 1 + .../setPup/components/contentMenu.vue | 84 ++++ .../setPup/components/engineering.vue | 2 +- .../setPup/components/modelManage copy.vue | 438 ++++++++++++++++ .../setPup/components/modelManage.vue | 473 +++++++++++++++++- .../headers/components/setPup/setPup.vue | 6 +- .../headers/components/setTool/hooks/index.ts | 2 +- .../headers/components/setTool/setTool.vue | 32 +- .../components/leftSide/leftSideFirst.vue | 11 + .../views/components/propertyBox/imagePop.vue | 109 ++++ .../views/components/propertyBox/model.vue | 204 ++++++++ src/renderer/src/views/home/index.vue | 4 + 20 files changed, 1365 insertions(+), 23 deletions(-) create mode 100644 src/renderer/src/assets/images/noData.png create mode 100644 src/renderer/src/icons/svg/arrow.svg create mode 100644 src/renderer/src/icons/svg/delModel.svg create mode 100644 src/renderer/src/icons/svg/importModel.svg create mode 100644 src/renderer/src/icons/svg/more.svg create mode 100644 src/renderer/src/icons/svg/rename.svg create mode 100644 src/renderer/src/views/components/headers/components/setPup/components/contentMenu.vue create mode 100644 src/renderer/src/views/components/headers/components/setPup/components/modelManage copy.vue create mode 100644 src/renderer/src/views/components/propertyBox/imagePop.vue create mode 100644 src/renderer/src/views/components/propertyBox/model.vue diff --git a/src/renderer/public/sdk/custom/css/index.css b/src/renderer/public/sdk/custom/css/index.css index 37d4333..13c193a 100644 --- a/src/renderer/public/sdk/custom/css/index.css +++ b/src/renderer/public/sdk/custom/css/index.css @@ -899,14 +899,14 @@ .fly-roam>.content .table .tr .th:first-child, .fly-roam>.content .table .tr .td:first-child { - flex: 0 0 95px; - width: 95px; + flex: 0 0 70px; + width: 70px; } .fly-roam>.content .table .tr .th:nth-child(2), .fly-roam>.content .table .tr .td:nth-child(2) { - flex: 0 0 240px; - width: 240px; + flex: 0 0 100px; + width: 100px; } .fly-roam>.content .table .tr .th:last-child, diff --git a/src/renderer/src/I18n/zh-CN.ts b/src/renderer/src/I18n/zh-CN.ts index 54ac8fb..e4dea9b 100644 --- a/src/renderer/src/I18n/zh-CN.ts +++ b/src/renderer/src/I18n/zh-CN.ts @@ -1,3 +1,5 @@ +import { title } from "process"; + export default { week: { 0: '星期日', @@ -164,7 +166,7 @@ export default { authCode: '授权码', upload: '授权导入', authexpire: '授权过期', - authTempExpire: '临时授权', + authTempExpire: '授权正常', noAuthexpire: '暂未授权', }, systemSetting: { @@ -208,5 +210,9 @@ export default { versions: { version_code: '版本号', version_update: '检查更新' + }, + model: { + title: '模型选择', + setting: '默认模型参数设置' } } diff --git a/src/renderer/src/assets/i18n/lang/local_zh.js b/src/renderer/src/assets/i18n/lang/local_zh.js index 205088f..794ca02 100644 --- a/src/renderer/src/assets/i18n/lang/local_zh.js +++ b/src/renderer/src/assets/i18n/lang/local_zh.js @@ -198,7 +198,7 @@ module.exports = { authCode: '授权码', upload: '授权导入', authexpire: '授权过期', - authTempExpire: '临时授权', + authTempExpire: '授权正常', noAuthexpire: '暂未授权' }, service: { diff --git a/src/renderer/src/assets/images/noData.png b/src/renderer/src/assets/images/noData.png new file mode 100644 index 0000000000000000000000000000000000000000..4549694b1ea61d795aeb657154bb68ba100b2fe5 GIT binary patch literal 24065 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 z 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 \ No newline at end of file diff --git a/src/renderer/src/icons/svg/delModel.svg b/src/renderer/src/icons/svg/delModel.svg new file mode 100644 index 0000000..815394b --- /dev/null +++ b/src/renderer/src/icons/svg/delModel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/src/icons/svg/importModel.svg b/src/renderer/src/icons/svg/importModel.svg new file mode 100644 index 0000000..9b6a58e --- /dev/null +++ b/src/renderer/src/icons/svg/importModel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/src/icons/svg/more.svg b/src/renderer/src/icons/svg/more.svg new file mode 100644 index 0000000..b0e45db --- /dev/null +++ b/src/renderer/src/icons/svg/more.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/src/icons/svg/rename.svg b/src/renderer/src/icons/svg/rename.svg new file mode 100644 index 0000000..f042d6b --- /dev/null +++ b/src/renderer/src/icons/svg/rename.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/src/views/components/headers/components/setPup/components/contentMenu.vue b/src/renderer/src/views/components/headers/components/setPup/components/contentMenu.vue new file mode 100644 index 0000000..65c4d90 --- /dev/null +++ b/src/renderer/src/views/components/headers/components/setPup/components/contentMenu.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue b/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue index 72e5482..f7e9d45 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue @@ -23,7 +23,7 @@
-
+
diff --git a/src/renderer/src/views/components/headers/components/setPup/components/modelManage copy.vue b/src/renderer/src/views/components/headers/components/setPup/components/modelManage copy.vue new file mode 100644 index 0000000..03a5683 --- /dev/null +++ b/src/renderer/src/views/components/headers/components/setPup/components/modelManage copy.vue @@ -0,0 +1,438 @@ + + + + + diff --git a/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue b/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue index 7d5b3fc..c2c05be 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue @@ -1,6 +1,6 @@