diff --git a/electron.vite.config.1764295754509.mjs b/electron.vite.config.1764295754509.mjs new file mode 100644 index 0000000..3edbcb9 --- /dev/null +++ b/electron.vite.config.1764295754509.mjs @@ -0,0 +1,60 @@ +// electron.vite.config.ts +import { resolve } from "path"; +import { defineConfig, externalizeDepsPlugin } from "electron-vite"; +import vue from "@vitejs/plugin-vue"; +import AutoImport from "unplugin-auto-import/vite"; +import Components from "unplugin-vue-components/vite"; +import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; +import { createSvgIconsPlugin } from "vite-plugin-svg-icons"; +import path from "path"; +var electron_vite_config_default = defineConfig({ + main: { + plugins: [externalizeDepsPlugin()] + }, + preload: { + plugins: [externalizeDepsPlugin()] + }, + renderer: { + resolve: { + alias: { + "@renderer": resolve("src/renderer/src"), + "@": resolve("src/renderer/src") + } + }, + plugins: [ + vue(), + AutoImport({ + imports: ["vue"], + dts: "src/auto-imports.d.ts", + // 自动生成类型声明文件 + resolvers: [ElementPlusResolver()] + }), + Components({ + resolvers: [ElementPlusResolver()] + }), + // SVG图标插件配置 + // 配置SVG图标插件 + createSvgIconsPlugin({ + iconDirs: [path.resolve(process.cwd(), "src/renderer/src/icons/svg")], + symbolId: "icon-[name]", + // 自动清除 SVG 中的 fill 和 stroke 属性 + svgoOptions: { + plugins: [{ name: "removeAttrs", params: { attrs: ["fill", "stroke", "stroke-width"] } }] + } + }) + ] + /*server: { + port: 8848, + proxy: { + '/api': { + target: localStorage.getItem('ip') || 'http://127.0.0.1:8848', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, '') + } + } + }*/ + } +}); +export { + electron_vite_config_default as default +}; diff --git a/src/renderer/src/views/TS/cabin.vue b/src/renderer/src/views/TS/cabin.vue index a202f68..b0a016d 100644 --- a/src/renderer/src/views/TS/cabin.vue +++ b/src/renderer/src/views/TS/cabin.vue @@ -33,7 +33,7 @@ >搜索 -
+
@@ -336,6 +336,10 @@ const onMouseDown = (event: MouseEvent, treeId: string, treeNode: any) => { } } let rightClick = (event: MouseEvent, treeId: string, treeNode: any) => { + if (window['tsObj']._Clock._status == 'play') { + ElMessage({message: "态势推演中,暂停或停止后再试"}) + return; + } let selectNodes = getSelectedNodes(treeObj.value) let isnewSelect = true //是否为新选中 selectNodes.forEach((item: any) => { @@ -462,6 +466,7 @@ defineExpose({ .treeBox { //border: 1px solid red; flex: auto; + overflow-y: auto; .ztree { height: 100%; diff --git a/src/renderer/src/views/TS/components/grid.vue b/src/renderer/src/views/TS/components/grid.vue index 4fafe22..6a6b2d5 100644 --- a/src/renderer/src/views/TS/components/grid.vue +++ b/src/renderer/src/views/TS/components/grid.vue @@ -4,14 +4,12 @@
{{ item.name }}
- +
@@ -137,9 +135,9 @@ const rightClick = (e, eventObj) => { nextTick(() => { let parentHeight = parseInt(window.getComputedStyle($(".grid-body")[0]).height)//203 let height = parseInt(window.getComputedStyle($(".gridRightMenu")[0]).height)//65 - let maxTop = parentHeight - height//138 - $(".gridRightMenu")[0].style.top = e.layerY > maxTop ? maxTop : e.layerY + "px" + let offset = e.layerY > maxTop ? maxTop : e.layerY + $(".gridRightMenu")[0].style.top = offset + "px" $(".gridRightMenu")[0].style.left = e.layerX + "px" }) } else { diff --git a/src/renderer/src/views/TS/components/rightOperate.ts b/src/renderer/src/views/TS/components/rightOperate.ts index 5bfd4b5..f0117de 100644 --- a/src/renderer/src/views/TS/components/rightOperate.ts +++ b/src/renderer/src/views/TS/components/rightOperate.ts @@ -66,27 +66,27 @@ export const useRightOperate = () => { // @ts-ignore let name = getLastPathComponent(item, ['clt', 'json', 'pak', 'kml', 'kmz', 'shp', 'geojson', 'geoJson', 'czml', 'jct', 'mif', 'tab', 'csv']); let sourceType = "layer"; - if (item.endsWith(".clt") || item.endsWith(".json")) { - sourceType = "tileset"; - } else if (item.endsWith(".pak")) { - sourceType = "Terrain"; - } else if (item.endsWith(".kml") || item.endsWith(".kmz")) { - sourceType = "kml"; - } else if (item.endsWith(".shp")) { - sourceType = "shp"; - } else if (item.endsWith(".geojson") || item.endsWith(".geoJson")) { - sourceType = "geojson"; - } else if (item.endsWith(".czml")) { - sourceType = "czml"; - } else if (item.endsWith(".jct")) { - sourceType = "bim"; - } else if (item.endsWith(".mif")) { - sourceType = "shp"; - } else if (item.endsWith(".tab")) { - sourceType = "shp"; - } else if (item.endsWith(".csv")) { - sourceType = "csv"; - } + /* if (item.endsWith(".clt") || item.endsWith(".json")) { + sourceType = "tileset"; + } else if (item.endsWith(".pak")) { + sourceType = "terrain"; + } else if (item.endsWith(".kml") || item.endsWith(".kmz")) { + sourceType = "kml"; + } else if (item.endsWith(".shp")) { + sourceType = "shp"; + } else if (item.endsWith(".geojson") || item.endsWith(".geoJson")) { + sourceType = "geojson"; + } else if (item.endsWith(".czml")) { + sourceType = "czml"; + } else if (item.endsWith(".jct")) { + sourceType = "bim"; + } else if (item.endsWith(".mif")) { + sourceType = "shp"; + } else if (item.endsWith(".tab")) { + sourceType = "shp"; + } else if (item.endsWith(".csv")) { + sourceType = "csv"; + }*/ // 获取最后一个点的位置 const lastDotIndex = filePaths[0].lastIndexOf('.'); @@ -135,6 +135,7 @@ export const useRightOperate = () => { let selectedNode = window.treeObj.getNodeByParam('id', parentId) // + console.log("添加到树上") cusAddNodes(window.treeObj, selectedNode, [res.data], true) }) } diff --git a/src/renderer/src/views/TS/deduction.vue b/src/renderer/src/views/TS/deduction.vue index 41ae73f..9626443 100644 --- a/src/renderer/src/views/TS/deduction.vue +++ b/src/renderer/src/views/TS/deduction.vue @@ -18,16 +18,18 @@ +
| null>(null); +// const multiplierPopover = ref | null>(null); +const multiplierPopover = ref(null); +// 控制 popover 显示/隐藏的核心变量(替代实例方法) +const isPopoverShow = ref(false); let multipliers = [16, 8, 4, 2, 1, 0.5, 0.25] let currentStamp = ref(window['tsObj']._Store._startTimestamp) let maxLevel = ref(24) @@ -148,6 +153,21 @@ let handleMultiplierChange = (multiplier) => { props.TSOBJ._Store._multiplier = multiplier multiplierPopover.value?.hide(); } + +const handleReferenceClick = async () => { + // 执行校验逻辑(支持同步/异步) + const canShow = window['tsObj']._Clock._status !== 'play'; + console.log(multiplierPopover.value) + if (canShow) { + // 校验通过:手动显示 popover + isPopoverShow.value = true; // 校验通过:显示 + } else { + // 校验不通过:提示或不操作 + ElMessage.warning("态势推演中,暂停或停止后再试"); + // 可选:如果之前显示了,手动隐藏 + isPopoverShow.value = false; // 校验通过:显示 + } +}; let formatTime = (timeStamp) => { return props.TSOBJ.parseTime(timeStamp) } @@ -337,7 +357,10 @@ const handleDrag = (newLeft: number) => { }; let add = (num) => { // 大格12个取值,小格间距3个取值,level,8-1 - + if (window['tsObj']._Clock._status == 'play') { + ElMessage({message: "态势推演中,暂停或停止后再试"}) + return; + } let res = level.value + num if (res <= maxLevel.value && res >= minLevel.value) { level.value += num @@ -352,6 +375,7 @@ let add = (num) => { onBeforeUnmount(() => { // props.TSOBJ._Clock.stopAnimation() }) +