diff --git a/web/src/layout/components/TagsView/index.vue b/web/src/layout/components/TagsView/index.vue index b86d4de5..4b8cacd9 100644 --- a/web/src/layout/components/TagsView/index.vue +++ b/web/src/layout/components/TagsView/index.vue @@ -9,6 +9,7 @@ :to="{ path: tag.path ? tag.path : '', query: tag.query }" class="tags-view-item" :style="activeStyle(tag)" + @click="handleTagClick(tag, $event)" @click.middle="!isAffix(tag) ? closeSelectedTag(tag) : ''" @contextmenu.prevent="openMenu(tag, $event)" > @@ -232,6 +233,27 @@ const handleScroll = () => { closeMenu(); }; +// 点击标签时,如果标签已激活,则执行刷新操作 +const handleTagClick = (tag: RouteLocationNormalized, e: MouseEvent) => { + // 阻止 router-link 默认行为,统一由脚本控制导航和刷新 + e.preventDefault(); + + if (isActive(tag)) { + // 当前已激活,直接刷新 + refreshSelectedTag(tag); + } else { + // 尚未激活,先导航到对应路由,导航成功后再刷新 + router + .push({ path: tag.path || '', query: tag.query }) + .then(() => { + refreshSelectedTag(tag); + }) + .catch(() => { + /* 忽略重复导航错误 */ + }); + } +}; + onMounted(() => { initTags(); addTags(); diff --git a/web/src/views/hq/hallReservation/index.vue b/web/src/views/hq/hallReservation/index.vue index 14164106..70e07195 100644 --- a/web/src/views/hq/hallReservation/index.vue +++ b/web/src/views/hq/hallReservation/index.vue @@ -181,7 +181,7 @@ (ID: {{ hall.id }})