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

Merge branch 'master' of ssh://172.16.23.188:9022/tian-group/skyeye-admin-fe

sunhongyao341504 пре 2 година
родитељ
комит
99e8f4d042

+ 2 - 0
src/views/cameras/overview/components/ShareCameraDetail.vue

@@ -170,6 +170,8 @@
         shareData.value.tenantName = res.tenantName;
         shareData.value.toTenantId = res.tenantId;
       } else {
+        shareData.value.tenantName = '';
+        shareData.value.toTenantId = undefined;
         ElMessage.error('企业账号验证失败');
       }
     });

+ 30 - 10
src/views/cameras/preview/components/CameraTree/CameraTree.vue

@@ -22,15 +22,20 @@
         <template #default="{ node, data }">
           <span class="custom-tree-node">
             <span
-              ><span
-                class="cameraCommon"
-                :class="{
-                  cameraSelect:
-                    data.nodeType === CameraTreeNodeType.camera && data.id === Number(cameraId),
-                }"
-              ></span
-              >{{ node.label }}</span
-            >
+              class="cameraCommon"
+              :class="{
+                cameraSelect: isSelect(data),
+              }"
+            ></span>
+            <el-icon
+              v-if="data.nodeType === CameraTreeNodeType.camera"
+              class="cameraIcon"
+              :class="{
+                iconSelect: isSelect(data),
+              }"
+              ><VideoCamera
+            /></el-icon>
+            {{ node.label }}
           </span>
         </template>
       </el-tree>
@@ -41,7 +46,7 @@
   import { ElTree } from 'element-plus';
   import { ref, watch } from 'vue';
   import { useRouteQuery } from '@vueuse/router';
-  import { Search } from '@element-plus/icons-vue';
+  import { Search, VideoCamera } from '@element-plus/icons-vue';
 
   import useCameraDetail from '../../store/useCameraDetailStore';
   import { CameraTree, CameraTreeNodeType } from '@/api/camera/camera-preview';
@@ -72,6 +77,9 @@
     }
   };
 
+  const isSelect = (data) =>
+    data.nodeType === CameraTreeNodeType.camera && data.id === Number(cameraId.value);
+
   const filterText = ref('');
   const treeRef = ref<InstanceType<typeof ElTree>>();
 
@@ -89,6 +97,7 @@
     width: 6px;
     height: 6px;
     display: inline-block;
+    align-items: center;
     margin-right: 6px;
   }
 
@@ -111,4 +120,15 @@
   .filterTextInput {
     margin: 8px 0;
   }
+  .custom-tree-node {
+    display: flex;
+    align-items: center;
+  }
+  .cameraIcon {
+    margin-right: 5px;
+    font-size: 18px;
+  }
+  .iconSelect {
+    color: #0052d9;
+  }
 </style>

+ 5 - 0
src/views/cameras/preview/components/FenceEditorV2/FenceEditor.vue

@@ -20,6 +20,7 @@
             :draggable="!drawingGroupId"
             @select-group="handleSelectGroup"
             :is-edit="isEdit"
+            :current-group-id="currentGroupId"
           />
         </v-layer>
       </v-stage>
@@ -121,6 +122,7 @@
     if (!drawingGroupId.value) {
       const groupConfig = createGroupConfig(point, scale.value);
       drawingGroupId.value = groupConfig.uid;
+      currentGroupId.value = groupConfig.uid;
       groupConfig._temp.points = point;
       fenceGroups.value.push(groupConfig);
     } else {
@@ -141,6 +143,7 @@
           });
           groupConfig.lineConfig.points = [];
           groupConfig.circleConfigs = [];
+          currentGroupId.value = '';
         } else {
           groupConfig.lineConfig.points = groupConfig._temp.points;
         }
@@ -158,6 +161,7 @@
       const finalPoints = [...tempPoints, ...point];
       groupConfig.lineConfig.points = finalPoints;
       groupConfig._temp.points = finalPoints;
