|
|
@@ -1,8 +1,34 @@
|
|
|
-import { getCameraTree } from '@/api/camera/camera-preview';
|
|
|
+import { CameraTree, getCameraTree } from '@/api/camera/camera-preview';
|
|
|
import { useRequest } from 'vue-hooks-plus';
|
|
|
+import useCameraDetailStore from '../store/useCameraDetailStore';
|
|
|
+
|
|
|
+function getCameraDetail(tree: CameraTree[], cameraId: number) {
|
|
|
+ let detail: CameraTree | null = null;
|
|
|
+
|
|
|
+ function getDetail(t: CameraTree[]) {
|
|
|
+ t.forEach((x) => {
|
|
|
+ if (x.nodeType === 'camera' && x.id === cameraId) {
|
|
|
+ detail = x;
|
|
|
+ } else if (x.children && x.children.length > 0) {
|
|
|
+ getDetail(x.children);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ getDetail(tree);
|
|
|
+
|
|
|
+ return detail;
|
|
|
+}
|
|
|
|
|
|
const useCameraTree = () => {
|
|
|
- const { data, loading } = useRequest(getCameraTree);
|
|
|
+ const cameraDetailStore = useCameraDetailStore();
|
|
|
+ const { data, loading } = useRequest(getCameraTree, {
|
|
|
+ onSuccess: (d) => {
|
|
|
+ if (cameraDetailStore.cameraId) {
|
|
|
+ cameraDetailStore.detail = getCameraDetail(d, cameraDetailStore.cameraId);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ });
|
|
|
return { data, loading };
|
|
|
};
|
|
|
|