From 8a0fa5c1bdcbdb8a43a847337ecca5712eda8e5c Mon Sep 17 00:00:00 2001 From: zh <972939975@qq.com> Date: Wed, 12 Nov 2025 10:45:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=82=B9=E6=A0=87=E6=B3=A8=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=A1=86=E8=AF=AD=E8=A8=80=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/I18n/zh-CN.ts | 82 ++- src/renderer/src/I18n/zh-EN.ts | 82 ++- src/renderer/src/I18n/zh-TW.ts | 82 ++- .../components/propertyBox/attribute.vue | 223 ++++++-- .../propertyBox/billboardObject.vue | 507 ++++++++---------- .../components/propertyBox/circleDiffuse.vue | 8 +- 6 files changed, 624 insertions(+), 360 deletions(-) diff --git a/src/renderer/src/I18n/zh-CN.ts b/src/renderer/src/I18n/zh-CN.ts index ef217f1..c812d12 100644 --- a/src/renderer/src/I18n/zh-CN.ts +++ b/src/renderer/src/I18n/zh-CN.ts @@ -33,7 +33,6 @@ export default { addTrajectory: '轨迹运动', addXlsx: '添加作战数据', showAttr: '查看属性', - importHeader: '导入表头', resetPerspective: '重置透视', addEvent: '添加态势事件', }, @@ -236,13 +235,82 @@ export default { title: '图标选择', setting: '默认图标参数设置' }, + vector: { + 导入表头: '导入表头', + 下载字典模板: '下载字典模板', + 导出: '导出', + }, + general: { + 颜色: '颜色', + 经度: '经度', + 纬度: '纬度', + 海拔高度: '海拔高度', + 高度: '高度', + 视野缩放: '视野缩放', + 最近距离: '最近距离', + 最远距离: '最远距离', + 属性信息: '属性信息', + 空间信息: '空间信息', + 标注风格: '标注风格', + 内容类型: '内容类型', + 富文本: '富文本', + 链接: '链接', + IP摄像头: 'IP摄像头', + ISC摄像头: 'ISC摄像头', + 传感器: '传感器', + 全景图: '全景图', + 物资: '物资', + 编辑内容: '编辑内容', + 打开文本编辑器: '打开文本编辑器', + 添加链接: '添加链接', + 名称: '名称', + 操作: '操作', + 编辑: '编辑', + 删除: '删除', + 确认: '确认', + 取消: '取消', + 暂无数据: '暂无数据', + 搜索: '搜索', + 设备名称: '设备名称', + 设备类型: '设备类型', + 设备IP: '设备IP', + 设备端口: '设备端口', + 用户名: '用户名', + 密码: '密码', + 绑定: '绑定', + 序号: '序号', + 数量: '数量', + 高度模式: '高度模式', + 相对地表: '相对地表', + 依附地表: '依附地表', + 依附模型: '依附模型', + 小数格式: '小数格式', + 度分格式: '度分格式', + 度分秒格式: '度分秒格式', + 度: '度', + 分: '分', + 秒: '秒', + 更新高程: '更新高程', + 平移: '平移', + 旋转: '旋转', + 关闭: '关闭', + 确定: '确定', + 图标设置: '图标设置', + 显隐: '显隐', + 图标: '图标', + 默认图标: '默认图标', + 图标倍数: '图标倍数', + 倍: '倍', + 文字设置: '文字设置', + 字体选择: '字体选择', + 文字大小: '文字大小', + 文字颜色: '文字颜色', + 黑体: '黑体', + 思源黑体: '思源黑体', + 庞门正道标题体: '庞门正道标题体', + 数黑体: '数黑体', + }, dialog: { - name: '名称', - color: '颜色', - longitude: '经度', - latitude: '纬度', - altitude: '海拔高度', - height: '高度', point: { title: '点属性', WGS84: 'WGS84坐标', diff --git a/src/renderer/src/I18n/zh-EN.ts b/src/renderer/src/I18n/zh-EN.ts index f174fa1..93bfdbb 100644 --- a/src/renderer/src/I18n/zh-EN.ts +++ b/src/renderer/src/I18n/zh-EN.ts @@ -32,7 +32,6 @@ export default { addTrajectory: 'addTra jectory', addXlsx: 'add Xlsx', showAttr: 'show Attribute', - importHeader: 'import Header', resetPerspective: 'reset Perspective', addEvent: 'add Event', @@ -235,13 +234,82 @@ export default { title: 'Icon', setting: 'default settings' }, + vector: { + 导入表头: 'Import Header', + 下载字典模板: 'Download Header Template', + 导出: 'Export', + }, + general: { + 颜色: 'Color', + 经度: 'Longitude', + 纬度: 'Latitude', + 海拔高度: 'Altitude', + 高度: 'Height', + 视野缩放: 'Field of view zoom', + 最近距离: 'Shortest distance', + 最远距离: 'Farthest distance', + 属性信息: 'Attribute', + 空间信息: 'Spatial info', + 标注风格: 'Mark style', + 内容类型: 'Content type', + 富文本: 'Rich text', + 链接: 'Link', + IP摄像头: 'IP Camera', + ISC摄像头: 'ISC Camera', + 传感器: 'Sensor', + 全景图: 'Panorama photo', + 物资: 'Materials', + 编辑内容: 'Edit content', + 打开文本编辑器: 'Open the editor', + 添加链接: 'Add Link', + 名称: 'Name', + 操作: 'Actions', + 编辑: 'Edit', + 删除: 'Delete', + 确认: 'Confirm', + 取消: 'Cancel', + 暂无数据: 'No Data', + 搜索: 'Search', + 设备名称: 'Device Name', + 设备类型: 'Device Type', + 设备IP: 'Device IP', + 设备端口: 'Device Port', + 用户名: 'User Name', + 密码: 'Password', + 绑定: 'Bind', + 序号: 'No.', + 数量: 'Quantity', + 高度模式: 'Height mode', + 相对地表: 'Relative to the surface', + 依附地表: 'Adhere to the surface', + 依附模型: 'Adhere to the model', + 小数格式: 'Decimal', + 度分格式: 'degree-minute', + 度分秒格式: 'degree-minute-second', + 度: 'degree', + 分: 'minute', + 秒: 'second', + 更新高程: 'Update Altitude', + 平移: 'Translate', + 旋转: 'Rotate', + 关闭: 'Close', + 确定: 'Confirm', + 图标设置: 'Icon settings', + 显隐: 'show', + 图标: 'Icon', + 默认图标: 'Default icon', + 图标倍数: 'Icon scale', + 倍: 'times', + 文字设置: 'text settings', + 字体选择: 'Font', + 文字大小: 'Text size', + 文字颜色: 'Text color', + 黑体: 'SimHei', + 思源黑体: 'SourceHanSansTi', + 庞门正道标题体: 'PMZDBTTi', + 数黑体: 'AlimamaShuHeiTi', + }, dialog: { - name: 'Name', - color: 'Color', - longitude: 'Longitude', - latitude: 'Latitude', - altitude: 'Altitude', - height: 'Height', point: { title: 'Edit node', WGS84: 'WGS84 coordinates', diff --git a/src/renderer/src/I18n/zh-TW.ts b/src/renderer/src/I18n/zh-TW.ts index 78b4d3d..32a47d7 100644 --- a/src/renderer/src/I18n/zh-TW.ts +++ b/src/renderer/src/I18n/zh-TW.ts @@ -32,7 +32,6 @@ export default { addTrajectory: '軌跡運動', addXlsx: '添加作戰數據', showAttr: '查看屬性', - importHeader: '導入表头', resetPerspective: '重置透視', addEvent: '添加態勢事件', }, @@ -234,13 +233,82 @@ export default { title: '圖標選擇', setting: '默認圖標參數設置' }, + vector: { + 导入表头: '導入表頭', + 下载字典模板: '下載字典模板', + 导出: '導出', + }, + general: { + 颜色: '顏色', + 经度: '經度', + 纬度: '緯度', + 海拔高度: '海拔高度', + 高度: '高度', + 视野缩放: '視野縮放', + 最近距离: '最近距離', + 最远距离: '最遠距離', + 属性信息: '屬性信息', + 空间信息: '空間信息', + 标注风格: '標注風格', + 内容类型: '內容類型', + 富文本: '富文本', + 链接: '鏈接', + IP摄像头: 'IP攝像頭', + ISC摄像头: 'ISC攝像頭', + 传感器: '傳感器', + 全景图: '全景圖', + 物资: '物資', + 编辑内容: '編輯內容', + 打开文本编辑器: '打開文本編輯器', + 添加链接: '添加鏈接', + 名称: '名稱', + 操作: '操作', + 编辑: '編輯', + 删除: '刪除', + 确认: '確認', + 取消: '取消', + 暂无数据: '暫無數據', + 搜索: '搜索', + 设备名称: '設備名稱', + 设备类型: '設備類型', + 设备IP: '設備IP', + 设备端口: '設備端口', + 用户名: '用戶名', + 密码: '密碼', + 绑定: '綁定', + 序号: '序號', + 数量: '數量', + 高度模式: '高度模式', + 相对地表: '相對地表', + 依附地表: '依附地表', + 依附模型: '依附模型', + 小数格式: '小數格式', + 度分格式: '度分格式', + 度分秒格式: '度分秒格式', + 度: '度', + 分: '分', + 秒: '秒', + 更新高程: '更新高程', + 平移: '平移', + 旋转: '旋轉', + 关闭: '關閉', + 确定: '確定', + 图标设置: '圖標設置', + 显隐: '顯隱', + 图标: '圖標', + 默认图标: '默認圖標', + 图标倍数: '圖標倍數', + 倍: '倍', + 文字设置: '文字設置', + 字体选择: '字體選擇', + 文字大小: '文字大小', + 文字颜色: '文字顔色', + 黑体: '黑體', + 思源黑体: '思源黑體', + 庞门正道标题体: '龐門正道標題體', + 数黑体: '數黑體', + }, dialog: { - name: '名稱', - color: '顏色', - longitude: '經度', - latitude: '緯度', - altitude: '海拔高度', - height: '高度', point: { title: '點屬性', WGS84: 'WGS84座標', diff --git a/src/renderer/src/views/components/propertyBox/attribute.vue b/src/renderer/src/views/components/propertyBox/attribute.vue index a4c226b..b9509cc 100644 --- a/src/renderer/src/views/components/propertyBox/attribute.vue +++ b/src/renderer/src/views/components/propertyBox/attribute.vue @@ -2,9 +2,9 @@
- 内容类型 + {{ t('general.内容类型') }} - +
@@ -12,14 +12,14 @@
- 编辑内容 - + {{ t('general.编辑内容') }} +
- 编辑内容 + {{ t('general.编辑内容') }} - +
-
操作
-
设备名称
-
设备类型
-
设备IP
-
设备端口
-
用户名
-
密码
+
{{ t('general.操作') }}
+
{{ t('general.设备名称') }}
+
{{ t('general.设备类型') }}
+
{{ t('general.设备IP') }}
+
{{ t('general.设备端口') }}
+
{{ t('general.用户名') }}
+
{{ t('general.密码') }}
@@ -87,7 +87,7 @@
- 绑定 + {{ t('general.绑定') }}
{{ item.cameraName }}
{{ item.type }}
@@ -99,7 +99,7 @@
-

暂无数据

+

{{ t('general.暂无数据') }}

@@ -110,9 +110,9 @@
@@ -146,7 +146,7 @@
- 添加链接 + {{ t('general.添加链接') }}
@@ -157,9 +157,9 @@
-
名称
-
链接
-
操作
+
{{ t('general.名称') }}
+
{{ t('general.链接') }}
+
{{ t('general.操作') }}
@@ -173,18 +173,18 @@
{{ item.url }}
- - + +
- - + +
-

暂无数据

+

{{ t('general.暂无数据') }}

@@ -192,18 +192,18 @@
- 编辑内容 + {{ t('general.编辑内容') }} - +
-
序号
-
名称
-
数量
+
{{ t('general.序号') }}
+
{{ t('general.名称') }}
+
{{ t('general.数量') }}
@@ -217,7 +217,7 @@
-

暂无数据

+

{{ t('general.暂无数据') }}

@@ -230,6 +230,8 @@ import { ref } from 'vue' import { inject } from 'vue' import { deviceApi } from '@/api/deviceManage' import { MaterialApi } from '@/api/material' +import { useI18n } from 'vue-i18n' +const { t } = useI18n() let ipcRenderer; if (window && window.process && window.process.type === 'renderer') { @@ -414,7 +416,7 @@ const openRichTextEditor = () => { const _addLink = async () => { if (addlinkInput.value) { let link = { - name: '链接', + name: t('general.链接'), url: addlinkInput.value } attribute.value.link.content.push(link) @@ -435,7 +437,7 @@ const _addLink = async () => { if (filePaths.length > 0) { filePaths.forEach((item) => { attribute.value.link.content.push({ - name: '链接', + name: t('general.链接'), url: item }) }) @@ -514,7 +516,7 @@ const linkCancelEdit = () => { const _addRr = () => { if (addvrInput.value) { let link = { - name: '全景图', + name: t('general.全景图'), url: addvrInput.value } attribute.value.vr.content.push(link) @@ -532,7 +534,7 @@ const _addRr = () => { if (filePaths.length > 0) { filePaths.forEach((item) => { attribute.value.vr.content.push({ - name: '全景图', + name: t('general.全景图'), url: item }) }) @@ -627,4 +629,133 @@ const changeAttributeCamera = (e) => { } - + diff --git a/src/renderer/src/views/components/propertyBox/billboardObject.vue b/src/renderer/src/views/components/propertyBox/billboardObject.vue index e5e9909..5841e24 100644 --- a/src/renderer/src/views/components/propertyBox/billboardObject.vue +++ b/src/renderer/src/views/components/propertyBox/billboardObject.vue @@ -1,18 +1,12 @@ @@ -679,7 +525,7 @@ const changHeight = () => { coordinateChange() } -const handleClick = () => {} +const handleClick = () => { } const formatChange = (val) => { switch (val) { @@ -776,12 +622,12 @@ const close = () => { } const clickChangeImage = () => { - eventBus?.emit('openPhoto', (img)=>{ + eventBus?.emit('openPhoto', (img) => { entityOptions.value.billboardImage = img }) } const clickChangeDefaultImage = () => { - eventBus?.emit('openPhoto', (img)=>{ + eventBus?.emit('openPhoto', (img) => { entityOptions.value.billboardDefaultImage = img }) } @@ -792,31 +638,31 @@ const fontChange = (val) => { const 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() + 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(() => { - // 用户点击取消,不执行任何操作 - }) + } else { + ElMessage({ + message: res.msg || '删除失败', + type: 'error' + }) + } + }) + .catch(() => { + // 用户点击取消,不执行任何操作 + }) } defineExpose({ @@ -830,5 +676,88 @@ defineExpose({ .YJ-custom-checkbox { pointer-events: none; } + + ::v-deep >.content { + width: 590px; + .title1 { + width: 46%; + } + .title2 { + width: 50%; + } + } +} + +.billboard-object.dialog-en { + ::v-deep >.content { + width: 690px; + .title1 { + width: 40%; + } + .title2 { + width: 60%; + } + .attribute-content-link .table .tr .th:nth-child(2), + .attribute-content-link .table .tr .td:nth-child(2), + .attribute-content-vr .table .tr .th:nth-child(2), + .attribute-content-vr .table .tr .td:nth-child(2) { + width: 284px; + flex: 0 0 284px; + } + } +} + +.billboard-object>.content button.primary { + padding: 6px 14px; +} + +.billboard-object>.content>div .row .col { + margin: 0 10px; +} + +.billboard-object>.content>div .row .col:first-child { + margin-left: 0; +} + +.billboard-object>.content>div .row .col:last-child { + margin-right: 0; +} + +.billboard-object>.content>div .row .label { + flex: 0 0 56px; + white-space: nowrap; +} +.billboard-object.dialog-en>.content>div .div-item:nth-of-type(2) .row .label { + flex: 0 0 65px; +} + +.billboard-object>.content .DIV-cy-tab-content-pane .input-select { + width: 100px; +} + +.billboard-object>.content .DIV-cy-tab-content-pane h4 { + font-size: 16px; + margin-bottom: 10px; +} + +.billboard-object>.content div .image-box { + width: 23px; + height: 26px; + cursor: pointer; + border: 1px solid rgba(var(--color-base1), 0.2); + display: flex; + align-items: center; + justify-content: center; +} + +.billboard-object>.content div .image { + max-width: 100%; + max-height: 100%; + width: auto; + height: auto; +} + +.billboard-object.dialog-en>.content div .proj-input-box .row .col span:nth-child(1) { + flex: 0 0 70px !important; } diff --git a/src/renderer/src/views/components/propertyBox/circleDiffuse.vue b/src/renderer/src/views/components/propertyBox/circleDiffuse.vue index a1a2ab1..458e444 100644 --- a/src/renderer/src/views/components/propertyBox/circleDiffuse.vue +++ b/src/renderer/src/views/components/propertyBox/circleDiffuse.vue @@ -143,7 +143,7 @@ const open = async (id: any) => { let colorPicker = new window.YJColorPicker({ el: colorRefs.value[i], size: 'mini', //颜色box类型 - alpha: true, //是否开启透明度 + alpha: false, //是否开启透明度 defaultColor: entityOptions.value.options.circle[i].color, disabled: false, //是否禁止打开颜色选择器 openPickerAni: 'opacity', //打开颜色选择器动画 @@ -174,7 +174,7 @@ const addCircle = async () => { let colorPicker = new window.YJColorPicker({ el: colorRefs.value[i], size: 'mini', //颜色box类型 - alpha: true, //是否开启透明度 + alpha: false, //是否开启透明度 defaultColor: entityOptions.value.options.circle[i].color, disabled: false, //是否禁止打开颜色选择器 openPickerAni: 'opacity', //打开颜色选择器动画 @@ -198,7 +198,7 @@ const minusCircle = async (index) => { let colorPicker = new window.YJColorPicker({ el: colorRefs.value[i], size: 'mini', //颜色box类型 - alpha: true, //是否开启透明度 + alpha: false, //是否开启透明度 defaultColor: entityOptions.value.options.circle[i].color, disabled: false, //是否禁止打开颜色选择器 openPickerAni: 'opacity', //打开颜色选择器动画 @@ -227,7 +227,7 @@ const changeRadius = async (e) => { let colorPicker = new window.YJColorPicker({ el: colorRefs.value[i], size: 'mini', //颜色box类型 - alpha: true, //是否开启透明度 + alpha: false, //是否开启透明度 defaultColor: entityOptions.value.options.circle[i].color, disabled: false, //是否禁止打开颜色选择器 openPickerAni: 'opacity', //打开颜色选择器动画