From 6a4a2eae9567fdd9888cf56ae5ac25aa15c76c58 Mon Sep 17 00:00:00 2001 From: wxs <211789910@qq.com> Date: Tue, 3 Feb 2026 16:17:32 +0800 Subject: [PATCH 1/5] =?UTF-8?q?gmti=E4=BF=A1=E6=81=AF=E6=8E=A5=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/home/components/twin-situation/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.js b/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.js index 7dada03..25401b3 100644 --- a/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.js +++ b/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.js @@ -2607,6 +2607,10 @@ export default { name: '/topic/jobStatus', callback: this.handleWebsocketState }, + { + name: '/topic/gmti', + callback: this.handleWebsocketGmti + }, ], success: () => { console.log('自身websocket链接成功2') @@ -2616,6 +2620,9 @@ export default { socketInstance = socket stompClientInstance = stompClient }, + handleWebsocketGmti(info) { + console.log('Gmti信息', info.body) + }, handleWebsocketStatus(info) { console.log('SAR状态信息', info.body) let data = JSON.parse(info.body) @@ -2778,7 +2785,7 @@ export default { // console.log('SAR图像', info.body) let data = JSON.parse(info.body) console.log('SAR图像2', data) - // this.addMarkPicture2(data) + this.addMarkPicture2(data) // console.log('灭有匹配到吗taskUavCollection', taskUavCollection, taskUavCollection[data.jobId]) if (taskUavCollection[data.jobId]) { let find = taskUavCollection[data.jobId].find(item => item.uavId + '' === data.uavId + '') From 2eb9d77a18611a633b892e6d06727550f669b2d0 Mon Sep 17 00:00:00 2001 From: wxs <211789910@qq.com> Date: Tue, 3 Feb 2026 17:42:24 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat:=E4=BF=AE=E6=94=B9=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=A0=B7=E5=BC=8F=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=AE=8C=E6=88=90=E5=90=8E=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=B8=85=E9=99=A4=E7=9B=AE=E6=A0=87=E5=8C=BA=E5=9F=9F=EF=BC=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/home/components/task-list/index.vue | 25 +- .../home/components/task-manage/index.js | 15 +- .../home/components/task-manage/index.scss | 316 +++++++------- .../home/components/task-manage/index.vue | 146 +++---- .../home/components/twin-situation/index.js | 21 +- .../home/components/twin-situation/index.scss | 396 +++++++----------- .../home/components/twin-situation/index.vue | 206 ++++----- .../Skyeye-sys-ui/src/views/home/index.js | 2 +- 8 files changed, 475 insertions(+), 652 deletions(-) diff --git a/frontend/Skyeye-sys-ui/src/views/home/components/task-list/index.vue b/frontend/Skyeye-sys-ui/src/views/home/components/task-list/index.vue index e9e0783..11637c1 100644 --- a/frontend/Skyeye-sys-ui/src/views/home/components/task-list/index.vue +++ b/frontend/Skyeye-sys-ui/src/views/home/components/task-list/index.vue @@ -29,7 +29,7 @@
-
+
{{ item.statusName }} - - - - -
-
{{ item.beginTime }}
+ +
+

无人机名称: 无人机1

+

雷达名称: SAR1

+

开始时间:{{ item.beginTime }}

@@ -59,18 +58,6 @@ - - - - - -
diff --git a/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.js b/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.js index f1ec75e..306ed2a 100644 --- a/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.js +++ b/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.js @@ -876,7 +876,9 @@ export default { if (name === '执行中') { return '#6ae965' } else if (name === '已完成') { - return '#336dff' + return '#0f8cc7' + } else if (name === '未执行') { + return '#b2ff38' } }, getUavList() { @@ -985,6 +987,15 @@ export default { let list = [] data.forEach(item => { item.statusName = this.jobStatus[item.status + ''] + console.log(item, 33333333333); + let uav = undefined + let sar = undefined + if (item.uavList.length) { + uav = item.uavList[0].uavName + if (item.uavList[0].payloadList.length) { + sar = item.uavList[0].payloadList[0].payloadName + } + } list.push({ id: item.id, beginTime: item.beginTime, @@ -994,6 +1005,8 @@ export default { name: item.name, status: item.status, statusName: item.statusName, + uav, + sar }) this.removeTaskTarget(item.id) }) diff --git a/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.scss b/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.scss index 6fbbffd..e0542dc 100644 --- a/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.scss +++ b/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.scss @@ -26,183 +26,59 @@ } .task-item { - height: 40px; box-sizing: border-box; - width: 100%; + width: calc(100% - 5px); position: relative; - display: flex; - justify-content: space-between; - align-items: center; margin: 8px 0; + border: 1px solid $--color-border-1; + padding: 8px 15px; + box-sizing: border-box; + border-radius: 6px; + background-color: $--color-black-3-alpha; - .left-part { - padding: 0 8px; - background: rgba(51, 51, 51, 0.6); - border-radius: 4px; - flex: 1; - height: 100%; - position: relative; - box-sizing: border-box; - display: flex; - justify-content: space-between; - align-items: center; - - .task-progress-bar { - position: absolute; - height: 100%; - left: 0; - top: 0; - border-radius: 4px; - background: #43522c; - //z-index: -1; - } - - .execute-info { - z-index: 1; - display: flex; - justify-content: flex-start; - align-items: center; - // width: 150px; - - .execute-type-icon { - display: flex; - justify-content: center; - align-items: center; - width: 20px; - height: 20px; - border-radius: 50%; - margin-right: 4px; - border: 1px solid $--color-text-1; - - >i { - color: $--color-text-1; - font-size: 12px; - } - } - - .execute-state-0 { - border: 1px solid #a45d35; - box-shadow: 0 0 5px rgba(164, 93, 53, 0.8), - 0 0 10px rgba(164, 93, 53, 0.6), - 0 0 20px rgba(164, 93, 53, 0.3); - } - - .execute-state-1 { - border: 1px solid #39cf0b; - box-shadow: 0 0 5px rgba(17, 172, 38, 0.8), - 0 0 10px rgba(17, 172, 38, 0.6), - 0 0 20px rgba(17, 172, 38, 0.3); - } - - .execute-state-2 { - border: 1px solid $--color-text-1; - box-shadow: 0 0 2px rgba(250, 250, 250, 0.8), - 0 0 6px rgba(250, 250, 250, 0.6), - 0 0 14px rgba(250, 250, 250, 0.3); - } - - .execute-state-3 { - border: 1px solid #a45d35; - box-shadow: 0 0 5px rgba(164, 93, 53, 0.8), - 0 0 10px rgba(164, 93, 53, 0.6), - 0 0 20px rgba(164, 93, 53, 0.3); - } - - .execute-state-4 { - border: 1px solid #893654; - box-shadow: 0 0 5px rgba(137, 54, 84, 0.8), - 0 0 10px rgba(137, 54, 84, 0.6), - 0 0 20px rgba(137, 54, 84, 0.3); - } - - .execute-state-5 { - border: 1px solid #681c1f; - box-shadow: 0 0 5px rgba(104, 28, 31, 0.8), - 0 0 10px rgba(104, 28, 31, 0.6), - 0 0 20px rgba(104, 28, 31, 0.3); - } - - .task-execute { - color: $--color-text-1; - font-size: 14px; - width: 85px; - margin-left: 5px; - display: inline-block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: pointer; - - } - } - - .task-info { - z-index: 1; - width: 50px; - display: flex; - justify-content: flex-start; - align-items: center; - - >i { - font-size: 16px; - color: #07e5e5; - margin-right: 6px; - } - - >span { - color: $--color-orange; - } - - .task-name { - color: $--color-text-1; - font-size: 14px; - margin-right: 2px; - } - - .task-finish { - color: $--color-green; - } - } - - .task-time { - z-index: 1; - color: $--color-text-1; - min-width: 140px; - } + &:hover { + background-color: $--color-black-3; } - .right-part { - width: 60px; - height: 100%; - display: flex; - justify-content: space-between; - align-items: center; - padding: 0 5px; + >p { + line-height: 24px; + color: $--color-text-2; + padding-left: 3px; + } + + .task-info { + z-index: 1; + position: absolute; + bottom: 0; + right: 0; + background-color: $--color-black-2; + padding: 4px 15px; + border-bottom-right-radius: 6px; + border-top-left-radius: 6px; >i { + font-size: 16px; + color: #07e5e5; + margin-right: 6px; + } + + >span { + color: $--color-orange; + } + + .task-name { + color: $--color-text-1; font-size: 14px; - cursor: pointer; - margin: 2px 0; + margin-right: 2px; } - .edit-task { - color: #ffff00; - } - - .delete-task { - color: $--color-red; + .task-finish { + color: $--color-green; } } } } - //.task-list__large { - // height: calc(50vh - 110px); - // left: $--icon-mode-larger-card-left; - // top: $--icon-mode-larger-card-top; - // transition: 0.2s ease-in-out; - //} - .task-form { width: 410px; height: calc(100vh - 70px); @@ -213,12 +89,6 @@ } } - //.task-form__large { - // height: calc(100vh - 110px); - // left: $--icon-mode-larger-card-left; - // top: $--icon-mode-larger-card-top; - // transition: 0.2s ease-in-out; - //} .requirement-form { box-sizing: border-box; padding-right: 10px; @@ -553,3 +423,115 @@ background-color: #00000052; } } + +.top-part { + display: flex; + justify-content: space-between; + line-height: 24px; + + &__left { + flex: 1; + + .execute-info { + z-index: 1; + display: flex; + justify-content: flex-start; + align-items: center; + // width: 150px; + + .execute-type-icon { + display: flex; + justify-content: center; + align-items: center; + width: 20px; + height: 20px; + border-radius: 50%; + margin-right: 4px; + border: 1px solid $--color-text-1; + + >i { + color: $--color-text-1; + font-size: 12px; + } + } + + .execute-state-0 { + border: 1px solid #a45d35; + box-shadow: 0 0 5px rgba(164, 93, 53, 0.8), + 0 0 10px rgba(164, 93, 53, 0.6), + 0 0 20px rgba(164, 93, 53, 0.3); + } + + .execute-state-1 { + border: 1px solid #39cf0b; + box-shadow: 0 0 5px rgba(17, 172, 38, 0.8), + 0 0 10px rgba(17, 172, 38, 0.6), + 0 0 20px rgba(17, 172, 38, 0.3); + } + + .execute-state-2 { + border: 1px solid $--color-text-1; + box-shadow: 0 0 2px rgba(250, 250, 250, 0.8), + 0 0 6px rgba(250, 250, 250, 0.6), + 0 0 14px rgba(250, 250, 250, 0.3); + } + + .execute-state-3 { + border: 1px solid #a45d35; + box-shadow: 0 0 5px rgba(164, 93, 53, 0.8), + 0 0 10px rgba(164, 93, 53, 0.6), + 0 0 20px rgba(164, 93, 53, 0.3); + } + + .execute-state-4 { + border: 1px solid #893654; + box-shadow: 0 0 5px rgba(137, 54, 84, 0.8), + 0 0 10px rgba(137, 54, 84, 0.6), + 0 0 20px rgba(137, 54, 84, 0.3); + } + + .execute-state-5 { + border: 1px solid #681c1f; + box-shadow: 0 0 5px rgba(104, 28, 31, 0.8), + 0 0 10px rgba(104, 28, 31, 0.6), + 0 0 20px rgba(104, 28, 31, 0.3); + } + + .task-execute { + color: $--color-text-1; + font-size: 14px; + width: calc(100% - 50px); + margin-left: 5px; + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + cursor: pointer; + + } + } + } + + &__right { + width: 60px; + height: 100%; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 5px; + + >i { + font-size: 14px; + cursor: pointer; + margin: 2px 0; + } + + .edit-task { + color: #ffff00; + } + + .delete-task { + color: $--color-red; + } + } +} diff --git a/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.vue b/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.vue index e29f288..92d5349 100644 --- a/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.vue +++ b/frontend/Skyeye-sys-ui/src/views/home/components/task-manage/index.vue @@ -30,91 +30,75 @@ :key="item.id" class="task-item" > -
+
-
- - {{ item.name }} +
+
+ + {{ item.name }} +
-
- {{ item.statusName }} - - - - - +
+ + + + + + + + + + + + + + + 修改名称 + 复制 + 删除 + +
-
{{ item.beginTime }}
-
- - - - - - - - - - - - - - - 修改名称 - 复制 - 删除 - - - +

无人机名称: {{ item.uav }}

+

雷达名称: {{ item.sar }}

+

开始时间:{{ item.beginTime }}

+
+ {{ item.statusName }}
diff --git a/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.js b/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.js index 25401b3..de79438 100644 --- a/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.js +++ b/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.js @@ -1085,6 +1085,7 @@ export default { console.log('任务列表', res.data.data) let data = res.data.data let list = [] + data.forEach(item => { // item.check = item.status === 1 || item.status === 3 item.check = false @@ -1096,6 +1097,15 @@ export default { } child.jobName = item.name }) + + let uav = undefined + let sar = undefined + if (item.uavList.length) { + uav = item.uavList[0].uavName + if (item.uavList[0].payloadList.length) { + sar = item.uavList[0].payloadList[0].payloadName + } + } list.push({ id: item.id, beginTime: item.beginTime, @@ -1105,6 +1115,8 @@ export default { name: item.name, status: item.status, statusName: item.statusName, + uav, + sar }) // TODO // item.pointList = [item.pointList] @@ -2994,9 +3006,12 @@ export default { // 从执行中变为执行完毕 if (this.taskList.data[findIndex].status === 1 && data.jobStatus === 2) { // 移除任务相关信息 - console.log('任务变更', this.jobStatus, this.jobStatus[data.jobStatus + '']) - this.taskList.data[findIndex].statusName = this.jobStatus[data.jobStatus + ''] - taskListResource[findIndex].statusName = this.jobStatus[data.jobStatus + ''] + // console.log('任务变更', this.jobStatus, this.jobStatus[data.jobStatus + '']) + // this.taskList.data[findIndex].statusName = this.jobStatus[data.jobStatus + ''] + // taskListResource[findIndex].statusName = this.jobStatus[data.jobStatus + ''] + taskListResource.splice(findIndex, 1) + this.getTaskList() + this.removeTaskTarget(data.jobId) } if (data.jobStatus === 1 && this.detailUav.id === data.jobId) { this.updateUavInfo(data.sarStatus) diff --git a/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.scss b/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.scss index 474342a..d2a5f8b 100644 --- a/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.scss +++ b/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.scss @@ -48,171 +48,53 @@ } .task-item { - height: 40px; box-sizing: border-box; - width: 100%; + width: calc(100% - 5px); position: relative; - display: flex; - justify-content: space-between; - align-items: center; margin: 8px 0; + border: 1px solid $--color-border-1; + padding: 8px 15px; + box-sizing: border-box; + border-radius: 6px; + background-color: $--color-black-3-alpha; - .left-part { - padding: 0 8px; - background: rgba(51, 51, 51, 0.6); - border-radius: 4px; - flex: 1; - height: 100%; - position: relative; - box-sizing: border-box; - display: flex; - justify-content: space-between; - align-items: center; - - .task-progress-bar { - position: absolute; - height: 100%; - left: 0; - top: 0; - border-radius: 4px; - background: #43522c; - //z-index: -1; - } - - .execute-info { - z-index: 1; - display: flex; - justify-content: flex-start; - align-items: center; - // width: 150px; - - .execute-type-icon { - display: flex; - justify-content: center; - align-items: center; - width: 20px; - height: 20px; - border-radius: 50%; - margin-right: 4px; - border: 1px solid $--color-text-1; - - >i { - color: $--color-text-1; - font-size: 12px; - } - } - - .execute-state-0 { - border: 1px solid #a45d35; - box-shadow: 0 0 5px rgba(164, 93, 53, 0.8), - 0 0 10px rgba(164, 93, 53, 0.6), - 0 0 20px rgba(164, 93, 53, 0.3); - } - - .execute-state-1 { - border: 1px solid #39cf0b; - box-shadow: 0 0 5px rgba(17, 172, 38, 0.8), - 0 0 10px rgba(17, 172, 38, 0.6), - 0 0 20px rgba(17, 172, 38, 0.3); - } - - .execute-state-2 { - border: 1px solid $--color-text-1; - box-shadow: 0 0 2px rgba(250, 250, 250, 0.8), - 0 0 6px rgba(250, 250, 250, 0.6), - 0 0 14px rgba(250, 250, 250, 0.3); - } - - .execute-state-3 { - border: 1px solid #a45d35; - box-shadow: 0 0 5px rgba(164, 93, 53, 0.8), - 0 0 10px rgba(164, 93, 53, 0.6), - 0 0 20px rgba(164, 93, 53, 0.3); - } - - .execute-state-4 { - border: 1px solid #893654; - box-shadow: 0 0 5px rgba(137, 54, 84, 0.8), - 0 0 10px rgba(137, 54, 84, 0.6), - 0 0 20px rgba(137, 54, 84, 0.3); - } - - .execute-state-5 { - border: 1px solid #681c1f; - box-shadow: 0 0 5px rgba(104, 28, 31, 0.8), - 0 0 10px rgba(104, 28, 31, 0.6), - 0 0 20px rgba(104, 28, 31, 0.3); - } - - .task-execute { - color: $--color-text-1; - font-size: 14px; - width: 90px; - margin-left: 5px; - display: inline-block; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: pointer; - - } - } - - .task-info { - z-index: 1; - width: 50px; - display: flex; - justify-content: flex-start; - align-items: center; - - >i { - font-size: 16px; - color: #07e5e5; - margin-right: 6px; - } - - >span { - color: $--color-orange; - } - - .task-name { - color: $--color-text-1; - font-size: 14px; - margin-right: 2px; - } - - .task-finish { - color: $--color-green; - } - } - - .task-time { - z-index: 1; - color: $--color-text-1; - min-width: 140px; - } + &:hover { + background-color: $--color-black-3; } - .right-part { - width: 40px; - height: 100%; - display: flex; - justify-content: space-between; - padding: 0 8px; - align-items: center; + >p { + color: $--color-text-2; + line-height: 24px; + } + + .task-info { + z-index: 1; + position: absolute; + bottom: 0; + right: 0; + background-color: $--color-black-2; + padding: 4px 15px; + border-bottom-right-radius: 6px; + border-top-left-radius: 6px; >i { + font-size: 16px; + color: #07e5e5; + margin-right: 6px; + } + + >span { + color: $--color-orange; + } + + .task-name { + color: $--color-text-1; font-size: 14px; - cursor: pointer; - margin: 2px 0; + margin-right: 2px; } - .edit-task { - color: #ffff00; - } - - .delete-task { - color: $--color-red; + .task-finish { + color: $--color-green; } } } @@ -408,9 +290,9 @@ .detail-uav-wrap { width: 430px; position: fixed; - bottom: 5px; + top: 60px; right: 10px; - height: calc(100vh - 60px); + height: calc(100vh - 270px); } .detail-info { @@ -1086,35 +968,6 @@ } } - .task-info { - z-index: 1; - flex: 1; - display: flex; - justify-content: flex-start; - align-items: center; - width: 50px; - - >i { - font-size: 16px; - color: #07e5e5; - margin-right: 6px; - } - - >span { - color: $--color-orange; - } - - .task-name { - color: $--color-text-1; - font-size: 14px; - margin-right: 2px; - } - - .task-finish { - color: $--color-green; - } - } - .task-time { z-index: 1; color: $--color-text-1; @@ -1188,7 +1041,7 @@ //bottom: 5px; right: 10px; //right: 510px; - height: calc(100vh - 70px); + height: calc(100vh - 270px); //height: calc(100vh - 620px); transition: 0.2s ease-in-out; z-index: 2; @@ -1259,66 +1112,6 @@ } } - .target-task-item { - height: 40px; - margin: 8px 0; - box-sizing: border-box; - width: 100%; - padding: 0 8px; - background: #333333; - border-radius: 4px; - flex: 1; - display: flex; - justify-content: space-between; - align-items: center; - position: relative; - - .task-progress-bar { - position: absolute; - height: 100%; - left: 0; - top: 0; - border-radius: 4px; - background: #43522c; - //z-index: -1; - } - - .task-info { - z-index: 1; - flex: 1; - display: flex; - justify-content: flex-start; - align-items: center; - width: 50px; - - >i { - font-size: 16px; - color: #07e5e5; - margin-right: 6px; - } - - >span { - color: $--color-orange; - } - - .task-name { - color: $--color-text-1; - font-size: 14px; - margin-right: 2px; - } - - .task-finish { - color: $--color-green; - } - } - - .task-time { - z-index: 1; - color: $--color-text-1; - min-width: 140px; - } - } - .uav-span-wrap { display: flex; justify-content: flex-start; @@ -1415,3 +1208,114 @@ ::v-deep .el-collapse { border-top: unset; } + +.top-part { + display: flex; + justify-content: space-between; + line-height: 24px; + + &__left { + flex: 1; + + .execute-info { + z-index: 1; + display: flex; + justify-content: flex-start; + align-items: center; + + .execute-type-icon { + display: flex; + justify-content: center; + align-items: center; + width: 20px; + height: 20px; + border-radius: 50%; + margin-right: 4px; + border: 1px solid $--color-text-1; + + >i { + color: $--color-text-1; + font-size: 12px; + } + } + + .execute-state-0 { + border: 1px solid #a45d35; + box-shadow: 0 0 5px rgba(164, 93, 53, 0.8), + 0 0 10px rgba(164, 93, 53, 0.6), + 0 0 20px rgba(164, 93, 53, 0.3); + } + + .execute-state-1 { + border: 1px solid #39cf0b; + box-shadow: 0 0 5px rgba(17, 172, 38, 0.8), + 0 0 10px rgba(17, 172, 38, 0.6), + 0 0 20px rgba(17, 172, 38, 0.3); + } + + .execute-state-2 { + border: 1px solid $--color-text-1; + box-shadow: 0 0 2px rgba(250, 250, 250, 0.8), + 0 0 6px rgba(250, 250, 250, 0.6), + 0 0 14px rgba(250, 250, 250, 0.3); + } + + .execute-state-3 { + border: 1px solid #a45d35; + box-shadow: 0 0 5px rgba(164, 93, 53, 0.8), + 0 0 10px rgba(164, 93, 53, 0.6), + 0 0 20px rgba(164, 93, 53, 0.3); + } + + .execute-state-4 { + border: 1px solid #893654; + box-shadow: 0 0 5px rgba(137, 54, 84, 0.8), + 0 0 10px rgba(137, 54, 84, 0.6), + 0 0 20px rgba(137, 54, 84, 0.3); + } + + .execute-state-5 { + border: 1px solid #681c1f; + box-shadow: 0 0 5px rgba(104, 28, 31, 0.8), + 0 0 10px rgba(104, 28, 31, 0.6), + 0 0 20px rgba(104, 28, 31, 0.3); + } + + .task-execute { + color: $--color-text-1; + font-size: 14px; + width: calc(100% - 50px); + margin-left: 5px; + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + cursor: pointer; + + } + } + } + + &__right { + width: 40px; + height: 100%; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 5px; + + >i { + font-size: 14px; + cursor: pointer; + margin: 2px 0; + } + + .edit-task { + color: #ffff00; + } + + .delete-task { + color: $--color-red; + } + } +} diff --git a/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.vue b/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.vue index 6c0669e..d081441 100644 --- a/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.vue +++ b/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.vue @@ -75,68 +75,50 @@ class="task-item" @click="openSarStatusDetail(item)" > -
+
-
- - {{ item.name }} +
+
+ + {{ item.name }} +
-
- {{ item.statusName }} +
+ + + + + +
-
{{ item.beginTime }}
-
- - - - - - - - +

无人机名称: {{ item.uav }}

+

雷达名称: {{ item.sar }}

+

开始时间:{{ item.beginTime }}

+
+ {{ item.statusName }}
@@ -292,50 +274,6 @@
- - - - - - - - - -
-
回传图像:
-
-
- - -
-
-
- 拍摄任务:{{ item.taskName }} | 拍摄载荷:{{ - item.loaderName - }} -
-
拍摄时间:{{ item.createTime }}
-
-
- - -
-
-
@@ -410,41 +348,41 @@
+ -->
diff --git a/frontend/Skyeye-sys-ui/src/views/home/index.js b/frontend/Skyeye-sys-ui/src/views/home/index.js index 6ee06bc..c5c9668 100644 --- a/frontend/Skyeye-sys-ui/src/views/home/index.js +++ b/frontend/Skyeye-sys-ui/src/views/home/index.js @@ -1524,7 +1524,7 @@ export default { }, //#endregion sarChange(val) { - this.moveInfoBar = val + // this.moveInfoBar = val }, //#region ais船 From 395f69fda70f582f4ea66f5ecdbdd0266c8c1d40 Mon Sep 17 00:00:00 2001 From: Andy Yang Date: Tue, 3 Feb 2026 23:14:00 +0800 Subject: [PATCH 3/5] fix a finished job won't receive status info --- .../zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java index ff2657f..5e76e0f 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java @@ -346,6 +346,15 @@ public class JmJobServiceImpl implements JmJobService { // SarBackImageFrameDTO.i = 1; // 校验无人机、载荷 jobStatusService.checkDeviceForNewJob(job.getUavList()); + + JmJobUav uav = job.getUavList().get(0); + List airlineList = uav.getAirlineList(); + for(JmAirline airline:airlineList) { + log.info("we are going to start job {}", job.getId()); + log.info("airline origin status is {}, set to {}", airline.getStatus(), ExecStatusEnum.NOT); + airline.setStatus(ExecStatusEnum.NOT.getValue()); + } + // 保存任务状态 job.setStatus(ExecStatusEnum.PROCESSING.getValue()); job.setBeginTime(DateUtil.date()); From 62317aab51a5d7eb85c2630fe1baa276ffaac6a9 Mon Sep 17 00:00:00 2001 From: Andy Yang <10339434@qq.com> Date: Wed, 4 Feb 2026 10:08:45 +0800 Subject: [PATCH 4/5] =?UTF-8?q?set=20gmti=20parser=20dynamic=20library=20J?= =?UTF-8?q?NA=20path.=EF=BC=88opencv=20jni=20path=20not=20working=20leave?= =?UTF-8?q?=20it=20just=20so=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zhangy/skyeye/SEApplication.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/SEApplication.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/SEApplication.java index 8507141..58180b1 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/SEApplication.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/SEApplication.java @@ -5,11 +5,27 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; +import java.io.File; + @EnableScheduling @MapperScan("com.zhangy.skyeye.**.mapper") @SpringBootApplication(scanBasePackages = "com.zhangy.**") public class SEApplication { public static void main(String[] args) { + String projectRoot = System.getProperty("user.dir"); +// String libPath = projectRoot + "/library/logisen/GMTI"; +// System.setProperty("jna.library.path", libPath); + // 1. GMTI 路径 + String gmtiPath = projectRoot + "/library/logisen/GMTI"; + // 2. OpenCV 路径 (根据您的目录名: opencv-4.11.0-windows) + String opencvPath = projectRoot + "/library/opencv-4.11.0-windows"; + + // 使用 File.pathSeparator (Windows是分号; Linux是冒号:) 连接多个路径 + String combinedPath = gmtiPath + File.pathSeparator + opencvPath; + + System.setProperty("jna.library.path", combinedPath); + // 如果 OpenCV 使用的是标准 JNI (System.loadLibrary),可能还需要设置 java.library.path + System.setProperty("java.library.path", opencvPath); SpringApplication.run(SEApplication.class, args); } } From 8336e5e1ca15f065889c8f8e72f524f54514f7f7 Mon Sep 17 00:00:00 2001 From: wxs <211789910@qq.com> Date: Wed, 4 Feb 2026 10:42:58 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/Skyeye-sys-ui/src/utils/flexible.js | 250 ++++++++++-------- .../home/components/twin-situation/index.scss | 10 +- frontend/Skyeye-sys-ui/vue.config.js | 24 +- 3 files changed, 153 insertions(+), 131 deletions(-) diff --git a/frontend/Skyeye-sys-ui/src/utils/flexible.js b/frontend/Skyeye-sys-ui/src/utils/flexible.js index 05d08ab..a37c986 100644 --- a/frontend/Skyeye-sys-ui/src/utils/flexible.js +++ b/frontend/Skyeye-sys-ui/src/utils/flexible.js @@ -1,120 +1,148 @@ +; (function (win, lib) { + var doc = win.document + var docEl = doc.documentElement + var metaEl = doc.querySelector('meta[name="viewport"]') + var flexibleEl = doc.querySelector('meta[name="flexible"]') + var dpr = 0 + var scale = 0 + var tid + var flexible = lib.flexible || (lib.flexible = {}) -;(function(win, lib) { - var doc = win.document; - var docEl = doc.documentElement; - var metaEl = doc.querySelector('meta[name="viewport"]'); - var flexibleEl = doc.querySelector('meta[name="flexible"]'); - var dpr = 0; - var scale = 0; - var tid; - var flexible = lib.flexible || (lib.flexible = {}); - - if (metaEl) { - console.warn('将根据已有的meta标签来设置缩放比例'); - var match = metaEl.getAttribute('content').match(/initial\-scale=([\d\.]+)/); - if (match) { - scale = parseFloat(match[1]); - dpr = parseInt(1 / scale); - } - } else if (flexibleEl) { - var content = flexibleEl.getAttribute('content'); - if (content) { - var initialDpr = content.match(/initial\-dpr=([\d\.]+)/); - var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/); - if (initialDpr) { - dpr = parseFloat(initialDpr[1]); - scale = parseFloat((1 / dpr).toFixed(2)); - } - if (maximumDpr) { - dpr = parseFloat(maximumDpr[1]); - scale = parseFloat((1 / dpr).toFixed(2)); - } - } + if (metaEl) { + console.warn('将根据已有的meta标签来设置缩放比例') + var match = metaEl.getAttribute('content').match(/initial\-scale=([\d\.]+)/) + if (match) { + scale = parseFloat(match[1]) + dpr = parseInt(1 / scale) } - - if (!dpr && !scale) { - var isAndroid = win.navigator.appVersion.match(/android/gi); - var isIPhone = win.navigator.appVersion.match(/iphone/gi); - var devicePixelRatio = win.devicePixelRatio; - if (isIPhone) { - // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案 - if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) { - dpr = 3; - } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){ - dpr = 2; - } else { - dpr = 1; - } - } else { - // 其他设备下,仍旧使用1倍的方案 - dpr = 1; - } - scale = 1 / dpr; + } else if (flexibleEl) { + var content = flexibleEl.getAttribute('content') + if (content) { + var initialDpr = content.match(/initial\-dpr=([\d\.]+)/) + var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/) + if (initialDpr) { + dpr = parseFloat(initialDpr[1]) + scale = parseFloat((1 / dpr).toFixed(2)) + } + if (maximumDpr) { + dpr = parseFloat(maximumDpr[1]) + scale = parseFloat((1 / dpr).toFixed(2)) + } } + } - docEl.setAttribute('data-dpr', dpr); - if (!metaEl) { - metaEl = doc.createElement('meta'); - metaEl.setAttribute('name', 'viewport'); - metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no'); - if (docEl.firstElementChild) { - docEl.firstElementChild.appendChild(metaEl); - } else { - var wrap = doc.createElement('div'); - wrap.appendChild(metaEl); - doc.write(wrap.innerHTML); - } - } - - function refreshRem(){ - var width = docEl.getBoundingClientRect().width; - if (width / dpr < 1980) { - width = 1980 * dpr; - } else if (width / dpr > 5760) { - width = 5760 * dpr; - } - var rem = width / 10; - docEl.style.fontSize = rem + 'px'; - flexible.rem = win.rem = rem; - } - - win.addEventListener('resize', function() { - clearTimeout(tid); - tid = setTimeout(refreshRem, 300); - }, false); - win.addEventListener('pageshow', function(e) { - if (e.persisted) { - clearTimeout(tid); - tid = setTimeout(refreshRem, 300); - } - }, false); - - if (doc.readyState === 'complete') { - doc.body.style.fontSize = 12 * dpr + 'px'; + if (!dpr && !scale) { + var isAndroid = win.navigator.appVersion.match(/android/gi) + var isIPhone = win.navigator.appVersion.match(/iphone/gi) + var devicePixelRatio = win.devicePixelRatio + if (isIPhone) { + // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案 + if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) { + dpr = 3 + } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) { + dpr = 2 + } else { + dpr = 1 + } } else { - doc.addEventListener('DOMContentLoaded', function(e) { - doc.body.style.fontSize = 12 * dpr + 'px'; - }, false); + // 其他设备下,仍旧使用1倍的方案 + dpr = 1 } + scale = 1 / dpr + } - - refreshRem(); - - flexible.dpr = win.dpr = dpr; - flexible.refreshRem = refreshRem; - flexible.rem2px = function(d) { - var val = parseFloat(d) * this.rem; - if (typeof d === 'string' && d.match(/rem$/)) { - val += 'px'; - } - return val; - } - flexible.px2rem = function(d) { - var val = parseFloat(d) / this.rem; - if (typeof d === 'string' && d.match(/px$/)) { - val += 'rem'; - } - return val; + docEl.setAttribute('data-dpr', dpr) + if (!metaEl) { + metaEl = doc.createElement('meta') + metaEl.setAttribute('name', 'viewport') + metaEl.setAttribute( + 'content', + 'initial-scale=' + + scale + + ', maximum-scale=' + + scale + + ', minimum-scale=' + + scale + + ', user-scalable=no' + ) + if (docEl.firstElementChild) { + docEl.firstElementChild.appendChild(metaEl) + } else { + var wrap = doc.createElement('div') + wrap.appendChild(metaEl) + doc.write(wrap.innerHTML) } + } -})(window, window['lib'] || (window['lib'] = {})); + function refreshRem() { + var width = docEl.getBoundingClientRect().width + if (width / dpr <= 1366) { + width = 1366 * dpr + } else if (width / dpr <= 1440) { + width = 1440 * dpr + } else if (width / dpr <= 1600) { + width = 1600 * dpr + } else if (width / dpr <= 1680) { + width = 1680 * dpr + } else if (width / dpr <= 1768) { + width = 1768 * dpr + } else if (width / dpr <= 1980) { + width = 1980 * dpr + } else if (width / dpr > 5760) { + width = 5760 * dpr + } + var rem = width / 10 + docEl.style.fontSize = rem + 'px' + flexible.rem = win.rem = rem + } + + win.addEventListener( + 'resize', + function () { + clearTimeout(tid) + tid = setTimeout(refreshRem, 300) + }, + false + ) + win.addEventListener( + 'pageshow', + function (e) { + if (e.persisted) { + clearTimeout(tid) + tid = setTimeout(refreshRem, 300) + } + }, + false + ) + + if (doc.readyState === 'complete') { + doc.body.style.fontSize = 12 * dpr + 'px' + } else { + doc.addEventListener( + 'DOMContentLoaded', + function (e) { + doc.body.style.fontSize = 12 * dpr + 'px' + }, + false + ) + } + + refreshRem() + + flexible.dpr = win.dpr = dpr + flexible.refreshRem = refreshRem + flexible.rem2px = function (d) { + var val = parseFloat(d) * this.rem + if (typeof d === 'string' && d.match(/rem$/)) { + val += 'px' + } + return val + } + flexible.px2rem = function (d) { + var val = parseFloat(d) / this.rem + if (typeof d === 'string' && d.match(/px$/)) { + val += 'rem' + } + return val + } +})(window, window['lib'] || (window['lib'] = {})) diff --git a/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.scss b/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.scss index d2a5f8b..b11844f 100644 --- a/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.scss +++ b/frontend/Skyeye-sys-ui/src/views/home/components/twin-situation/index.scss @@ -292,7 +292,7 @@ position: fixed; top: 60px; right: 10px; - height: calc(100vh - 270px); + height: calc(100vh - 220px); } .detail-info { @@ -1036,13 +1036,7 @@ .detail-uav { width: 410px; - // position: fixed; - top: 60px; - //bottom: 5px; - right: 10px; - //right: 510px; - height: calc(100vh - 270px); - //height: calc(100vh - 620px); + height: calc(100vh - 220px); transition: 0.2s ease-in-out; z-index: 2; diff --git a/frontend/Skyeye-sys-ui/vue.config.js b/frontend/Skyeye-sys-ui/vue.config.js index a9596bf..3dcc112 100644 --- a/frontend/Skyeye-sys-ui/vue.config.js +++ b/frontend/Skyeye-sys-ui/vue.config.js @@ -147,18 +147,18 @@ module.exports = { css: { loaderOptions: { postcss: { - // plugins: [ - // require('postcss-pxtorem')({ - // rootValue: 192, // 正常适配 - // // rootValue: 280, // 3840 * 2160 - // propList: ['*'], // 可以从px更改为rem的属性 - // selectorBlackList: [ - // // 匹配不被转换为rem的选择器 - // 'super-cesium-timeline-icon16' - // // 'card-position' - // ] - // }) - // ] + plugins: [ + require('postcss-pxtorem')({ + rootValue: 192, // 正常适配 + // rootValue: 280, // 3840 * 2160 + propList: ['*'], // 可以从px更改为rem的属性 + selectorBlackList: [ + // 匹配不被转换为rem的选择器 + 'super-cesium-timeline-icon16' + // 'card-position' + ] + }) + ] } } }