فهرست منبع

共享相机编辑表单fix

zhudie 2 سال پیش
والد
کامیت
f8dadc1034

+ 68 - 0
src/api/camera/camera-share.ts

@@ -0,0 +1,68 @@
+import { http } from '@/utils/http/axios';
+
+export interface CameraShareType {
+  id?: number;
+  cameraId: number;
+  toTenantId: number;
+  permission: string;
+  endTime: string;
+  isAdd: boolean;
+  isDelete: boolean;
+  creator: string;
+  createTime: string;
+  remark: string;
+  tenantId: number;
+  cameraToTenantId: number;
+}
+
+export interface CameraShareQueryType {
+  pageNumber?: number;
+  pageSize?: number;
+  cameraId?: number;
+  isAdd?: boolean | number;
+  toTenantId?: number;
+  toTenantName?: string; //自己加的
+}
+
+export interface ReturnType {
+  records: CameraShareType[];
+  pageNumber?: number;
+  pageSize?: number;
+  totalPage?: boolean | number;
+  totalRow: number;
+}
+
+/** 查询分享的相机*/
+export const getShareCameraList = (params: CameraShareQueryType) => {
+  return http.request<ReturnType>({
+    url: '/cameraTenant/getList',
+    method: 'GET',
+    params,
+  });
+};
+
+/** 编辑分享的相机*/
+export const editShareCameraList = (data: CameraShareQueryType) => {
+  return http.request<CameraShareType[]>({
+    url: '/cameraTenant/update',
+    method: 'put',
+    data,
+  });
+};
+
+/** 删除分享的相机*/
+export const delShareCameraList = (toTenantId: number) => {
+  return http.request<CameraShareType[]>({
+    url: `/cameraTenant/updatetoTenantId=${toTenantId}`,
+    method: 'delete',
+  });
+};
+
+/** 添加分享的相机*/
+export const addShareCameraList = (data: CameraShareType) => {
+  return http.request<CameraShareType[]>({
+    url: '/cameraTenant/save',
+    method: 'post',
+    data,
+  });
+};

+ 20 - 0
src/views/cameras/overview/components/EditSharedCamera.vue

@@ -24,6 +24,17 @@
             :show-password="item.prop === 'password'"
             :disabled="item.disabled"
           />
+          <el-tree-select
+            v-if="item.type === 'tree-select'"
+            v-model="cameraIPData[item.prop]"
+            :data="scenesTree"
+            :render-after-expand="false"
+            :default-expand-all="true"
+            check-strictly
+            :placeholder="item.placeholder"
+            style="width: 200px"
+            @change="handleTreeSelect"
+          />
         </el-form-item>
       </el-form>
     </div>
@@ -38,6 +49,10 @@
   import { computed, onBeforeMount, ref } from 'vue';
   import { CameraSharedItem, cameraSharedForm } from '../constant';
   import { cloneDeep } from 'lodash-es';
+  import useSceneInfos from '@/hooks/useSceneInfos';
+
+  const sceneInfos = useSceneInfos();
+  const { scenesTree, flattendWorkspaces, getScenesTree } = sceneInfos;
 
   const props = defineProps<{ formData?: CameraSharedItem | null }>();
 
@@ -55,6 +70,10 @@
     return newRule;
   });
 
+  const handleTreeSelect = (code: string) => {
+    cameraIPData.value.workspaceId = flattendWorkspaces.value.find((item) => item.code === code).id;
+  };
+
   const handleCancel = () => {
     emits('cancel-execute');
   };
