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