Przeglądaj źródła

添加编辑相机提示修改成功&&添加时的选择场景树提示

zhudie 2 lat temu
rodzic
commit
864e63f576

+ 10 - 5
src/api/camera/camera-overview.ts

@@ -117,11 +117,16 @@ export const getCamerasByIPRange = (params: CameraRangeItem) => {
 };
 
 export const updateCameraItem = (data: Partial<CameraIPItem>) => {
-  return http.request({
-    url: '/cameraConfig/updateCamera',
-    method: 'put',
-    data,
-  });
+  return http.request(
+    {
+      url: '/cameraConfig/updateCamera',
+      method: 'put',
+      data,
+    },
+    {
+      isTransformResponse: false,
+    },
+  );
 };
 
 export const startCameraStream = (cameraId: number) => {

+ 0 - 8
src/views/cameras/overview/CamerasOverview.vue

@@ -192,19 +192,11 @@
   };
 
   const handleEdit = (row) => {
-    console.log('ROW', row.sourceType);
-
     if (row.sourceType === AddType.srs) {
-      console.log('RSTP');
-
       showEditSRSPopover.value = true;
     } else if (row.sourceType === AddType.ip) {
-      console.log('IP');
-
       showEditPopover.value = true;
     } else {
-      console.log('NVR');
-
       showEditNVRPopover.value = true;
     }
     editCameraData.value = row;

+ 7 - 3
src/views/cameras/overview/components/AddCameraByIP.vue

@@ -57,7 +57,7 @@
             check-strictly
             placeholder="请输入场景名称"
             style="width: 200px"
-            @change="handleTreeSelect"
+            @node-click="handleTreeSelect"
           />
         </el-form-item>
         <el-form-item label="密码:" prop="password">
@@ -129,6 +129,7 @@
   import { protocalTypeSelect, serviceTypeSelect, standardTypeSelect } from '../constant';
   import useSceneInfos from '@/hooks/useSceneInfos';
   import { cloneDeep } from 'lodash-es';
+  import { ElMessage } from 'element-plus';
 
   const props = defineProps<{ formData?: CameraIPItem | null }>();
 
@@ -174,10 +175,13 @@
     });
   };
 
-  const handleTreeSelect = (code: string) => {
-    const space = flattendWorkspaces.value.find((item) => item.code === code);
+  const handleTreeSelect = (node) => {
+    const space = flattendWorkspaces.value.find((item) => item.code === node.value);
     cameraIPData.value.workspaceId = space?.id;
     cameraIPData.value.principal = space?.principal;
+    if (node.disabled && node.children.length < 1) {
+      ElMessage.error('请先添加工位');
+    }
   };
 
   onBeforeMount(() => {

+ 7 - 3
src/views/cameras/overview/components/AddCameraByNVR.vue

@@ -57,7 +57,7 @@
             check-strictly
             placeholder="请输入场景名称"
             style="width: 200px"
-            @change="handleTreeSelect"
+            @node-click="handleTreeSelect"
           />
         </el-form-item>
         <el-form-item label="NVR平台密码:" prop="nvrPassword">
@@ -136,6 +136,7 @@
   import { protocalTypeSelect, serviceTypeSelect, standardTypeSelect } from '../constant';
   import useSceneInfos from '@/hooks/useSceneInfos';
   import { cloneDeep } from 'lodash-es';
+  import { ElMessage } from 'element-plus';
 
   const props = defineProps<{ formData?: CameraNVRItem | null }>();
 
@@ -184,10 +185,13 @@
     });
   };
 
-  const handleTreeSelect = (code: string) => {
-    const space = flattendWorkspaces.value.find((item) => item.code === code);
+  const handleTreeSelect = (node) => {
+    const space = flattendWorkspaces.value.find((item) => item.code === node.value);
     cameraNVRData.value.workspaceId = space?.id;
     cameraNVRData.value.principal = space?.principal;
+    if (node.disabled && node.children.length < 1) {
+      ElMessage.error('请先添加工位');
+    }
   };
 
   onBeforeMount(() => {

+ 13 - 3
src/views/cameras/overview/components/AddCameraBySRS.vue

@@ -22,7 +22,7 @@
             check-strictly
             placeholder="请输入场景名称"
             style="width: 200px"
-            @change="handleTreeSelect"
+            @node-click="handleTreeSelect"
           />
         </el-form-item>
         <el-form-item label="设备ID号:" prop="code">
@@ -93,6 +93,7 @@
   import useSceneInfos from '@/hooks/useSceneInfos';
   import { cloneDeep } from 'lodash-es';
   import { serviceTypeSelect, standardTypeSelect } from '../constant';
+  import { ElMessage } from 'element-plus';
 
   const props = defineProps<{ formData?: CameraSRS | null }>();
 
@@ -132,10 +133,19 @@
     });
   };
 