+      currentGroupId.value = groupConfig.uid;
 
       const circleConfig = createCircleConfigItem(
         point,
@@ -206,6 +210,7 @@
   /** 删除当前选中的group项 */
   const remove = () => {
     fenceGroups.value = fenceGroups.value.filter((x) => x.uid !== currentGroupId.value);
+    currentGroupId.value = '';
   };
 
   /** 导出为json格式 */

+ 3 - 1
src/views/cameras/preview/components/FenceEditorV2/FenceItem.vue

@@ -10,7 +10,7 @@
   >
     <v-line :config="group.lineConfig" />
     <v-circle
-      v-if="props.isEdit"
+      v-if="props.isEdit && props.currentGroupId === group.uid"
       v-for="circleConfig in group.circleConfigs"
       :config="circleConfig"
       :key="circleConfig"
@@ -26,6 +26,8 @@
     fenceGroups: FenceGroup[];
     draggable: boolean;
     isEdit: boolean;
+    /** 当前选中的分组 */
+    currentGroupId: string;
   }>();
 
   const emits = defineEmits<{ (e: 'selectGroup', groupId: string): unknown }>();

+ 85 - 82
src/views/system-config/scene-manage/WorkshopDrawer.vue

@@ -70,10 +70,10 @@
       </el-form>
       <div style="position: absolute; left: 108px; bottom: 67px">
         <el-button v-if="!props.detail.companyId" @click="resetDraw">重置</el-button>
-        <el-button v-if="!props.detail.companyId" type="primary" @click="addNewType">
+        <el-button v-if="!props.detail.companyId" type="primary" @click="addNewType(ruleFormRef)">
           提交
         </el-button>
-        <el-button v-if="props.detail.companyId" type="primary" @click="editedSub">
+        <el-button v-if="props.detail.companyId" type="primary" @click="editedSub(ruleFormRef)">
           提交
         </el-button>
       </div>
