From 0b6758181fff565dcb9ca2b3ab26d2dcbb417a83 Mon Sep 17 00:00:00 2001 From: zyl <731870902@qq.com> Date: Fri, 14 Nov 2025 18:53:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/api/ts/index.ts | 13 + src/renderer/src/assets/styles/computed.scss | 2 + src/renderer/src/assets/styles/global.css | 6 +- src/renderer/src/icons/svg/backTs.svg | 1 + src/renderer/src/icons/svg/des_detail.svg | 1 + src/renderer/src/icons/svg/ersan_ts.svg | 1 + src/renderer/src/icons/svg/exitTs.svg | 1 + src/renderer/src/icons/svg/playTs.svg | 1 + src/renderer/src/views/TS/cabin.vue | 57 +++- .../src/views/TS/components/chart.vue | 2 + src/renderer/src/views/TS/deduction.vue | 92 +++++- src/renderer/src/views/TS/edit.vue | 307 +++++++++++++++++- src/renderer/src/views/TS/img/indicator.png | Bin 0 -> 231 bytes src/renderer/src/views/TS/list.vue | 209 ++++++++++-- src/renderer/src/views/TS/newEvent.vue | 138 +++----- src/renderer/src/views/TS/newPlan.vue | 4 +- src/renderer/src/views/TS/util/drag.js | 168 ++++++++++ .../src/views/TS/util/dragLeftRight.js | 63 ++++ .../src/views/TS/util/dragLeftRight1.js | 78 +++++ 19 files changed, 997 insertions(+), 147 deletions(-) create mode 100644 src/renderer/src/icons/svg/backTs.svg create mode 100644 src/renderer/src/icons/svg/des_detail.svg create mode 100644 src/renderer/src/icons/svg/ersan_ts.svg create mode 100644 src/renderer/src/icons/svg/exitTs.svg create mode 100644 src/renderer/src/icons/svg/playTs.svg create mode 100644 src/renderer/src/views/TS/img/indicator.png create mode 100644 src/renderer/src/views/TS/util/drag.js create mode 100644 src/renderer/src/views/TS/util/dragLeftRight.js create mode 100644 src/renderer/src/views/TS/util/dragLeftRight1.js diff --git a/src/renderer/src/api/ts/index.ts b/src/renderer/src/api/ts/index.ts index 0d80b49..d7207b8 100644 --- a/src/renderer/src/api/ts/index.ts +++ b/src/renderer/src/api/ts/index.ts @@ -8,12 +8,25 @@ export const TsApi = { data }) }, + + queryPlan: async (data: any) => { + return await request.post({ + url: '/tsPlan/query', + data + }) + }, planList: async (data: any) => { return await request.post({ url: '/tsPlan/list', data }) }, + updatePlan: async (data) => { + return await request.post({ + url: '/tsPlan/update', + data + }) + }, delPlan: async (data: any) => { return await request.post({ url: '/tsPlan/delete', diff --git a/src/renderer/src/assets/styles/computed.scss b/src/renderer/src/assets/styles/computed.scss index 0e1b0f4..c37177e 100644 --- a/src/renderer/src/assets/styles/computed.scss +++ b/src/renderer/src/assets/styles/computed.scss @@ -25,3 +25,5 @@ $designHeight: 1080; @function px2font($size) { @return math.div($size, $designWidth) * 100vw; } + + diff --git a/src/renderer/src/assets/styles/global.css b/src/renderer/src/assets/styles/global.css index b5dfd2a..6b48d85 100644 --- a/src/renderer/src/assets/styles/global.css +++ b/src/renderer/src/assets/styles/global.css @@ -365,7 +365,7 @@ img { border: 1px solid var(--el-border-color-light) !important; box-shadow: var(--el-box-shadow-light) !important; z-index: 9999 !important; - + .el-select-dropdown { background: #fff !important; } @@ -411,7 +411,7 @@ img { .ztree li ul.line { background: none !important; } -.ztree li span.button.switch, +.ztree li span.button.switch, .ztree li span.button.chk { background: none; } @@ -836,4 +836,4 @@ img { .el-popup-parent--hidden { width: 100% !important; -} \ No newline at end of file +} diff --git a/src/renderer/src/icons/svg/backTs.svg b/src/renderer/src/icons/svg/backTs.svg new file mode 100644 index 0000000..7f8bb12 --- /dev/null +++ b/src/renderer/src/icons/svg/backTs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/src/icons/svg/des_detail.svg b/src/renderer/src/icons/svg/des_detail.svg new file mode 100644 index 0000000..545eb8b --- /dev/null +++ b/src/renderer/src/icons/svg/des_detail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/src/icons/svg/ersan_ts.svg b/src/renderer/src/icons/svg/ersan_ts.svg new file mode 100644 index 0000000..16d4de2 --- /dev/null +++ b/src/renderer/src/icons/svg/ersan_ts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/src/icons/svg/exitTs.svg b/src/renderer/src/icons/svg/exitTs.svg new file mode 100644 index 0000000..1322abf --- /dev/null +++ b/src/renderer/src/icons/svg/exitTs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/src/icons/svg/playTs.svg b/src/renderer/src/icons/svg/playTs.svg new file mode 100644 index 0000000..b505323 --- /dev/null +++ b/src/renderer/src/icons/svg/playTs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/src/views/TS/cabin.vue b/src/renderer/src/views/TS/cabin.vue index 77af006..c1820c9 100644 --- a/src/renderer/src/views/TS/cabin.vue +++ b/src/renderer/src/views/TS/cabin.vue @@ -3,13 +3,24 @@
仿真演练图层指挥舱
-
+
+ + + 搜索 +
@@ -24,17 +35,19 @@ import {Search} from '@element-plus/icons-vue' import rightMenuTs from './components/rightMenuTs.vue' import {useTreeNode} from "../components/tree/hooks/treeNode"; import {$changeComponentShow} from "../../utils/communication"; +import {debounce} from '@/utils' const {getSelectedNodes, cusSelectNode, getSameLevel, cusNodeIcon, nodeType} = useTreeNode() import {showRightMenuTs} from "./tree" import {TsApi} from "../../api/ts"; import {initMapData} from "./entity"; +import {ElMessage} from "element-plus"; const rightMenuRef: any = ref() const treeObj = ref() //树形的实例 let zNodes: any = ref([])//树形结构数据 let nodes: any = ref([])//选中的node节点 -let input2 = ref('') +let searchKey = ref('') let formData = new FormData() formData.append('id', window["planId"]) @@ -44,6 +57,34 @@ onMounted(() => { }) +const clearResult = () => { + let string = searchKey.value.trim() + + if (string == '') { + let arr = [] + if ((window as any).searchPlaceMap) { + arr = Array.from((window as any).searchPlaceMap) + } + if (arr.length) { + const target = (window as any).searchPlaceMap.get(arr[0][0]) + if (target && typeof target.remove === 'function') { + target.remove() + ;(window as any).searchPlaceMap.clear() + } + } + /*poiOptions.value = [] + value.value = ''*/ + ;(window as any) && (window as any).treeSearchCb('') + } +} +const searchPlace = debounce(function () { + if (!searchKey.value) { + return + } + // poiOptions.value = [] + // value.value = '' + ;(window as any).treeSearchCb(searchKey.value) +}, 500) const initTreeCallBack = () => { TsApi.queryTsSource(formData).then(async res => { console.log('queryTsSource', res) @@ -60,7 +101,15 @@ const initTreeCallBack = () => { })*/ console.log("zNodes.value", zNodes.value) treeObj.value = $.fn.zTree.init($(`#treeDemos`), setting, zNodes.value) - window.treeObj = treeObj.value + window.treeObj = treeObj.value; + + (window as any).newFuzzySearch( + `treeDemos`, + "#keyword", + ["bim", "sonShp", "gdbShp"], + true, + "#queryButton" + ); } console.log("initTreeCallBack++++++++++++++++++++", zNodes.value) diff --git a/src/renderer/src/views/TS/components/chart.vue b/src/renderer/src/views/TS/components/chart.vue index 5d09456..d8ceba9 100644 --- a/src/renderer/src/views/TS/components/chart.vue +++ b/src/renderer/src/views/TS/components/chart.vue @@ -25,6 +25,8 @@ const eventBus: any = inject('bus') const props = defineProps(['eventList', 'hr', 'originHrOffset', 'scrollLeft']) let clickEventBar = (event) => { console.log("点击事件块", selectedEventId.value, event.id) + let entity = window['_entityMap'].get(event.sourceId) + entity && entity.flyTo() selectedEventId.value = (selectedEventId.value == null || selectedEventId.value != event.id) ? event.id : null eventBus.emit('click-event-show-plane', selectedEventId.value ? event : null) } diff --git a/src/renderer/src/views/TS/deduction.vue b/src/renderer/src/views/TS/deduction.vue index 5416b9e..70fc58d 100644 --- a/src/renderer/src/views/TS/deduction.vue +++ b/src/renderer/src/views/TS/deduction.vue @@ -19,15 +19,23 @@ +
+ {{ item }}× +
@@ -48,12 +56,12 @@ -
+
- - + +
| null>(null); +let multipliers = [16, 8, 4, 2, 1, 0.5, 0.25] let currentStamp = ref(window['tsObj']._Store._startTimestamp) let maxLevel = ref(24) let minLevel = ref(1) @@ -120,6 +141,10 @@ window['updateProp'] = (key: string, val: any) => { const level = ref(20) const props = defineProps(['TSOBJ']) console.log(props.TSOBJ) +let handleMultiplierChange = (multiplier) => { + props.TSOBJ._Store._multiplier = multiplier + multiplierPopover.value?.hide(); +} let formatTime = (timeStamp) => { return props.TSOBJ.parseTime(timeStamp) } @@ -245,6 +270,20 @@ let eventCallback = () => { if (props.TSOBJ._Clock._status == 'play') fun(dataMap) } +// 拖拽时间指示器预览 +let timing = () => { + console.log("拖拽时间指示器预览") +} +const handleDrag = (newLeft: number) => { + console.log("handleDrag", newLeft) + // cursorLeft.value = newLeft; + // 同步到Store(如果需要保存拖拽后的位置到全局状态) + // props.TSOBJ._Store.setScale('cursorLeft', newLeft); + // 可选:拖拽时暂停播放(避免动画与拖拽冲突) + /*if (props.TSOBJ._Clock._status === 'play') { + stopCallBack('pause'); + }*/ +}; let add = (num) => { // 大格12个取值,小格间距3个取值,level,8-1 @@ -293,6 +332,7 @@ onBeforeUnmount(() => { margin: 0 2px; } + .title { left: 62.5%; position: absolute; @@ -333,7 +373,7 @@ onBeforeUnmount(() => { .timelineCursorBox { position: absolute; - border-right: 0.5px red solid; + border-right: 0.5px #0ff solid; height: calc(100% - 16px); z-index: 9; //left: 10px; @@ -343,12 +383,13 @@ onBeforeUnmount(() => { .timeline-icon16 { display: block; position: absolute; - width: 16px; + width: 13px; height: 16px; //width: vw(16); //height: vw(16); transform: translate(-50%, -16px); - background: url("../../assets/img/indicator.png") no-repeat; + background: url("./img/indicator.png") no-repeat; + background-size: contain; cursor: pointer; } } @@ -357,4 +398,33 @@ onBeforeUnmount(() => { } } + +:deep(.multiplierBox) { + display: flex; + flex-direction: column; + text-align: center; + background: rgba(0, 0, 0, 0.5); + + box-sizing: border-box; + border: 1.5px solid rgba(0, 255, 255, 1); + + span { + line-height: 25px; + } + + .multiplier-item { + &:hover { + background: rgba(0, 255, 255, 0.5); /* 高亮背景色 */ + } + } + + .active { + //background: rgba(0, 255, 255, 0.5); /* 高亮背景色 */ + font-weight: 600; /* 加粗 */ + color: #0ff; + } +} + + + diff --git a/src/renderer/src/views/TS/edit.vue b/src/renderer/src/views/TS/edit.vue index 3cdf87b..7151ae7 100644 --- a/src/renderer/src/views/TS/edit.vue +++ b/src/renderer/src/views/TS/edit.vue @@ -1,20 +1,116 @@ + diff --git a/src/renderer/src/views/TS/newEvent.vue b/src/renderer/src/views/TS/newEvent.vue index 21c4f62..b01253b 100644 --- a/src/renderer/src/views/TS/newEvent.vue +++ b/src/renderer/src/views/TS/newEvent.vue @@ -1,93 +1,6 @@