Преглед изворни кода

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

lfeish пре 1 година
родитељ
комит
f4cfa37e02

+ 1 - 1
src/api/camera/camera-overview.ts

@@ -13,7 +13,7 @@ export type CameraQueryParamDetails = {
   ip?: string; // 相机IP
   code?: string; // 相机code
   cameraType?: string; // 相机协议类型
-  workspaceId?: number; // 工位id
+  workspaceIdList?: number[]; // 工位ids
   sourceType?: string; // 添加方式:IP,NVR,RTSP
   integrationState?: number; // 是否接入平台
   networkingState?: number; // 联网状态

+ 32 - 22
src/views/cameras/overview/components/ConditionQuery.vue

@@ -3,12 +3,7 @@
     <el-space alignment="center" :size="50">
       <div>
         <el-select v-model="queryType" placeholder="选择类型" class="type-select">
-          <el-option
-            v-for="item in queryTypeSelect"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
+          <el-option v-for="item in queryTypeSelect" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
         <el-input
           :style="{ width: '180px' }"
@@ -21,23 +16,22 @@
       <div>
         <span>添加方式:</span>
         <el-select v-model="querySourceType" placeholder="请选择添加方式" class="protocal-select">
-          <el-option
-            v-for="item in cameraAddType"
-            :key="item.value"
-            :label="item.label"
-            :value="AddType[item.value]"
-          />
+          <el-option v-for="item in cameraAddType" :key="item.value" :label="item.label" :value="AddType[item.value]" />
         </el-select>
       </div>
       <div>
         <span>工位:</span>
-        <el-tree-select
-          v-model="queryWorkSpace"
-          :data="workspaceInfo"
-          :render-after-expand="false"
-          check-strictly
-          placeholder="请选择工位"
+        <el-cascader
           class="protocal-select"
+          v-model="tempWorkSpaces"
+          :options="workspaceInfo"
+          :props="locationProp"
+          clearable
+          collapse-tags
+          :show-all-levels="false"
+          popper-class="special-cascader"
+          placeholder="请选择工位"
+          @change="handleCascaderChange"
         />
       </div>
       <div>
@@ -73,7 +67,7 @@
 </template>
 
 <script setup lang="ts">
-  import { onMounted } from 'vue';
+  import { onMounted, ref } from 'vue';
   import { queryTypeSelect, cameraAddType, AddType } from '@/types/camera/constant';
   import useCameraOverview from '../stores/useCameraOverview';
   // import useSceneInfos from '@/hooks/useSceneInfos';
@@ -91,22 +85,38 @@
     queryType,
     queryTypeContent,
     querySourceType,
-    queryWorkSpace,
+    queryWorkSpaces,
     integrationState,
     networkingState,
     openEagle,
   } = storeToRefs(cameraOverview);
-  const { getCameraItems } = cameraOverview;
+  const { getCameraItems, reset } = cameraOverview;
+
+  const tempWorkSpaces = ref([]);
+  const locationProp = { multiple: true, expandTrigger: 'hover' as const }; // 级联选择器(打开多选)
+
+  const handleCascaderChange = () => {
+    const tempArr = [];
+    queryWorkSpaces.value = [];
+    if (tempWorkSpaces.value.length !== 0) {
+      tempWorkSpaces.value.forEach((item) => {
+        tempArr.push(item[2]);
+      });
+      queryWorkSpaces.value = tempArr;
+    }
+  };
 
   // 重置查询条件
   const resetSearch = () => {
+    tempWorkSpaces.value = [];
     queryType.value = '';
     queryTypeContent.value = '';
     querySourceType.value = '';
-    queryWorkSpace.value = undefined;
+    queryWorkSpaces.value = [];
     integrationState.value = -1;
     networkingState.value = -1;
     openEagle.value = -1;
+    reset();
     getCameraItems();
   };
 

+ 3 - 15
src/views/cameras/overview/hooks/useTreeWorkspaceInfo.ts