@@ -143,7 +143,7 @@
   });
   const rules = reactive<FormRules>({
     name: [
-      { required: true, message: '', trigger: 'blur' },
+      { required: true, message: '车间名称不能为空', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 3 to 5', trigger: 'blur' },
     ],
     seniorScene: [
@@ -151,17 +151,11 @@
       { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
     ],
     code: [
-      { required: true, message: '', trigger: 'blur' },
-      { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    ],
-    tagWorkshop: [
-      { required: true, message: '', trigger: 'blur' },
-      { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    ],
-    templateWorkshop: [
-      { required: true, message: '', trigger: 'blur' },
+      { required: true, message: '车间代码不能为空', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
     ],
+    tagWorkshop: [{ required: true, message: '请选择场景标签', trigger: 'blur' }],
+    templateWorkshop: [{ required: true, message: '请选择车间模板', trigger: 'blur' }],
   });
 
   //编辑时需要传入子组件的数据
@@ -181,91 +175,100 @@
   //添加新车间的提交
   const addNewType = (formEl: FormInstance | undefined) => {
     if (!formEl) return;
+    formEl.validate((valid) => {
+      if (!valid) {
+        return;
+      }
+      const newAddData = {
+        code: ruleForm.code,
+        companyId: props.detail.id,
+        sceneLabelId: ruleForm.tagWorkshop!,
+        isDeleted: 0,
+        name: ruleForm.name,
+        status: Number(ruleForm.addEnable),
+        serial: 0,
+      };
 
-    const newAddData = {
-      code: ruleForm.code,
-      companyId: props.detail.id,
-      sceneLabelId: ruleForm.tagWorkshop!,
-      isDeleted: 0,
-      name: ruleForm.name,
-      status: Number(ruleForm.addEnable),
-      serial: 0,
-    };
-
-    if (props.allCodes.includes(ruleForm.code)) {
-      ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
-        confirmButtonText: '确认',
-        cancelButtonText: '取消',
-        type: 'error',
-      })
-        .then(() => {
-          console.log('场景代码重复,请重新填写');
-        })
-        .catch(() => {
-          console.log('取消删除物件');
-        });
-    } else {
-      addWorkshop(newAddData)
-        .then((res) => {
-          const newWorkshopModule = {
-            workshopId: res,
-            isDeleted: 0,
-            workshopModuleId: ruleForm.templateWorkshop!,
-          };
-          return addWorkshopModuleLabel(newWorkshopModule);
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    }
-  };
-
-  //编辑公司时的提交
-  const editedSub = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-    if (props.allCodes.includes(ruleForm.code)) {
-      if (props.detail.code !== ruleForm.code) {
+      if (props.allCodes.includes(ruleForm.code)) {
         ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
           confirmButtonText: '确认',
           cancelButtonText: '取消',
           type: 'error',
         })
           .then(() => {
-            console.log('代码重复');
+            console.log('场景代码重复,请重新填写');
           })
           .catch(() => {
             console.log('取消删除物件');
           });
+      } else {
+        addWorkshop(newAddData)
+          .then((res) => {
+            const newWorkshopModule = {
+              workshopId: res,
+              isDeleted: 0,
+              workshopModuleId: ruleForm.templateWorkshop!,
+            };
+            return addWorkshopModuleLabel(newWorkshopModule);
+          })
+          .catch((err) => {
+            console.log(err);
+          })
+          .finally(() => {
+            emit('onOk');
+          });
+      }
+    });
+  };
+
+  //编辑公司时的提交
+  const editedSub = (formEl: FormInstance | undefined) => {
+    if (!formEl) return;
+    formEl.validate((valid) => {
+      if (!valid) {
         return;
       }
-    }
+      if (props.allCodes.includes(ruleForm.code)) {
+        if (props.detail.code !== ruleForm.code) {
+          ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
+            confirmButtonText: '确认',
+            cancelButtonText: '取消',
+            type: 'error',
+          })
+            .then(() => {
+              console.log('代码重复');
+            })
+            .catch(() => {
+              console.log('取消删除物件');
+            });
+          return;
+        }
+      }
 
-    const editNewWorkshopData = {
-      code: ruleForm.code,
-      sceneLabelId: ruleForm.tagWorkshop!,
-      name: ruleForm.name,
-      status: Number(ruleForm.addEnable),
-      id: props.detail.id,
-    };
+      const editNewWorkshopData = {
+        code: ruleForm.code,
+        sceneLabelId: ruleForm.tagWorkshop!,
+        name: ruleForm.name,
+        status: Number(ruleForm.addEnable),
+        id: props.detail.id,
+      };
 
-    editWorkshop(editNewWorkshopData)
-      .then(() => {
-        const editWorkshopModule = {
-          isDeleted: 0,
-          workshopId: props.detail.id,
-          workshopModuleId: ruleForm.templateWorkshop!,
-        };
-        return editWorkshopModuleLabel(editWorkshopModule);
-      })
-      .catch((err) => {
-        console.log(err);
-      })
-      .finally(() => {
-        emit('onOk');
-      });
+      editWorkshop(editNewWorkshopData)
+        .then(() => {
+          const editWorkshopModule = {
+            isDeleted: 0,
+            workshopId: props.detail.id,
+            workshopModuleId: ruleForm.templateWorkshop!,
+          };
+          return editWorkshopModuleLabel(editWorkshopModule);
+        })
+        .catch((err) => {
+          console.log(err);
+        })
+        .finally(() => {
+          emit('onOk');
+        });
+    });
   };
 
   //重置编辑框

+ 76 - 66
src/views/system-config/scene-manage/WorkspaceDrawer.vue

@@ -42,10 +42,10 @@
       </el-form>
       <div style="position: absolute; left: 108px; bottom: 67px">
         <el-button v-if="!props.detail.principal" @click="resetDraw">重置</el-button>
-        <el-button v-if="!props.detail.principal" type="primary" @click="addNewType">
+        <el-button v-if="!props.detail.principal" type="primary" @click="addNewType(ruleFormRef)">
           提交
         </el-button>
-        <el-button v-if="props.detail.principal" type="primary" @click="editedSub">
+        <el-button v-if="props.detail.principal" type="primary" @click="editedSub(ruleFormRef)">
           提交
         </el-button>
       </div>
@@ -102,7 +102,7 @@
   });
   const rules = reactive<FormRules>({
     name: [
-      { required: true, message: '', trigger: 'blur' },
+      { required: true, message: '工位名称不能为空', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 3 to 5', trigger: 'blur' },
     ],
     seniorScene: [
@@ -110,11 +110,11 @@
       { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
     ],
     code: [
-      { required: true, message: '', trigger: 'blur' },
+      { required: true, message: '工位代码不能为空', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
     ],
     principal: [
-      { required: true, message: '', trigger: 'blur' },
+      { required: true, message: '负责人不能为空', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
     ],
   });
@@ -135,81 +135,91 @@
   const addNewType = (formEl: FormInstance | undefined) => {
     if (!formEl) return;
 
-    if (props.allCodes.indexOf(ruleForm.code) > -1) {
-      ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
-        confirmButtonText: '确认',
-        cancelButtonText: '取消',
-        type: 'error',
-      })
-        .then(() => {
-          console.log('场景代码重复,请重新填写');
-        })
-        .catch(() => {
-          console.log('取消删除物件');
-        });
-    } else {
-      const newAddData = {
-        code: ruleForm.code,
-        workshopId: props.detail.id,
-        isDeleted: 0,
-        name: ruleForm.name,
-        principal: ruleForm.principal,
-        status: Number(ruleForm.addEnable),
-        serial: 0,
-      };
-      addWorkspace(newAddData)
-        .catch((err) => {
-          console.log(err);
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          emit('onOk');
-        });
-    }
-  };
-
-  //编辑公司时的提交
-  const editedSub = (formEl: FormInstance | undefined) => {
-    if (!formEl) return;
-
-    if (props.allCodes.indexOf(ruleForm.code) > -1) {
-      if (props.detail.code !== ruleForm.code) {
+    formEl.validate((valid) => {
+      if (!valid) {
+        return;
+      }
+      if (props.allCodes.indexOf(ruleForm.code) > -1) {
         ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
           confirmButtonText: '确认',
           cancelButtonText: '取消',
           type: 'error',
         })
           .then(() => {
-            console.log('代码重复');
+            console.log('场景代码重复,请重新填写');
           })
           .catch(() => {
             console.log('取消删除物件');
           });
+      } else {
+        const newAddData = {
+          code: ruleForm.code,
+          workshopId: props.detail.id,
+          isDeleted: 0,
+          name: ruleForm.name,
+          principal: ruleForm.principal,
+          status: Number(ruleForm.addEnable),
+          serial: 0,
+        };
+        addWorkspace(newAddData)
+          .catch((err) => {
+            console.log(err);
+          })
+          .catch((err) => {
+            console.log(err);
+          })
+          .finally(() => {
+            emit('onOk');
+          });
+      }
+    });
+  };
+
+  //编辑公司时的提交
+  const editedSub = (formEl: FormInstance | undefined) => {
+    if (!formEl) return;
+
+    formEl.validate((valid) => {
+      if (!valid) {
         return;
       }
-    }
+      if (props.allCodes.indexOf(ruleForm.code) > -1) {
+        if (props.detail.code !== ruleForm.code) {
+          ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
+            confirmButtonText: '确认',
+            cancelButtonText: '取消',
+            type: 'error',
+          })
+            .then(() => {
+              console.log('代码重复');
+            })
+            .catch(() => {
+              console.log('取消删除物件');
+            });
+          return;
+        }
+      }
 
-    const editNewWorkspaceData = {
-      code: ruleForm.code,
-      name: ruleForm.name,
-      status: Number(ruleForm.addEnable),
-      id: props.detail.id,
-      principal: ruleForm.principal,
-    };
+      const editNewWorkspaceData = {
+        code: ruleForm.code,
+        name: ruleForm.name,
+        status: Number(ruleForm.addEnable),
+        id: props.detail.id,
+        principal: ruleForm.principal,
+      };
 
-    //编辑车间并上传
-    editWorkspace(editNewWorkspaceData)
-      .catch((err) => {
-        console.log(err);
-      })
-      .catch((err) => {
-        console.log(err);
-      })
-      .finally(() => {
-        emit('onOk');
-      });
+      //编辑车间并上传
+      editWorkspace(editNewWorkspaceData)
+        .catch((err) => {
+          console.log(err);
+        })
+        .catch((err) => {
+          console.log(err);
+        })
+        .finally(() => {
+          emit('onOk');
+        });
+    });
   };
 
   //重置编辑框

