diff --git a/src/main/index.ts b/src/main/index.ts index eff2305..557d8b1 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -4,6 +4,8 @@ import { electronApp, optimizer, is } from '@electron-toolkit/utils' import icon from '../../resources/earth.png?asset' import fs from 'fs' +const { exec } = require('child_process'); + // 开发环境路径处理 - 确保添加正确的file协议 const devSplashPath = path.resolve( app.getAppPath(), diff --git a/src/renderer/src/assets/base.css b/src/renderer/src/assets/base.css index 5ed6406..aff8bc1 100644 --- a/src/renderer/src/assets/base.css +++ b/src/renderer/src/assets/base.css @@ -49,7 +49,7 @@ body { background: var(--color-background); line-height: 1.6; font-family: - Inter, + SourceHanSans, -apple-system, BlinkMacSystemFont, 'Segoe UI', diff --git a/src/renderer/src/assets/iconfont/SourceHanSansCN-Medium.otf b/src/renderer/src/assets/iconfont/SourceHanSansCN-Medium.otf new file mode 100644 index 0000000..53e03e0 Binary files /dev/null and b/src/renderer/src/assets/iconfont/SourceHanSansCN-Medium.otf differ diff --git a/src/renderer/src/assets/styles/font.css b/src/renderer/src/assets/styles/font.css index 805c283..e2ec7f8 100644 --- a/src/renderer/src/assets/styles/font.css +++ b/src/renderer/src/assets/styles/font.css @@ -32,10 +32,15 @@ @font-face { font-family: 'sy-boldface'; - src: url('../fonts/sy-boldface.otf') format('opentype'); + src: url('../iconfont/sy-boldface.otf') format('opentype'); } @font-face { font-family: 'Ali-mother-counts-bold'; - src: url('../fonts/Ali-mother-counts-bold.ttf') format('truetype'); + src: url('../iconfont/Ali-mother-counts-bold.ttf') format('truetype'); +} + +@font-face { + font-family: 'SourceHanSans'; + src: url('../iconfont/SourceHanSansCN-Medium.otf') format('opentype'); } diff --git a/src/renderer/src/views/components/leftSide/leftSideSecond.vue b/src/renderer/src/views/components/leftSide/leftSideSecond.vue index 0802ff5..8dc2284 100644 --- a/src/renderer/src/views/components/leftSide/leftSideSecond.vue +++ b/src/renderer/src/views/components/leftSide/leftSideSecond.vue @@ -24,7 +24,7 @@ import { TreeApi } from '@/api/tree' import { renderMethods } from '../tree/hooks/renderTreeNode' const { proxy } = getCurrentInstance() const { t } = useI18n() -const { findParentId, findTreeIndex } = useTreeNode() +const { findParentId, findTreeIndex, cusAddNodes } = useTreeNode() const obj = ref(null) const isclick = ref(false) const eventBus = inject('bus') @@ -42,6 +42,13 @@ eventBus.on('graffitiObj', (data) => { graffitiObjArr.push(data) }) const methodMap = { + // 轨迹运动 + trajectoryMotion: ()=>{ + // let draw = new YJ.Draw.DrawPolyline(window.earth) + // draw.start((err, positions) => { + // if (positions.length > 1) {} + // }) + }, // 电子围墙 electronicFence: () => { let draw = new YJ.Draw.DrawPolyline(window.earth) @@ -51,7 +58,8 @@ const methodMap = { positions.forEach((item) => { if (item.alt < alt) alt = item.alt }) - let id = proxy.$md5(new Date().getTime() + '围墙') + // let id = new YJ.Tools().randomString() + let id = 'aaa' let params = { sourceName: '电子围墙', id, @@ -71,10 +79,11 @@ const methodMap = { // 渲染电子围墙 renderMethods.renderWallStereoscopic(params) // 存入数据库 - let res = TreeApi.addOtherSource(params) - console.log('addOtherSource', res) + // let res = TreeApi.addOtherSource(params) + // console.log('addOtherSource', res) // 上树 cusAddNodes(window.treeObj, params.parentId, [params]) + eventBus.emit("openDialog", 'wallStereoscopic'); } }) }, diff --git a/src/renderer/src/views/components/propertyBox/CircleObject.vue b/src/renderer/src/views/components/propertyBox/CircleObject.vue index 98ec58c..1fae765 100644 --- a/src/renderer/src/views/components/propertyBox/CircleObject.vue +++ b/src/renderer/src/views/components/propertyBox/CircleObject.vue @@ -182,7 +182,7 @@ let originalOptions: any let that: any const open = async (id: any, type: any) => { - that = window.earth.entityMap.get('aaa') + that = window.earth.entityMap.get(id) originalOptions = structuredClone(that.options) entityOptions.value = that heightMode.value = entityOptions.value.heightMode diff --git a/src/renderer/src/views/components/propertyBox/addGroundText.vue b/src/renderer/src/views/components/propertyBox/addGroundText.vue index 77c7188..6f86425 100644 --- a/src/renderer/src/views/components/propertyBox/addGroundText.vue +++ b/src/renderer/src/views/components/propertyBox/addGroundText.vue @@ -15,6 +15,9 @@ import { inject } from 'vue' import { TreeApi } from '@/api/tree' import Dialog from '@/components/dialog/baseDialog.vue' import { initMapData } from '../tree/initMapData' +import { useTreeNode } from '../tree/hooks/treeNode' + +const { cusAddNodes } = useTreeNode() const baseDialog: any = ref(null) const eventBus: any = inject('bus') @@ -37,10 +40,12 @@ const confirm = () => { let id = new YJ.Tools().randomString() let options: any = await initMapData('groundText', { id: id, - name: name, + text: name, positions: positions }) delete options.host + delete options.positions + console.log('options', options) let selectedNodes = window.treeObj.getSelectedNodes() let params = { id: id, @@ -54,6 +59,7 @@ const confirm = () => { params: options } TreeApi.addOtherSource(params) + cusAddNodes(window.treeObj, params.parentId, [params]) }) } defineExpose({ diff --git a/src/renderer/src/views/components/propertyBox/addStandText.vue b/src/renderer/src/views/components/propertyBox/addStandText.vue index 8e2b6ce..2f0f3d8 100644 --- a/src/renderer/src/views/components/propertyBox/addStandText.vue +++ b/src/renderer/src/views/components/propertyBox/addStandText.vue @@ -41,19 +41,20 @@ const confirm = () => { positions: positions }) delete options.host - let selectedNodes = window.treeObj.getSelectedNodes() - let params = { - id: id, - sourceName: name, - sourceType: 'standText', - parentId: - selectedNodes && selectedNodes[selectedNodes.length - 1] - ? selectedNodes[selectedNodes.length - 1].id - : undefined, - // "treeIndex": 0, - params: options - } - TreeApi.addOtherSource(params) + console.log('options', options) + // let selectedNodes = window.treeObj.getSelectedNodes() + // let params = { + // id: id, + // sourceName: name, + // sourceType: 'standText', + // parentId: + // selectedNodes && selectedNodes[selectedNodes.length - 1] + // ? selectedNodes[selectedNodes.length - 1].id + // : undefined, + // // "treeIndex": 0, + // params: options + // } + // TreeApi.addOtherSource(params) }) } defineExpose({ diff --git a/src/renderer/src/views/components/propertyBox/groundText.vue b/src/renderer/src/views/components/propertyBox/groundText.vue index 7bbbb05..f3a9a18 100644 --- a/src/renderer/src/views/components/propertyBox/groundText.vue +++ b/src/renderer/src/views/components/propertyBox/groundText.vue @@ -102,6 +102,7 @@ let originalOptions: any let that: any const colorRef = ref(null) const open = async (id: any) => { + console.log('id', id) that = window.earth.entityMap.get(id) originalOptions = structuredClone(that.options) entityOptions.value = that @@ -131,12 +132,12 @@ const confirm = () => { delete params.name let params2 = { "id": params.id, - "sourceName": params.name, + "sourceName": params.text, "params": params, "isShow": params.show ? 1 : 0, } TreeApi.updateDirectoryInfo(params2) - cusUpdateNode({ "id": params.id, "sourceName": params.name, "params": JSON.stringify(params) }) + cusUpdateNode({ "id": params.id, "sourceName": params.text, "params": JSON.stringify(params) }) } const close = () => { baseDialog.value?.close() diff --git a/src/renderer/src/views/components/propertyBox/wallStereoscopic.vue b/src/renderer/src/views/components/propertyBox/wallStereoscopic.vue new file mode 100644 index 0000000..e69de29 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 5fb08d5..4f914b0 100644 --- a/src/renderer/src/views/components/tree/components/hooks/rightOperate.ts +++ b/src/renderer/src/views/components/tree/components/hooks/rightOperate.ts @@ -28,6 +28,7 @@ export const useRightOperate = () => { const editNode = (eventBus) => { let selectNodes = getSelectedNodes(window.treeObj); if (selectNodes && selectNodes[selectNodes.length - 1]) { + console.log('------------------',selectNodes[selectNodes.length - 1].params) let params = JSON.parse(selectNodes[selectNodes.length - 1].params) eventBus.emit("openDialog", selectNodes[selectNodes.length - 1].sourceType, params.id); } @@ -73,6 +74,13 @@ export const useRightOperate = () => { if (selectNodes && selectNodes[selectNodes.length - 1]) { let node = selectNodes[selectNodes.length - 1] let params = JSON.parse(node.params) + if(!params) { + params = { + name: node.sourceName, + show: node.isShow, + id: node.id, + } + } let entityObject = window.earth.entityMap.get(params.id) entityObject.setCustomView() params.customView = entityObject.customView @@ -83,7 +91,7 @@ export const useRightOperate = () => { "parentId": node.parentId, "treeIndex": node.treeIndex, "params": params, - "isShow": node.isShow ? 1 : 0, + "isShow": node.isShow ? 1 : 0 ? 1 : 0, } TreeApi.updateDirectoryInfo(params2) } diff --git a/src/renderer/src/views/components/tree/hooks/tree.ts b/src/renderer/src/views/components/tree/hooks/tree.ts index f18c193..8b7c041 100644 --- a/src/renderer/src/views/components/tree/hooks/tree.ts +++ b/src/renderer/src/views/components/tree/hooks/tree.ts @@ -435,8 +435,22 @@ export const useTree = () => { for (let i = 0; i < zNodes.value.length; i++) { if (zNodes.value[i].params) { let params = JSON.parse(zNodes.value[i].params) + if (!params.id) { + params.id = zNodes.value[i].id + } initMapData(zNodes.value[i].sourceType, params) } + else { + //@ts-ignore + if (zNodes.value[i].detail) { + //@ts-ignore + let detail = JSON.parse(zNodes.value[i].detail) + if (!detail.id) { + detail.id = zNodes.value[i].id + } + initMapData(zNodes.value[i].sourceType, detail) + } + } } } } diff --git a/src/renderer/src/views/components/tree/initMapData.ts b/src/renderer/src/views/components/tree/initMapData.ts index c9b0cac..9ae9701 100644 --- a/src/renderer/src/views/components/tree/initMapData.ts +++ b/src/renderer/src/views/components/tree/initMapData.ts @@ -1,6 +1,7 @@ export const initMapData = async (type, data) => { let entityObject let options + console.log('data', type, data) switch (type) { case 'groundText': entityObject = new YJ.Obj.GroundText(window.earth, data) @@ -39,6 +40,18 @@ export const initMapData = async (type, data) => { case 'model': entityObject = new YJ.Obj.ModelObject(window.earth, data) break + case 'terrain': + data.host = 'http://192.168.110.25:8848' + entityObject = new YJ.Obj.Terrain(window.earth, data) + break + case 'layer': + data.host = 'http://192.168.110.25:8848' + entityObject = new YJ.Obj.Layer(window.earth, data) + break + case 'tileset': + data.host = 'http://192.168.110.25:8848' + entityObject = new YJ.Obj.Tileset(window.earth, data) + break default: return break diff --git a/src/renderer/src/views/home/index.vue b/src/renderer/src/views/home/index.vue index bfd2b6c..6785ecb 100644 --- a/src/renderer/src/views/home/index.vue +++ b/src/renderer/src/views/home/index.vue @@ -86,7 +86,7 @@ eventBus.on('openDialog', async (sourceType: any, id: any) => { case 'groundText': currentComponent.value = groundText await nextTick() - dynamicComponentRef.value?.open() + dynamicComponentRef.value?.open(id) break case 'addStandText': currentComponent.value = addStandText @@ -96,7 +96,7 @@ eventBus.on('openDialog', async (sourceType: any, id: any) => { case 'standText': currentComponent.value = standText await nextTick() - dynamicComponentRef.value?.open() + dynamicComponentRef.value?.open(id) break case 'point': currentComponent.value = billboardObject