From c704df3ead231dcd31ba04d6fbb94853d3c3e0fa Mon Sep 17 00:00:00 2001
From: zyl <731870902@qq.com>
Date: Fri, 28 Nov 2025 10:35:06 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
electron.vite.config.1764295754509.mjs | 60 +++++++++++++++
src/renderer/src/views/TS/cabin.vue | 7 +-
src/renderer/src/views/TS/components/grid.vue | 12 ++-
.../src/views/TS/components/rightOperate.ts | 43 +++++------
src/renderer/src/views/TS/deduction.vue | 36 +++++++--
src/renderer/src/views/TS/element.vue | 9 ++-
src/renderer/src/views/TS/entity.ts | 1 +
src/renderer/src/views/TS/newEvent.vue | 73 ++++++++++++++++---
8 files changed, 192 insertions(+), 49 deletions(-)
create mode 100644 electron.vite.config.1764295754509.mjs
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 }}
-
- {rightClick(e,event)}">
+
{rightClick(e,event)}">
{{
format(item.key, event[item.key])
}}
-
-
+
@@ -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 @@
+
- {{ TSOBJ._Store._multiplier }}×
+ {{ TSOBJ._Store._multiplier }}×
| 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()
})
+