+ 4 - 3
src/views/system-config/template/CardCommon.vue

@@ -67,11 +67,12 @@
     <el-drawer
       v-model="cardeditDrawer"
       direction="rtl"
-      :title="currentType"
+      :title="type === '模板' ? '编辑模板' : '编辑标签'"
       :before-close="handleClose"
     >
       <DrawerCommonVue
         :detail="currentdrawerFormData"
+        :type="props.type"
         v-if="currentdrawerFormData"
         @submit-drawer="submitDrawer"
       />
@@ -90,7 +91,7 @@
 
   // const currentFormType = ref('场景');
 
-  export type CreateType = '添加模板' | '修改模板';
+  export type CreateType = '添加模板' | '编辑模板' | '添加标签' | '编辑标签';
   export interface TableModel {
     id: number;
     name: string;
@@ -109,7 +110,7 @@
     size: number;
   }
 
-  const currentType = ref<CreateType>('添加模板');
+  // const currentType = ref<CreateType>('编辑模板');
   const currentdrawerFormData = ref<FormModelCommon>({} as FormModelCommon);
   const cardeditDrawer = ref(false);
   const cardaddDrawer = ref(false);

+ 33 - 11
src/views/system-config/template/DrawerCommon.vue

@@ -2,7 +2,7 @@
   <div>
     <el-form ref="ruleDrawerRef" :model="form" label-width="100px">
       <el-form-item
