From 59eae55426bb258a66c2303eaef3ca14906d7dec Mon Sep 17 00:00:00 2001
From: zh <972939975@qq.com>
Date: Fri, 26 Sep 2025 11:37:44 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/main/index.ts | 4 +
src/renderer/components.d.ts | 2 +
.../icon/{annotation.png => splitScreen.png} | Bin
src/renderer/src/I18n/zh-CN.ts | 2 +-
src/renderer/src/api/gisApi.ts | 10 +-
src/renderer/src/api/tree/index.ts | 6 +-
.../src/components/dialog/directory.vue | 48 ++--
.../src/components/dialog/directoryEdit.vue | 263 ++++++++++++++++++
.../components/leftSide/leftSideFirst.vue | 11 +-
.../components/leftSide/leftSideSecond.vue | 18 +-
.../components/propertyBox/labelStyle.vue | 102 ++++++-
.../propertyBox/particleEffects.vue | 39 ++-
.../tree/components/hooks/rightOperate.ts | 46 +--
.../src/views/components/tree/hooks/tree.ts | 4 +-
src/renderer/src/views/home/index.vue | 13 +-
15 files changed, 506 insertions(+), 62 deletions(-)
rename src/renderer/public/icon/{annotation.png => splitScreen.png} (100%)
create mode 100644 src/renderer/src/components/dialog/directoryEdit.vue
diff --git a/src/main/index.ts b/src/main/index.ts
index 01b2b6e..3fa7a97 100644
--- a/src/main/index.ts
+++ b/src/main/index.ts
@@ -113,6 +113,10 @@ function createWindow(): void {
allowRunningInsecureContent: true
}
})
+ ipcMain.on("restart", () => {
+ app.relaunch();
+ forceQuit();
+ });
// 监听启动页完成的消息
ipcMain.on('splash-completed', () => {
// 启动页进度条已完成,可以关闭启动页并显示主窗口
diff --git a/src/renderer/components.d.ts b/src/renderer/components.d.ts
index 493dc42..9e3ef8f 100644
--- a/src/renderer/components.d.ts
+++ b/src/renderer/components.d.ts
@@ -9,7 +9,9 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
BaseDialog: typeof import('./src/components/dialog/baseDialog.vue')['default']
+ copy: typeof import('./src/components/dialog/directory copy.vue')['default']
Directory: typeof import('./src/components/dialog/directory.vue')['default']
+ DirectoryEdit: typeof import('./src/components/dialog/directoryEdit.vue')['default']
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
diff --git a/src/renderer/public/icon/annotation.png b/src/renderer/public/icon/splitScreen.png
similarity index 100%
rename from src/renderer/public/icon/annotation.png
rename to src/renderer/public/icon/splitScreen.png
diff --git a/src/renderer/src/I18n/zh-CN.ts b/src/renderer/src/I18n/zh-CN.ts
index 16f5c99..a1d57ea 100644
--- a/src/renderer/src/I18n/zh-CN.ts
+++ b/src/renderer/src/I18n/zh-CN.ts
@@ -119,7 +119,7 @@ export default {
coorLocation: "坐标定位",
mouseLocation: "鼠标定位",
annotationAggregation: "标注点聚合",
- annotation: '卷帘对比',
+ splitScreen: '卷帘对比',
screenShot: '屏幕截图',
highQuality: '高清出图',
videoRecord: '视频录制',
diff --git a/src/renderer/src/api/gisApi.ts b/src/renderer/src/api/gisApi.ts
index 21dfc79..bf4e5ce 100644
--- a/src/renderer/src/api/gisApi.ts
+++ b/src/renderer/src/api/gisApi.ts
@@ -14,5 +14,13 @@ export const GisApi = {
url: `/source/uploadLocationImage`,
data
})
- }
+ },
+
+ //修改图层层级
+ updateLayersIndex: async (data: any) => {
+ return await request.post({
+ url: `/source/updateLevel`,
+ data
+ })
+ },
}
diff --git a/src/renderer/src/api/tree/index.ts b/src/renderer/src/api/tree/index.ts
index b29dad0..451cd95 100644
--- a/src/renderer/src/api/tree/index.ts
+++ b/src/renderer/src/api/tree/index.ts
@@ -62,10 +62,10 @@ export const TreeApi = {
data
})
},
- //上传或修改树的层级
- updateTree: async (data: any) => {
+ //修改树层级
+ updateTreeIndex: async (data: any) => {
return await request.post({
- url: `/yjearth4/api/v1/source/update_treeindex`,
+ url: `/source/dragSource`,
data
})
},
diff --git a/src/renderer/src/components/dialog/directory.vue b/src/renderer/src/components/dialog/directory.vue
index db9b3cd..286faf5 100644
--- a/src/renderer/src/components/dialog/directory.vue
+++ b/src/renderer/src/components/dialog/directory.vue
@@ -97,31 +97,31 @@ const add = throttle(async () => {
}
// console.log(res)
}, 3000)
-//上传或修改树的层级
-const updateTree = async (newNode: any) => {
- const list = newNode.map((item: any) => {
- return {
- id: item.id,
- treeIndex: item.treeIndex,
- parentId: item.parentId
- }
- })
- console.log(list)
- const res = await TreeApi.updateTree({ list })
- if (res.code == 0) {
- ElMessage({
- message: '添加成功',
- type: 'success'
- })
+////上传或修改树的层级
+// const updateTree = async (newNode: any) => {
+// const list = newNode.map((item: any) => {
+// return {
+// id: item.id,
+// treeIndex: item.treeIndex,
+// parentId: item.parentId
+// }
+// })
+// console.log(list)
+// const res = await TreeApi.updateTree({ list })
+// if (res.code == 0) {
+// ElMessage({
+// message: '添加成功',
+// type: 'success'
+// })
- cancel()
- } else {
- ElMessage({
- message: '添加失败',
- type: 'error'
- })
- }
-}
+// cancel()
+// } else {
+// ElMessage({
+// message: '添加失败',
+// type: 'error'
+// })
+// }
+// }
const cancel = () => {
$changeComponentPop('.adddirectory', false)
diff --git a/src/renderer/src/components/dialog/directoryEdit.vue b/src/renderer/src/components/dialog/directoryEdit.vue
new file mode 100644
index 0000000..2597d14
--- /dev/null
+++ b/src/renderer/src/components/dialog/directoryEdit.vue
@@ -0,0 +1,263 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 确定
+ 取消
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/src/views/components/leftSide/leftSideFirst.vue b/src/renderer/src/views/components/leftSide/leftSideFirst.vue
index f81a1a6..85bcc4f 100644
--- a/src/renderer/src/views/components/leftSide/leftSideFirst.vue
+++ b/src/renderer/src/views/components/leftSide/leftSideFirst.vue
@@ -140,7 +140,7 @@ const menuList: any = ref([
'coorLocation',
'mouseLocation',
'annotationAggregation',
- 'annotation',
+ 'splitScreen',
'screenShot',
'highQuality',
'videoRecord',
@@ -215,6 +215,15 @@ const handleClick = (item: any, e) => {
})
}
}
+ else if (item.key === 'ersanwei') {
+ if(YJ.Global.multiViewportMode.getSdk().sdkD) {
+ YJ.Global.multiViewportMode.off(window.earth);
+ }
+ else {
+ eventBus.emit('closeSplitScreen')
+ YJ.Global.multiViewportMode.on(window.earth);
+ }
+ }
}
const fold = () => {
// 如果正在动画中,直接返回
diff --git a/src/renderer/src/views/components/leftSide/leftSideSecond.vue b/src/renderer/src/views/components/leftSide/leftSideSecond.vue
index a899e02..ac15a99 100644
--- a/src/renderer/src/views/components/leftSide/leftSideSecond.vue
+++ b/src/renderer/src/views/components/leftSide/leftSideSecond.vue
@@ -3,7 +3,8 @@
-->
+
+
+
@@ -114,13 +169,16 @@ const props = defineProps({
const entityOptions = ref(props.entityOptions)
const fontList = ref(getFontList())
const labelColorRef = ref(null)
+const labelLineColorRef = ref(null)
+const labelBackgroundColorStartRef = ref(null)
+const labelBackgroundColorEndRef = ref(null)
const fontChange = (val) => {
entityOptions.value.labelFontFamily = val
}
onMounted(() => {
- let labelColorPicker = new (window as any).YJColorPicker({
+ new (window as any).YJColorPicker({
el: labelColorRef.value,
size: 'mini', //颜色box类型
alpha: true, //是否开启透明度
@@ -134,6 +192,48 @@ onMounted(() => {
entityOptions.value.labelColor = 'rgba(255,255,255,1)'
} //点击清空按钮事件回调
})
+ new (window as any).YJColorPicker({
+ el: labelLineColorRef.value,
+ size: 'mini', //颜色box类型
+ alpha: true, //是否开启透明度
+ defaultColor: entityOptions.value.labelLineColor,
+ disabled: false, //是否禁止打开颜色选择器
+ openPickerAni: 'opacity', //打开颜色选择器动画
+ sure: (color) => {
+ entityOptions.value.labelLineColor = color
+ }, //点击确认按钮事件回调
+ clear: () => {
+ entityOptions.value.labelLineColor = 'rgba(255,255,255,1)'
+ } //点击清空按钮事件回调
+ })
+ new (window as any).YJColorPicker({
+ el: labelBackgroundColorStartRef.value,
+ size: 'mini', //颜色box类型
+ alpha: true, //是否开启透明度
+ defaultColor: entityOptions.value.labelBackgroundColorStart,
+ disabled: false, //是否禁止打开颜色选择器
+ openPickerAni: 'opacity', //打开颜色选择器动画
+ sure: (color) => {
+ entityOptions.value.labelBackgroundColorStart = color
+ }, //点击确认按钮事件回调
+ clear: () => {
+ entityOptions.value.labelBackgroundColorStart = 'rgba(255,255,255,1)'
+ } //点击清空按钮事件回调
+ })
+ new (window as any).YJColorPicker({
+ el: labelBackgroundColorEndRef.value,
+ size: 'mini', //颜色box类型
+ alpha: true, //是否开启透明度
+ defaultColor: entityOptions.value.labelBackgroundColorEnd,
+ disabled: false, //是否禁止打开颜色选择器
+ openPickerAni: 'opacity', //打开颜色选择器动画
+ sure: (color) => {
+ entityOptions.value.labelBackgroundColorEnd = color
+ }, //点击确认按钮事件回调
+ clear: () => {
+ entityOptions.value.labelBackgroundColorEnd = 'rgba(255,255,255,1)'
+ } //点击清空按钮事件回调
+ })
})
diff --git a/src/renderer/src/views/components/propertyBox/particleEffects.vue b/src/renderer/src/views/components/propertyBox/particleEffects.vue
index 4ee6038..230d398 100644
--- a/src/renderer/src/views/components/propertyBox/particleEffects.vue
+++ b/src/renderer/src/views/components/propertyBox/particleEffects.vue
@@ -52,13 +52,13 @@
@@ -66,13 +66,13 @@
@@ -318,6 +318,37 @@ const remove = () => {
})
}
+const changeMinimumSpeed = (event) => {
+ let minimumSpeed = Number(event.target.value)
+ if(minimumSpeed>entityOptions.value.maximumSpeed) {
+ minimumSpeed = entityOptions.value.maximumSpeed
+ }
+ entityOptions.value.minimumSpeed = minimumSpeed
+}
+const changeMaximumSpeed = (event) => {
+ let maximumSpeed = Number(event.target.value)
+ if(maximumSpeed {
+ let minimumParticleLife = Number(event.target.value)
+ if(minimumParticleLife>entityOptions.value.maximumParticleLife) {
+ minimumParticleLife = entityOptions.value.maximumParticleLife
+ }
+ entityOptions.value.minimumParticleLife = minimumParticleLife
+}
+const changeMaximumParticleLife = (event) => {
+ let maximumParticleLife = Number(event.target.value)
+ if(maximumParticleLife {
entityOptions.value.originalOptions = structuredClone(originalOptions)
that.positionEditing = false
diff --git a/src/renderer/src/views/components/tree/components/hooks/rightOperate.ts b/src/renderer/src/views/components/tree/components/hooks/rightOperate.ts
index 1620ded..076586c 100644
--- a/src/renderer/src/views/components/tree/components/hooks/rightOperate.ts
+++ b/src/renderer/src/views/components/tree/components/hooks/rightOperate.ts
@@ -450,25 +450,37 @@ export const useRightOperate = () => {
let entityOptions = window.earth.entityMap.get(item.id)
let layerIndex = entityOptions.layerIndex;
layers.push({ id: item.id, layerIndex });
- let params = {
- layerIndex: entityOptions.layerIndex,
- alpha: entityOptions.alpha,
- brightness: entityOptions.brightness,
- name: entityOptions.name,
- show: entityOptions.show,
- id: item.id,
- }
- let params2 = {
- "id": params.id,
- "sourceName": params.name,
- "params": params,
- "isShow": params.show ? 1 : 0
- }
- TreeApi.updateDirectoryInfo(params2)
- cusUpdateNode({ "id": params.id, "sourceName": params.name, "params": JSON.stringify(params) })
+ // let params = {
+ // layerIndex: entityOptions.layerIndex,
+ // alpha: entityOptions.alpha,
+ // brightness: entityOptions.brightness,
+ // name: entityOptions.name,
+ // show: entityOptions.show,
+ // id: item.id,
+ // }
+ // let params2 = {
+ // "id": params.id,
+ // "sourceName": params.name,
+ // "params": params,
+ // "isShow": params.show ? 1 : 0
+ // }
+ // TreeApi.updateDirectoryInfo(params2)
+ // cusUpdateNode({ "id": params.id, "sourceName": params.name, "params": JSON.stringify(params) })
}
});
- console.log('layers', layers)
+ GisApi.updateLayersIndex(layers).then((res) => {
+ if (res.code == 0 || res.code == 200) {
+ ElMessage({
+ message: '操作成功',
+ type: 'success'
+ })
+ } else {
+ ElMessage({
+ message: '操作失败',
+ type: 'error'
+ })
+ }
+ })
}
// 图片文件上传后续
diff --git a/src/renderer/src/views/components/tree/hooks/tree.ts b/src/renderer/src/views/components/tree/hooks/tree.ts
index a3312f0..684cd54 100644
--- a/src/renderer/src/views/components/tree/hooks/tree.ts
+++ b/src/renderer/src/views/components/tree/hooks/tree.ts
@@ -110,8 +110,8 @@ export const useTree = () => {
parentId: item.parentId
}
})
- const res = await TreeApi.updateTree({ list })
- if (res.code == 0) {
+ const res = await TreeApi.updateTreeIndex(list)
+ if (res.code == 0 || res.code == 200) {
ElMessage({
message: '操作成功',
type: 'success'
diff --git a/src/renderer/src/views/home/index.vue b/src/renderer/src/views/home/index.vue
index 6ae7df8..9bb0f80 100644
--- a/src/renderer/src/views/home/index.vue
+++ b/src/renderer/src/views/home/index.vue
@@ -5,6 +5,7 @@
+
@@ -50,7 +51,8 @@ import { AuthApi } from '@/api/setting/auth'
import {
$sendElectronChanel,
$recvElectronChanel,
- $changeComponentShow
+ $changeComponentShow,
+ $changeComponentPop
} from '@/utils/communication'
import Headers from '../components/headers/index.vue'
import Tree from '../components/tree/index.vue'
@@ -67,6 +69,7 @@ import groundText from '../components/propertyBox/groundText.vue'
import standText from '../components/propertyBox/standText.vue'
import circleObject from '../components/propertyBox/circleObject.vue'
import addDirectory from '@/components/dialog/directory.vue'
+import editDirectory from '@/components/dialog/directoryEdit.vue'
import firstMenu from '@/views/components/leftSide/leftSideFirst.vue'
import bottomMenu from '@/views/components/bottomSide/bottomSide.vue'
import Visibility from '../components/propertyBox/Visibility.vue'
@@ -131,6 +134,12 @@ eventBus.on('openDialog', async (sourceType: any, id: any) => {
dynamicComponentRef.value.close()
}
switch (sourceType) {
+ case 'directory':
+ $changeComponentPop('.editdirectoryBox', true)
+ // currentComponent.value = addDirectory
+ // await nextTick()
+ // dynamicComponentRef.value?.open()
+ break
case 'addGroundText':
currentComponent.value = addGroundText
await nextTick()
@@ -425,7 +434,7 @@ onMounted(async () => {
height: 100%;
}
-.adddirectoryBox {
+.adddirectoryBox, .editdirectoryBox {
display: none;
}