@@ -16,7 +16,7 @@ interface TreeWorkspaceInfoType {
 }
 
 interface ElTreeItem {
-  value: string;
+  value: number;
   label: string;
   children?: ElTreeItem[];
   // disabled?: boolean;
@@ -27,19 +27,6 @@ interface ElTreeItem {
 export function useTreeWorkspaceInfo() {
   const workspaceInfo = ref<ElTreeItem[]>([]);
 
-  // const setTreeWorkspaceInfo = (infos: TreeWorkspaceInfoType[]): ElTreeItem[] => {
-  //   return infos.map((item) => {
-  //     return {
-  //       value: `${item.nodeType}-${item.id}`,
-  //       label: item.name,
-  //       workshopId: item.workshopId,
-  //       principalName: item.principalName,
-  //       disabled: item.nodeType === 'workspace' ? false : true,
-  //       children:
-  //         item.children && item.children.length > 0 ? setTreeWorkspaceInfo(item.children) : [],
-  //     };
-  //   });
-  // };
   function setTreeWorkspaceInfo(infos: TreeWorkspaceInfoType[], currentDepth = 1) {
     const result = [] as ElTreeItem[];
     if (!Array.isArray(infos)) {
@@ -47,7 +34,8 @@ export function useTreeWorkspaceInfo() {
     }
     for (const item of infos) {
       const newItem = {
-        value: `${item.nodeType}-${item.id}`,
+        // value: `${item.nodeType}-${item.id}`,
+        value: item.id,
         label: item.name,
         workshopId: item.workshopId,
         principalName: item.principalName,

+ 5 - 14
src/views/cameras/overview/stores/useCameraOverview.ts

@@ -13,20 +13,11 @@ import { useRequest } from 'vue-hooks-plus';
 
 const ALL = -1;
 
-const getWorkspaceIdFromTreeNode = (inputStr: string) => {
-  let dashIndex = inputStr.indexOf('-');
-  if (dashIndex !== -1 && dashIndex < inputStr.length - 1) {
-    return inputStr.slice(dashIndex + 1);
-  } else {
-    return '';
-  }
-};
-
 export const useCameraOverview = defineStore('camera-overview', () => {
   const queryType = ref('');
   const queryTypeContent = ref('');
   const queryCameraType = ref('');
-  const queryWorkSpace = ref<number>();
+  const queryWorkSpaces = ref([]);
   const querySourceType = ref('');
   const networkingState = ref<number>(ALL);
   const integrationState = ref<number>(ALL);
@@ -61,8 +52,8 @@ export const useCameraOverview = defineStore('camera-overview', () => {
     if (queryCameraType.value) {
       paramDetails.value.cameraType = queryCameraType.value;
     }
-    if (queryWorkSpace.value) {
-      paramDetails.value.workspaceId = Number(getWorkspaceIdFromTreeNode(String(queryWorkSpace.value)));
+    if (queryWorkSpaces.value) {
+      paramDetails.value.workspaceIdList = queryWorkSpaces.value;
     }
     if (querySourceType.value) {
       console.log('queryCameraType.value', querySourceType.value);
@@ -141,7 +132,7 @@ export const useCameraOverview = defineStore('camera-overview', () => {
     queryType.value = '';
     queryTypeContent.value = '';
     queryCameraType.value = '';
-    queryWorkSpace.value = undefined;
+    queryWorkSpaces.value = [];
     total.value = 0;
     page.value = 1;
     size.value = 10;
@@ -153,7 +144,7 @@ export const useCameraOverview = defineStore('camera-overview', () => {
     queryTypeContent,
     queryCameraType,
     querySourceType,
-    queryWorkSpace,
+    queryWorkSpaces,
     integrationState,
     openEagle,
     networkingState,

+ 2 - 6
src/views/datamanager/platformdata/components/query/Query.vue

@@ -3,7 +3,7 @@
     <el-button type="primary" @click="showWorkshopData()">车间统计数据</el-button>
     <el-button type="primary" @click="showCameraData()">相机统计数据</el-button>
     <QueryTable
-      v-if="flattenedWorkshops.length > 0 && tableData !== undefined"
+      v-if="tableData !== undefined"
       :department-list="departmentList"
       :workshop-list="flattenedWorkshops"
       :table-data="tableData"
@@ -62,11 +62,7 @@
   onMounted(() => {
     getScenesTree({ level: 1, valueKey: 'code', labelKey: 'name', disabled: true });
     getAllDepartments().then((res) => {
-      departmentList.value = calculateTreeData(
-        res,
-        { level: 3, valueKey: 'id', labelKey: 'deptName' },
-        1,
-      );
+      departmentList.value = calculateTreeData(res, { level: 3, valueKey: 'id', labelKey: 'deptName' }, 1);
     });
   });
 

+ 3 - 9
src/views/datamanager/playback/components/NvrSlider.vue

@@ -136,8 +136,8 @@
     } else {
       container!.style.width = `${minLength}px`;
       sliderScale.value = minLength / durationMins;
-      sliderLength.value = durationMins >= 800 ? durationMins : 800;
     }
+    sliderLength.value = durationMins >= 800 ? durationMins : 800;
     // 计算持续小时数 向下取整
     const duration = Math.floor(durationMins / 60) + (marginMins > marginMinsRight ? 1 : 0);
     if (marginMins === 0) {
@@ -171,11 +171,7 @@
     }
   };
 
-  const createViolationsLine = (
-    violations: ViolationRecordItem[],
-    startTime: Date,
-    endTime: Date,
-  ) => {
+  const createViolationsLine = (violations: ViolationRecordItem[], startTime: Date, endTime: Date) => {
     const container = document.getElementById('timeline');
     const remove = container!.querySelector('#violationsLine');
 
@@ -197,9 +193,7 @@
       }
       const vPoint = document.createElement('div');
       vPoint.className = 'violations-point';
-      vPoint.style.left = `${
-        ((vTime.valueOf() - startTime.valueOf()) / (1000 * 60)) * sliderScale.value - 5
-      }px`;
+      vPoint.style.left = `${((vTime.valueOf() - startTime.valueOf()) / (1000 * 60)) * sliderScale.value - 5}px`;
       vLine.appendChild(vPoint);
     });
   };

+ 2 - 3
utils/devProxy/shangfei/proxy.ts

@@ -17,15 +17,14 @@ const proxyStaff: PROXY_TYPE = {
 
 // 上飞生产
 const proxyPrd: PROXY_TYPE = {
-  serverHost: '172.16.23.243/skyeye-admin-shangfei/eye_api_bak',
+  serverHost: 'http://172.16.23.243/skyeye-admin-shangfei/eye_api_bak',
   loginHost: 'http://172.16.23.243/skyeye-login-shangfei/',
   skyeyeFileUploadHost: 'http://172.16.23.243/skyeye-admin-shangfei/skyeye-file-upload',
   nvrDownload: 'http://172.16.23.243/skyeye-admim-shangfei/nvr_download',
 
   push_stream_host: 'http://172.16.23.243/skyeye-admin-shangfei/push_stream_host',
   push_stream_host_shangfei: 'http://172.16.23.243/skyeye-admin-shangfei/push_stream_host_shangfei',
-  push_stream_host_shangfeiyuan:
-    'http://172.16.23.243/skyeye-admin-shangfei/push_stream_host_shangfeiyuan',
+  push_stream_host_shangfeiyuan: 'http://172.16.23.243/skyeye-admin-shangfei/push_stream_host_shangfeiyuan',
   push_stream_host_beiyan: 'http://172.16.23.243/skyeye-admin-shangfei/push_stream_host_beiyan',
   push_stream_host_default: 'http://172.16.23.243/skyeye-admin-shangfei/push_stream_host_default',
 };