-        label="模板名称"
+        :label="props.type === '模板' ? '模板名称' : '标签名称'"
         prop="name"
         :rules="[
           {
@@ -16,7 +16,7 @@
       </el-form-item>
 
       <el-form-item
-        label="模板代码"
+        :label="props.type === '模板' ? '模板代码' : '标签代码'"
         prop="code"
         :rules="[
           {
@@ -57,29 +57,47 @@
   import { ref, watch } from 'vue';
   import { FormInstance } from 'element-plus';
   import { onMounted } from 'vue';
+  import { cloneDeep } from 'lodash-es';
 
   export interface FormModelCommon {
-    id: number;
+    id?: number;
     code: string;
     name: string;
     status: number;
     remark: string;
   }
   export type CreateType = 'create' | 'edit';
-  const props = defineProps<{ detail: FormModelCommon }>();
+  const props = defineProps<{ detail: FormModelCommon; type: string }>();
   const emit = defineEmits(['submitDrawer']);
+  // const form = ref<FormModelCommon>({
+  //   id: props.detail.id,
+  //   name: props.detail.name,
+  //   code: props.detail.code,
+  //   remark: props.detail.remark,
+  //   status: props.detail.status,
+  // });
+
   const form = ref<FormModelCommon>({
-    id: props.detail.id,
-    name: props.detail.name,
-    code: props.detail.code,
-    remark: props.detail.remark,
-    status: props.detail.status,
+    id: undefined,
+    name: '',
+    code: '',
+    remark: '',
+    status: 0,
   });
 
+  const getValue = () => {
+    const dataForm = cloneDeep(props.detail);
+    form.value.id = dataForm.id;
+    form.value.name = dataForm.name;
+    form.value.code = dataForm.code;
+    form.value.remark = dataForm.remark;
+    form.value.status = dataForm.status;
+  };
+
   watch(
     () => props.detail,
-    (newdetail) => {
-      form.value = newdetail;
+    () => {
+      getValue();
     },
     { immediate: true },
   );
@@ -89,6 +107,10 @@
   function resetForm(formE1: FormInstance | undefined) {
     if (!formE1) return;
     formE1.resetFields();
+    form.value.name = '';
+    form.value.code = '';
+    form.value.remark = '';
+    form.value.status = 0;
     console.log('resetForm');
   }
 

+ 8 - 3
src/views/system-config/template/TitleCommon.vue

@@ -22,13 +22,18 @@
         @click="addForm"
         style="position: absolute; right: 0; width: 100px"
       >
-        模板</el-button
+        {{ props.type }}</el-button
       >
     </el-form>
   </div>
 
-  <el-drawer v-model="titleDrawer" direction="rtl" :title="currentType" :before-close="handleClose">
-    <DrawerCommonVue :detail="drawerFormData" @submit-drawer="submitDrawer" />
+  <el-drawer
+    v-model="titleDrawer"
+    direction="rtl"
+    :title="props.type === '模板' ? '添加模板' : '添加标签'"
+    :before-close="handleClose"
+  >
+    <DrawerCommonVue :detail="drawerFormData" :type="props.type" @submit-drawer="submitDrawer" />
   </el-drawer>
 </template>