Ver código fonte

fix: nvr设备去除场景&userStore.info内userId改为Id&视频回放接口替换

wyf 1 ano atrás
pai
commit
659992a5f1

+ 1 - 2
src/api/camera/camera-nvr.ts

@@ -10,7 +10,6 @@ export interface NVRListItem {
   principal?: string; // 设备安装负责人
   remark?: string; // 备注
   username: string; // NVR登录用户名
-  workshopList: number[]; // NVR使用车间列表
 }
 
 export interface NVRListItemAll extends NVRListItem {
@@ -48,7 +47,7 @@ export const deleteNVRListItem = (nvrId: number) => {
 export const updateNVRListItem = (data: NVRListItem) => {
   return http.request({
     url: '/admin/nvr/updateNvr',
-    method: 'post',
+    method: 'put',
     data,
   });
 };

+ 2 - 2
src/api/datamanagement/playback.ts

@@ -2,13 +2,13 @@ import { http } from '@/utils/http/axios';
 
 export interface GetReplayNvrBody {
   cameraId: number;
-  endTime: string;
   startTime: string;
+  endTime: string;
 }
 /** 回放nvr */
 export const getReplayNvr = (data: GetReplayNvrBody) => {
   return http.request({
-    url: '/nvrOption/replayNvr',
+    url: '/admin/nvr/replayNvr',
     method: 'post',
     data,
   });

+ 1 - 1
src/hooks/setting/useWebsocket.ts

@@ -15,7 +15,7 @@ export const useWebsocket = (onMessage: (data: string) => unknown) => {
     console.log('start msg', msg);
     console.log({ url });
 
-    const defaultUrl = `/skyeye/${userStore.info.userId}`;
+    const defaultUrl = `/skyeye/${userStore.info.id}`;
 
     const path = url || defaultUrl;
 

+ 4 - 4
src/store/modules/user.ts

@@ -17,7 +17,8 @@ export interface IUserState {
   avatar: string;
   permissions: any[];
   info: {
-    userId: number;
+    // userId: number;
+    id: number;
     username: string;
     realname: string;
     avatar: string;
@@ -144,13 +145,12 @@ export const useUserStore = defineStore({
 
     /**
      * 用户是否有某个权限
-     * @param permission 
-     * @returns 
+     * @param permission
+     * @returns
      */
     checkPermission(permission: string) {
       return this.permissions.find((x) => x.code === permission);
     },
-    
   },
 });
 

+ 28 - 27
src/views/cameras/nvrlist/components/CreateDrawer.vue

@@ -25,12 +25,10 @@
         <el-form-item label="密码:" prop="password">
           <el-input v-model="formParams.password" placeholder="请输入设备密码" type="password" show-password />
         </el-form-item>
-        <el-form-item label="使用场景:" prop="workshopList">
+        <!-- <el-form-item label="使用场景:" prop="workshopList">
           <el-tree-select class="temp" v-model="workLocations" :data="locationOptions" multiple
             :render-after-expand="false" placeholder="请选择使用该NVR的车间" @change="handleCascaderChange" />
-          <!-- <el-cascader v-model="workLocations" :options="locationOptions" :props="ismultiple" collapse-tags
-            collapse-tags-tooltip clearable placeholder="请选择使用该NVR的车间" @change="handleCascaderChange" /> -->
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="负责人:" prop="principal">
           <el-input v-model="formParams.principal" placeholder="请输入设备安装负责人" />
         </el-form-item>
@@ -61,8 +59,8 @@ import {
 } from '@/api/camera/camera-nvr';
 
 interface Props {
-  title: String,
-};
+  title: String;
+}
 const props = defineProps<Props>();
 const emit = defineEmits(['form-submit', 'form-edit']);
 
@@ -70,7 +68,7 @@ const isDrawer = ref(false);
 const formRef: any = ref(null);
 // const ismultiple = { multiple: true };
 
-const { locationOptions, getLocationOptions, getWorkLocation } = useWorkLocation();
+const { getLocationOptions } = useWorkLocation();
 // const workLocations = ref<[number | undefined, number | undefined] | []>([]);
 const workLocations = ref<number[]>([]);
 
@@ -85,26 +83,31 @@ const initFormNvr = () => ({
   nvrPort: '',
   username: '',
   password: '',
-  workshopList: [],
   principal: '',
   remark: '',
 });
 const formParams = ref<NVRListItem>(initFormNvr());
 
 const deleteKey = (obj, ...args) => {
-  args.forEach(v => { delete obj[v] });
+  args.forEach((v) => {
+    delete obj[v];
+  });
   return obj;
-}
+};
 const openDrawer = (row: NVRListItemAll) => {
   isDrawer.value = true;
   if (row) {
     formParams.value = Object.assign(formParams.value, row);
-    deleteKey(formParams.value, 'createdAt', 'isDeleted', 'tenantId', 'updatedAt', 'workshopName');
-    formParams.value.workshopList.map((item, index) => {
-      workLocations.value[index] = getWorkLocation(item, locationOptions.value)
-    });
+    deleteKey(
+      formParams.value,
+      'createdAt',
+      'isDeleted',
+      'tenantId',
+      'updatedAt',
+      'workshopName',
+    );
     return;
-  };
+  }
 };
 
 const closeDrawer = () => {
@@ -122,7 +125,11 @@ const rules: FormRules = {
   name: { required: true, message: '设备名称不能为空', trigger: 'blur' },
   code: [
     { required: true, message: '设备编号不能为空', trigger: 'change' },
-    { pattern: /^[a-zA-Z0-9-_]+$/, message: '请输入大小写字母、数字、-、_的组合', trigger: 'change' }
+    {
+      pattern: /^[a-zA-Z0-9-_]+$/,
+      message: '请输入大小写字母、数字、-、_的组合',
+      trigger: 'change',
+    },
   ],
   nvrType: { required: true, message: '设备品牌不能为空', trigger: 'change' },
   nvrIp: { required: true, message: '设备IP不能为空', trigger: 'change' },
@@ -132,17 +139,12 @@ const rules: FormRules = {
   workshopList: { required: true, message: '使用场景不能为空', trigger: 'change' },
 };
 
-const handleCascaderChange = () => {
-  formParams.value.workshopList = workLocations.value;
-};
-
 const formSubmit = () => {
   const errorText = ref('');
   // 捕获当前表单中是否有el-form-item__error即错误信息
   const errorTipElements = document.querySelectorAll('.el-form-item__error');
   errorTipElements.forEach((element) => {
-    if (element.textContent)
-      errorText.value = element.textContent;
+    if (element.textContent) errorText.value = element.textContent;
   });
 
   if (errorText.value === '') {
@@ -158,7 +160,6 @@ const formSubmit = () => {
           nvrPort: formParams.value.nvrPort,
           username: formParams.value.username,
           password: formParams.value.password,
-          workshopList: formParams.value.workshopList,
           principal: formParams.value.principal,
           remark: formParams.value.remark,
         };
@@ -196,14 +197,14 @@ defineExpose({
 
 onMounted(() => {
   getLocationOptions();
-})
+});
 </script>
 
 <style lang="scss" scoped>
 :deep(.el-drawer__header) {
   position: relative;
 
-  >:first-child {
+  > :first-child {
     margin-left: 32px;
     font-weight: 600;
     font-size: 16px;
@@ -217,7 +218,7 @@ onMounted(() => {
 }
 
 :deep(.el-drawer__body) {
-  border-top: 1px solid #0000000F;
+  border-top: 1px solid #0000000f;
 }
 
 :deep(.el-form-item__label) {
@@ -241,4 +242,4 @@ onMounted(() => {
   max-height: 55px;
   overflow: auto;
 }
-</style>
+</style>

+ 2 - 2
src/views/datamanager/playback/components/NvrCameraView.vue

@@ -257,8 +257,8 @@
   const videoUrl = computed(() => {
     return nvrUrl.value
       ? nvrUrl.value
-      : cameraDetailStore.detail?.pushstreamIp
-      ? cameraDetailStore.detail?.pushstreamIp
+      : cameraDetailStore.detail?.pushStreamDTO?.videoUrls?.pushstreamIp
+      ? cameraDetailStore.detail?.pushStreamDTO?.videoUrls?.pushstreamIp
       : '';
   });