refactor(vimp组件树): 提取默认展开逻辑为计算属性

统一告警树和摄像头树的展开行为,当搜索关键词不为空时自动展开所有节点,移除重复的内联计算代码,提升代码可维护性
This commit is contained in:
yangsy
2026-06-10 19:25:20 +08:00
parent 635d623994
commit c7c2fa5e22
2 changed files with 10 additions and 6 deletions
+5 -3
View File
@@ -1,6 +1,6 @@
<script setup lang="ts">
import { NIcon, NTabPane, NTabs, NTree, type TreeOverrideNodeClickBehavior, type TreeProps } from 'naive-ui';
import { h, type CSSProperties } from 'vue';
import { computed, h, type CSSProperties } from 'vue';
import { useAlarmStore, useResourcePanelStore } from '../stores';
import { storeToRefs } from 'pinia';
import { useChannelsQuery } from '../composables';
@@ -99,6 +99,8 @@ const renderNodeSuffix: TreeProps['renderSuffix'] = ({ option }) => {
const resourcePanelStore = useResourcePanelStore();
const { searchPattern } = storeToRefs(resourcePanelStore);
const defaultExpandAll = computed(() => searchPattern.value.trim().length > 0);
const searchFilter: TreeProps['filter'] = (pattern, node) => {
if (!isAlarmNode(node)) return false;
return node.alarm.name.includes(pattern);
@@ -119,7 +121,7 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
:render-label="renderNodeLabel"
:render-suffix="renderNodeSuffix"
:override-default-node-click-behavior="overrideNodeClickBehavior"
:default-expand-all="searchPattern.trim().length > 0"
:default-expand-all="defaultExpandAll"
:show-irrelevant-nodes="false"
:data="lineTabPanes.at(0)?.alarmTree"
:pattern="searchPattern"
@@ -156,7 +158,7 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
:render-label="renderNodeLabel"
:render-suffix="renderNodeSuffix"
:override-default-node-click-behavior="overrideNodeClickBehavior"
:default-expand-all="false"
:default-expand-all="defaultExpandAll"
:show-irrelevant-nodes="false"
:data="alarmTree"
:pattern="searchPattern"
+5 -3
View File
@@ -1,6 +1,6 @@
<script setup lang="ts">
import { NIcon, NTabPane, NTabs, NTree, type TreeOverrideNodeClickBehavior, type TreeProps } from 'naive-ui';
import { h, type CSSProperties } from 'vue';
import { computed, h, type CSSProperties } from 'vue';
import { useCameraStore, useResourcePanelStore } from '../stores';
import { storeToRefs } from 'pinia';
import { useChannelsQuery } from '../composables';
@@ -102,6 +102,8 @@ const renderNodeSuffix: TreeProps['renderSuffix'] = ({ option }) => {
const resourcePanelStore = useResourcePanelStore();
const { searchPattern } = storeToRefs(resourcePanelStore);
const defaultExpandAll = computed(() => searchPattern.value.trim().length > 0);
const searchFilter: TreeProps['filter'] = (pattern, node) => {
if (!isCameraNode(node)) return false;
return node.camera.name.includes(pattern);
@@ -122,7 +124,7 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
:render-label="renderNodeLabel"
:render-suffix="renderNodeSuffix"
:override-default-node-click-behavior="overrideNodeClickBehavior"
:default-expand-all="searchPattern.trim().length > 0"
:default-expand-all="defaultExpandAll"
:show-irrelevant-nodes="false"
:data="lineTabPanes.at(0)?.cameraTree"
:pattern="searchPattern"
@@ -159,7 +161,7 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
:render-label="renderNodeLabel"
:render-suffix="renderNodeSuffix"
:override-default-node-click-behavior="overrideNodeClickBehavior"
:default-expand-all="false"
:default-expand-all="defaultExpandAll"
:show-irrelevant-nodes="false"
:data="cameraTree"
:pattern="searchPattern"