-  const handleTreeSelect = (code: string) => {
-    const space = flattendWorkspaces.value.find((item) => item.code === code);
+  // const handleTreeSelect = (code: string) => {
+  //   const space = flattendWorkspaces.value.find((item) => item.code === code);
+  //   CameraSRSData.value.workspaceId = space?.id;
+  //   CameraSRSData.value.principal = space?.principal;
+  // };
+
+  const handleTreeSelect = (node) => {
+    const space = flattendWorkspaces.value.find((item) => item.code === node.value);
     CameraSRSData.value.workspaceId = space?.id;
     CameraSRSData.value.principal = space?.principal;
+    if (node.disabled && node.children.length < 1) {
+      ElMessage.error('请先添加工位');
+    }
   };
 
   onBeforeMount(() => {

+ 35 - 9
src/views/cameras/overview/components/CameraEditNVRPopover.vue

@@ -21,7 +21,7 @@
   import NVRAddCamera from './AddCameraByNVR.vue';
   import { CameraNVRItem } from '../type';
   import useCameraOverview from '../stores/useCameraOverview';
-  import { cloneDeep } from 'lodash-es';
+  import { ElMessage } from 'element-plus';
 
   const props = defineProps<{
     modelValue: boolean;
@@ -32,20 +32,46 @@
   const emits = defineEmits(['update:modelValue']);
 
   const cameraOverview = useCameraOverview();
-  const { editCamera } = cameraOverview;
+  const { editCamera, getCameraItems } = cameraOverview;
 
   const updateValue = (value) => {
     emits('update:modelValue', value);
   };
 
   const onEditCamera = (data) => {
-    const temp = cloneDeep(data) as any;
-    delete temp.workshopName;
-    delete temp.workspaceName;
-    delete temp.principal;
-    editCamera(temp);
-    props.confirmEvent && props.confirmEvent(data);
-    updateValue(false);
+    const temp = {
+      id: data.id,
+      name: data.name,
+      nvrIp: data.nvrIp,
+      cameraPort: data.cameraPort,
+      cameraType: data.cameraType,
+      nvrUsername: data.nvrUsername,
+      nvrPassword: data.password,
+      workspaceId: data.workspaceId,
+      code: data.code,
+      remark: data.remark,
+      nvrChannel: data.nvrChannel,
+      videoServiceType: data.videoServiceType,
+      videoStandard: data.videoStandard,
+    };
+    editCamera(temp)
+      .then((res) => {
+        if (res.code === 200) {
+          updateValue(false);
+          ElMessage({
+            message: '修改成功',
+            type: 'success',
+          });
+          getCameraItems();
+        } else {
+          return Promise.reject(res.msg);
+        }
+      })
+      .catch((error) => {
+        ElMessage.error(error);
+      });
+    // props.confirmEvent && props.confirmEvent(data);
+    // updateValue(false);
   };
 </script>
 

+ 23 - 5
src/views/cameras/overview/components/CameraEditPopover.vue

@@ -21,7 +21,7 @@
   import IPAddCamera from './AddCameraByIP.vue';
   import { CameraIPItem } from '../type';
   import useCameraOverview from '../stores/useCameraOverview';
-  import { cloneDeep } from 'lodash-es';
+  import { ElMessage } from 'element-plus';
 
   const props = defineProps<{
     modelValue: boolean;
@@ -32,7 +32,7 @@
   const emits = defineEmits(['update:modelValue']);
 
   const cameraOverview = useCameraOverview();
-  const { editCamera } = cameraOverview;
+  const { editCamera, getCameraItems } = cameraOverview;
 
   const updateValue = (value) => {
     emits('update:modelValue', value);
@@ -54,10 +54,28 @@
       workspaceId: data.workspaceId,
       code: data.code,
       remark: data.remark,
+      videoServiceType: data.videoServiceType,
+      videoStandard: data.videoStandard,
     };
-    editCamera(temp);
-    props.confirmEvent && props.confirmEvent(data);
-    updateValue(false);
+    // editCamera(temp);
+    // props.confirmEvent && props.confirmEvent(data);
+    // updateValue(false);
+    editCamera(temp)
+      .then((res) => {
+        if (res.code === 200) {
+          updateValue(false);
+          ElMessage({
+            message: '修改成功',
+            type: 'success',
+          });
+          getCameraItems();
+        } else {
+          return Promise.reject(res.msg);
+        }
+      })
+      .catch((error) => {
+        ElMessage.error(error);
+      });
   };
 </script>
 

+ 20 - 4
src/views/cameras/overview/components/CameraEditSRSPopover.vue

@@ -22,13 +22,14 @@
   import SRSAddCamera from './AddCameraBySRS.vue';
   import useCameraOverview from '../stores/useCameraOverview';
   import { CameraIPItem } from '../type';
+  import { ElMessage } from 'element-plus';
 
   const props = defineProps<{ modelValue: boolean; editData?: CameraIPItem }>();
 
   const emits = defineEmits(['update:modelValue']);
 
   const cameraOverview = useCameraOverview();
-  const { editCamera } = cameraOverview;
+  const { editCamera, getCameraItems } = cameraOverview;
 
   const updateValue = (value) => {
     emits('update:modelValue', value);
@@ -42,10 +43,25 @@
       code: data.code,
       rtspurl: data.rtspurl,
       remark: data.remark,
+      videoServiceType: data.videoServiceType,
+      videoStandard: data.videoStandard,
     };
-    editCamera(temp).then(() => {
-      updateValue(false);
-    });
+    editCamera(temp)
+      .then((res) => {
+        if (res.code === 200) {
+          updateValue(false);
+          ElMessage({
+            message: '修改成功',
+            type: 'success',
+          });
+          getCameraItems();
+        } else {
+          return Promise.reject(res.msg);
+        }
+      })
+      .catch((error) => {
+        ElMessage.error(error);
+      });
   };
 </script>
 

+ 4 - 3
src/views/cameras/overview/stores/useCameraOverview.ts

@@ -87,9 +87,10 @@ export const useCameraOverview = defineStore('camera-overview', () => {
   };
 
   const editCamera = (data: Partial<CameraShowItem>) => {
-    return updateCameraItem(data).then(() => {
-      getCameraItems();
-    });
+    return updateCameraItem(data);
+    // .then(() => {
+    //   getCameraItems();
+    // });
   };
 
   const getState = () => {