zhudie 2 년 전
부모
커밋
e2d03df585

+ 2 - 2
src/api/scene/sceneOperate.ts

@@ -65,7 +65,7 @@ export interface WorkshopAddDatas {
   serial?: number;
   parent?: null | WorkshopAddDatas;
   workshopModule?: WorkShopTempleteType;
-  labelList?: WorkShopTempleteType;
+  labelList?: WorkShopTempleteType[];
   // templete?: string; //车间模板
   // tag?: string; //场景标签
 }
@@ -108,7 +108,7 @@ export interface WorkspaceAddDatas {
   createdAt?: string;
   id?: number;
   isDeleted?: number;
-  name?: string;
+  name: string;
   principal?: string; //工位负责人
   remark?: string;
   status?: number;

+ 2 - 2
src/api/scene/secene-templet.ts

@@ -15,7 +15,7 @@ export interface SceneLabelType {
 
 export const querySceneLabel = (): Promise<SceneLabelType[]> => {
   return http.request({
-    url: '/template/findSceneLabel',
+    url: '/template/getSceneLabelList',
     method: 'get',
   });
 };
@@ -35,7 +35,7 @@ export interface TemplateType {
 
 export const querytemplate = (): Promise<TemplateType[]> => {
   return http.request({
-    url: '/template/findSceneModule',
+    url: '/template/getSceneModuleList',
     method: 'get',
   });
 };

+ 58 - 82
src/views/dashboard/monitor/CompanyDrawer.vue

@@ -3,14 +3,13 @@
     <el-drawer
       ref="companyDrawerRef"
       class="test"
-      v-model="showDrawer"
+      :model-value="true"
+      @close="() => emit('onClose')"
       with-header="true"
       size="35%"
-      @open="() => emit('update-tab-com', true)"
-      @close="handleClose"
     >
       <template #header="{ titleId }">
-        <p :id="titleId">{{ props.companyAddTitle }}</p>
+        <p :id="titleId">{{ title }}</p>
       </template>
       <el-form
         ref="ruleFormRef"
@@ -33,7 +32,7 @@
         <el-form-item label="标签&模板" prop="sceneCode">
           <div style="width: 200px; height: 30px"></div>
           <div
-            v-for="(item, index) in selectItems"
+            v-for="(item, index) in ruleForm.selectItems"
             :key="index"
             style="margin-bottom: 16px; display: flex"
           >
@@ -75,7 +74,7 @@
         </el-form-item>
         <el-form-item label="状态">
           <el-switch
-            v-model="addEnable"
+            v-model="ruleForm.addEnable"
             :active-value="ENABLED.TRUE"
             :inactive-value="ENABLED.FALSE"
             class="switchUse"
@@ -92,7 +91,7 @@
 </template>
 
 <script setup lang="ts">
-  import { computed, reactive, ref, defineProps, defineEmits } from 'vue';
+  import { computed, reactive, ref, defineProps, defineEmits, watch } from 'vue';
   import {
     addCompanyModuleLabel,
     editCompanyModuleLabel,
@@ -103,7 +102,7 @@
   import type { FormInstance, FormRules } from 'element-plus';
   import { ElMessageBox } from 'element-plus';
   import { CirclePlus } from '@element-plus/icons-vue';
-  import { ComAddDatas, addCompany, editCompany } from '@/api/scene/sceneOperate';
+  import { addCompany, editCompany } from '@/api/scene/sceneOperate';
 
   interface SelectItemType {
     tag: string;
@@ -111,29 +110,31 @@
   }
 
   const props = defineProps<{
-    tableCom: boolean;
-    companyAddTitle: string;
     sceneList: SceneLabelType[];
     templateList: TemplateType[];
     allCodes: string[];
-    editedItem: ComAddDatas;
-    addEnable: ENABLED;
     comEdit: boolean;
+    detail: {
+      id?: number;
+      name?: string;
+      code?: string;
+      seniorScene?: string;
+      addEnable?: ENABLED;
+      selectItems?: SelectItemType[];
+    };
   }>();
 
-  const addEnable = ref(ENABLED.TRUE);
-  const selectItems = ref<SelectItemType[]>([{ tag: '', template: '' }]);
-
-  //将表单数据传至父组件
-  const emit = defineEmits([
-    'upload-company-data',
-    'edit-company-data',
-    'update-tab-com',
-    'add-change-enable',
-  ]);
-
-  //drawer的开关
-  const showDrawer = computed(() => props.tableCom);
+  const title = computed(() => {
+    if (props.comEdit) {
+      return '编辑公司';
+    }
+    return '添加公司';
+  });
+  const emit = defineEmits<{
+    (e: 'subOk'): unknown;
+    (e: 'onClose'): unknown;
+    (e: 'editOk'): unknown;
+  }>();
 
   //表格中的规则
   const ruleFormRef = ref<FormInstance>();
@@ -147,8 +148,10 @@
     templateCom?: string[]; //公司场景模板 可选多个
     tagWorkshop?: number; //场景标签  车间
     templateWorkshop?: number; //车间模板
-    principal?: string; //负责人
+    selectItems?: SelectItemType[];
+    addEnable?: ENABLED;
   }
+
   const ruleForm = reactive<RuleForm>({
     name: '',
     seniorScene: '顶级场景',
@@ -158,7 +161,8 @@
     templateCom: [],
     tagWorkshop: undefined,
     templateWorkshop: undefined,
-    principal: '',
+    selectItems: [{ tag: '', template: '' }],
+    addEnable: ENABLED.TRUE,
   });
   const rules = reactive<FormRules>({
     name: [
@@ -173,42 +177,28 @@
       { required: true, message: '', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
     ],
-    sceneCode: [
-      { required: true, message: '', trigger: 'blur' },
-      { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    ],
-    tagCom: [{ required: true, message: '', trigger: 'blur' }],
-    templateCom: [{ required: true, message: '', 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' },
-      { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    ],
-    principal: [
-      { required: true, message: '', trigger: 'blur' },
-      { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    ],
   });
 
   //增加空的场景&模板
   const addChange = () => {
-    selectItems.value.push({
+    ruleForm.selectItems!.push({
       tag: '',
       template: '',
     });
   };
 
-  //编辑时编辑时将父组件的数据传递给子组件
-  const receiveDataFromParent = (data, selectItemsParent) => {
-    ruleForm.name = data.name;
-    ruleForm.code = data.code;
-    ruleForm.seniorScene = '顶级场景';
-    addEnable.value = data.status;
-    selectItems.value = selectItemsParent;
-  };
+  //编辑时需要传入子组件的数据
+  watch(
+    () => props.detail,
+    (data) => {
+      ruleForm.name = data.name!;
+      ruleForm.code = data.code!;
+      ruleForm.seniorScene = data.seniorScene!;
+      ruleForm.addEnable = data.addEnable;
+      ruleForm.selectItems = data.selectItems;
+    },
+    { immediate: true },
+  );
 
   //删除场景&模板
   const deleScene = (index) => {
@@ -218,17 +208,12 @@
       type: 'warning',
     })
       .then(() => {
-        selectItems.value.splice(index, 1);
+        ruleForm.selectItems!.splice(index, 1);
       })
       .catch(() => {
         console.log('取消删除物件');
       });
   };
-
-  const handleClose = () => {
-    emit('update-tab-com', false);
-  };
-
   //添加新公司的提交
   const newCompanyAdd = (formEl: FormInstance | undefined) => {
     if (!formEl) return;
@@ -249,7 +234,7 @@
       const newComData = {
         name: ruleForm.name,
         code: ruleForm.code,
-        status: Number(addEnable.value),
+        status: Number(ruleForm.addEnable),
         isDeleted: 0,
         parentId: 0,
         serial: 0,
@@ -258,11 +243,11 @@
       addCompany(newComData)
         .then((res) => {
           //选出不为空字符串的数据
-          selectItems.value = selectItems.value.filter((item) => {
+          ruleForm.selectItems = ruleForm.selectItems!.filter((item) => {
             return item.tag && item.template;
           });
           //将selectItems加工成保存公司-模板的数据类型
-          const newModuleLabel = selectItems.value.map((item) => {
+          const newModuleLabel = ruleForm.selectItems!.map((item) => {
             return {
               companyId: res,
               isDeleted: 0,
@@ -278,8 +263,7 @@
           console.log(err);
         })
         .finally(() => {
-          resetDrawCom();
-          emit('upload-company-data');
+          emit('subOk');
         });
     }
   };
@@ -288,14 +272,13 @@
   const editedSub = (formEl: FormInstance | undefined) => {
     if (!formEl) return;
     if (props.allCodes.indexOf(ruleForm.code) > -1) {
-      if (props.editedItem.code !== ruleForm.code) {
+      if (props.detail.code !== ruleForm.code) {
         ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
           confirmButtonText: '确认',
           cancelButtonText: '取消',
           type: 'error',
         })
           .then(() => {
-            // ruleForm.workshopCode = '';
             console.log('代码重复');
           })
           .catch(() => {
@@ -305,24 +288,24 @@
       }
     }
 
-    selectItems.value = selectItems.value.filter((item) => {
+    ruleForm.selectItems = ruleForm.selectItems!.filter((item) => {
       return item.tag && item.template;
     });
 
     //新增的数据
     const editNewCom = {
-      id: props.editedItem.id,
+      id: props.detail.id,
       name: ruleForm.name,
       code: ruleForm.code,
-      status: Number(addEnable.value),
+      status: Number(ruleForm.addEnable),
     };
     // 编辑上传
     editCompany(editNewCom)
       .then(() => {
         //保存公司-场景标签-场景模板关系
-        const editModuleLabel = selectItems.value.map((item) => {
+        const editModuleLabel = ruleForm.selectItems!.map((item) => {
           return {
-            companyId: props.editedItem.id,
+            companyId: props.detail.id,
             isDeleted: 0,
             sceneLabelId: Number(item.tag), //item.tag
             sceneModuleId: Number(item.template), ///item.template
@@ -331,8 +314,7 @@
         return editCompanyModuleLabel(editModuleLabel);
       })
       .finally(() => {
-        emit('edit-company-data');
-        resetDrawCom();
+        emit('editOk');
       });
   };
 
@@ -340,15 +322,9 @@
   const resetDrawCom = () => {
     ruleForm.name = '';
     ruleForm.code = '';
-    ruleForm.sceneCode = '';
-    addEnable.value = 0;
-    selectItems.value = [{ tag: '', template: '' }];
-    ruleForm.principal = '';
-    ruleForm.templateWorkshop = undefined;
-    ruleForm.tagWorkshop = undefined;
+    ruleForm.addEnable = ENABLED.TRUE;
+    ruleForm.selectItems = [{ tag: '', template: '' }];
   };
-
-  defineExpose({ resetDrawCom, receiveDataFromParent });
 </script>
 
 <style scoped></style>

+ 71 - 90
src/views/dashboard/monitor/WorkshopDrawer.vue

@@ -2,14 +2,13 @@
   <div>
     <el-drawer
       class="test"
-      v-model="showDrawer"
-      @open="() => emit('update-tab-com', true)"
-      @close="() => emit('update-tab-com', false)"
+      :model-value="true"
+      @close="() => emit('onClose')"
       with-header="true"
       size="35%"
     >
       <template #header="{ titleId }">
-        <p :id="titleId">{{ props.addTitle }}</p>
+        <p :id="titleId">{{ title }}</p>
       </template>
       <el-form
         ref="ruleFormRef"
@@ -36,7 +35,7 @@
             style="display: flex; justify-content: space-between"
           >
             <el-radio-button
-              v-for="item in props.tagList"
+              v-for="item in props.detail.tagList"
               :key="item.id"
               :label="item.id!"
               class="tag-select"
@@ -62,7 +61,7 @@
         </el-form-item>
         <el-form-item label="状态">
           <el-switch
-            v-model="addEnable"
+            v-model="ruleForm.addEnable"
             :active-value="ENABLED.TRUE"
             :inactive-value="ENABLED.FALSE"
             class="switchUse"
@@ -70,78 +69,78 @@
         </el-form-item>
       </el-form>
       <div style="position: absolute; left: 108px; bottom: 67px">
-        <el-button v-if="!props.editWork" type="warning" @click="resetDraw">重置</el-button>
-        <el-button v-if="!editWork" type="primary" @click="addNewType"> 提交 </el-button>
-        <el-button v-if="editWork" type="primary" @click="editedSub"> 提交 </el-button>
+        <el-button v-if="!props.detail.companyId" type="warning" @click="resetDraw">重置</el-button>
+        <el-button v-if="!props.detail.companyId" type="primary" @click="addNewType">
+          提交
+        </el-button>
+        <el-button v-if="props.detail.companyId" type="primary" @click="editedSub">
+          提交
+        </el-button>
       </div>
     </el-drawer></div
   >
 </template>
 
 <script setup lang="ts">
-  import { computed, reactive, ref, defineProps, defineEmits } from 'vue';
+  import { computed, reactive, ref, defineProps, defineEmits, watch } from 'vue';
   import { ENABLED } from './constant';
   import { ElMessageBox, type FormInstance, type FormRules } from 'element-plus';
-  import {
-    LabelModuleListType,
-    WorkshopAddDatas,
-    addWorkshop,
-    editWorkshop,
-  } from '@/api/scene/sceneOperate';
+  import { LabelModuleListType, addWorkshop, editWorkshop } from '@/api/scene/sceneOperate';
   import {
     WorkshopModuleType,
     addWorkshopModuleLabel,
     editWorkshopModuleLabel,
   } from '@/api/scene/secene-templet';
 
-  interface SelectItemType {
-    tag: string;
-    template: string;
-  }
-
   const props = defineProps<{
-    tableWorkshop: boolean;
-    addTitle: string;
-    tagList: LabelModuleListType[];
-    editWork: boolean;
     allCodes: string[];
-    editedItem: WorkshopAddDatas;
     workshopTemplateList: WorkshopModuleType[];
-    addEnable: ENABLED;
+    detail: {
+      id?: number;
+      name?: string;
+      code?: string;
+      seniorScene?: string;
+      tagWorkshop?: number;
+      templateWorkshop?: number;
+      addEnable?: ENABLED;
+      tagList?: LabelModuleListType[];
+      companyId?: number;
+    };
   }>();
 
-  const addEnable = ref(ENABLED.TRUE);
-  const selectItems = ref<SelectItemType[]>([{ tag: '', template: '' }]);
-
   //将表单数据传至父组件
-  const emit = defineEmits(['upload-work-data', 'edit-work-data', 'update-tab-com']);
-
-  const showDrawer = computed(() => props.tableWorkshop);
+  const emit = defineEmits<{
+    (e: 'onOk'): unknown;
+    (e: 'onClose'): unknown;
+    (e: 'subOk'): unknown;
+  }>();
 
   //表格中的规则
   const ruleFormRef = ref<FormInstance>();
 
+  const title = computed(() => {
+    if (props.detail.companyId) {
+      return '编辑车间';
+    }
+    return '添加车间';
+  });
+
   interface RuleForm {
     name: string; //名称
     seniorScene: string; //上级场景
     code: string; //代码
-    sceneCode: string; //场景代码
-    tagCom?: string[]; //公司场景标签 可选多个
-    templateCom?: string[]; //公司场景模板 可选多个
-    tagWorkshop?: number; //场景标签  车间
-    templateWorkshop?: number; //车间模板
-    principal?: string; //负责人
+    tagWorkshop?: number | null; //场景标签  车间
+    templateWorkshop?: number | null; //车间模板
+    addEnable?: ENABLED; //状态
   }
   const ruleForm = reactive<RuleForm>({
     name: '',
     seniorScene: '',
     code: '',
-    sceneCode: '',
-    tagCom: [],
-    templateCom: [],
-    tagWorkshop: undefined,
-    templateWorkshop: undefined,
-    principal: '',
+    tagWorkshop: null,
+    templateWorkshop: null,
+    addEnable: ENABLED.TRUE,
+    // principal: '',
   });
   const rules = reactive<FormRules>({
     name: [
@@ -156,12 +155,6 @@
       { required: true, message: '', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
     ],
-    sceneCode: [
-      { required: true, message: '', trigger: 'blur' },
-      { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    ],
-    tagCom: [{ required: true, message: '', trigger: 'blur' }],
-    templateCom: [{ required: true, message: '', trigger: 'blur' }],
     tagWorkshop: [
       { required: true, message: '', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
@@ -170,38 +163,33 @@
       { required: true, message: '', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
     ],
-    principal: [
-      { required: true, message: '', trigger: 'blur' },
-      { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    ],
   });
 
   //编辑时需要传入子组件的数据
-  const receiveDataFromParent = (data: RuleForm, addEnableParent) => {
-    ruleForm.name = data.name;
-    ruleForm.seniorScene = data.seniorScene;
-    ruleForm.code = data.code;
-    ruleForm.tagWorkshop = data.tagWorkshop;
-    ruleForm.templateWorkshop = data.templateWorkshop;
-    ruleForm.principal = data.principal;
-    addEnable.value = addEnableParent;
-  };
-
-  const receiveSeniorScene = (seniorScene) => {
-    ruleForm.seniorScene = seniorScene;
-  };
+  watch(
+    () => props.detail,
+    (data) => {
+      ruleForm.name = data.name!;
+      ruleForm.seniorScene = data.seniorScene!;
+      ruleForm.code = data.code!;
+      ruleForm.tagWorkshop = data.tagWorkshop;
+      ruleForm.templateWorkshop = data.templateWorkshop;
+      ruleForm.addEnable = data.addEnable;
+    },
+    { immediate: true },
+  );
 
-  //添加新公司的提交
+  //添加新车间的提交
   const addNewType = (formEl: FormInstance | undefined) => {
     if (!formEl) return;
 
     const newAddData = {
       code: ruleForm.code,
-      companyId: props.editedItem.id,
-      sceneLabelId: ruleForm.tagWorkshop,
+      companyId: props.detail.id,
+      sceneLabelId: ruleForm.tagWorkshop!,
       isDeleted: 0,
       name: ruleForm.name,
-      status: Number(addEnable.value),
+      status: Number(ruleForm.addEnable),
       serial: 0,
     };
 
@@ -212,7 +200,6 @@
         type: 'error',
       })
         .then(() => {
-          // ruleForm.sceneCode = '';
           console.log('场景代码重复,请重新填写');
         })
         .catch(() => {
@@ -232,8 +219,7 @@
           console.log(err);
         })
         .finally(() => {
-          resetDraw();
-          emit('upload-work-data');
+          emit('onOk');
         });
     }
   };
@@ -242,7 +228,7 @@
   const editedSub = (formEl: FormInstance | undefined) => {
     if (!formEl) return;
     if (props.allCodes.indexOf(ruleForm.code) > -1) {
-      if (props.editedItem.code !== ruleForm.code) {
+      if (props.detail.code !== ruleForm.code) {
         ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
           confirmButtonText: '确认',
           cancelButtonText: '取消',
@@ -260,18 +246,18 @@
 
     const editNewWorkshopData = {
       code: ruleForm.code,
-      sceneLabelId: ruleForm.tagWorkshop,
+      sceneLabelId: ruleForm.tagWorkshop!,
       name: ruleForm.name,
-      status: Number(addEnable.value),
-      id: props.editedItem.id,
+      status: Number(ruleForm.addEnable),
+      id: props.detail.id,
     };
 
     editWorkshop(editNewWorkshopData)
       .then(() => {
         const editWorkshopModule = {
           isDeleted: 0,
-          workshopId: props.editedItem.id,
-          workshopModuleId: ruleForm.templateWorkshop,
+          workshopId: props.detail.id,
+          workshopModuleId: ruleForm.templateWorkshop!,
         };
         return editWorkshopModuleLabel(editWorkshopModule);
       })
@@ -279,8 +265,7 @@
         console.log(err);
       })
       .finally(() => {
-        resetDraw();
-        emit('edit-work-data');
+        emit('subOk');
       });
   };
 
@@ -288,14 +273,10 @@
   const resetDraw = () => {
     ruleForm.name = '';
     ruleForm.code = '';
-    ruleForm.sceneCode = '';
-    addEnable.value = 0;
-    selectItems.value = [{ tag: '', template: '' }];
-    ruleForm.principal = '';
-    ruleForm.templateWorkshop = undefined;
-    ruleForm.tagWorkshop = undefined;
+    ruleForm.addEnable = ENABLED.TRUE;
+    ruleForm.templateWorkshop = null;
+    ruleForm.tagWorkshop = null;
   };
-  defineExpose({ resetDraw, receiveDataFromParent, receiveSeniorScene });
 </script>
 
 <style scoped>

+ 53 - 70
src/views/dashboard/monitor/WorkspaceDrawer.vue

@@ -2,14 +2,13 @@
   <div>
     <el-drawer
       class="test"
-      v-model="showDrawerSpace"
-      @open="() => emit('update-tab-com', true)"
-      @close="() => emit('update-tab-com', false)"
+      :model-value="true"
+      @close="() => emit('onClose')"
       with-header="true"
       size="35%"
     >
       <template #header="{ titleId }">
-        <p :id="titleId">{{ props.addTitle }}</p>
+        <p :id="titleId">{{ title }}</p>
       </template>
       <el-form
         ref="ruleFormRef"
@@ -34,7 +33,7 @@
         </el-form-item>
         <el-form-item label="状态">
           <el-switch
-            v-model="addEnable"
+            v-model="ruleForm.addEnable"
             :active-value="ENABLED.TRUE"
             :inactive-value="ENABLED.FALSE"
             class="switchUse"
@@ -42,35 +41,48 @@
         </el-form-item>
       </el-form>
       <div style="position: absolute; left: 108px; bottom: 67px">
-        <el-button v-if="!props.editWork" type="warning" @click="resetDraw">重置</el-button>
-        <el-button v-if="!editWork" type="primary" @click="addNewType"> 提交 </el-button>
-        <el-button v-if="editWork" type="primary" @click="editedSub"> 提交 </el-button>
+        <el-button v-if="!props.detail.principal" type="warning" @click="resetDraw">重置</el-button>
+        <el-button v-if="!props.detail.principal" type="primary" @click="addNewType">
+          提交
+        </el-button>
+        <el-button v-if="props.detail.principal" type="primary" @click="editedSub">
+          提交
+        </el-button>
       </div>
     </el-drawer></div
   >
 </template>
 
 <script setup lang="ts">
-  import { computed, reactive, ref, defineProps, defineEmits } from 'vue';
+  import { computed, reactive, ref, defineProps, defineEmits, watch } from 'vue';
   import { ENABLED } from './constant';
   import { ElMessageBox, type FormInstance, type FormRules } from 'element-plus';
-  import { WorkspaceAddDatas, addWorkspace, editWorkspace } from '@/api/scene/sceneOperate';
+  import { addWorkspace, editWorkspace } from '@/api/scene/sceneOperate';
 
   const props = defineProps<{
-    tableWorkspace: boolean;
-    addTitle: string;
     allCodes: string[];
-    editWork: boolean;
-    addEnable: ENABLED;
-    editedItem: WorkspaceAddDatas;
+    detail: {
+      id?: number;
+      name?: string;
+      code?: string;
+      seniorScene?: string;
+      principal?: string;
+      addEnable?: ENABLED;
+    };
   }>();
 
-  const addEnable = ref(ENABLED.TRUE);
-
-  //将表单数据传至父组件
-  const emit = defineEmits(['upload-work-data', 'edit-work-data', 'update-tab-com']);
+  const emit = defineEmits<{
+    (e: 'onOk'): unknown;
+    (e: 'onClose'): unknown;
+    (e: 'subOk'): unknown;
+  }>();
 
-  const showDrawerSpace = computed(() => props.tableWorkspace);
+  const title = computed(() => {
+    if (props.detail.principal) {
+      return '编辑工位';
+    }
+    return '添加工位';
+  });
 
   //表格中的规则
   const ruleFormRef = ref<FormInstance>();
@@ -79,23 +91,15 @@
     name: string; //名称
     seniorScene: string; //上级场景
     code: string; //代码
-    sceneCode: string; //场景代码
-    tagCom?: string[]; //公司场景标签 可选多个
-    templateCom?: string[]; //公司场景模板 可选多个
-    tagWorkshop?: number; //场景标签  车间
-    templateWorkshop?: number; //车间模板
     principal?: string; //负责人
+    addEnable?: ENABLED;
   }
   const ruleForm = reactive<RuleForm>({
     name: '',
     seniorScene: '',
     code: '',
-    sceneCode: '',
-    tagCom: [],
-    templateCom: [],
-    tagWorkshop: undefined,
-    templateWorkshop: undefined,
     principal: '',
+    addEnable: ENABLED.TRUE,
   });
   const rules = reactive<FormRules>({
     name: [
@@ -110,40 +114,23 @@
       { required: true, message: '', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
     ],
-    sceneCode: [
-      { required: true, message: '', trigger: 'blur' },
-      { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    ],
-    tagCom: [{ required: true, message: '', trigger: 'blur' }],
-    templateCom: [{ required: true, message: '', 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' },
-      { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
-    ],
     principal: [
       { required: true, message: '', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 1 to 100', trigger: 'blur' },
     ],
   });
 
-  //编辑时需要传入子组件的数据
-  const receiveDataFromParent = (data: RuleForm, addEnableParent) => {
-    ruleForm.name = data.name;
-    ruleForm.seniorScene = data.seniorScene;
-    ruleForm.code = data.code;
-    ruleForm.tagWorkshop = data.tagWorkshop;
-    ruleForm.templateWorkshop = data.templateWorkshop;
-    ruleForm.principal = data.principal;
-    addEnable.value = addEnableParent;
-  };
-
-  const receiveSeniorScene = (seniorScene) => {
-    ruleForm.seniorScene = seniorScene;
-  };
+  watch(
+    () => props.detail,
+    (data) => {
+      ruleForm.name = data.name!;
+      ruleForm.seniorScene = data.seniorScene!;
+      ruleForm.code = data.code!;
+      ruleForm.principal = data.principal;
+      ruleForm.addEnable = data.addEnable;
+    },
+    { immediate: true },
+  );
 
   //添加新公司的提交
   const addNewType = (formEl: FormInstance | undefined) => {
@@ -164,11 +151,11 @@
     } else {
       const newAddData = {
         code: ruleForm.code,
-        workshopId: props.editedItem.id,
+        workshopId: props.detail.id,
         isDeleted: 0,
         name: ruleForm.name,
         principal: ruleForm.principal,
-        status: Number(addEnable.value),
+        status: Number(ruleForm.addEnable),
         serial: 0,
       };
       addWorkspace(newAddData)
@@ -179,8 +166,7 @@
           console.log(err);
         })
         .finally(() => {
-          resetDraw();
-          emit('upload-work-data');
+          emit('onOk');
         });
     }
   };
@@ -190,7 +176,7 @@
     if (!formEl) return;
 
     if (props.allCodes.indexOf(ruleForm.code) > -1) {
-      if (props.editedItem.code !== ruleForm.code) {
+      if (props.detail.code !== ruleForm.code) {
         ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
           confirmButtonText: '确认',
           cancelButtonText: '取消',
@@ -209,8 +195,8 @@
     const editNewWorkspaceData = {
       code: ruleForm.code,
       name: ruleForm.name,
-      status: Number(addEnable.value),
-      id: props.editedItem.id,
+      status: Number(ruleForm.addEnable),
+      id: props.detail.id,
       principal: ruleForm.principal,
     };
 
@@ -223,8 +209,7 @@
         console.log(err);
       })
       .finally(() => {
-        resetDraw();
-        emit('edit-work-data');
+        emit('subOk');
       });
   };
 
@@ -232,11 +217,9 @@
   const resetDraw = () => {
     ruleForm.name = '';
     ruleForm.code = '';
-    ruleForm.sceneCode = '';
-    addEnable.value = 0;
+    ruleForm.addEnable = ENABLED.TRUE;
     ruleForm.principal = '';
   };
-  defineExpose({ resetDraw, receiveDataFromParent, receiveSeniorScene });
 </script>
 
 <style scoped>

+ 0 - 8
src/views/dashboard/monitor/actionColomns.vue

@@ -36,16 +36,10 @@
       style="margin-right: 10px; cursor: pointer"
       alt=""
     />
-
-    <!-- <el-button class="otp-btn" type="primary" @click="changeSubscribe">预约</el-button>
-    <el-button class="otp-btn" type="danger" @click="changeSubscribe">取消</el-button> -->
   </div>
 </template>
 
 <script setup lang="ts">
-  // import { computed } from 'vue';
-  //   import { SubscribeItem } from '@/api/subscribe/subscribe';
-
   interface User {
     name?: string;
     tag?: string;
@@ -65,8 +59,6 @@
     handleDown: (row) => unknown;
   }>();
 
-  // const isBook = computed(() => (props.subscribeItem.booking === '0' ? true : false));
-
   const changeConig = () => {
     props.handleConig(props.subItem);
   };

+ 9 - 3
src/views/dashboard/monitor/constant.ts

@@ -4,7 +4,13 @@ export enum ENABLED {
 }
 
 export enum DATA_LEVEL {
-  'first' = 0,
-  'second' = 1,
-  'third' = 2,
+  'company' = 0,
+  'workshop' = 1,
+  'workspace' = 2,
+}
+
+export enum DrawerType {
+  company = 'company',
+  workshop = 'workshop',
+  workspace = 'workspace',
 }

+ 100 - 152
src/views/dashboard/monitor/monitor.vue

@@ -1,4 +1,3 @@
-<!-- eslint-disable vue/v-on-event-hyphenation -->
 <template>
   <page-wrapper>
     <el-card :bordered="false" class="proCard" style="position: relative">
@@ -42,55 +41,37 @@
     </el-card>
 
     <!-- 添加的抽屉内容 -->
-
     <!-- 公司 -->
-
     <CompanyDrawer
-      ref="companyDrawerChild"
-      :table-com="tableCom"
-      :companyAddTitle="companyAddTitle"
+      v-if="showDrawer === DrawerType.company"
       :comEdit="comEdit"
       :sceneList="sceneList"
       :templateList="templateList"
-      :selectItems="selectItems"
-      :addEnable="addEnable"
+      :detail="detail"
       :allCodes="allCodes"
-      :editedItem="editedItem"
-      @upload-company-data="addNewTypeCom"
-      @edit-company-data="editedSubCom"
-      @update-tab-com="handleUpdateTableCom"
+      @sub-ok="addNewTypeCom"
+      @edit-ok="editedSubCom"
+      @on-close="handleUpdateTableCom"
     />
-
     <!-- 车间 -->
-
     <WorkshopDrawer
-      ref="workshopDrawerChild"
-      :table-workshop="tableWorkshop"
-      :add-title="addTitle"
-      :tag-list="tagList"
+      v-if="showDrawer === DrawerType.workshop"
       :workshopTemplateList="workshopTemplateList"
-      :add-enable="addEnable"
-      :editWork="workshopEdit"
-      :editedItem="editedItem"
+      :detail="detail"
       :allCodes="allCodes"
-      @update-tab-com="handleUpdataWorkshopTab"
-      @upload-work-data="addNewWorkshop"
-      @edit-work-data="editedSubWorkshop"
+      @on-close="handleUpdataWorkshopTab"
+      @on-ok="addNewWorkshop"
+      @sub-ok="editedSubWorkshop"
     />
 
     <!-- 工位 -->
-
     <WorkspaceDrawer
-      ref="workspaceDrawerChild"
-      :tableWorkspace="tableWorkspace"
-      :add-title="addTitle"
-      :add-enable="addEnable"
-      :editWork="workspaceEdit"
+      v-if="showDrawer === DrawerType.workspace"
       :allCodes="allCodes"
-      :editedItem="editedItem"
-      @update-tab-com="handleUpdataWorkspaceTab"
-      @upload-work-data="addNewWorkspace"
-      @edit-work-data="editedSubWorkspace"
+      :detail="detail"
+      @on-close="handleUpdataWorkspaceTab"
+      @on-ok="addNewWorkspace"
+      @sub-ok="editedSubWorkspace"
     />
   </page-wrapper>
 </template>
@@ -104,7 +85,7 @@
   import CompanyDrawer from './CompanyDrawer.vue';
   import WorkshopDrawer from './WorkshopDrawer.vue';
   import WorkspaceDrawer from './WorkspaceDrawer.vue';
-  import { DATA_LEVEL, ENABLED } from './constant';
+  import { DATA_LEVEL, DrawerType, ENABLED } from './constant';
   import {
     colomns,
     dataSourceWithParent,
@@ -120,7 +101,6 @@
     delWorkshop,
     WorkspaceAddDatas,
     delWorkspace,
-    LabelModuleListType,
     sortSceneList,
   } from '@/api/scene/sceneOperate';
   import useScene from './use-scene';
@@ -131,61 +111,26 @@
   const useSceneTempleteDetail = useSceneTemplete();
   const { sceneList, templateList, workshopTemplateList } = useSceneTempleteDetail;
 
-  // 新增类型的参数值
-  const addEnable = ref(ENABLED.TRUE); //启动按钮的值
-
-  //表格中的规则
-
-  interface RuleForm {
-    name: string; //名称
-    seniorScene: string; //上级场景
-    code: string; //代码
-    sceneCode: string; //场景代码
-    tagCom?: string[]; //公司场景标签 可选多个
-    templateCom?: string[]; //公司场景模板 可选多个
-    tagWorkshop?: number; //场景标签  车间
-    templateWorkshop?: number; //车间模板
-    principal?: string; //负责人
-  }
-  const ruleForm = reactive<RuleForm>({
-    name: '',
-    seniorScene: '',
-    code: '',
-    sceneCode: '',
-    tagCom: [],
-    templateCom: [],
-    tagWorkshop: undefined,
-    templateWorkshop: undefined,
-    principal: '',
-  });
-
-  //添加组件的添加功能
-  const tableWorkshop = ref(false); //车间的drawer开关
-  const tableWorkspace = ref(false); //工位的drawer开关
-  const tableCom = ref(false); //公司的drawer开关
+  const showDrawer = ref<DrawerType | null>(null);
 
   //改变el-drawer公司的状态
-  const handleUpdateTableCom = (val: boolean) => {
-    tableCom.value = val;
+  const handleUpdateTableCom = () => {
+    showDrawer.value = null;
   };
 
   //改变el-drawer车间的状态
-  const handleUpdataWorkshopTab = (showDrawer) => {
-    tableWorkshop.value = showDrawer;
+  const handleUpdataWorkshopTab = () => {
+    showDrawer.value = null;
   };
 
   //改变el-drawer工位的状态
-  const handleUpdataWorkspaceTab = (showDrawer) => {
-    tableWorkspace.value = showDrawer;
+  const handleUpdataWorkspaceTab = () => {
+    showDrawer.value = null;
   };
 
-  //公司el-drawer的标题
-  const companyAddTitle = ref('');
   //是否公司编辑
   const comEdit = ref<boolean>(false);
 
-  const addTitle = ref('');
-
   const level = ref<number>();
 
   onMounted(() => {
@@ -209,18 +154,15 @@
   const handlePageNumChange = () => {};
   const handlePageSizeChange = () => {};
 
-  const companyDrawerChild = ref();
-  const workshopDrawerChild = ref();
-  const workspaceDrawerChild = ref();
-
   const companyAdd = () => {
-    tableCom.value = true;
-    if (companyDrawerChild.value) {
-      companyDrawerChild.value.resetDrawCom(); // 这里假设resetDraw是子组件中用于重置的方法
-    }
-    addEnable.value = ENABLED.TRUE;
-    // ruleForm.seniorScene = '顶级场景';
-    companyAddTitle.value = '添加公司';
+    showDrawer.value = DrawerType.company;
+    detail.value = {
+      seniorScene: '顶级场景',
+      selectItems: [{ tag: '', template: '' }],
+      addEnable: ENABLED.TRUE,
+      name: '',
+      code: '',
+    };
     comEdit.value = false;
   };
 
@@ -234,23 +176,18 @@
   //添加公司场景的提交按钮
   const addNewTypeCom = () => {
     getSceneDetail();
-    tableCom.value = false;
+    showDrawer.value = null;
   };
 
-  //判断是否是车间的编辑
-  const workshopEdit = ref<boolean>(true);
-  //判断是否工位的编辑
-  const workspaceEdit = ref<boolean>(true);
-
   //新增车间
   const addNewWorkshop = () => {
     getSceneDetail();
-    tableWorkshop.value = false;
+    showDrawer.value = null;
   };
 
   const addNewWorkspace = () => {
     getSceneDetail();
-    tableWorkspace.value = false;
+    showDrawer.value = null;
   };
 
   //操作列
@@ -280,33 +217,41 @@
 
   const handleAdd = (row) => {
     editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem 中,以便编辑
-    workshopEdit.value = false;
-    workspaceEdit.value = false;
     //得出当前的数据的层级
     level.value = findItemLevel(tableData.value, row.id, row.name);
 
-    if (level.value === DATA_LEVEL.first) {
-      addTitle.value = '添加车间';
-      tableWorkshop.value = true;
-      workshopDrawerChild.value.receiveSeniorScene(row.name);
-      workshopDrawerChild.value.resetDraw();
-      tagList.value = row?.labelList;
-    } else if (level.value === DATA_LEVEL.second) {
-      console.log('22');
-      addTitle.value = '添加工位';
-      tableWorkspace.value = true;
-      workspaceDrawerChild.value.receiveSeniorScene(row.name);
-      workspaceDrawerChild.value.resetDraw();
+    if (level.value === DATA_LEVEL.company) {
+      showDrawer.value = DrawerType.workshop;
+      detail.value = {
+        id: editedItem.value?.id,
+        seniorScene: editedItem.value?.name,
+        tagList: row?.labelList,
+        addEnable: ENABLED.TRUE,
+        name: '',
+        code: '',
+        tagWorkshop: null,
+        templateWorkshop: null,
+      };
+    } else if (level.value === DATA_LEVEL.workshop) {
+      detail.value = {
+        id: editedItem.value?.id,
+        seniorScene: editedItem.value?.name,
+        addEnable: ENABLED.TRUE,
+        name: '',
+        code: '',
+        principal: '',
+      };
+      showDrawer.value = DrawerType.workspace;
     } else {
       return;
     }
   };
 
-  //添加车间中的场景标签
-  const tagList = ref<LabelModuleListType[]>([]);
-
   //公司,车间,工位的模板数据
-  const editedItem = ref<ComAddDatas | WorkshopAddDatas | WorkspaceAddDatas>({});
+  const editedItem = ref<ComAddDatas | WorkshopAddDatas | WorkspaceAddDatas | null>(null);
+
+  //点击编辑时显示的数据内容
+  const detail = ref({});
 
   // 在这里实现删除行的函数
   const handleDelete = (row: Recordable) => {
@@ -331,9 +276,9 @@
       })
         .then(() => {
           //删除接口的调用
-          if (level.value === DATA_LEVEL.first) {
+          if (level.value === DATA_LEVEL.company) {
             return delCompany(row.id);
-          } else if (level.value === DATA_LEVEL.second) {
+          } else if (level.value === DATA_LEVEL.workshop) {
             return delWorkshop(row.id);
           } else {
             return delWorkspace(row.id);
@@ -350,12 +295,9 @@
 
   const handleEdit = (row) => {
     editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem 中,以便编辑
-    workshopEdit.value = true;
-    workspaceEdit.value = true;
     level.value = findItemLevel(tableData.value, row.id, row.name);
-    if (level.value === DATA_LEVEL.first) {
-      tableCom.value = true;
-      companyAddTitle.value = '编辑公司';
+    if (level.value === DATA_LEVEL.company) {
+      showDrawer.value = DrawerType.company;
       comEdit.value = true;
       //复原公司选择的场景集合
       if (row.labelList && Array.isArray(row.labelList)) {
@@ -364,33 +306,39 @@
           template: row.moduleList[index].id,
         }));
       }
-
-      companyDrawerChild.value.receiveDataFromParent(editedItem.value, selectItems.value);
-    } else if (level.value === DATA_LEVEL.second) {
-      addTitle.value = '编辑车间';
-      tableWorkshop.value = true;
-      ruleForm.name = editedItem.value.name!;
-      //使用ts 类型守卫
-      ruleForm.seniorScene = editedItem.value.parent.name;
-      ruleForm.code = editedItem.value.code!;
-      addEnable.value = editedItem.value.status!;
-      tagList.value = editedItem.value.parent?.labelList;
-      ruleForm.tagWorkshop = editedItem.value.sceneLabelId;
-      ruleForm.templateWorkshop = editedItem.value.workshopModule.id;
-      // console.log('ruleForm.seniorScene', ruleForm.seniorScene);
-
-      workshopDrawerChild.value.receiveDataFromParent(ruleForm, addEnable.value);
-    } else if (level.value === DATA_LEVEL.third) {
-      addTitle.value = '编辑工位';
-      // addName.value = '工位名称';
-      // addCodeName.value = '工位代码';
-      tableWorkspace.value = true;
-      ruleForm.name = editedItem.value.name!;
-      ruleForm.seniorScene = editedItem.value.parent.name;
-      ruleForm.code = editedItem.value.code!;
-      addEnable.value = editedItem.value.status!;
-      ruleForm.principal = (editedItem.value as WorkspaceAddDatas).principal!;
-      workspaceDrawerChild.value.receiveDataFromParent(ruleForm, addEnable.value);
+      detail.value = {
+        id: editedItem.value?.id,
+        name: editedItem.value!.name,
+        code: editedItem.value!.code,
+        seniorScene: '顶级场景',
+        addEnable: editedItem.value!.status,
+        selectItems: selectItems.value,
+      };
+    } else if (level.value === DATA_LEVEL.workshop && 'companyId' in editedItem.value!) {
+      showDrawer.value = DrawerType.workshop;
+
+      detail.value = {
+        id: editedItem.value.id,
+        name: editedItem.value.name,
+        code: editedItem.value.code,
+        seniorScene: editedItem.value.parent?.name || '',
+        tagWorkshop: editedItem.value.sceneLabelId,
+        templateWorkshop: editedItem.value.workshopModule?.id,
+        addEnable: editedItem.value.status,
+        tagList: editedItem.value.parent?.labelList || [],
+        companyId: editedItem.value.companyId,
+      };
+    } else if (level.value === DATA_LEVEL.workspace && 'workshopId' in editedItem.value!) {
+      detail.value = {
+        id: editedItem.value.id,
+        name: editedItem.value.name,
+        code: editedItem.value.code,
+        seniorScene: editedItem.value.parent?.name || '',
+        principal: editedItem.value.principal,
+        addEnable: editedItem.value.status,
+      };
+
+      showDrawer.value = DrawerType.workspace;
     }
   };
 
@@ -399,19 +347,19 @@
   //编辑公司的提交按钮
   const editedSubCom = () => {
     getSceneDetail();
-    tableCom.value = false;
+    showDrawer.value = null;
   };
 
   //编辑车间的提交按钮
   const editedSubWorkshop = () => {
     getSceneDetail();
-    tableWorkshop.value = false;
+    showDrawer.value = null;
   };
 
   //编辑工位的提交按钮
   const editedSubWorkspace = () => {
     getSceneDetail();
-    tableWorkspace.value = false;
+    showDrawer.value = null;
   };
 
   //向上排序

+ 0 - 50
src/views/dashboard/monitor/use-method.ts

@@ -167,56 +167,6 @@ export const deleteTableRow = (dataSource, targetId) => {
   deleteRecursive(dataSource);
 };
 
-//行的编辑提交功能
-export const editTableRow = (
-  dataSource,
-  targetId,
-  level,
-  name,
-  newName,
-  newCode,
-  newStatus,
-  newLeader = '',
-  newTemplete = '',
-  newTag = 0,
-  newToptag = [] as unknown as string[],
-) => {
-  const editTRecursive = (data) => {
-    for (let i = 0; i < data.length; i++) {
-      const currentItem = data[i];
-
-      if (currentItem.id === targetId) {
-        // 修改
-        currentItem.name = newName;
-        currentItem.code = newCode;
-        currentItem.status = newStatus;
-        if (level === 0) {
-          currentItem.Toptag = newToptag;
-        } else if (level === 1) {
-          currentItem.companyLabelId = newTag;
-          currentItem.templete = newTemplete;
-        } else if (level === 2) {
-          currentItem.leader = newLeader;
-        }
-
-        return true;
-      }
-
-      // 如果有子项,递归查找
-      if (currentItem.children && currentItem.children.length > 0) {
-        const found = editTRecursive(currentItem.children);
-
-        if (found) {
-          return true; // 如果在子项中找到目标项,停止继续查找
-        }
-      }
-    }
-    return false; // 表示未找到目标项
-  };
-
-  editTRecursive(dataSource);
-};
-
 //找出数据中的全部code
 export const flattenCodes = (data) => {
   const codes: string[] = [];

+ 0 - 6
src/views/dashboard/monitor/use-sence-templete.ts

@@ -14,12 +14,7 @@ export function useSceneTemplete() {
 
   const getSceneLabel = () => {
     querySceneLabel().then((res) => {
-      console.log(11111122);
       sceneList.value = res;
-      console.log('sceneList.value', sceneList.value);
-      // sceneList.value = sceneList.value.map((item) => {
-      //   return { id: item.id, name: item.name };
-      // });
     });
   };
 
@@ -27,7 +22,6 @@ export function useSceneTemplete() {
   const templateList = ref<TemplateType[]>([]);
 
   const getTemplete = () => {
-    console.log(23333);
     querytemplate().then((res) => {
       templateList.value = res;
       console.log('templateList.value', templateList.value);