Explorar o código

Merge branch 'all-v4-algoConfig' of ssh://192.168.13.68:2222/skyeye/skyeye_frontend/skyeye-admin into all-v4-algoConfig

louhangfei hai 1 ano
pai
achega
48cdd42a99

+ 12 - 2
src/api/camera/camera-preview-group.ts

@@ -69,9 +69,19 @@ export function saveDetectionGroup(data: saveDetectionGroupRequest) {
 /**
   *@description: V4: 根据联合相机分组id查询相机树
 */
-export function queryCameraTreeByGroupId(params: {groupId: number}) {
+export function queryCameraTreeByGroupId(groupId: number) {
   return http.request({
-    url: `/admin/cameraDetectionGroup/queryCameraTreeByGroupId?groupId=${params.groupId}`,
+    url: `/admin/cameraDetectionGroup/queryCameraTreeByGroupId?groupId=${groupId}`,
+    method: 'GET',
+  })
+}
+
+/**
+  *@description: V4: 查询相机绑定的联合检测算法
+*/
+export function queryGroupAlgoInfoByCameraId(cameraId: number) {
+  return http.request({
+    url: `/admin/algo/queryGroupAlgoInfoByCameraId?cameraId=${cameraId}`,
     method: 'GET',
   })
 }

+ 11 - 0
src/router/full-routes.ts

@@ -236,6 +236,17 @@ const fullRoutes: AppRouteRecordRaw[] = [
           activeMenu: 'AlgorithmConfig',
         },
       },
+      {
+        // 多相机算法参数设置
+        path: 'camera-group',
+        name: 'AlgorithmCameraGroupParamsSetting',
+        component: '/cameras/camera-group-setting/CamerGroupSetting',
+        meta: {
+          ico: '',
+          title: '多相机算法参数设置',
+          activeMenu: 'AlgorithmConfig',
+        },
+      },
     ],
   },
 

+ 81 - 0
src/views/cameras/camera-group-setting/CamerGroupSetting.vue

@@ -0,0 +1,81 @@
+<!-- 算法参数配置页面 -->
+<template>
+  <div class="camera-group-page">
+    <!-- <div class="camera-group-header">
+        <div class="camera-group-rollback" @click="router.back()">
+          <img :src="rollback" /><span>配置算法</span>
+        </div>
+        <span class="camera-name">相机:{{ currentCameraName }}</span>
+      </div> -->
+    <AlgoParamsSettingBase :cameraAllAlgoList="cameraAllAlgoList" :isCameraGroup="true">
+      <template #cameraTree>
+        <CameraTreeList ref="CameraTreeRef"/>
+      </template>
+    </AlgoParamsSettingBase>
+   </div>
+</template>
+
+<script lang="ts" setup>
+  import { watch, ref, computed } from 'vue';
+  import { useRoute, useRouter } from 'vue-router';
+  import AlgoParamsSettingBase from '@/modules/algo-params-setting-base/AlgoParamsSettingBase.vue';
+  import CameraTreeList from './components/CameraTreeList.vue';
+  import { AlgoDetail } from '@/api/algo/algo';
+  import { queryGroupAlgoInfoByCameraId } from '@/api/camera/camera-preview-group'
+  import rollback from '@/assets/rollback.png';
+  
+  const cameraAllAlgoList = ref<AlgoDetail[]>([]);
+  const route = useRoute();
+  const router = useRouter();
+  const CameraTreeRef = ref<InstanceType<typeof CameraTreeList>>();
+
+  watch(
+    () => route.query.cameraId,
+    (nextCameraId) => {
+      if (nextCameraId) {
+        queryGroupAlgoInfoByCameraId(Number(nextCameraId)).then((res) => {
+          if (res.length > 0 && res[0].algoInfo) {
+            cameraAllAlgoList.value = [res[0].algoInfo];
+          }
+        });
+      }
+    },
+    { immediate: true },
+  );
+
+  const currentCameraName = computed(() => CameraTreeRef?.value?.getCurrentCameraName());
+</script>
+
+<style lang="scss" scoped>
+  .camera-group-page {
+    height: 100%;
+    background-color: rgba(255, 255, 255, 1);
+  }
+  .camera-group-header {
+      display: flex;
+      align-items: center;
+      padding: 16px 0 15px 20px;
+      border-bottom: 1px solid #e9e9e9;
+
+      .camera-group-rollback {
+        display: flex;
+        align-items: center;
+        cursor: pointer;
+
+        img {
+          width: 14px;
+        }
+
+        span {
+          font-size: 14px;
+          color: #333333;
+          margin-left: 10px;
+        }
+
+      }
+
+      .camera-name {
+        margin-left: 10px;
+      }
+    }
+</style>

+ 72 - 0
src/views/cameras/camera-group-setting/components/CameraTreeList.vue

@@ -0,0 +1,72 @@
+<template>
+  <div class="camera-tree-list">
+    <div class="camera-tree-list__title"> 相机列表 </div>
+    <div class="camera-tree-list__content">
+      <CameraTreeCom
+        ref="cameraTreeRef"
+        :tree-data="treeData"
+        :is-show-checkbox="false"
+        @node-click="handleNodeClick"
+      />
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+  import { ref, onMounted } from 'vue';
+  import { useRoute } from 'vue-router';
+  import CameraTreeCom from '@/modules/camera-tree/CameraTree.vue';
+  import { CameraTree, CameraTreeNodeType, CameraQueryForm } from '@/api/camera/camera-preview';
+  import { queryCameraTreeByGroupId } from '@/api/camera/camera-preview-group';
+  import { ElMessage } from 'element-plus';
+  import { useRouteQuery } from '@vueuse/router';
+  const cameraId = useRouteQuery('cameraId');
+
+  interface CameraTreeTempType extends CameraTree {
+    tempCode?: string;
+  }
+
+  const route = useRoute();
+  const cameraTreeRef = ref<InstanceType<typeof CameraTreeCom>>();
+  const treeData = ref<CameraTreeTempType[]>([]);
+  const currentCameraName = ref<string>('');
+  const handleNodeClick = (e: CameraTree) => {
+    if (e.integrationState === 1) {
+      ElMessage.error('该相机未进入平台');
+    } else {
+      if (e.nodeType === CameraTreeNodeType.camera) {
+        cameraId.value = String(e.id);
+        currentCameraName.value = e.name;
+        console.log(currentCameraName.value)
+      }
+    }
+  };
+
+  onMounted(() => {
+    if (!route.query.groupId) return;
+    queryCameraTreeByGroupId(Number(route.query.groupId)).then((res) => {
+      treeData.value = res;
+    });
+  });
+
+  defineExpose({
+    getCurrentCameraName: () => currentCameraName.value
+  });
+
+</script>
+
+<style scoped lang="scss">
+  .camera-tree-list {
+    min-width: 270px;
+    max-width: 600px;
+    flex-shrink: 0;
+    border: 1px solid #f0f2f5;
+    margin: 5px;
+
+    .camera-tree-list__title {
+      background: #f0f2f5;
+      padding: 12px;
+      display: flex;
+    }
+  }
+</style>

+ 1 - 1
src/views/cameras/preview/components/CameraConfigGroup/CameraConfigGroup.vue

@@ -215,7 +215,7 @@ const handleCancle = () => {
 
 const handleView = (row: CameraGroupTableItem) => {
   router.push({
-    path: '/algorithm/module-camera',
+    path: '/algorithm/camera-group',
     query: {
       groupId: row.cameraDetectionGroupId,
     }