Переглянути джерело

Merge branch 'all-v4-bxy' into 'all-v4'

All v4 bxy

See merge request skyeye/skyeye_frontend/skyeye-admin!274
Fei Liu 1 рік тому
батько
коміт
b9d8a4d9d7

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

@@ -95,8 +95,8 @@ export const deleteCameraItem = (params: { cameraId: number }) => {
 // 批量删除相机
 export const deleteCameraItems = (data: number[]) => {
   return http.request({
-    url: '/addCameraList/deleteCameraList',
-    method: 'delete',
+    url: '/admin/cameraConfig/deleteCameraList',
+    method: 'post',
     data,
   });
 };
@@ -131,8 +131,8 @@ export const getCameraStateByIds = (data: { cameraIdList: number[] | string[] })
 export function downloadSpaceCode() {
   return http.request(
     {
-      url: '/addCameraList/downloadWorkspaceCodeForm',
-      method: 'get',
+      url: '/admin/cameraConfig/exportWorkspaceCodeForm',
+      method: 'post',
       responseType: 'blob',
     },
     { isShowErrorMessage: false, isTransformResponse: false },

+ 1 - 1
src/views/cameras/overview/CamerasOverview.vue

@@ -246,7 +246,7 @@
         responseType: 'blob',
       };
       const response = await axios.post(
-        urlPrefix + '/addCameraList/downloadCameraList',
+        urlPrefix + '/admin/cameraConfig/exportCameraList',
         requestBody,
         config,
       );

+ 49 - 26
src/views/cameras/overview/components/AddCameraByIP.vue

@@ -48,14 +48,14 @@
             style="width: 200px"
           />
         </el-form-item>
-        <el-form-item label="协议类型:" prop="cameraType">
+        <el-form-item label="视频编码标准:" prop="videoStandard">
           <el-select
-            v-model="cameraIPData.cameraType"
-            placeholder="请选择协议类型"
+            v-model="cameraIPData.videoStandard"
+            placeholder="请选择视频编码标准"
             style="width: 200px"
           >
             <el-option
-              v-for="protocal in protocalTypeSelect"
+              v-for="protocal in standardTypeSelect"
               :key="protocal.value"
               :label="protocal.label"
               :value="protocal.value"
@@ -76,11 +76,35 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="业务场景:" prop="sceneTemplateList" style="width: 766px">
-          <sysConfigItemOfAddCamera
-            :origin-scene-checked-list="cameraIPData.sceneTemplateList"
-            @update:scene-checked-list="handleUpdateSceneTemplateList"
-          />
+
+        <el-form-item label="NVR设备:" prop="nvrId">
+          <el-select v-model="cameraIPData.nvrId" placeholder="请选择NVR设备" style="width: 200px">
+            <el-option
+              v-for="item in nvrDevice"
+              :key="item.id"
+              :label="item.label"
+              :value="item.id"
+            />
+          </el-select>
+          <div style="margin-left: 10px; position: relative; width: 20px; height: 32px">
+            <el-tooltip content="选择已添加在【NVR设备管理】中的设备编号">
+              <el-icon :size="16" style="position: absolute; top: 8px"><InfoFilled /></el-icon>
+            </el-tooltip>
+          </div>
+        </el-form-item>
+        <el-form-item label="协议类型:" prop="cameraType">
+          <el-select
+            v-model="cameraIPData.cameraType"
+            placeholder="请选择协议类型"
+            style="width: 200px"
+          >
+            <el-option
+              v-for="protocal in protocalTypeSelect"
+              :key="protocal.value"
+              :label="protocal.label"
+              :value="protocal.value"
+            />
+          </el-select>
         </el-form-item>
         <el-form-item label="所属工位:" prop="workspaceIdStr">
           <el-tree-select
@@ -102,22 +126,14 @@
             style="width: 200px"
           />
         </el-form-item>
-        <el-form-item label="视频编码标准:" prop="videoStandard">
-          <el-select
-            v-model="cameraIPData.videoStandard"
-            placeholder="请选择视频编码标准"
-            style="width: 200px"
-          >
-            <el-option
-              v-for="protocal in standardTypeSelect"
-              :key="protocal.value"
-              :label="protocal.label"
-              :value="protocal.value"
-            />
-          </el-select>
+        <el-form-item label="业务场景:" prop="sceneTemplateList" style="width: 766px">
+          <sysConfigItemOfAddCamera
+            :origin-scene-checked-list="cameraIPData.sceneTemplateList"
+            @update:scene-checked-list="handleUpdateSceneTemplateList"
+          />
         </el-form-item>
-        <el-form-item label="备注:" prop="remark">
-          <el-input v-model="cameraIPData.remark" placeholder="请输入备注" style="width: 200px" />
+        <el-form-item label="备注:" prop="remark" style="width: 766px">
+          <el-input v-model="cameraIPData.remark" placeholder="请输入备注" style="width: 655px" />
         </el-form-item>
       </el-form>
     </div>
@@ -130,12 +146,15 @@
 
 <script setup lang="ts">
   import { onBeforeMount, ref } from 'vue';
+  import { ElIcon } from 'element-plus';
+  import { InfoFilled } from '@element-plus/icons-vue';
   import { CameraDetailServer } from '@/types/camera/type';
   import {
     protocalTypeSelect,
     serviceTypeSelect,
     standardTypeSelect,
   } from '@/types/camera/constant';
+  import useNvrDevice from '../hooks/useNvrDevice';
   import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
   import { cloneDeep } from 'lodash-es';
   import sysConfigItemOfAddCamera from './sysConfigItemOfAddCamera.vue';
@@ -146,6 +165,9 @@
   const treeWorkspaceInfo = useTreeWorkspaceInfo();
   const { workspaceInfo, getWorkspaceFromTreeInfo, getWorkspaceIdFromTreeNode } = treeWorkspaceInfo;
 
+  const nvrDeviceInfo = useNvrDevice();
+  const { nvrDevice, getNvrDevice } = nvrDeviceInfo;
+
   const IPFormRef = ref();
 
   type CameraDetailForm = CameraDetailServer & { workspaceIdStr?: string };
@@ -158,10 +180,10 @@
     cameraPort: [{ required: true, message: '请输入端口号', trigger: 'blur' }],
     username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
     password: [{ required: true, message: '请输入用户名密码', trigger: 'blur' }],
+    videoStandard: [{ required: true, message: '请选择视频编码标准', trigger: 'blur' }],
     cameraType: [{ required: true, message: '请选择协议类型', trigger: 'blur' }],
-    sceneTemplateList: [{ required: true, message: '请选择至少一个业务场景', trigger: 'blur' }],
     workspaceIdStr: [{ required: true, message: '请选择工位', trigger: 'blur' }],
-    videoStandard: [{ required: true, message: '请选择视频编码标准', trigger: 'blur' }],
+    sceneTemplateList: [{ required: true, message: '请选择至少一个业务场景', trigger: 'blur' }],
   };
 
   const handleUpdateSceneTemplateList = (data) => {
@@ -194,6 +216,7 @@
   };
 
   onBeforeMount(() => {
+    getNvrDevice();
     getWorkspaceFromTreeInfo();
     if (props.formData) {
       cameraIPData.value = props.formData;

+ 40 - 38
src/views/cameras/overview/components/AddCameraByNVR.vue

@@ -10,20 +10,6 @@
         label-width="124px"
         label-position="left"
       >
-        <el-form-item label="NVR设备:" prop="nvrId" style="width: 766px">
-          <el-select v-model="cameraNVRData.nvrId" placeholder="请选择NVR设备" style="width: 200px">
-            <el-option
-              v-for="item in nvrDevice"
-              :key="item.id"
-              :label="item.label"
-              :value="item.id"
-            />
-          </el-select>
-          <div>
-            <el-icon><InfoFilled /></el-icon>
-            选择已添加在【NVR设备管理】中的设备编号
-          </div>
-        </el-form-item>
         <el-form-item label="名称:" prop="name">
           <el-input v-model="cameraNVRData.name" placeholder="请输入名称" style="width: 200px" />
         </el-form-item>
@@ -34,12 +20,19 @@
             style="width: 200px"
           />
         </el-form-item>
-        <el-form-item label="NVR平台通道号:" prop="nvrChannel">
-          <el-input
-            v-model="cameraNVRData.nvrChannel"
-            placeholder="请输入NVR平台通道号"
+        <el-form-item label="视频编码标准:" prop="videoStandard">
+          <el-select
+            v-model="cameraNVRData.videoStandard"
+            placeholder="请选择视频编码标准"
             style="width: 200px"
-          />
+          >
+            <el-option
+              v-for="protocal in standardTypeSelect"
+              :key="protocal.value"
+              :label="protocal.label"
+              :value="protocal.value"
+            />
+          </el-select>
         </el-form-item>
         <el-form-item label="服务类型:" prop="videoServiceType">
           <el-select
@@ -55,10 +48,26 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="业务场景:" prop="sceneTemplateList" style="width: 766px">
-          <sysConfigItemOfAddCamera
-            :origin-scene-checked-list="cameraNVRData.sceneTemplateList"
-            @update:scene-checked-list="handleUpdateSceneTemplateList"
+        <el-form-item label="NVR设备:" prop="nvrId">
+          <el-select v-model="cameraNVRData.nvrId" placeholder="请选择NVR设备" style="width: 200px">
+            <el-option
+              v-for="item in nvrDevice"
+              :key="item.id"
+              :label="item.label"
+              :value="item.id"
+            />
+          </el-select>
+          <div style="margin-left: 10px; position: relative; width: 20px; height: 32px">
+            <el-tooltip content="选择已添加在【NVR设备管理】中的设备编号">
+              <el-icon :size="16" style="position: absolute; top: 8px"><InfoFilled /></el-icon>
+            </el-tooltip>
+          </div>
+        </el-form-item>
+        <el-form-item label="NVR平台通道号:" prop="nvrChannel">
+          <el-input
+            v-model="cameraNVRData.nvrChannel"
+            placeholder="请输入NVR平台通道号"
+            style="width: 200px"
           />
         </el-form-item>
         <el-form-item label="所属工位:" prop="workspaceIdStr">
@@ -81,6 +90,13 @@
             style="width: 200px"
           />
         </el-form-item>
+
+        <el-form-item label="业务场景:" prop="sceneTemplateList" style="width: 766px">
+          <sysConfigItemOfAddCamera
+            :origin-scene-checked-list="cameraNVRData.sceneTemplateList"
+            @update:scene-checked-list="handleUpdateSceneTemplateList"
+          />
+        </el-form-item>
         <el-form-item label="协议类型:" prop="cameraType">
           <el-select
             v-model="cameraNVRData.cameraType"
@@ -95,20 +111,6 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="视频编码标准:" prop="videoStandard">
-          <el-select
-            v-model="cameraNVRData.videoStandard"
-            placeholder="请选择视频编码标准"
-            style="width: 200px"
-          >
-            <el-option
-              v-for="protocal in standardTypeSelect"
-              :key="protocal.value"
-              :label="protocal.label"
-              :value="protocal.value"
-            />
-          </el-select>
-        </el-form-item>
         <el-form-item label="备注:" prop="remark">
           <el-input v-model="cameraNVRData.remark" placeholder="请输入备注" style="width: 200px" />
         </el-form-item>
@@ -124,7 +126,7 @@
 <script setup lang="ts">
   import { onBeforeMount, ref } from 'vue';
   import { cloneDeep } from 'lodash-es';
-  import { ElIcon } from 'element-plus';
+  import { ElIcon, ElTooltip } from 'element-plus';
   import { InfoFilled } from '@element-plus/icons-vue';
   import { CameraDetailServer } from '@/types/camera/type';
   import {

+ 45 - 21
src/views/cameras/overview/components/AddCameraBySRS.vue

@@ -27,6 +27,21 @@
             style="width: 655px"
           />
         </el-form-item>
+        <el-form-item label="NVR设备:" prop="nvrId">
+          <el-select v-model="CameraSRSData.nvrId" placeholder="请选择NVR设备" style="width: 200px">
+            <el-option
+              v-for="item in nvrDevice"
+              :key="item.id"
+              :label="item.label"
+              :value="item.id"
+            />
+          </el-select>
+          <div style="margin-left: 10px; position: relative; width: 20px; height: 32px">
+            <el-tooltip content="选择已添加在【NVR设备管理】中的设备编号">
+              <el-icon :size="16" style="position: absolute; top: 8px"><InfoFilled /></el-icon>
+            </el-tooltip>
+          </div>
+        </el-form-item>
         <el-form-item label="相机IP地址:" prop="cameraIp">
           <el-input
             v-model="CameraSRSData.cameraIp"
@@ -34,6 +49,21 @@
             style="width: 200px"
           />
         </el-form-item>
+
+        <el-form-item label="视频编码标准:" prop="videoStandard">
+          <el-select
+            v-model="CameraSRSData.videoStandard"
+            placeholder="请选择视频编码标准"
+            style="width: 200px"
+          >
+            <el-option
+              v-for="protocal in standardTypeSelect"
+              :key="protocal.value"
+              :label="protocal.label"
+              :value="protocal.value"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="服务类型:" prop="videoServiceType">
           <el-select
             v-model="CameraSRSData.videoServiceType"
@@ -48,12 +78,6 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="业务场景:" prop="sceneTemplateList" style="width: 766px">
-          <sysConfigItemOfAddCamera
-            :origin-scene-checked-list="CameraSRSData.sceneTemplateList"
-            @update:scene-checked-list="handleUpdateSceneTemplateList"
-          />
-        </el-form-item>
         <el-form-item label="所属工位:" prop="workspaceIdStr">
           <el-tree-select
             v-model="CameraSRSData.workspaceIdStr"
@@ -74,22 +98,14 @@
             :disabled="true"
           />
         </el-form-item>
-        <el-form-item label="视频编码标准:" prop="videoStandard">
-          <el-select
-            v-model="CameraSRSData.videoStandard"
-            placeholder="请选择视频编码标准"
-            style="width: 200px"
-          >
-            <el-option
-              v-for="protocal in standardTypeSelect"
-              :key="protocal.value"
-              :label="protocal.label"
-              :value="protocal.value"
-            />
-          </el-select>
+        <el-form-item label="业务场景:" prop="sceneTemplateList" style="width: 766px">
+          <sysConfigItemOfAddCamera
+            :origin-scene-checked-list="CameraSRSData.sceneTemplateList"
+            @update:scene-checked-list="handleUpdateSceneTemplateList"
+          />
         </el-form-item>
-        <el-form-item label="备注:" prop="remark">
-          <el-input v-model="CameraSRSData.remark" placeholder="请输入备注" style="width: 200px" />
+        <el-form-item label="备注:" prop="remark" style="width: 766px">
+          <el-input v-model="CameraSRSData.remark" placeholder="请输入备注" style="width: 655px" />
         </el-form-item>
       </el-form>
     </div>
@@ -103,8 +119,11 @@
 <script setup lang="ts">
   import { onBeforeMount, ref } from 'vue';
   import { cloneDeep } from 'lodash-es';
+  import { ElIcon, ElTooltip } from 'element-plus';
+  import { InfoFilled } from '@element-plus/icons-vue';
   import { CameraDetailServer } from '@/types/camera/type';
   import { serviceTypeSelect, standardTypeSelect } from '@/types/camera/constant';
+  import useNvrDevice from '../hooks/useNvrDevice';
   import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
   import sysConfigItemOfAddCamera from './sysConfigItemOfAddCamera.vue';
 
@@ -114,6 +133,9 @@
   const treeWorkspaceInfo = useTreeWorkspaceInfo();
   const { workspaceInfo, getWorkspaceFromTreeInfo, getWorkspaceIdFromTreeNode } = treeWorkspaceInfo;
 
+  const nvrDeviceInfo = useNvrDevice();
+  const { nvrDevice, getNvrDevice } = nvrDeviceInfo;
+
   const IPFormRef = ref();
 
   type CameraDetailForm = CameraDetailServer & { workspaceIdStr?: string };
@@ -122,6 +144,7 @@
   const rules = {
     name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
     code: [{ required: true, message: '请输入设备ID', trigger: 'blur' }],
+    cameraIp: [{ required: true, message: '请输入IP地址', trigger: 'blur' }],
     rtspUrl: [{ required: true, message: '请输入流媒体地址', trigger: 'blur' }],
     sceneTemplateList: [{ required: true, message: '请选择至少一个业务场景', trigger: 'blur' }],
     workspaceIdStr: [{ required: true, message: '请选择工位', trigger: 'blur' }],
@@ -158,6 +181,7 @@
   };
 
   onBeforeMount(() => {
+    getNvrDevice();
     getWorkspaceFromTreeInfo();
     if (props.formData) {
       CameraSRSData.value = props.formData;

+ 1 - 1
src/views/cameras/overview/components/BatchEditCamera.vue

@@ -115,7 +115,7 @@
   const { urlPrefix } = useGlobSetting();
 
   const actionUrl = computed(() => {
-    return urlJoin(urlPrefix, `/addCameraList/updateCameraList`);
+    return urlJoin(urlPrefix, `/admin/cameraConfig/updateCameraList`);
   });
 
   // 导入

+ 3 - 3
src/views/cameras/overview/components/BatchImportCamera.vue

@@ -123,7 +123,7 @@
   const { urlPrefix } = useGlobSetting();
 
   const actionUrl = computed(() => {
-    return urlJoin(urlPrefix, `/addCameraList/uploadForm`);
+    return urlJoin(urlPrefix, `/admin/cameraConfig/uploadCameraList`);
   });
 
   // 下载场景code信息查询表
@@ -133,8 +133,8 @@
         headers: getHeaders(),
         responseType: 'blob',
       };
-      const response = await axios.get(
-        urlPrefix + '/addCameraList/downloadWorkspaceCodeForm',
+      const response = await axios.post(
+        urlPrefix + '/admin/cameraConfig/exportWorkspaceCodeForm',
         config,
       );
       const blob = new Blob([response.data], {

+ 0 - 1
src/views/cameras/overview/hooks/useNvrDevice.ts

@@ -21,7 +21,6 @@ export function useNvrDevice() {
           label: `${item.name}(${item.code})`,
         };
       });
-      console.log('nvrdevice', nvrDevice.value);
     });
   };
 

+ 12 - 1
src/views/cameras/overview/stores/useCameraOverview.ts

@@ -13,6 +13,15 @@ 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('');
@@ -53,7 +62,9 @@ export const useCameraOverview = defineStore('camera-overview', () => {
       paramDetails.value.cameraType = queryCameraType.value;
     }
     if (queryWorkSpace.value) {
-      paramDetails.value.workspaceId = queryWorkSpace.value;
+      paramDetails.value.workspaceId = Number(
+        getWorkspaceIdFromTreeNode(String(queryWorkSpace.value)),
+      );
     }
     if (querySourceType.value) {
       console.log('queryCameraType.value', querySourceType.value);