From 08ffcf9d7ffafaa82d8de7f9b5fcfdb49e9c3688 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 05 十一月 2025 17:33:54 +0800
Subject: [PATCH] 动态溯源 1. 修复CO因子文本没有正常显示的问题;
---
src/views/sourcetrace/UnderwayAdvice.vue | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 153 insertions(+), 9 deletions(-)
diff --git a/src/views/sourcetrace/UnderwayAdvice.vue b/src/views/sourcetrace/UnderwayAdvice.vue
index 8c2b68d..9615793 100644
--- a/src/views/sourcetrace/UnderwayAdvice.vue
+++ b/src/views/sourcetrace/UnderwayAdvice.vue
@@ -1,29 +1,108 @@
<template>
<CardDialog
v-model="dialogVisible"
- title="璧拌埅璺嚎鎺ㄨ崘"
+ title="璧拌埅鏅鸿兘鍒嗘瀽"
draggable
:modal="false"
width="400px"
>
- <template #default> </template>
+ <template #default>
+ <!-- <template v-if="latestResult">
+ <el-row>
+ <el-text size="small">{{ latestResult._timestr }}</el-text>
+ </el-row>
+ <el-space>
+ <el-icon color="#F56C6C" :size="40"><WarnTriangleFilled /></el-icon>
+ <el-text>
+ {{ latestResult.advice }}
+ </el-text>
+ </el-space>
+ <el-row justify="end">
+ <el-link type="primary" :underline="true" @click="showPolyline">
+ {{ lineShow ? '鏀惰捣璺嚎' : '瀹氫綅璺嚎' }}
+ </el-link>
+ <el-text size="small">
+ 鎺ㄨ崘璺嚎鎬婚暱{{ latestResult.direction.distance }}绫�
+ </el-text>
+ </el-row>
+ </template> -->
+ <el-button icon="Plus" @click="addAdvice"></el-button>
+ <el-button icon="Minus" @click="removeAdvice"></el-button>
+ <el-scrollbar height="200">
+ <TransitionGroup name="list">
+ <div v-for="(item, index) in analysisResultList" :key="index">
+ <template v-if="index == 0">
+ <el-row justify="space-between">
+ <el-text size="small">{{ item._timestr }}</el-text>
+ <el-tag type="danger" effect="dark">鏈�鏂扮嚎绱�</el-tag>
+ </el-row>
+ <el-space>
+ <el-icon color="#F56C6C" :size="40"
+ ><WarnTriangleFilled
+ /></el-icon>
+ <el-text>
+ {{ item.advice }}
+ </el-text>
+ </el-space>
+ <el-row justify="space-between">
+ <el-link type="primary" :underline="true" @click="showPolyline">
+ {{ lineShow ? '鏀惰捣璺嚎' : '瀹氫綅璺嚎' }}
+ </el-link>
+ <el-text size="small">
+ 鎺ㄨ崘璺嚎鎬婚暱{{ item.direction.distance }}绫�
+ </el-text>
+ </el-row>
+ <el-divider>鍘嗗彶绾跨储</el-divider>
+ </template>
+ <template v-else>
+ <el-row>
+ <el-text size="small">{{ item._timestr }}</el-text>
+ </el-row>
+ <el-space>
+ <!-- <el-icon color="#F56C6C" :size="40"><WarnTriangleFilled /></el-icon> -->
+ <el-text>
+ {{ item.advice }}
+ </el-text>
+ </el-space>
+ <!-- <el-row justify="space-between">
+ <el-link type="primary" :underline="true" @click="showPolyline">
+ {{ lineShow ? '鏀惰捣璺嚎' : '瀹氫綅璺嚎' }}
+ </el-link>
+ <el-text size="small">
+ 鎺ㄨ崘璺嚎鎬婚暱{{ item.direction.distance }}绫�
+ </el-text>
+ </el-row> -->
+ <el-divider></el-divider>
+ </template>
+ </div>
+ </TransitionGroup>
+ </el-scrollbar>
+ </template>
<template #footer> </template>
</CardDialog>
</template>
<script setup>
-import { ref, onMounted, onUnmounted } from 'vue';
+import moment from 'moment';
+import { ref, onMounted, onUnmounted, reactive } from 'vue';
import websocket from '@/api/websocket';
import websocketMsgParser from '@/views/sourcetrace/websocketMsgParser.js';
import mapLine from '@/utils/map/line';
+import mapUtil from '@/utils/map/util';
-const dialogVisible = ref(true);
+const dialogVisible = ref(false);
+const lineShow = ref(true);
+const latestResult = ref();
+let latestPolyline = undefined;
+const analysisResultList = reactive([]);
+const polylineList = [];
onMounted(() => {
websocket.registerReceiveEvent(dealMsg);
});
onUnmounted(() => {
websocket.removeReceiveEvent(dealMsg);
+ showPolyline(false);
});
function dealMsg(data) {
@@ -32,13 +111,78 @@
if (type == '2') {
const obj = JSON.parse(content);
console.log('姹℃煋鍒嗘瀽缁撴灉: ', obj);
+ obj._timestr = timeFormatter(obj.time);
+ analysisResultList.unshift(obj);
+ latestResult.value = obj;
- obj.sortedSceneList;
- obj.time;
- obj.advice;
- obj.direction;
+ // obj.sortedSceneList;
+ // obj.time;
+ // obj.advice;
+ // obj.direction;
- mapLine.drawDirection(obj.direction.paths.map((v) => [v.first, v.second]));
+ const polyline = mapLine.drawDirection(
+ obj.direction.paths.map((v) => [v.first, v.second])
+ );
+ polylineList.unshift(polyline);
+ if (latestPolyline) {
+ mapUtil.removeViews(latestPolyline);
+ }
+ latestPolyline = polyline;
+ dialogVisible.value = true;
}
}
+
+function showPolyline(show) {
+ if (typeof show === 'boolean') {
+ lineShow.value = show;
+ } else {
+ lineShow.value = !lineShow.value;
+ }
+ if (lineShow.value) {
+ mapUtil.addViews(latestPolyline);
+ } else {
+ mapUtil.removeViews(latestPolyline);
+ }
+}
+
+function timeFormatter(time) {
+ return moment(time).format('YYYY-MM-DD HH:mm:ss');
+}
+
+function addAdvice() {
+ analysisResultList.unshift(analysisResultList[0]);
+}
+
+function removeAdvice() {
+ analysisResultList.splice(0, 1);
+}
</script>
+<style scoped>
+:deep(.el-text) {
+ --el-text-color: white;
+}
+
+:deep(.el-link) {
+ --el-link-text-color: #23dad1;
+ /* color: #ffd82a; */
+}
+</style>
+<!-- <style>
+.list-move, /* 瀵圭Щ鍔ㄤ腑鐨勫厓绱犲簲鐢ㄧ殑杩囨浮 */
+.list-enter-active,
+.list-leave-active {
+ transition: all 0.5s ease;
+}
+
+.list-enter-from,
+.list-leave-to {
+ opacity: 0;
+ transform: translateX(-30px);
+}
+
+/* 纭繚灏嗙寮�鐨勫厓绱犱粠甯冨眬娴佷腑鍒犻櫎
+ 浠ヤ究鑳藉姝g‘鍦拌绠楃Щ鍔ㄧ殑鍔ㄧ敾銆� */
+.list-leave-active {
+ position: absolute;
+}
+</style> -->
--
Gitblit v1.9.3