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; }