@@ -65,6 +84,7 @@
   };
 
   onBeforeMount(() => {
+    getScenesTree({ level: 3, valueKey: 'code', labelKey: 'name', disabled: true });
     if (props.formData) {
       cameraIPData.value = props.formData;
     }

+ 13 - 2
src/views/cameras/overview/constant.ts

@@ -402,13 +402,22 @@ export const cameraSharedForm: CameraAddFormItem[] = [
   },
   {
     label: '场景:',
-    prop: 'workshopName',
+    prop: 'workspaceCode',
     placeholder: '请输入场景名称',
-    type: 'input',
+    type: 'tree-select',
     required: true,
     disabled: false,
     rule: [{ required: true, message: '请输入场景名称', trigger: 'blur' }],
   },
+  // {
+  //   label: '场景:',
+  //   prop: 'workshopName',
+  //   placeholder: '请输入场景名称',
+  //   type: 'input',
+  //   required: true,
+  //   disabled: false,
+  //   rule: [{ required: true, message: '请输入场景名称', trigger: 'blur' }],
+  // },
   {
     label: '密码:',
     prop: 'password',
@@ -457,4 +466,6 @@ export interface CameraSharedItem {
   shareState: string; //是否添加
   password?: string; //密码
   username?: string; //用户名
+  workspaceCode?: string; //相机工位code
+  workspaceId?: string; //工位场景Id
 }

+ 151 - 0
src/views/cameras/overview/stores/useCameraShare.ts

@@ -0,0 +1,151 @@
+//未使用
+import { computed, ref } from 'vue';
+import { defineStore } from 'pinia';
+import { CameraSharedItem } from '../constant';
+import { ElMessage } from 'element-plus';
+import {
+  CameraShareType,
+  CameraShareQueryType,
+  getShareCameraList,
+  editShareCameraList,
+  delShareCameraList,
+  addShareCameraList,
+} from '@/api/camera/camera-share';
+
+export const useCameraShare = () => {
+  // const cameraCompleted = ref<CameraSharedItem[]>([
+  //   {
+  //     cameraIp: '172.13.25.0000',
+  //     cameraType: 'haikang',
+  //     cameraPort: '11',
+  //     companyAccount: 111,
+  //     companyName: '1111',
+  //     code: 'C919-140',
+  //     workshopName: 'C919车间',
+  //     workspaceName: '东侧',
+  //     shareState: 'complete',
+  //     password: '11',
+  //     username: '22',
+  //   },
+  // ]);
+
+  // const cameraIncompleted = ref<CameraSharedItem[]>([
+  //   {
+  //     cameraIp: '172.13.25.0011',
+  //     cameraType: 'haikang',
+  //     cameraPort: '11',
+  //     companyAccount: 111,
+  //     companyName: '1111',
+  //     code: 'C919-141',
+  //     workshopName: 'C919车间',
+  //     workspaceName: '西侧',
+  //     shareState: 'incomplete',
+  //     password: '11',
+  //     username: '22',
+  //   },
+  //   {
+  //     cameraIp: '172.13.25.0009',
+  //     cameraType: 'haikang',
+  //     cameraPort: '11',
+  //     companyAccount: 111,
+  //     companyName: '1111',
+  //     code: 'C919-142',
+  //     workshopName: 'C919车间',
+  //     workspaceName: '北侧',
+  //     shareState: 'incomplete',
+  //     password: '11',
+  //     username: '22',
+  //   },
+  // ]);
+
+  const cameraShareList = ref<CameraShareType[]>([]);
+  const queryName = ref<string>();
+  const queryAccount = ref<number>();
+  const isAddState = ref<boolean | number>(-1);
+  const queryCameraId = ref<number>(-1);
+  const total = ref(0);
+  const page = ref(1);
+  const size = ref(10);
+
+  // 条件查询事件
+  const conditionSearch = () => {
+    getShareCameraList().then(())
+    const params: CameraShareQueryType = {
+      pageNumber: page.value,
+      pageSize: size.value,
+    };
+    if (queryName.value) {
+      params.toTenantName = queryName.value;
+    }
+
+    if (queryAccount.value) {
+      params.toTenantId = queryAccount.value;
+    }
+    if (isAddState.value) {
+      params.isAdd = isAddState.value;
+    }
+    if (queryCameraId.value) {
+      params.cameraId = queryCameraId.value;
+    }
+    getShareCameraList(params).then((res) => {
+      cameraShareList.value = res.records;
+      total.value = res.totalRow;
+    });
+  };
+
+  const handleAdd = (data: CameraShareType) => {
+    addShareCameraList(data).then(() => {
+
+    });
+  };
+
+  // const handleAdd = (row, addCameraType) => {
+  //   if (addCameraType === 'complete') return;
+  //   const currentData = cameraIncompleted.value.find((item) => (item.cameraIp = row.cameraIp));
+  //   const indexToRemove = cameraIncompleted.value.findIndex(
+  //     (item) => item.cameraIp === row.cameraIp,
+  //   );
+  //   if (indexToRemove !== -1) {
+  //     cameraIncompleted.value.splice(indexToRemove, 1);
+  //   }
+  //   if (currentData) {
+  //     cameraCompleted.value.push(currentData!);
+  //   }
+  //   ElMessage({
+  //     message: '添加成功',
+  //     type: 'success',
+  //   });
+  // };
+
+  const handleDelete = (row, addCameraType) => {
+    if (addCameraType === 'complete') {
+      const indexToRemove = cameraCompleted.value.findIndex(
+        (item) => item.cameraIp === row.cameraIp,
+      );
+      cameraCompleted.value.splice(indexToRemove, 1);
+    } else {
+      const indexToRemove = cameraIncompleted.value.findIndex(
+        (item) => item.cameraIp === row.cameraIp,
+      );
+      cameraIncompleted.value.splice(indexToRemove, 1);
+    }
+  };
+
+  const resetSearch = () => {
+    queryName.value = '';
+    queryAccount.value = '';
+  };
+
+  return {
+    queryName,
+    queryAccount,
+    conditionSearch,
+    cameraIncompleted,
+    unAddlength,
+    handleAdd,
+    handleDelete,
+    resetSearch,
+  };
+};
+
+export default useCameraShare;