zhudie 2 лет назад
Родитель
Сommit
a2af3bf707

+ 21 - 16
src/api/scene/sceneOperate.ts

@@ -1,5 +1,5 @@
 import { http } from '@/utils/http/axios';
 import { http } from '@/utils/http/axios';
-import { workShopTempleteType } from './secene-templet';
+import { WorkShopTempleteType } from './secene-templet';
 
 
 // 传入参数类型    还缺个场景list
 // 传入参数类型    还缺个场景list
 export interface ComAddDatas {
 export interface ComAddDatas {
@@ -7,7 +7,7 @@ export interface ComAddDatas {
   createdAt?: string; //创建时间
   createdAt?: string; //创建时间
   id?: number; //新增后返回的唯一com的id
   id?: number; //新增后返回的唯一com的id
   isDeleted?: number; //是否删除
   isDeleted?: number; //是否删除
-  name?: string; //公司名字
+  name: string; //公司名字
   parentId?: number; //上级公司id  无上级为0
   parentId?: number; //上级公司id  无上级为0
   remark?: string; //描述
   remark?: string; //描述
   status?: number; //状态  0-启动  1-禁用
   status?: number; //状态  0-启动  1-禁用
@@ -15,6 +15,7 @@ export interface ComAddDatas {
   serial?: number; //排序
   serial?: number; //排序
   // tag?: string; //场景标签   自定义  后面需要修改
   // tag?: string; //场景标签   自定义  后面需要修改
   labelList?: string[]; //创建的多个场景标签   自定义后面需要修改 这里没
   labelList?: string[]; //创建的多个场景标签   自定义后面需要修改 这里没
+  parent?: null | ComAddDatas;
 }
 }
 
 
 /**
 /**
@@ -50,18 +51,21 @@ export const delCompany = (companyId: number) => {
 };
 };
 
 
 // 传入参数类型
 // 传入参数类型
-export interface workshopAddDatas {
+export interface WorkshopAddDatas {
   code?: string;
   code?: string;
   companyId?: number; //公司id
   companyId?: number; //公司id
   sceneLabelId?: number; //类型  1-车间  2-危险点  3-物流  4-生活园区
   sceneLabelId?: number; //类型  1-车间  2-危险点  3-物流  4-生活园区
   createdAt?: string;
   createdAt?: string;
   id?: number;
   id?: number;
   isDeleted?: number;
   isDeleted?: number;
-  name?: string;
+  name: string;
   remark?: string;
   remark?: string;
   status?: number;
   status?: number;
   updatedAt?: string;
   updatedAt?: string;
   serial?: number;
   serial?: number;
+  parent?: null | WorkshopAddDatas;
+  workshopModule?: WorkShopTempleteType;
+  labelList?: WorkShopTempleteType;
   // templete?: string; //车间模板
   // templete?: string; //车间模板
   // tag?: string; //场景标签
   // tag?: string; //场景标签
 }
 }
@@ -69,7 +73,7 @@ export interface workshopAddDatas {
 /**
 /**
  * @description: 添加车间
  * @description: 添加车间
  */
  */
-export const addWorkshop = (data: workshopAddDatas): Promise<number> => {
+export const addWorkshop = (data: WorkshopAddDatas): Promise<number> => {
   return http.request({
   return http.request({
     url: '/scene/saveWorkshop',
     url: '/scene/saveWorkshop',
     method: 'post',
     method: 'post',
@@ -80,7 +84,7 @@ export const addWorkshop = (data: workshopAddDatas): Promise<number> => {
 /**
 /**
  * @description: 编辑车间
  * @description: 编辑车间
  */
  */
-export const editWorkshop = (data: workshopAddDatas): Promise<number> => {
+export const editWorkshop = (data: WorkshopAddDatas): Promise<number> => {
   return http.request({
   return http.request({
     url: '/scene/updateWorkshop',
     url: '/scene/updateWorkshop',
     method: 'put',
     method: 'put',
@@ -99,7 +103,7 @@ export const delWorkshop = (workshopId: number) => {
 };
 };
 
 
 // 传入参数类型
 // 传入参数类型
-export interface workspaceAddDatas {
+export interface WorkspaceAddDatas {
   code?: string;
   code?: string;
   createdAt?: string;
   createdAt?: string;
   id?: number;
   id?: number;
@@ -111,13 +115,14 @@ export interface workspaceAddDatas {
   serial?: number;
   serial?: number;
   updatedAt?: string;
   updatedAt?: string;
   workshopId?: number; //车间id
   workshopId?: number; //车间id
+  parent?: null | WorkspaceAddDatas;
   // tag?: string; //场景标签
   // tag?: string; //场景标签
 }
 }
 
 
 /**
 /**
  * @description: 添加工位
  * @description: 添加工位
  */
  */
-export const addWorkspace = (data: workspaceAddDatas): Promise<number> => {
+export const addWorkspace = (data: WorkspaceAddDatas): Promise<number> => {
   return http.request({
   return http.request({
     url: '/scene/saveWorkspace',
     url: '/scene/saveWorkspace',
     method: 'post',
     method: 'post',
@@ -128,7 +133,7 @@ export const addWorkspace = (data: workspaceAddDatas): Promise<number> => {
 /**
 /**
  * @description: 编辑工位
  * @description: 编辑工位
  */
  */
-export const editWorkspace = (data: workspaceAddDatas): Promise<number> => {
+export const editWorkspace = (data: WorkspaceAddDatas): Promise<number> => {
   return http.request({
   return http.request({
     url: '/scene/updateWorkspace',
     url: '/scene/updateWorkspace',
     method: 'put',
     method: 'put',
@@ -148,7 +153,7 @@ export const delWorkspace = (workspaceId: number) => {
 
 
 //获取列表
 //获取列表
 // 传入参数类型
 // 传入参数类型
-export interface sceneListType<T, S> {
+export interface SceneListType<T, S> {
   code?: string;
   code?: string;
   createdAt?: string;
   createdAt?: string;
   id?: number;
   id?: number;
@@ -164,7 +169,7 @@ export interface sceneListType<T, S> {
   moduleList?: S[]; //创建得多个模板
   moduleList?: S[]; //创建得多个模板
 }
 }
 
 
-export interface labelModuleListType {
+export interface LabelModuleListType {
   code?: string;
   code?: string;
   createdAt?: string;
   createdAt?: string;
   id?: number;
   id?: number;
@@ -175,7 +180,7 @@ export interface labelModuleListType {
   updatedAt?: string;
   updatedAt?: string;
 }
 }
 
 
-export interface getListWorkshop<U, A> {
+export interface GetListWorkshop<U, A> {
   code?: string;
   code?: string;
   companyId?: number; //公司id
   companyId?: number; //公司id
   sceneLabelId?: number; //类型  1-车间  2-危险点  3-物流  4-生活园区
   sceneLabelId?: number; //类型  1-车间  2-危险点  3-物流  4-生活园区
@@ -194,7 +199,7 @@ export interface getListWorkshop<U, A> {
 }
 }
 
 
 export const getSceneList = (): Promise<
 export const getSceneList = (): Promise<
-  sceneListType<getListWorkshop<workspaceAddDatas, workShopTempleteType>, labelModuleListType>[]
+  SceneListType<GetListWorkshop<WorkspaceAddDatas, WorkShopTempleteType>, LabelModuleListType>[]
 > => {
 > => {
   return http.request({
   return http.request({
     url: '/scene/getList',
     url: '/scene/getList',
@@ -204,9 +209,9 @@ export const getSceneList = (): Promise<
 
 
 //排序列表
 //排序列表
 export const sortSceneList = (
 export const sortSceneList = (
-  data: sceneListType<
-    getListWorkshop<workspaceAddDatas, workShopTempleteType>,
-    labelModuleListType
+  data: SceneListType<
+    GetListWorkshop<WorkspaceAddDatas, WorkShopTempleteType>,
+    LabelModuleListType
   >[],
   >[],
 ) => {
 ) => {
   return http.request({
   return http.request({

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

@@ -2,7 +2,7 @@ import { http } from '@/utils/http/axios';
 
 
 //查询场景标签
 //查询场景标签
 
 
-export interface sceneLabelType {
+export interface SceneLabelType {
   code?: string;
   code?: string;
   createdAt?: string;
   createdAt?: string;
   id?: number;
   id?: number;
@@ -13,7 +13,7 @@ export interface sceneLabelType {
   updatedAt?: string;
   updatedAt?: string;
 }
 }
 
 
-export const querySceneLabel = (): Promise<sceneLabelType[]> => {
+export const querySceneLabel = (): Promise<SceneLabelType[]> => {
   return http.request({
   return http.request({
     url: '/template/findSceneLabel',
     url: '/template/findSceneLabel',
     method: 'get',
     method: 'get',
@@ -22,7 +22,7 @@ export const querySceneLabel = (): Promise<sceneLabelType[]> => {
 
 
 //查询场景模板
 //查询场景模板
 
 
-export interface templateType {
+export interface TemplateType {
   code?: string;
   code?: string;
   createdAt?: string;
   createdAt?: string;
   id?: number;
   id?: number;
@@ -33,7 +33,7 @@ export interface templateType {
   updatedAt?: string;
   updatedAt?: string;
 }
 }
 
 
-export const querytemplate = (): Promise<templateType[]> => {
+export const querytemplate = (): Promise<TemplateType[]> => {
   return http.request({
   return http.request({
     url: '/template/findSceneModule',
     url: '/template/findSceneModule',
     method: 'get',
     method: 'get',
@@ -110,7 +110,7 @@ export const editCompanyModuleLabel = (data: SceneTempleteType[]) => {
 };
 };
 
 
 //保存车间-车间模板关系
 //保存车间-车间模板关系
-export interface workShopTempleteType {
+export interface WorkShopTempleteType {
   id?: number;
   id?: number;
   workshopId?: number;
   workshopId?: number;
   workshopModuleId?: number;
   workshopModuleId?: number;
@@ -120,7 +120,7 @@ export interface workShopTempleteType {
   updatedAt?: string;
   updatedAt?: string;
 }
 }
 
 
-export const addWorkshopModuleLabel = (data: workShopTempleteType) => {
+export const addWorkshopModuleLabel = (data: WorkShopTempleteType) => {
   return http.request({
   return http.request({
     url: '/template/saveWorkshopModuleRel',
     url: '/template/saveWorkshopModuleRel',
     method: 'post',
     method: 'post',
@@ -128,7 +128,7 @@ export const addWorkshopModuleLabel = (data: workShopTempleteType) => {
   });
   });
 };
 };
 
 
-export const editWorkshopModuleLabel = (data: workShopTempleteType) => {
+export const editWorkshopModuleLabel = (data: WorkShopTempleteType) => {
   return http.request({
   return http.request({
     url: '/template/updateWorkshopModuleRel',
     url: '/template/updateWorkshopModuleRel',
     method: 'post',
     method: 'post',

+ 124 - 27
src/views/dashboard/monitor/CompanyDrawer.vue

@@ -14,7 +14,7 @@
       </template>
       </template>
       <el-form
       <el-form
         ref="ruleFormRef"
         ref="ruleFormRef"
-        :model="ruleForm1"
+        :model="ruleForm"
         :rules="rules"
         :rules="rules"
         label-width="90px"
         label-width="90px"
         class="demo-ruleForm"
         class="demo-ruleForm"
@@ -22,13 +22,13 @@
         status-icon
         status-icon
       >
       >
         <el-form-item label="公司名称" prop="name">
         <el-form-item label="公司名称" prop="name">
-          <el-input v-model="ruleForm1.name" style="width: 200px" />
+          <el-input v-model="ruleForm.name" style="width: 200px" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="上级场景" prop="seniorScene">
         <el-form-item label="上级场景" prop="seniorScene">
-          <el-input v-model="ruleForm1.seniorScene" style="width: 200px" disabled />
+          <el-input v-model="ruleForm.seniorScene" style="width: 200px" disabled />
         </el-form-item>
         </el-form-item>
         <el-form-item label="公司代码" prop="code">
         <el-form-item label="公司代码" prop="code">
-          <el-input v-model="ruleForm1.code" style="width: 200px" />
+          <el-input v-model="ruleForm.code" style="width: 200px" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="标签&模板" prop="sceneCode">
         <el-form-item label="标签&模板" prop="sceneCode">
           <div style="width: 200px; height: 30px"></div>
           <div style="width: 200px; height: 30px"></div>
@@ -93,11 +93,17 @@
 
 
 <script setup lang="ts">
 <script setup lang="ts">
   import { computed, reactive, ref, defineProps, defineEmits } from 'vue';
   import { computed, reactive, ref, defineProps, defineEmits } from 'vue';
-  import { sceneLabelType, templateType } from '@/api/scene/secene-templet';
-  import { ENABLED } from './use-method';
+  import {
+    addCompanyModuleLabel,
+    editCompanyModuleLabel,
+    SceneLabelType,
+    TemplateType,
+  } from '@/api/scene/secene-templet';
+  import { ENABLED } from './constant';
   import type { FormInstance, FormRules } from 'element-plus';
   import type { FormInstance, FormRules } from 'element-plus';
   import { ElMessageBox } from 'element-plus';
   import { ElMessageBox } from 'element-plus';
   import { CirclePlus } from '@element-plus/icons-vue';
   import { CirclePlus } from '@element-plus/icons-vue';
+  import { ComAddDatas, addCompany, editCompany } from '@/api/scene/sceneOperate';
 
 
   interface SelectItemType {
   interface SelectItemType {
     tag: string;
     tag: string;
@@ -107,9 +113,10 @@
   const props = defineProps<{
   const props = defineProps<{
     tableCom: boolean;
     tableCom: boolean;
     companyAddTitle: string;
     companyAddTitle: string;
-    sceneList: sceneLabelType[];
-    templateList: templateType[];
-    ruleForm: RuleForm;
+    sceneList: SceneLabelType[];
+    templateList: TemplateType[];
+    allCodes: string[];
+    editedItem: ComAddDatas;
     addEnable: ENABLED;
     addEnable: ENABLED;
     comEdit: boolean;
     comEdit: boolean;
   }>();
   }>();
@@ -142,7 +149,7 @@
     templateWorkshop?: number; //车间模板
     templateWorkshop?: number; //车间模板
     principal?: string; //负责人
     principal?: string; //负责人
   }
   }
-  const ruleForm1 = reactive<RuleForm>({
+  const ruleForm = reactive<RuleForm>({
     name: '',
     name: '',
     seniorScene: '顶级场景',
     seniorScene: '顶级场景',
     code: '',
     code: '',
@@ -153,7 +160,7 @@
     templateWorkshop: undefined,
     templateWorkshop: undefined,
     principal: '',
     principal: '',
   });
   });
-  const rules = reactive<FormRules<RuleForm>>({
+  const rules = reactive<FormRules>({
     name: [
     name: [
       { required: true, message: '', trigger: 'blur' },
       { required: true, message: '', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 3 to 5', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 3 to 5', trigger: 'blur' },
@@ -196,9 +203,9 @@
 
 
   //编辑时编辑时将父组件的数据传递给子组件
   //编辑时编辑时将父组件的数据传递给子组件
   const receiveDataFromParent = (data, selectItemsParent) => {
   const receiveDataFromParent = (data, selectItemsParent) => {
-    ruleForm1.name = data.name;
-    ruleForm1.code = data.code;
-    ruleForm1.seniorScene = '顶级场景';
+    ruleForm.name = data.name;
+    ruleForm.code = data.code;
+    ruleForm.seniorScene = '顶级场景';
     addEnable.value = data.status;
     addEnable.value = data.status;
     selectItems.value = selectItemsParent;
     selectItems.value = selectItemsParent;
   };
   };
@@ -225,30 +232,120 @@
   //添加新公司的提交
   //添加新公司的提交
   const newCompanyAdd = (formEl: FormInstance | undefined) => {
   const newCompanyAdd = (formEl: FormInstance | undefined) => {
     if (!formEl) return;
     if (!formEl) return;
-    console.log('addEnable22', addEnable.value);
+    if (props.allCodes.indexOf(ruleForm.code) > -1) {
+      ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'error',
+      })
+        .then(() => {
+          // ruleFormCom.code = '';
+          console.log('场景代码重复,请重新填写');
+        })
+        .catch(() => {
+          console.log('取消删除物件');
+        });
+    } else {
+      const newComData = {
+        name: ruleForm.name,
+        code: ruleForm.code,
+        status: Number(addEnable.value),
+        isDeleted: 0,
+        parentId: 0,
+        serial: 0,
+      };
+      //提交数据并重置关闭el-draw
+      addCompany(newComData)
+        .then((res) => {
+          //选出不为空字符串的数据
+          selectItems.value = selectItems.value.filter((item) => {
+            return item.tag && item.template;
+          });
+          //将selectItems加工成保存公司-模板的数据类型
+          const newModuleLabel = selectItems.value.map((item) => {
+            return {
+              companyId: res,
+              isDeleted: 0,
+              sceneLabelId: Number(item.tag), //item.tag
+              sceneModuleId: Number(item.template), ///item.template
+            };
+          });
 
 
-    emit('upload-company-data', ruleForm1, selectItems, addEnable, () => {
-      resetDrawCom();
-    });
+          //保存公司-场景标签-场景模板关系
+          return addCompanyModuleLabel(newModuleLabel);
+        })
+        .catch((err) => {
+          console.log(err);
+        })
+        .finally(() => {
+          resetDrawCom();
+          emit('upload-company-data');
+        });
+    }
   };
   };
 
 
   //编辑公司时的提交
   //编辑公司时的提交
-  const editedSub = () => {
-    emit('edit-company-data', ruleForm1, selectItems, addEnable, () => {
-      resetDrawCom();
+  const editedSub = (formEl: FormInstance | undefined) => {
+    if (!formEl) return;
+    if (props.allCodes.indexOf(ruleForm.code) > -1) {
+      if (props.editedItem.code !== ruleForm.code) {
+        ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
+          confirmButtonText: '确认',
+          cancelButtonText: '取消',
+          type: 'error',
+        })
+          .then(() => {
+            // ruleForm.workshopCode = '';
+            console.log('代码重复');
+          })
+          .catch(() => {
+            console.log('取消删除物件');
+          });
+        return;
+      }
+    }
+
+    selectItems.value = selectItems.value.filter((item) => {
+      return item.tag && item.template;
     });
     });
+
+    //新增的数据
+    const editNewCom = {
+      id: props.editedItem.id,
+      name: ruleForm.name,
+      code: ruleForm.code,
+      status: Number(addEnable.value),
+    };
+    // 编辑上传
+    editCompany(editNewCom)
+      .then(() => {
+        //保存公司-场景标签-场景模板关系
+        const editModuleLabel = selectItems.value.map((item) => {
+          return {
+            companyId: props.editedItem.id,
+            isDeleted: 0,
+            sceneLabelId: Number(item.tag), //item.tag
+            sceneModuleId: Number(item.template), ///item.template
+          };
+        });
+        return editCompanyModuleLabel(editModuleLabel);
+      })
+      .finally(() => {
+        emit('edit-company-data');
+        resetDrawCom();
+      });
   };
   };
 
 
   //重置编辑框
   //重置编辑框
   const resetDrawCom = () => {
   const resetDrawCom = () => {
-    ruleForm1.name = '';
-    ruleForm1.code = '';
-    ruleForm1.sceneCode = '';
+    ruleForm.name = '';
+    ruleForm.code = '';
+    ruleForm.sceneCode = '';
     addEnable.value = 0;
     addEnable.value = 0;
     selectItems.value = [{ tag: '', template: '' }];
     selectItems.value = [{ tag: '', template: '' }];
-    ruleForm1.principal = '';
-    ruleForm1.templateWorkshop = undefined;
-    ruleForm1.tagWorkshop = undefined;
+    ruleForm.principal = '';
+    ruleForm.templateWorkshop = undefined;
+    ruleForm.tagWorkshop = undefined;
   };
   };
 
 
   defineExpose({ resetDrawCom, receiveDataFromParent });
   defineExpose({ resetDrawCom, receiveDataFromParent });

+ 308 - 0
src/views/dashboard/monitor/WorkshopDrawer.vue

@@ -0,0 +1,308 @@
+<template>
+  <div>
+    <el-drawer
+      class="test"
+      v-model="showDrawer"
+      @open="() => emit('update-tab-com', true)"
+      @close="() => emit('update-tab-com', false)"
+      with-header="true"
+      size="35%"
+    >
+      <template #header="{ titleId }">
+        <p :id="titleId">{{ props.addTitle }}</p>
+      </template>
+      <el-form
+        ref="ruleFormRef"
+        :model="ruleForm"
+        :rules="rules"
+        label-width="120px"
+        class="demo-ruleForm"
+        size="default"
+        status-icon
+      >
+        <el-form-item label="车间名称" prop="name">
+          <el-input v-model="ruleForm.name" />
+        </el-form-item>
+        <el-form-item label="上级场景" prop="seniorScene">
+          <el-input v-model="ruleForm.seniorScene" disabled />
+        </el-form-item>
+        <el-form-item label="车间代码" prop="code">
+          <el-input v-model="ruleForm.code" />
+        </el-form-item>
+        <el-form-item label="场景标签" prop="tagWorkshop">
+          <el-radio-group
+            v-model="ruleForm.tagWorkshop"
+            size="10px"
+            style="display: flex; justify-content: space-between"
+          >
+            <el-radio-button
+              v-for="item in props.tagList"
+              :key="item.id"
+              :label="item.id!"
+              class="tag-select"
+              style="margin-right: 10px"
+              >{{ item.name }}</el-radio-button
+            >
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="车间模板" prop="templateWorkshop">
+          <el-radio-group
+            v-model="ruleForm.templateWorkshop"
+            size="10px"
+            style="display: flex; justify-content: space-between"
+          >
+            <el-radio-button
+              v-for="item in props.workshopTemplateList"
+              :key="item.id"
+              :label="item.id!"
+              class="tag-select"
+              >{{ item.name }}</el-radio-button
+            >
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="状态">
+          <el-switch
+            v-model="addEnable"
+            :active-value="ENABLED.TRUE"
+            :inactive-value="ENABLED.FALSE"
+            class="switchUse"
+          />
+        </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>
+      </div>
+    </el-drawer></div
+  >
+</template>
+
+<script setup lang="ts">
+  import { computed, reactive, ref, defineProps, defineEmits } 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 {
+    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;
+  }>();
+
+  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 ruleFormRef = ref<FormInstance>();
+
+  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 rules = reactive<FormRules>({
+    name: [
+      { required: true, message: '', trigger: 'blur' },
+      { min: 1, max: 100, message: 'Length should be 3 to 5', trigger: 'blur' },
+    ],
+    seniorScene: [
+      { required: true, message: '', trigger: 'blur' },
+      { 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' },
+    ],
+    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;
+  };
+
+  //添加新公司的提交
+  const addNewType = (formEl: FormInstance | undefined) => {
+    if (!formEl) return;
+
+    const newAddData = {
+      code: ruleForm.code,
+      companyId: props.editedItem.id,
+      sceneLabelId: ruleForm.tagWorkshop,
+      isDeleted: 0,
+      name: ruleForm.name,
+      status: Number(addEnable.value),
+      serial: 0,
+    };
+
+    if (props.allCodes.indexOf(ruleForm.code) > -1) {
+      ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'error',
+      })
+        .then(() => {
+          // ruleForm.sceneCode = '';
+          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(() => {
+          resetDraw();
+          emit('upload-work-data');
+        });
+    }
+  };
+
+  //编辑公司时的提交
+  const editedSub = (formEl: FormInstance | undefined) => {
+    if (!formEl) return;
+    if (props.allCodes.indexOf(ruleForm.code) > -1) {
+      if (props.editedItem.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(addEnable.value),
+      id: props.editedItem.id,
+    };
+
+    editWorkshop(editNewWorkshopData)
+      .then(() => {
+        const editWorkshopModule = {
+          isDeleted: 0,
+          workshopId: props.editedItem.id,
+          workshopModuleId: ruleForm.templateWorkshop,
+        };
+        return editWorkshopModuleLabel(editWorkshopModule);
+      })
+      .catch((err) => {
+        console.log(err);
+      })
+      .finally(() => {
+        resetDraw();
+        emit('edit-work-data');
+      });
+  };
+
+  //重置编辑框
+  const resetDraw = () => {
+    ruleForm.name = '';
+    ruleForm.code = '';
+    ruleForm.sceneCode = '';
+    addEnable.value = 0;
+    selectItems.value = [{ tag: '', template: '' }];
+    ruleForm.principal = '';
+    ruleForm.templateWorkshop = undefined;
+    ruleForm.tagWorkshop = undefined;
+  };
+  defineExpose({ resetDraw, receiveDataFromParent, receiveSeniorScene });
+</script>
+
+<style scoped>
+  .tag-select {
+    margin-right: 10px;
+    margin-bottom: 10px;
+    border-radius: 4px;
+    border: 1px solid rgba(0, 0, 0, 0.15);
+  }
+</style>

+ 87 - 62
src/views/dashboard/monitor/WorkShopSpaceDrawer.vue

@@ -2,7 +2,7 @@
   <div>
   <div>
     <el-drawer
     <el-drawer
       class="test"
       class="test"
-      v-model="showDrawer"
+      v-model="showDrawerSpace"
       @open="() => emit('update-tab-com', true)"
       @open="() => emit('update-tab-com', true)"
       @close="() => emit('update-tab-com', false)"
       @close="() => emit('update-tab-com', false)"
       with-header="true"
       with-header="true"
@@ -20,45 +20,16 @@
         size="default"
         size="default"
         status-icon
         status-icon
       >
       >
-        <el-form-item :label="`${props.addName}`" prop="name">
+        <el-form-item label="工位名称" prop="name">
           <el-input v-model="ruleForm.name" />
           <el-input v-model="ruleForm.name" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="上级场景" prop="seniorScene">
         <el-form-item label="上级场景" prop="seniorScene">
           <el-input v-model="ruleForm.seniorScene" disabled />
           <el-input v-model="ruleForm.seniorScene" disabled />
         </el-form-item>
         </el-form-item>
-        <el-form-item :label="`${props.addCodeName}`" prop="code">
+        <el-form-item label="工位代码" prop="code">
           <el-input v-model="ruleForm.code" />
           <el-input v-model="ruleForm.code" />
         </el-form-item>
         </el-form-item>
-        <el-form-item v-if="props.levelFindWorkshop" label="场景标签" prop="tagWorkshop">
-          <el-radio-group
-            v-model="ruleForm.tagWorkshop"
-            size="10px"
-            style="display: flex; justify-content: space-between"
-          >
-            <el-radio-button
-              v-for="item in props.tagList"
-              :label="item.id!"
-              class="tag-select"
-              style="margin-right: 10px"
-              >{{ item.name }}</el-radio-button
-            >
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item v-if="props.levelFindWorkshop" label="车间模板" prop="templateWorkshop">
-          <el-radio-group
-            v-model="ruleForm.templateWorkshop"
-            size="10px"
-            style="display: flex; justify-content: space-between"
-          >
-            <el-radio-button
-              v-for="item in props.workshopTemplateList"
-              :label="item.id!"
-              class="tag-select"
-              >{{ item.name }}</el-radio-button
-            >
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item v-if="!props.levelFindWorkshop" label="负责人" prop="principal">
+        <el-form-item label="负责人" prop="principal">
           <el-input v-model="ruleForm.principal" />
           <el-input v-model="ruleForm.principal" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="状态">
         <el-form-item label="状态">
@@ -81,36 +52,25 @@
 
 
 <script setup lang="ts">
 <script setup lang="ts">
   import { computed, reactive, ref, defineProps, defineEmits } from 'vue';
   import { computed, reactive, ref, defineProps, defineEmits } from 'vue';
-  import { ENABLED } from './use-method';
-  import type { FormInstance, FormRules } from 'element-plus';
-  import { labelModuleListType } from '@/api/scene/sceneOperate';
-  import { WorkshopModuleType } from '@/api/scene/secene-templet';
-
-  interface SelectItemType {
-    tag: string;
-    template: string;
-  }
+  import { ENABLED } from './constant';
+  import { ElMessageBox, type FormInstance, type FormRules } from 'element-plus';
+  import { WorkspaceAddDatas, addWorkspace, editWorkspace } from '@/api/scene/sceneOperate';
 
 
   const props = defineProps<{
   const props = defineProps<{
-    table: boolean;
+    tableWorkspace: boolean;
     addTitle: string;
     addTitle: string;
-    addName: string;
-    addCodeName: string;
-    levelFindWorkshop: boolean;
-    tagList: labelModuleListType[];
+    allCodes: string[];
     editWork: boolean;
     editWork: boolean;
-    workshopTemplateList: WorkshopModuleType[];
-    ruleForm: RuleForm;
     addEnable: ENABLED;
     addEnable: ENABLED;
+    editedItem: WorkspaceAddDatas;
   }>();
   }>();
 
 
   const addEnable = ref(ENABLED.TRUE);
   const addEnable = ref(ENABLED.TRUE);
-  const selectItems = ref<SelectItemType[]>([{ tag: '', template: '' }]);
 
 
   //将表单数据传至父组件
   //将表单数据传至父组件
   const emit = defineEmits(['upload-work-data', 'edit-work-data', 'update-tab-com']);
   const emit = defineEmits(['upload-work-data', 'edit-work-data', 'update-tab-com']);
 
 
-  const showDrawer = computed(() => props.table);
+  const showDrawerSpace = computed(() => props.tableWorkspace);
 
 
   //表格中的规则
   //表格中的规则
   const ruleFormRef = ref<FormInstance>();
   const ruleFormRef = ref<FormInstance>();
@@ -137,7 +97,7 @@
     templateWorkshop: undefined,
     templateWorkshop: undefined,
     principal: '',
     principal: '',
   });
   });
-  const rules = reactive<FormRules<RuleForm>>({
+  const rules = reactive<FormRules>({
     name: [
     name: [
       { required: true, message: '', trigger: 'blur' },
       { required: true, message: '', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 3 to 5', trigger: 'blur' },
       { min: 1, max: 100, message: 'Length should be 3 to 5', trigger: 'blur' },
@@ -188,16 +148,84 @@
   //添加新公司的提交
   //添加新公司的提交
   const addNewType = (formEl: FormInstance | undefined) => {
   const addNewType = (formEl: FormInstance | undefined) => {
     if (!formEl) return;
     if (!formEl) return;
-    emit('upload-work-data', ruleForm, addEnable, () => {
-      resetDraw();
-    });
+
+    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.editedItem.id,
+        isDeleted: 0,
+        name: ruleForm.name,
+        principal: ruleForm.principal,
+        status: Number(addEnable.value),
+        serial: 0,
+      };
+      addWorkspace(newAddData)
+        .catch((err) => {
+          console.log(err);
+        })
+        .catch((err) => {
+          console.log(err);
+        })
+        .finally(() => {
+          resetDraw();
+          emit('upload-work-data');
+        });
+    }
   };
   };
 
 
   //编辑公司时的提交
   //编辑公司时的提交
-  const editedSub = () => {
-    emit('edit-work-data', ruleForm, addEnable, () => {
-      resetDraw();
-    });
+  const editedSub = (formEl: FormInstance | undefined) => {
+    if (!formEl) return;
+
+    if (props.allCodes.indexOf(ruleForm.code) > -1) {
+      if (props.editedItem.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(addEnable.value),
+      id: props.editedItem.id,
+      principal: ruleForm.principal,
+    };
+
+    //编辑车间并上传
+    editWorkspace(editNewWorkspaceData)
+      .catch((err) => {
+        console.log(err);
+      })
+      .catch((err) => {
+        console.log(err);
+      })
+      .finally(() => {
+        resetDraw();
+        emit('edit-work-data');
+      });
   };
   };
 
 
   //重置编辑框
   //重置编辑框
@@ -206,10 +234,7 @@
     ruleForm.code = '';
     ruleForm.code = '';
     ruleForm.sceneCode = '';
     ruleForm.sceneCode = '';
     addEnable.value = 0;
     addEnable.value = 0;
-    selectItems.value = [{ tag: '', template: '' }];
     ruleForm.principal = '';
     ruleForm.principal = '';
-    ruleForm.templateWorkshop = undefined;
-    ruleForm.tagWorkshop = undefined;
   };
   };
   defineExpose({ resetDraw, receiveDataFromParent, receiveSeniorScene });
   defineExpose({ resetDraw, receiveDataFromParent, receiveSeniorScene });
 </script>
 </script>

+ 0 - 151
src/views/dashboard/monitor/addWorkshop.vue

@@ -1,151 +0,0 @@
-<template>
-  <el-drawer class="test" v-model="tableCom" with-header="true" size="35%">
-    <template #header="{ titleId }">
-      <p :id="titleId">{{ companyAddTitle }}</p>
-    </template>
-    <el-form
-      ref="ruleFormRef"
-      :model="ruleForm"
-      :rules="rules"
-      label-width="90px"
-      class="demo-ruleForm"
-      size="default"
-      status-icon
-    >
-      <el-form-item label="公司名称" prop="name">
-        <el-input v-model="ruleForm.name" style="width: 200px" />
-      </el-form-item>
-      <el-form-item label="上级场景" prop="seniorScene">
-        <el-input v-model="ruleForm.seniorScene" style="width: 200px" disabled />
-      </el-form-item>
-      <el-form-item label="公司代码" prop="code">
-        <el-input v-model="ruleForm.code" style="width: 200px" />
-      </el-form-item>
-      <el-form-item label="标签&模板" prop="sceneCode">
-        <div style="width: 200px; height: 30px"></div>
-        <div
-          v-for="(item, index) in selectItems"
-          :key="index"
-          style="margin-bottom: 16px; display: flex"
-        >
-          <el-select v-model="item.tag" placeholder="请选择标签" style="width: 126px">
-            <el-option
-              v-for="item1 in options"
-              :key="item1.value"
-              :label="item1.label"
-              :value="item1.value"
-            />
-          </el-select>
-          <img
-            src="@/assets/icons/link.png"
-            alt=""
-            style="width: 16px; margin-left: 2px; margin-right: 2px" />
-          <el-select v-model="item.template" placeholder="请选择模板" style="width: 126px">
-            <el-option
-              v-for="item2 in options"
-              :key="item2.value"
-              :label="item2.label"
-              :value="item2.value"
-            />
-          </el-select>
-          <img
-            src="../../../assets/icons/close.png"
-            @click="deleScene(index)"
-            alt=""
-            style="width: 13px; height: 13px; margin-top: 10px; margin-left: 3px; cursor: pointer"
-        /></div>
-        <div style="width: 200px">
-          <el-icon size="28px" @click="addChange" style="cursor: pointer"><CirclePlus /></el-icon
-        ></div>
-      </el-form-item>
-      <el-form-item label="状态">
-        <el-switch v-model="addEnable" active-value="1" inactive-value="0" class="switchUse" />
-      </el-form-item>
-    </el-form>
-    <div style="position: absolute; left: 108px; bottom: 67px">
-      <el-button v-if="companyAddTitle === '添加公司'" type="warning" @click="resetDraw"
-        >重置</el-button
-      >
-      <el-button type="primary" v-if="companyAddTitle === '添加公司'" @click="addNewTypeCom">
-        提交
-      </el-button>
-      <el-button type="primary" v-if="companyAddTitle !== '添加公司'" @click="editedSub">
-        提交
-      </el-button>
-    </div>
-  </el-drawer>
-</template>
-
-<script setup lang="ts">
-  import { computed } from 'vue';
-  //   import { SubscribeItem } from '@/api/subscribe/subscribe';
-
-  interface User {
-    name?: string;
-    tag?: string;
-    code?: string;
-    hasChildren?: boolean;
-    children?: User[];
-  }
-
-  const props = defineProps<{
-    subItem: User;
-    handleConig: (row) => unknown;
-    handleAdd: (row) => unknown;
-    handleEdit: (row) => unknown;
-    handleDelete: (row) => unknown;
-    handleUp: (row) => unknown;
-    handleDown: (row) => unknown;
-  }>();
-
-  const isBook = computed(() => (props.subscribeItem.booking === '0' ? true : false));
-
-  const changeConig = () => {
-    props.handleConig(props.subItem);
-  };
-
-  const changeAdd = () => {
-    props.handleAdd(props.subItem);
-  };
-
-  const changeEdit = () => {
-    props.handleEdit(props.subItem);
-  };
-
-  const changeDelete = () => {
-    props.handleDelete(props.subItem);
-  };
-
-  const changeUp = () => {
-    props.handleUp(props.subItem);
-  };
-
-  const changeDown = () => {
-    props.handleDown(props.subItem);
-  };
-</script>
-
-<style scoped>
-  .wordStyle {
-    height: 22px;
-    font-size: 14px;
-    color: #1890ff;
-    line-height: 22px;
-    cursor: pointer;
-  }
-  .otp-btn {
-    width: 52px;
-    height: 26px;
-  }
-
-  :deep(.el-button--primary) {
-    --el-button-bg-color: #3f9eff;
-    --el-button-hover-bg-color: #64b0fe;
-    --el-button-active-bg-color: #2f8ae7;
-  }
-  :deep(.el-button--danger) {
-    --el-button-bg-color: #f56c6c;
-    --el-button-hover-bg-color: #f68888;
-    --el-button-active-bg-color: #c35353;
-  }
-</style>

+ 10 - 0
src/views/dashboard/monitor/constant.ts

@@ -0,0 +1,10 @@
+export enum ENABLED {
+  FALSE = 1,
+  TRUE = 0,
+}
+
+export enum DATA_LEVEL {
+  'first' = 0,
+  'second' = 1,
+  'third' = 2,
+}

+ 4 - 4
src/views/dashboard/monitor/monitor copy.vue

@@ -257,16 +257,16 @@
     companyAdd,
     companyAdd,
     companyEdit,
     companyEdit,
     companyDel,
     companyDel,
-    workshopAddDatas,
+    WorkshopAddDatas,
     workshopAdd,
     workshopAdd,
     workshopEdit,
     workshopEdit,
     workshopDel,
     workshopDel,
-    workspaceAddDatas,
+    WorkspaceAddDatas,
     workspaceAdd,
     workspaceAdd,
     workspaceEdit,
     workspaceEdit,
     workspaceDel,
     workspaceDel,
-    sceneListType,
-    getListWorkshop,
+    SceneListType,
+    GetListWorkshop,
     getSceneList,
     getSceneList,
   } from '@/api/scene/sceneOperate';
   } from '@/api/scene/sceneOperate';
 
 

+ 111 - 351
src/views/dashboard/monitor/monitor.vue

@@ -52,75 +52,78 @@
       :comEdit="comEdit"
       :comEdit="comEdit"
       :sceneList="sceneList"
       :sceneList="sceneList"
       :templateList="templateList"
       :templateList="templateList"
-      :ruleForm="ruleForm"
       :selectItems="selectItems"
       :selectItems="selectItems"
       :addEnable="addEnable"
       :addEnable="addEnable"
+      :allCodes="allCodes"
+      :editedItem="editedItem"
       @upload-company-data="addNewTypeCom"
       @upload-company-data="addNewTypeCom"
       @edit-company-data="editedSubCom"
       @edit-company-data="editedSubCom"
       @update-tab-com="handleUpdateTableCom"
       @update-tab-com="handleUpdateTableCom"
     />
     />
 
 
-    <!-- 车间和工位 -->
+    <!-- 车间 -->
 
 
-    <WorkshopAndWorkspace
-      ref="workDrawerChild"
-      :table="table"
+    <WorkshopDrawer
+      ref="workshopDrawerChild"
+      :table-workshop="tableWorkshop"
       :add-title="addTitle"
       :add-title="addTitle"
-      :add-name="addName"
-      :add-code-name="addCodeName"
       :tag-list="tagList"
       :tag-list="tagList"
-      :levelFindWorkshop="levelFindWorkshop"
-      :ruleForm="ruleForm"
       :workshopTemplateList="workshopTemplateList"
       :workshopTemplateList="workshopTemplateList"
       :add-enable="addEnable"
       :add-enable="addEnable"
-      :editWork="editWork"
-      @update-tab-com="handleUpdataWorkTab"
-      @upload-work-data="addNewType"
-      @edit-work-data="editedSub"
+      :editWork="workshopEdit"
+      :editedItem="editedItem"
+      :allCodes="allCodes"
+      @update-tab-com="handleUpdataWorkshopTab"
+      @upload-work-data="addNewWorkshop"
+      @edit-work-data="editedSubWorkshop"
+    />
+
+    <!-- 工位 -->
+
+    <WorkspaceDrawer
+      ref="workspaceDrawerChild"
+      :tableWorkspace="tableWorkspace"
+      :add-title="addTitle"
+      :add-enable="addEnable"
+      :editWork="workspaceEdit"
+      :allCodes="allCodes"
+      :editedItem="editedItem"
+      @update-tab-com="handleUpdataWorkspaceTab"
+      @upload-work-data="addNewWorkspace"
+      @edit-work-data="editedSubWorkspace"
     />
     />
   </page-wrapper>
   </page-wrapper>
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
-  import { ref, onMounted, reactive, h, watch } from 'vue';
+  import { ref, onMounted, reactive, h, watch, computed } from 'vue';
   import { Plus } from '@element-plus/icons-vue';
   import { Plus } from '@element-plus/icons-vue';
   import { BasicTable, BasicColumn } from '@/components/Table';
   import { BasicTable, BasicColumn } from '@/components/Table';
-  // import type { FormRules } from 'element-plus';
   import { ElMessageBox } from 'element-plus';
   import { ElMessageBox } from 'element-plus';
   import ActionColomn from './actionColomns.vue';
   import ActionColomn from './actionColomns.vue';
   import CompanyDrawer from './CompanyDrawer.vue';
   import CompanyDrawer from './CompanyDrawer.vue';
-  import WorkshopAndWorkspace from './WorkShopSpaceDrawer.vue';
+  import WorkshopDrawer from './WorkshopDrawer.vue';
+  import WorkspaceDrawer from './WorkspaceDrawer.vue';
+  import { DATA_LEVEL, ENABLED } from './constant';
   import {
   import {
-    ENABLED,
     colomns,
     colomns,
     dataSourceWithParent,
     dataSourceWithParent,
     updateSerials,
     updateSerials,
     findItemLevel,
     findItemLevel,
     removeParent,
     removeParent,
+    flattenCodes,
   } from './use-method';
   } from './use-method';
   import {
   import {
     ComAddDatas,
     ComAddDatas,
-    addCompany,
-    editCompany,
     delCompany,
     delCompany,
-    workshopAddDatas,
-    addWorkshop,
-    editWorkshop,
+    WorkshopAddDatas,
     delWorkshop,
     delWorkshop,
-    workspaceAddDatas,
-    addWorkspace,
-    editWorkspace,
+    WorkspaceAddDatas,
     delWorkspace,
     delWorkspace,
-    labelModuleListType,
+    LabelModuleListType,
     sortSceneList,
     sortSceneList,
   } from '@/api/scene/sceneOperate';
   } from '@/api/scene/sceneOperate';
   import useScene from './use-scene';
   import useScene from './use-scene';
-  import {
-    addCompanyModuleLabel,
-    editCompanyModuleLabel,
-    addWorkshopModuleLabel,
-    editWorkshopModuleLabel,
-  } from '@/api/scene/secene-templet';
   import useSceneTemplete from './use-sence-templete';
   import useSceneTemplete from './use-sence-templete';
 
 
   const useSceneList = useScene();
   const useSceneList = useScene();
@@ -157,17 +160,23 @@
   });
   });
 
 
   //添加组件的添加功能
   //添加组件的添加功能
-  const table = ref(false); //添加公司级的场景
-  const tableCom = ref(false); //添加车间或者工位
+  const tableWorkshop = ref(false); //车间的drawer开关
+  const tableWorkspace = ref(false); //工位的drawer开关
+  const tableCom = ref(false); //公司的drawer开关
 
 
   //改变el-drawer公司的状态
   //改变el-drawer公司的状态
   const handleUpdateTableCom = (val: boolean) => {
   const handleUpdateTableCom = (val: boolean) => {
     tableCom.value = val;
     tableCom.value = val;
   };
   };
 
 
-  //改变el-drawer车间&工位的状态
-  const handleUpdataWorkTab = (showDrawer) => {
-    table.value = showDrawer;
+  //改变el-drawer车间的状态
+  const handleUpdataWorkshopTab = (showDrawer) => {
+    tableWorkshop.value = showDrawer;
+  };
+
+  //改变el-drawer工位的状态
+  const handleUpdataWorkspaceTab = (showDrawer) => {
+    tableWorkspace.value = showDrawer;
   };
   };
 
 
   //公司el-drawer的标题
   //公司el-drawer的标题
@@ -176,8 +185,7 @@
   const comEdit = ref<boolean>(false);
   const comEdit = ref<boolean>(false);
 
 
   const addTitle = ref('');
   const addTitle = ref('');
-  const addName = ref('');
-  const addCodeName = ref('');
+
   const level = ref<number>();
   const level = ref<number>();
 
 
   onMounted(() => {
   onMounted(() => {
@@ -202,7 +210,8 @@
   const handlePageSizeChange = () => {};
   const handlePageSizeChange = () => {};
 
 
   const companyDrawerChild = ref();
   const companyDrawerChild = ref();
-  const workDrawerChild = ref();
+  const workshopDrawerChild = ref();
+  const workspaceDrawerChild = ref();
 
 
   const companyAdd = () => {
   const companyAdd = () => {
     tableCom.value = true;
     tableCom.value = true;
@@ -210,178 +219,40 @@
       companyDrawerChild.value.resetDrawCom(); // 这里假设resetDraw是子组件中用于重置的方法
       companyDrawerChild.value.resetDrawCom(); // 这里假设resetDraw是子组件中用于重置的方法
     }
     }
     addEnable.value = ENABLED.TRUE;
     addEnable.value = ENABLED.TRUE;
-    ruleForm.seniorScene = '顶级场景';
+    // ruleForm.seniorScene = '顶级场景';
     companyAddTitle.value = '添加公司';
     companyAddTitle.value = '添加公司';
     comEdit.value = false;
     comEdit.value = false;
   };
   };
 
 
-  //重置编辑框
-  const resetDraw = () => {
-    ruleForm.name = '';
-    ruleForm.code = '';
-    ruleForm.sceneCode = '';
-    addEnable.value = 0;
-    selectItems.value = [{ tag: '', template: '' }];
-    ruleForm.principal = '';
-    ruleForm.templateWorkshop = undefined;
-    ruleForm.tagWorkshop = undefined;
-  };
-
   //用于新增场景
   //用于新增场景
   const selectItems = ref([{ tag: '', template: '' }] as { tag: string; template: string }[]);
   const selectItems = ref([{ tag: '', template: '' }] as { tag: string; template: string }[]);
 
 
-  //找出数据中的全部code
-  const flattenCodes = (data) => {
-    const codes = [];
-    const traverse = (node) => {
-      codes.push(node.code);
-      if (node.children && node.children.length > 0) {
-        node.children.forEach(traverse);
-      }
-    };
-    data.forEach(traverse);
-    return codes;
-  };
+  const allCodes = computed(() => {
+    return flattenCodes(tableData.value);
+  });
 
 
   //添加公司场景的提交按钮
   //添加公司场景的提交按钮
-  const addNewTypeCom = (ruleFormCom, selectItemsCom, addEnableCom) => {
-    //取出数据中所有的code数据
-    const allCodes = flattenCodes(tableData.value);
-    console.log('addEnableCom', addEnableCom.value);
-
-    //新接口中用的newdata
-    const newComData = {
-      name: ruleFormCom.name,
-      code: ruleFormCom.code,
-      status: Number(addEnableCom.value),
-      isDeleted: 0,
-      parentId: 0,
-      serial: 0,
-    };
-
-    //判断新数据中是否与原有的code重复
-    if (allCodes.indexOf(ruleFormCom.code) > -1) {
-      ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
-        confirmButtonText: '确认',
-        cancelButtonText: '取消',
-        type: 'error',
-      })
-        .then(() => {
-          // ruleFormCom.code = '';
-          console.log('场景代码重复,请重新填写');
-        })
-        .catch(() => {
-          console.log('取消删除物件');
-        });
-    } else {
-      //提交数据并重置关闭el-draw
-      addCompany(newComData)
-        .then((res) => {
-          //选出不为空字符串的数据
-          selectItemsCom.value = selectItemsCom.value.filter((item) => {
-            return item.tag && item.template;
-          });
-          //将selectItems加工成保存公司-模板的数据类型
-          const newModuleLabel = selectItemsCom.value.map((item) => {
-            return {
-              companyId: res,
-              isDeleted: 0,
-              sceneLabelId: Number(item.tag), //item.tag
-              sceneModuleId: Number(item.template), ///item.template
-            };
-          });
-
-          //保存公司-场景标签-场景模板关系
-          return addCompanyModuleLabel(newModuleLabel);
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          getSceneDetail();
-          tableCom.value = false;
-        });
-    }
+  const addNewTypeCom = () => {
+    getSceneDetail();
+    tableCom.value = false;
   };
   };
 
 
-  //判断是否是车间
-  const levelFindWorkshop = ref<boolean>(true);
-
-  //判断是否是车间或者工位的编辑
-  const editWork = ref<boolean>(true);
-
-  //新增工位或者车间的提交按钮
-  const addNewType = (workRuleForm, addEnableWork) => {
-    level.value = findItemLevel(tableData.value, editedItem.value.id, editedItem.value.name);
-    const newAddData = ref({});
-    if (level.value === 0) {
-      newAddData.value = {
-        code: workRuleForm.code,
-        companyId: editedItem.value.id,
-        sceneLabelId: workRuleForm.tagWorkshop,
-        isDeleted: 0,
-        name: workRuleForm.name,
-        status: Number(addEnableWork.value),
-        serial: 0,
-        // templete: ruleForm.templateWorkshop,
-      };
-    } else {
-      newAddData.value = {
-        code: workRuleForm.code,
-        workshopId: editedItem.value.id,
-        isDeleted: 0,
-        name: workRuleForm.name,
-        principal: workRuleForm.principal,
-        status: Number(addEnableWork.value),
-        serial: 0,
-      };
-    }
+  //判断是否是车间的编辑
+  const workshopEdit = ref<boolean>(true);
+  //判断是否工位的编辑
+  const workspaceEdit = ref<boolean>(true);
 
 
-    const allCodes = flattenCodes(tableData.value);
+  //新增车间
+  const addNewWorkshop = () => {
+    getSceneDetail();
+    tableWorkshop.value = false;
+  };
 
 
-    if (allCodes.indexOf(workRuleForm.code) > -1) {
-      ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
-        confirmButtonText: '确认',
-        cancelButtonText: '取消',
-        type: 'error',
-      })
-        .then(() => {
-          // ruleForm.sceneCode = '';
-          console.log('场景代码重复,请重新填写');
-        })
-        .catch(() => {
-          console.log('取消删除物件');
-        });
-    } else {
-      if (level.value === 0) {
-        addWorkshop(newAddData.value)
-          .then((res) => {
-            const newWorkshopModule = {
-              workshopId: res,
-              isDeleted: 0,
-              workshopModuleId: workRuleForm.templateWorkshop!,
-            };
-            return addWorkshopModuleLabel(newWorkshopModule);
-          })
-          .catch((err) => {
-            console.log(err);
-          })
-          .finally(() => {
-            getSceneDetail();
-            table.value = false;
-          });
-      } else {
-        addWorkspace(newAddData.value)
-          .catch((err) => {
-            console.log(err);
-          })
-          .finally(() => {
-            getSceneDetail();
-            table.value = false;
-          });
-      }
-    }
+  const addNewWorkspace = () => {
+    getSceneDetail();
+    tableWorkspace.value = false;
   };
   };
+
   //操作列
   //操作列
   const actionColumn: BasicColumn = reactive({
   const actionColumn: BasicColumn = reactive({
     width: 350,
     width: 350,
@@ -409,37 +280,33 @@
 
 
   const handleAdd = (row) => {
   const handleAdd = (row) => {
     editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem 中,以便编辑
     editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem 中,以便编辑
-    editWork.value = false;
+    workshopEdit.value = false;
+    workspaceEdit.value = false;
     //得出当前的数据的层级
     //得出当前的数据的层级
     level.value = findItemLevel(tableData.value, row.id, row.name);
     level.value = findItemLevel(tableData.value, row.id, row.name);
 
 
-    if (level.value === 0) {
-      levelFindWorkshop.value = true;
+    if (level.value === DATA_LEVEL.first) {
       addTitle.value = '添加车间';
       addTitle.value = '添加车间';
-      addName.value = '车间名称';
-      addCodeName.value = '车间代码';
-    } else if (level.value === 1) {
-      levelFindWorkshop.value = false;
+      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 = '添加工位';
       addTitle.value = '添加工位';
-      addName.value = '工位名称';
-      addCodeName.value = '工位代码';
+      tableWorkspace.value = true;
+      workspaceDrawerChild.value.receiveSeniorScene(row.name);
+      workspaceDrawerChild.value.resetDraw();
     } else {
     } else {
       return;
       return;
     }
     }
-    resetDraw();
-
-    table.value = true;
-    // ruleForm.seniorScene = row.name;
-    workDrawerChild.value.receiveSeniorScene(row.name);
-    workDrawerChild.value.resetDraw();
-    tagList.value = row?.labelList;
   };
   };
 
 
   //添加车间中的场景标签
   //添加车间中的场景标签
-  const tagList = ref<labelModuleListType[]>([]);
+  const tagList = ref<LabelModuleListType[]>([]);
 
 
   //公司,车间,工位的模板数据
   //公司,车间,工位的模板数据
-  const editedItem = ref<ComAddDatas | workshopAddDatas | workspaceAddDatas>({});
+  const editedItem = ref<ComAddDatas | WorkshopAddDatas | WorkspaceAddDatas>({});
 
 
   // 在这里实现删除行的函数
   // 在这里实现删除行的函数
   const handleDelete = (row: Recordable) => {
   const handleDelete = (row: Recordable) => {
@@ -464,9 +331,9 @@
       })
       })
         .then(() => {
         .then(() => {
           //删除接口的调用
           //删除接口的调用
-          if (level.value === 0) {
+          if (level.value === DATA_LEVEL.first) {
             return delCompany(row.id);
             return delCompany(row.id);
-          } else if (level.value === 1) {
+          } else if (level.value === DATA_LEVEL.second) {
             return delWorkshop(row.id);
             return delWorkshop(row.id);
           } else {
           } else {
             return delWorkspace(row.id);
             return delWorkspace(row.id);
@@ -483,9 +350,10 @@
 
 
   const handleEdit = (row) => {
   const handleEdit = (row) => {
     editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem 中,以便编辑
     editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem 中,以便编辑
-    editWork.value = true;
+    workshopEdit.value = true;
+    workspaceEdit.value = true;
     level.value = findItemLevel(tableData.value, row.id, row.name);
     level.value = findItemLevel(tableData.value, row.id, row.name);
-    if (level.value === 0) {
+    if (level.value === DATA_LEVEL.first) {
       tableCom.value = true;
       tableCom.value = true;
       companyAddTitle.value = '编辑公司';
       companyAddTitle.value = '编辑公司';
       comEdit.value = true;
       comEdit.value = true;
@@ -496,162 +364,54 @@
           template: row.moduleList[index].id,
           template: row.moduleList[index].id,
         }));
         }));
       }
       }
-      console.log('312addEnable.value', addEnable.value);
 
 
       companyDrawerChild.value.receiveDataFromParent(editedItem.value, selectItems.value);
       companyDrawerChild.value.receiveDataFromParent(editedItem.value, selectItems.value);
-    } else if (level.value === 1) {
-      levelFindWorkshop.value = true;
+    } else if (level.value === DATA_LEVEL.second) {
       addTitle.value = '编辑车间';
       addTitle.value = '编辑车间';
-      addName.value = '车间名称';
-      addCodeName.value = '车间代码';
-      table.value = true;
+      tableWorkshop.value = true;
       ruleForm.name = editedItem.value.name!;
       ruleForm.name = editedItem.value.name!;
+      //使用ts 类型守卫
       ruleForm.seniorScene = editedItem.value.parent.name;
       ruleForm.seniorScene = editedItem.value.parent.name;
       ruleForm.code = editedItem.value.code!;
       ruleForm.code = editedItem.value.code!;
       addEnable.value = editedItem.value.status!;
       addEnable.value = editedItem.value.status!;
-      tagList.value = editedItem.value.parent.labelList;
+      tagList.value = editedItem.value.parent?.labelList;
       ruleForm.tagWorkshop = editedItem.value.sceneLabelId;
       ruleForm.tagWorkshop = editedItem.value.sceneLabelId;
       ruleForm.templateWorkshop = editedItem.value.workshopModule.id;
       ruleForm.templateWorkshop = editedItem.value.workshopModule.id;
       // console.log('ruleForm.seniorScene', ruleForm.seniorScene);
       // console.log('ruleForm.seniorScene', ruleForm.seniorScene);
 
 
-      workDrawerChild.value.receiveDataFromParent(ruleForm, addEnable.value);
-    } else if (level.value === 2) {
-      levelFindWorkshop.value = false;
+      workshopDrawerChild.value.receiveDataFromParent(ruleForm, addEnable.value);
+    } else if (level.value === DATA_LEVEL.third) {
       addTitle.value = '编辑工位';
       addTitle.value = '编辑工位';
-      addName.value = '工位名称';
-      addCodeName.value = '工位代码';
-      table.value = true;
+      // addName.value = '工位名称';
+      // addCodeName.value = '工位代码';
+      tableWorkspace.value = true;
       ruleForm.name = editedItem.value.name!;
       ruleForm.name = editedItem.value.name!;
       ruleForm.seniorScene = editedItem.value.parent.name;
       ruleForm.seniorScene = editedItem.value.parent.name;
       ruleForm.code = editedItem.value.code!;
       ruleForm.code = editedItem.value.code!;
       addEnable.value = editedItem.value.status!;
       addEnable.value = editedItem.value.status!;
-      ruleForm.principal = editedItem.value.principal!;
-      workDrawerChild.value.receiveDataFromParent(ruleForm, addEnable.value);
+      ruleForm.principal = (editedItem.value as WorkspaceAddDatas).principal!;
+      workspaceDrawerChild.value.receiveDataFromParent(ruleForm, addEnable.value);
     }
     }
   };
   };
 
 
   //编辑时的提交按钮功能
   //编辑时的提交按钮功能
 
 
   //编辑公司的提交按钮
   //编辑公司的提交按钮
-  const editedSubCom = (ruleFormCom, selectItemsCom, addEnableCom) => {
-    const allCodes = flattenCodes(tableData.value);
-    if (allCodes.indexOf(ruleFormCom.code) > -1) {
-      if (editedItem.value.code !== ruleFormCom.code) {
-        ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
-          confirmButtonText: '确认',
-          cancelButtonText: '取消',
-          type: 'error',
-        })
-          .then(() => {
-            // ruleForm.workshopCode = '';
-            console.log('代码重复');
-          })
-          .catch(() => {
-            console.log('取消删除物件');
-          });
-        return;
-      }
-    }
-
-    selectItems.value = selectItemsCom.value.filter((item) => {
-      return item.tag && item.template;
-    });
-
-    //新增的数据
-    const editNewCom = {
-      id: editedItem.value.id,
-      name: ruleFormCom.name,
-      code: ruleFormCom.code,
-      status: Number(addEnableCom.value),
-    };
-    // 编辑上传
-    editCompany(editNewCom)
-      .then(() => {
-        //保存公司-场景标签-场景模板关系
-        const editModuleLabel = selectItems.value.map((item) => {
-          return {
-            companyId: editedItem.value.id,
-            isDeleted: 0,
-            sceneLabelId: Number(item.tag), //item.tag
-            sceneModuleId: Number(item.template), ///item.template
-          };
-        });
-        return editCompanyModuleLabel(editModuleLabel);
-      })
-      .finally(() => {
-        getSceneDetail();
-        tableCom.value = false;
-      });
+  const editedSubCom = () => {
+    getSceneDetail();
+    tableCom.value = false;
   };
   };
 
 
-  const editedSub = (workRuleForm, addEnableWork) => {
-    const allCodes = flattenCodes(tableData.value);
-    console.log('allCodes', allCodes);
+  //编辑车间的提交按钮
+  const editedSubWorkshop = () => {
+    getSceneDetail();
+    tableWorkshop.value = false;
+  };
 
 
-    if (allCodes.indexOf(workRuleForm.code) > -1) {
-      if (editedItem.value.code !== workRuleForm.code) {
-        ElMessageBox.confirm('场景代码重复,请重新填写', '代码重复', {
-          confirmButtonText: '确认',
-          cancelButtonText: '取消',
-          type: 'error',
-        })
-          .then(() => {
-            console.log('代码重复');
-          })
-          .catch(() => {
-            console.log('取消删除物件');
-          });
-        return;
-      }
-    }
-    level.value = findItemLevel(tableData.value, editedItem.value.id, editedItem.value.name);
-
-    if (level.value === 1) {
-      const editNewWorkshopData = {
-        code: workRuleForm.code,
-        sceneLabelId: workRuleForm.tagWorkshop,
-        name: workRuleForm.name,
-        status: Number(addEnableWork.value),
-        id: editedItem.value.id,
-      };
-      //编辑车间并上传
-      editWorkshop(editNewWorkshopData)
-        .then(() => {
-          const editWorkshopModule = {
-            isDeleted: 0,
-            workshopId: editedItem.value.id,
-            workshopModuleId: workRuleForm.templateWorkshop,
-          };
-          return editWorkshopModuleLabel(editWorkshopModule);
-        })
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          // resetDraw();
-          getSceneDetail();
-          table.value = false;
-        });
-    } else if (level.value === 2) {
-      const editNewWorkspaceData = {
-        code: workRuleForm.code,
-        name: workRuleForm.name,
-        status: Number(addEnableWork.value),
-        id: editedItem.value.id,
-        principal: workRuleForm.principal,
-      };
-
-      //编辑车间并上传
-      editWorkspace(editNewWorkspaceData)
-        .catch((err) => {
-          console.log(err);
-        })
-        .finally(() => {
-          // resetDraw();
-          getSceneDetail();
-          table.value = false;
-        });
-    }
+  //编辑工位的提交按钮
+  const editedSubWorkspace = () => {
+    getSceneDetail();
+    tableWorkspace.value = false;
   };
   };
 
 
   //向上排序
   //向上排序

+ 43 - 90
src/views/dashboard/monitor/use-method.ts

@@ -1,11 +1,10 @@
-import { ref } from 'vue';
 import {
 import {
-  sceneListType,
-  getListWorkshop,
-  workspaceAddDatas,
-  labelModuleListType,
+  SceneListType,
+  GetListWorkshop,
+  WorkspaceAddDatas,
+  LabelModuleListType,
 } from '@/api/scene/sceneOperate';
 } from '@/api/scene/sceneOperate';
-import { workShopTempleteType } from '@/api/scene/secene-templet';
+import { WorkShopTempleteType } from '@/api/scene/secene-templet';
 
 
 export const colomns = [
 export const colomns = [
   { label: '场景名称', prop: 'name', width: 300 },
   { label: '场景名称', prop: 'name', width: 300 },
@@ -14,13 +13,13 @@ export const colomns = [
 ];
 ];
 
 
 interface DataSourceUser
 interface DataSourceUser
-  extends sceneListType<
-    getListWorkshop<workspaceAddDatas, workShopTempleteType>,
-    labelModuleListType
+  extends SceneListType<
+    GetListWorkshop<WorkspaceAddDatas, WorkShopTempleteType>,
+    LabelModuleListType
   > {
   > {
-  parent?: sceneListType<
-    getListWorkshop<workspaceAddDatas, workShopTempleteType>,
-    labelModuleListType
+  parent?: SceneListType<
+    GetListWorkshop<WorkspaceAddDatas, WorkShopTempleteType>,
+    LabelModuleListType
   > | null;
   > | null;
 }
 }
 
 
@@ -51,21 +50,21 @@ export function removeParent(data) {
 }
 }
 
 
 //找到各个层级
 //找到各个层级
-export function findIndexByItem(data, targetItem, path = []) {
-  for (let i = 0; i < data.length; i++) {
-    const currentPath = path.concat(i);
-    if (data[i].id === targetItem.id && data[i].name === targetItem.name) {
-      return currentPath;
-    }
-    if (data[i].children && data[i].children.length > 0) {
-      const childResult = findIndexByItem(data[i].children, targetItem, currentPath);
-      if (childResult.length > 0) {
-        return childResult;
-      }
-    }
-  }
-  return [];
-}
+// export function findIndexByItem(data, targetItem, path = []) {
+//   for (let i = 0; i < data.length; i++) {
+//     const currentPath = path.concat(i);
+//     if (data[i].id === targetItem.id && data[i].name === targetItem.name) {
+//       return currentPath;
+//     }
+//     if (data[i].children && data[i].children.length > 0) {
+//       const childResult = findIndexByItem(data[i].children, targetItem, currentPath);
+//       if (childResult.length > 0) {
+//         return childResult;
+//       }
+//     }
+//   }
+//   return [];
+// }
 
 
 //用于重新修改serial
 //用于重新修改serial
 export const updateSerials = (data) => {
 export const updateSerials = (data) => {
@@ -139,65 +138,6 @@ export const findItemLevel = (data, targetId, targetName, currentLevel = 0) => {
   return -1;
   return -1;
 };
 };
 
 
-//查询该数据在各个层级的索引
-export const findItemEachLevel = (
-  data,
-  targetId,
-  targetName,
-  currentLevel = 0,
-  level1 = -1,
-  level2 = -1,
-  level3 = -1,
-) => {
-  // const level1 = ref<number>(-1);
-  // const level2 = ref<number>(-1);
-  // const level3 = ref<number>(-1);
-  for (let i = 0; i < data.length; i++) {
-    const item = data[i];
-
-    if (item.id === targetId && item.name === targetName) {
-      // return currentLevel;
-      if (currentLevel === 0) {
-        level1 = i;
-        return { level1: level1, level2: level2, level3: level3 };
-      } else if (currentLevel === 1) {
-        level2 = i;
-        return { level1: level1, level2: level2, level3: level3 };
-      } else if (currentLevel === 2) {
-        level3 = i;
-        return { level1: level1, level2: level2, level3: level3 };
-      }
-    }
-
-    if (item.children && item.children.length > 0) {
-      const childLevel = findItemLevel(item.children, targetId, targetName, currentLevel + 1, i);
-      if (childLevel !== -1) {
-        return childLevel;
-      }
-    }
-  }
-
-  return { level1: level1.value, level2: level2.value, level3: level3.value };
-};
-
-export function findIndexById(data, targetId, targetName, level = 1) {
-  for (let i = 0; i < data.length; i++) {
-    if (data[i].id === targetId && data[i].name === targetName) {
-      return { level1: level, level2: -1, level3: -1 };
-    }
-    if (data[i].children && data[i].children.length > 0) {
-      const childResult = findIndexById(data[i].children, targetId, targetName, level + 1);
-      if (childResult.level1 !== -1) {
-        if (childResult.level2 === -1 && childResult.level3 === -1) {
-          return { level1: level, level2: childResult.level1, level3: -1 };
-        }
-        return childResult;
-      }
-    }
-  }
-  return { level1: -1, level2: -1, level3: -1 };
-}
-
 //删除行
 //删除行
 export const deleteTableRow = (dataSource, targetId) => {
 export const deleteTableRow = (dataSource, targetId) => {
   const deleteRecursive = (data) => {
   const deleteRecursive = (data) => {
@@ -277,7 +217,20 @@ export const editTableRow = (
   editTRecursive(dataSource);
   editTRecursive(dataSource);
 };
 };
 
 
-export enum ENABLED {
-  FALSE = 1,
-  TRUE = 0,
-}
+//找出数据中的全部code
+export const flattenCodes = (data) => {
+  const codes: string[] = [];
+  const traverse = (node: { code: string; children: any[] }) => {
+    codes.push(node.code);
+    if (node.children && node.children.length > 0) {
+      node.children.forEach(traverse);
+    }
+  };
+  data.forEach(traverse);
+  return codes;
+};
+
+// export enum ENABLED {
+//   FALSE = 1,
+//   TRUE = 0,
+// }

+ 6 - 6
src/views/dashboard/monitor/use-scene.ts

@@ -1,17 +1,17 @@
 import {
 import {
-  workspaceAddDatas,
-  sceneListType,
-  getListWorkshop,
+  WorkspaceAddDatas,
+  SceneListType,
+  GetListWorkshop,
   getSceneList,
   getSceneList,
-  labelModuleListType,
+  LabelModuleListType,
 } from '@/api/scene/sceneOperate';
 } from '@/api/scene/sceneOperate';
-import { workShopTempleteType } from '@/api/scene/secene-templet';
+import { WorkShopTempleteType } from '@/api/scene/secene-templet';
 import { ref } from 'vue';
 import { ref } from 'vue';
 
 
 export function useScene() {
 export function useScene() {
   //场景数据
   //场景数据
   const tableData = ref<
   const tableData = ref<
-    sceneListType<getListWorkshop<workspaceAddDatas, workShopTempleteType>, labelModuleListType>[]
+    SceneListType<GetListWorkshop<WorkspaceAddDatas, WorkShopTempleteType>, LabelModuleListType>[]
   >([]);
   >([]);
 
 
   const getSceneDetail = () => {
   const getSceneDetail = () => {

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

@@ -1,7 +1,7 @@
 import {
 import {
-  sceneLabelType,
+  SceneLabelType,
   querySceneLabel,
   querySceneLabel,
-  templateType,
+  TemplateType,
   querytemplate,
   querytemplate,
   queryWorkshopModule,
   queryWorkshopModule,
   WorkshopModuleType,
   WorkshopModuleType,
@@ -10,7 +10,7 @@ import { onMounted, ref } from 'vue';
 
 
 export function useSceneTemplete() {
 export function useSceneTemplete() {
   //场景标签
   //场景标签
-  const sceneList = ref<sceneLabelType[]>([]);
+  const sceneList = ref<SceneLabelType[]>([]);
 
 
   const getSceneLabel = () => {
   const getSceneLabel = () => {
     querySceneLabel().then((res) => {
     querySceneLabel().then((res) => {
@@ -24,7 +24,7 @@ export function useSceneTemplete() {
   };
   };
 
 
   //场景模板
   //场景模板
-  const templateList = ref<templateType[]>([]);
+  const templateList = ref<TemplateType[]>([]);
 
 
   const getTemplete = () => {
   const getTemplete = () => {
     console.log(23333);
     console.log(23333);