diff --git a/src/pages/vimp/components/alarm-tree.vue b/src/pages/vimp/components/alarm-tree.vue
index 0877a39..f753ad5 100644
--- a/src/pages/vimp/components/alarm-tree.vue
+++ b/src/pages/vimp/components/alarm-tree.vue
@@ -1,7 +1,7 @@
@@ -89,9 +97,13 @@ const renderNodeLabel: TreeProps['renderLabel'] = ({ option }) => {
show-line
virtual-scroll
style="height: 100%"
- :data="lineTabPanes.at(0)?.alarmTree"
- :override-default-node-click-behavior="overrideNodeClickBehavior"
:render-label="renderNodeLabel"
+ :override-default-node-click-behavior="overrideNodeClickBehavior"
+ :default-expand-all="searchPattern.trim().length > 0"
+ :show-irrelevant-nodes="false"
+ :data="lineTabPanes.at(0)?.alarmTree"
+ :pattern="searchPattern"
+ :filter="searchFilter"
/>
@@ -103,9 +115,13 @@ const renderNodeLabel: TreeProps['renderLabel'] = ({ option }) => {
show-line
virtual-scroll
style="height: 100%"
- :data="alarmTree"
- :override-default-node-click-behavior="overrideNodeClickBehavior"
:render-label="renderNodeLabel"
+ :override-default-node-click-behavior="overrideNodeClickBehavior"
+ :default-expand-all="false"
+ :show-irrelevant-nodes="false"
+ :data="alarmTree"
+ :pattern="searchPattern"
+ :filter="searchFilter"
/>
diff --git a/src/pages/vimp/components/camera-tree.vue b/src/pages/vimp/components/camera-tree.vue
index 9ac14a7..93ff399 100644
--- a/src/pages/vimp/components/camera-tree.vue
+++ b/src/pages/vimp/components/camera-tree.vue
@@ -1,7 +1,7 @@
@@ -89,9 +97,13 @@ const renderNodeLabel: TreeProps['renderLabel'] = ({ option }) => {
show-line
virtual-scroll
style="height: 100%"
- :data="lineTabPanes.at(0)?.cameraTree"
- :override-default-node-click-behavior="overrideNodeClickBehavior"
:render-label="renderNodeLabel"
+ :override-default-node-click-behavior="overrideNodeClickBehavior"
+ :default-expand-all="searchPattern.trim().length > 0"
+ :show-irrelevant-nodes="false"
+ :data="lineTabPanes.at(0)?.cameraTree"
+ :pattern="searchPattern"
+ :filter="searchFilter"
/>
@@ -103,9 +115,13 @@ const renderNodeLabel: TreeProps['renderLabel'] = ({ option }) => {
show-line
virtual-scroll
style="height: 100%"
- :data="cameraTree"
- :override-default-node-click-behavior="overrideNodeClickBehavior"
:render-label="renderNodeLabel"
+ :override-default-node-click-behavior="overrideNodeClickBehavior"
+ :default-expand-all="false"
+ :show-irrelevant-nodes="false"
+ :data="cameraTree"
+ :pattern="searchPattern"
+ :filter="searchFilter"
/>
diff --git a/src/pages/vimp/components/icon/bullet-camera.vue b/src/pages/vimp/components/icon/bullet-camera.vue
new file mode 100644
index 0000000..3ce6c27
--- /dev/null
+++ b/src/pages/vimp/components/icon/bullet-camera.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/pages/vimp/components/icon/hemi-ptz-camera.vue b/src/pages/vimp/components/icon/hemi-ptz-camera.vue
new file mode 100644
index 0000000..841e480
--- /dev/null
+++ b/src/pages/vimp/components/icon/hemi-ptz-camera.vue
@@ -0,0 +1,9 @@
+
+
+
diff --git a/src/pages/vimp/components/icon/ptz-camera.vue b/src/pages/vimp/components/icon/ptz-camera.vue
new file mode 100644
index 0000000..60c35d6
--- /dev/null
+++ b/src/pages/vimp/components/icon/ptz-camera.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/pages/vimp/components/resource-pannel.vue b/src/pages/vimp/components/resource-pannel.vue
index d5ee619..3de5e23 100644
--- a/src/pages/vimp/components/resource-pannel.vue
+++ b/src/pages/vimp/components/resource-pannel.vue
@@ -1,13 +1,16 @@
-
-
- 资源
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 资源
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/src/pages/vimp/stores/alarm.ts b/src/pages/vimp/stores/alarm.ts
index c344ea5..2119eae 100644
--- a/src/pages/vimp/stores/alarm.ts
+++ b/src/pages/vimp/stores/alarm.ts
@@ -2,6 +2,8 @@ import { defineStore } from 'pinia';
import type { VimpChannel, VimpStation } from '../apis';
import { h, ref } from 'vue';
import type { AlarmMainAreaNodeOption, AlarmNodeOption, CodeArea, CodeLines, CodeSites, AlarmLineTabPane, AlarmSiteNodeOption, AlarmSubAreaNodeOption } from '../types';
+import { NIcon } from 'naive-ui';
+import { SirenIcon } from 'lucide-vue-next';
interface BuildLineTabPanesParams {
sites: VimpStation[] | null;
@@ -130,7 +132,7 @@ export const useAlarmStore = defineStore('vimp-alarm-store', () => {
alarm: alarm,
site: site,
prefix: () => {
- return `[警报器]`;
+ return h(NIcon, h(SirenIcon));
},
};
diff --git a/src/pages/vimp/stores/camera.ts b/src/pages/vimp/stores/camera.ts
index 3b8fcb9..d416f41 100644
--- a/src/pages/vimp/stores/camera.ts
+++ b/src/pages/vimp/stores/camera.ts
@@ -2,6 +2,11 @@ import { defineStore } from 'pinia';
import type { VimpChannel, VimpStation } from '../apis';
import { h, ref } from 'vue';
import type { CameraMainAreaNodeOption, CameraNodeOption, CodeArea, CodeLines, CodeSites, CameraLineTabPane, CameraSiteNodeOption, CameraSubAreaNodeOption } from '../types';
+import { NIcon } from 'naive-ui';
+import { CctvIcon } from 'lucide-vue-next';
+import BulletCamera from '../components/icon/bullet-camera.vue';
+import PtzCamera from '../components/icon/ptz-camera.vue';
+import HemiPtzCamera from '../components/icon/hemi-ptz-camera.vue';
interface BuildLineTabPanesParams {
sites: VimpStation[] | null;
@@ -130,9 +135,9 @@ export const useCameraStore = defineStore('vimp-camera-store', () => {
camera: camera,
site: site,
prefix: () => {
- if (cameraType === '004') return `[枪机]`;
- if (cameraType === '005') return `[半球]`;
- if (cameraType === '006') return `[球机]`;
+ if (cameraType === '004') return h(NIcon, h(PtzCamera));
+ if (cameraType === '005') return h(NIcon, h(HemiPtzCamera));
+ if (cameraType === '006') return h(NIcon, h(BulletCamera));
},
};
diff --git a/src/pages/vimp/stores/resource-panel.ts b/src/pages/vimp/stores/resource-panel.ts
index 1fef513..7760811 100644
--- a/src/pages/vimp/stores/resource-panel.ts
+++ b/src/pages/vimp/stores/resource-panel.ts
@@ -1,19 +1,9 @@
import { defineStore } from 'pinia';
import { ref } from 'vue';
-export interface ResourcePanelSearchInput {
- enabled: boolean; // 是否启用搜索输入框 (只有在资源面板展开且选择摄像机或警报器时才启用)
- show: boolean; // 是否显示搜索输入框 (只有当enabled为true时才允许控制显示)
- value: string; // 搜索输入框的值
-}
-
export const useResourcePanelStore = defineStore('vimp-resource-panel', () => {
const collapsed = ref(false);
- const searchInput = ref({
- enabled: false,
- show: false,
- value: '',
- });
+ const searchPattern = ref('');
const toggleCollapsed = () => {
collapsed.value = !collapsed.value;
@@ -21,7 +11,7 @@ export const useResourcePanelStore = defineStore('vimp-resource-panel', () => {
return {
collapsed,
- searchInput,
+ searchPattern,
toggleCollapsed,
};