refactor(alarm-tree, camera-tree): 整合节点图标到标签并优化渲染逻辑

为树形节点标签添加弹性布局以正确对齐图标与文字,将图标渲染逻辑从单独的前缀函数整合到标签渲染函数中,为摄像机树形组件新增按类型匹配对应图标的逻辑,并移除了冗余的前缀渲染属性与函数
This commit is contained in:
yangsy
2026-06-01 03:19:44 +08:00
parent c78c8b8419
commit cbeddebbc0
2 changed files with 9 additions and 21 deletions
+4 -8
View File
@@ -52,6 +52,9 @@ const renderNodeLabel: TreeProps['renderLabel'] = ({ option }) => {
const alarmNodeStyle: CSSProperties = {
opacity: alarmOnline() ? 1 : 0.5,
cursor: alarmOnline() ? 'pointer' : 'not-allowed',
display: 'flex',
alignItems: 'center',
gap: '6px',
};
return h(
'div',
@@ -70,7 +73,7 @@ const renderNodeLabel: TreeProps['renderLabel'] = ({ option }) => {
event.dataTransfer?.setData('name', alarm.name);
},
},
alarm.name,
[h(NIcon, () => h(SirenIcon)), h('span', alarm.name)],
);
}
@@ -78,11 +81,6 @@ const renderNodeLabel: TreeProps['renderLabel'] = ({ option }) => {
return option.label;
};
const renderNodePrefix: TreeProps['renderPrefix'] = ({ option }) => {
if (!isAlarmNode(option)) return null;
return h(NIcon, () => h(SirenIcon));
};
const renderNodeSuffix: TreeProps['renderSuffix'] = ({ option }) => {
if (isAlarmSiteNode(option)) {
const { online, offline, total } = option.stats;
@@ -119,7 +117,6 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
virtual-scroll
style="height: 100%"
:render-label="renderNodeLabel"
:render-prefix="renderNodePrefix"
:render-suffix="renderNodeSuffix"
:override-default-node-click-behavior="overrideNodeClickBehavior"
:default-expand-all="searchPattern.trim().length > 0"
@@ -139,7 +136,6 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
virtual-scroll
style="height: 100%"
:render-label="renderNodeLabel"
:render-prefix="renderNodePrefix"
:render-suffix="renderNodeSuffix"
:override-default-node-click-behavior="overrideNodeClickBehavior"
:default-expand-all="false"
+5 -13
View File
@@ -54,7 +54,11 @@ const renderNodeLabel: TreeProps['renderLabel'] = ({ option }) => {
const cameraNodeStyle: CSSProperties = {
opacity: cameraOnline() ? 1 : 0.5,
cursor: cameraOnline() ? 'pointer' : 'not-allowed',
display: 'flex',
alignItems: 'center',
gap: '6px',
};
const cameraIcon = option.type === '004' ? h(NIcon, () => h(PtzCamera)) : option.type === '005' ? h(NIcon, () => h(HemiPtzCamera)) : option.type === '006' ? h(NIcon, () => h(BulletCamera)) : null;
return h(
'div',
{
@@ -72,7 +76,7 @@ const renderNodeLabel: TreeProps['renderLabel'] = ({ option }) => {
event.dataTransfer?.setData('name', camera.name);
},
},
camera.name,
[cameraIcon, h('span', camera.name)],
);
}
@@ -80,16 +84,6 @@ const renderNodeLabel: TreeProps['renderLabel'] = ({ option }) => {
return option.label;
};
const renderNodePrefix: TreeProps['renderPrefix'] = ({ option }) => {
if (!isCameraNode(option)) return null;
if (option.type === '004') return h(NIcon, () => h(PtzCamera));
if (option.type === '005') return h(NIcon, () => h(HemiPtzCamera));
if (option.type === '006') return h(NIcon, () => h(BulletCamera));
return null;
};
const renderNodeSuffix: TreeProps['renderSuffix'] = ({ option }) => {
if (isCameraSiteNode(option)) {
const { online, offline, total } = option.stats;
@@ -126,7 +120,6 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
virtual-scroll
style="height: 100%"
:render-label="renderNodeLabel"
:render-prefix="renderNodePrefix"
:render-suffix="renderNodeSuffix"
:override-default-node-click-behavior="overrideNodeClickBehavior"
:default-expand-all="searchPattern.trim().length > 0"
@@ -146,7 +139,6 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
virtual-scroll
style="height: 100%"
:render-label="renderNodeLabel"
:render-prefix="renderNodePrefix"
:render-suffix="renderNodeSuffix"
:override-default-node-click-behavior="overrideNodeClickBehavior"
:default-expand-all="false"