From 16eb4bd55a4fd61ddd7a171b1a07378c45d1665b Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 05 六月 2025 13:59:28 +0800
Subject: [PATCH] 动态溯源(待完成)

---
 src/components/scene/SceneTable.vue |   49 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/src/components/scene/SceneTable.vue b/src/components/scene/SceneTable.vue
index 9aa89ac..2333209 100644
--- a/src/components/scene/SceneTable.vue
+++ b/src/components/scene/SceneTable.vue
@@ -3,7 +3,6 @@
     :data="sceneList"
     table-layout="fixed"
     size="small"
-    height="30vh"
     :show-overflow-tooltip="true"
     border
     row-class-name="t-row"
@@ -13,7 +12,7 @@
     @row-click="handleRowClick"
     @filter-change="handleFilterChange"
   >
-    <el-table-column type="index" label="#" width="25" />
+    <!-- <el-table-column type="index" label="#" width="25" /> -->
     <el-table-column
       prop="type"
       label="绫诲瀷"
@@ -23,13 +22,19 @@
       :filter-method="filterHandler"
     />
     <el-table-column prop="name" label="鍚嶇О" />
-    <!-- <el-table-column prop="location" label="鍦板潃" /> -->
-    <el-table-column
+    <el-table-column prop="location" label="鍦板潃" />
+    <el-table-column label="涓磋繎绔欑偣" width="65">
+      <template #default="{ row }">
+        <div>{{ row.closestStation.name }}</div>
+        <div>{{ parseInt(row.length) + '绫�' }}</div>
+      </template>
+    </el-table-column>
+    <!-- <el-table-column
       prop="districtName"
       label="鍖哄幙"
       align="center"
       width="54"
-    />
+    /> -->
     <!-- <el-table-column label="绠$悊" width="70" align="center">
       <template #default="{ row }">
         <el-button
@@ -44,13 +49,17 @@
   </el-table>
 </template>
 <script setup>
-import { ref, computed, watch } from 'vue';
+import { ref, computed, watch, onUnmounted } from 'vue';
 import { sceneTypes, sceneIcon } from '@/constant/scene-types';
 import MapUtil from '@/utils/map/util';
 import marks from '@/utils/map/marks';
 
 const props = defineProps({
-  sceneList: Array
+  sceneList: Array,
+  showMarks: {
+    type: Boolean,
+    default: true
+  }
 });
 
 let layer = undefined;
@@ -77,17 +86,39 @@
   }
 });
 
+onUnmounted(() => {
+  removeLayer();
+});
+
 watch(showSceneList, (nV, oV) => {
-  if (nV != oV) {
+  if (nV && props.showMarks) {
     drawMarks(nV);
+  } else {
+    removeLayer();
   }
 });
 
-function drawMarks(sceneList) {
+watch(
+  () => props.showMarks,
+  (nV, oV) => {
+    if (showSceneList.value && nV) {
+      drawMarks(showSceneList.value);
+    } else {
+      removeLayer();
+    }
+  },
+  { immediate: true }
+);
+
+function removeLayer() {
   if (layer != undefined) {
     MapUtil.removeViews(layer);
     layer = undefined;
   }
+}
+
+function drawMarks(sceneList) {
+  removeLayer();
   if (sceneList.length != 0) {
     const icons = [];
     sceneList.forEach((s) => {

--
Gitblit v1.9.3