zhudie 2 éve
szülő
commit
949dca3fa7

+ 1 - 1
.env.development

@@ -5,7 +5,7 @@ VITE_PORT = 8092
 VITE_PUBLIC_PATH = /
 
 # 是否开启mock
-VITE_USE_MOCK = true
+VITE_USE_MOCK = false
 
 # 网站前缀
 VITE_BASE_URL = /

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

@@ -42,11 +42,10 @@ export const editCompany = (data: ComAddDatas): Promise<number> => {
 /**
  * @description: 删除公司
  */
-export const delCompany = (data: number): Promise<number> => {
+export const delCompany = (companyId: number) => {
   return http.request({
-    url: '/scene/deleteCompany',
+    url: `/scene/deleteCompany?companyId=${companyId}`,
     method: 'DELETE',
-    data,
   });
 };
 
@@ -163,9 +162,10 @@ export interface sceneListType<T, S> {
   updatedAt?: string;
   children?: T[]; //车间-工位信息
   labelList?: S[]; //创建的多个场景标签
+  moduleList?: S[]; //创建得多个模板
 }
 
-export interface labelListType {
+export interface labelModuleListType {
   code?: string;
   createdAt?: string;
   id?: number;
@@ -195,7 +195,7 @@ export interface getListWorkshop<U, A> {
 }
 
 export const getSceneList = (): Promise<
-  sceneListType<getListWorkshop<workspaceAddDatas, workShopTempleteType>, labelListType>[]
+  sceneListType<getListWorkshop<workspaceAddDatas, workShopTempleteType>, labelModuleListType>[]
 > => {
   return http.request({
     url: '/scene/getList',

+ 10 - 1
src/api/scene/secene-templet.ts

@@ -92,7 +92,7 @@ export interface SceneTempleteType {
   updatedAt?: string;
 }
 
-export const addCompanyModuleLabel = (data: SceneTempleteType[]): Promise<number> => {
+export const addCompanyModuleLabel = (data: SceneTempleteType[]) => {
   return http.request({
     url: '/template/saveCompanyModuleLabelRel',
     method: 'post',
@@ -100,6 +100,15 @@ export const addCompanyModuleLabel = (data: SceneTempleteType[]): Promise<number
   });
 };
 
+//编辑公司-场景标签-场景模板关系
+export const editCompanyModuleLabel = (data: SceneTempleteType[]) => {
+  return http.request({
+    url: '/template/updateCompanyModuleLabelRel',
+    method: 'put',
+    data,
+  });
+};
+
 //保存车间-车间模板关系
 export interface workShopTempleteType {
   id?: number;

+ 0 - 1
src/components/Table/src/Table.vue

@@ -471,7 +471,6 @@
   }
 
   onMounted(() => {
-    initOrderParams();
     nextTick(() => {
       computeTableHeight();
     });

+ 1 - 1
src/views/dashboard/monitor/actionColomns.vue

@@ -64,7 +64,7 @@
     handleDown: (row) => unknown;
   }>();
 
-  const isBook = computed(() => (props.subscribeItem.booking === '0' ? true : false));
+  // const isBook = computed(() => (props.subscribeItem.booking === '0' ? true : false));
 
   const changeConig = () => {
     props.handleConig(props.subItem);

+ 221 - 88
src/views/dashboard/monitor/addCompany.vue

@@ -1,103 +1,236 @@
 <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
+  <div>
+    <el-drawer class="test" v-if="props.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-button type="primary" v-if="companyAddTitle === '添加公司'" @click="addNewTypeCom">
-        提交
-      </el-button>
-      <el-button type="primary" v-if="companyAddTitle !== '添加公司'" @click="editedSub">
-        提交
-      </el-button>
-    </div>
-  </el-drawer>
+        <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 props.sceneList"
+                :key="item1.id"
+                :label="item1.name"
+                :value="item1.id"
+              />
+            </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 props.templateList"
+                :key="item2.id"
+                :label="item2.name"
+                :value="item2.id"
+              />
+            </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="0" inactive-value="1" class="switchUse" />
+        </el-form-item>
+      </el-form>
+      <div style="position: absolute; left: 108px; bottom: 67px">
+        <el-button v-if="companyAddTitle === '添加公司'" type="warning" @click="props.resetDraw"
+          >重置</el-button
+        >
+        <el-button type="primary" v-if="companyAddTitle === '添加公司'" @click="newCompanyAdd">
+          提交
+        </el-button>
+        <el-button type="primary" v-if="companyAddTitle !== '添加公司'" @click="props.editedSub">
+          提交
+        </el-button>
+      </div>
+    </el-drawer></div
+  >
 </template>
 
 <script setup lang="ts">
-  import { computed } from 'vue';
+  import { computed, reactive, ref, defineProps, defineEmits } from 'vue';
+  import { sceneLabelType, templateType } from '@/api/scene/secene-templet';
+  import { ENABLED } from './use-method';
+  import type { FormInstance, FormRules } from 'element-plus';
+  import { ElMessageBox } from 'element-plus';
   //   import { SubscribeItem } from '@/api/subscribe/subscribe';
 
-  interface User {
-    name?: string;
-    tag?: string;
-    code?: string;
-    hasChildren?: boolean;
-    children?: User[];
+  interface RuleForm {
+    name: string; //名称
+    seniorScene: string; //上级场景
+    code: string; //代码
+    sceneCode: string; //场景代码
+    tagCom?: string[]; //公司场景标签 可选多个
+    templateCom?: string[]; //公司场景模板 可选多个
+    tagWorkshop?: number; //场景标签  车间
+    templateWorkshop?: string; //车间模板
+    principal?: string; //负责人
+  }
+
+  interface SelectItemType {
+    tag: string;
+    template: string;
   }
 
   const props = defineProps<{
-    subItem: User;
-    handleConig: (row) => unknown;
-    handleAdd: (row) => unknown;
-    handleEdit: (row) => unknown;
-    handleDelete: (row) => unknown;
-    handleUp: (row) => unknown;
-    handleDown: (row) => unknown;
+    tableCom: boolean;
+    companyAddTitle: string;
+    sceneList: sceneLabelType[];
+    templateList: templateType[];
+    resetDraw: () => unknown;
+    addNewTypeCom: (formEl) => unknown;
+    editedSub: () => unknown;
   }>();
 
+  const addEnable = ref(ENABLED.TRUE);
+  const selectItems = ref<SelectItemType[]>([{ tag: '', template: '' }]);
+
+  //将表单数据传至父组件
+  const emit = defineEmits(['upload-data']);
+  //表格中的规则
+  const ruleFormRef = ref<FormInstance>();
+
+  interface RuleForm {
+    name: string; //名称
+    seniorScene: string; //上级场景
+    code: string; //代码
+    sceneCode: string; //场景代码
+    tagCom?: string[]; //公司场景标签 可选多个
+    templateCom?: string[]; //公司场景模板 可选多个
+    tagWorkshop?: number; //场景标签  车间
+    templateWorkshop?: string; //车间模板
+    principal?: string; //负责人
+  }
+  const ruleForm = reactive<RuleForm>({
+    name: '',
+    seniorScene: '',
+    code: '',
+    sceneCode: '',
+    tagCom: [],
+    templateCom: [],
+    tagWorkshop: 0,
+    templateWorkshop: '',
+    principal: '',
+  });
+  const rules = reactive<FormRules<RuleForm>>({
+    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 addChange = () => {
+    selectItems.value.push({
+      tag: '',
+      template: '',
+    });
+    console.log(selectItems.value);
+  };
+
+  //删除场景&模板
+  const deleScene = (index) => {
+    // console.log('row', index);
+    ElMessageBox.confirm('请确认是否关闭该场景?', '状态关闭', {
+      confirmButtonText: '确认',
+      cancelButtonText: '取消',
+      type: 'warning',
+    })
+      .then(() => {
+        selectItems.value.splice(index, 1);
+      })
+      .catch(() => {
+        console.log('取消删除物件');
+      });
+  };
+
+  const formEl = ref<FormInstance>();
+
+  const newCompanyAdd = () => {
+    emit('upload-data', {
+      ruleFormCom: ruleForm,
+      selectItemsCom: selectItems,
+      addEnableCom: addEnable,
+    });
+    props.addNewTypeCom(formEl);
+  };
+
+  // //清空
+  // const resetDraw = () => {
+  //   ruleForm.name = '';
+  //   // ruleForm.seniorScene = '';
+  //   ruleForm.code = '';
+  //   ruleForm.sceneCode = '';
+  //   addEnable.value = 1;
+  //   selectItems.value = [{ tag: '', template: '' }];
+  //   ruleForm.principal = '';
+  //   ruleForm.templateWorkshop = '';
+  //   ruleForm.tagWorkshop = undefined;
+  // };
+
   const isBook = computed(() => (props.subscribeItem.booking === '0' ? true : false));
 
   const changeConig = () => {

+ 166 - 145
src/views/dashboard/monitor/monitor.vue

@@ -1,3 +1,4 @@
+<!-- eslint-disable vue/v-on-event-hyphenation -->
 <template>
   <page-wrapper>
     <el-card :bordered="false" class="proCard" style="position: relative">
@@ -32,11 +33,17 @@
             添加
           </el-button>
         </template>
+        <template #empty>
+          <div class="empty-content flex flex-col items-center">
+            <img src="@/assets/icons/no-content.png" class="empty-img" />
+            <span class="empty-text">目前无内容,请先添加相机</span>
+          </div>
+        </template>
       </BasicTable>
-      <div v-if="tableData.length === 0" class="data-none"
+      <!-- <div v-if="tableData.length === 0" class="data-none"
         ><img src="../../../assets/icons/no-content.png" alt="" />
         <div class="data-none-word">目前无内容,请先添加场景</div></div
-      >
+      > -->
     </el-card>
 
     <!-- 添加的抽屉内容 -->
@@ -108,7 +115,12 @@
           ></div>
         </el-form-item>
         <el-form-item label="状态">
-          <el-switch v-model="addEnable" active-value="1" inactive-value="0" class="switchUse" />
+          <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">
@@ -123,6 +135,16 @@
         </el-button>
       </div>
     </el-drawer>
+    <!-- <AddCompany
+      :tableCom="tableCom"
+      :companyAddTitle="companyAddTitle"
+      :sceneList="sceneList"
+      :templateList="templateList"
+      @upload-data="eldrawData"
+      @resetDraw="resetDraw"
+      @addNewTypeCom="addNewTypeCom"
+      @editedSub="editedSub"
+    /> -->
 
     <!-- 车间和工位 -->
 
@@ -154,7 +176,12 @@
             size="10px"
             style="display: flex; justify-content: space-between"
           >
-            <el-radio-button :label="item" :key="item" v-for="item in tagList" class="tag-select" />
+            <el-radio-button
+              :label="item.name"
+              :key="item.code"
+              v-for="item in tagList"
+              class="tag-select"
+            />
           </el-radio-group>
         </el-form-item>
         <el-form-item v-if="level === 0" label="车间模板" prop="templateWorkshop">
@@ -176,7 +203,12 @@
           <el-input v-model="ruleForm.principal" />
         </el-form-item>
         <el-form-item label="状态">
-          <el-switch v-model="addEnable" active-value="1" inactive-value="0" class="switchUse" />
+          <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">
@@ -212,6 +244,7 @@
   import type { FormInstance, FormRules } from 'element-plus';
   import { ElMessageBox } from 'element-plus';
   import ActionColomn from './actionColomns.vue';
+  import AddCompany from './addCompany.vue';
   import {
     ENABLED,
     colomns,
@@ -221,7 +254,7 @@
     findItemLevel,
     options,
     updateData,
-  } from './constant';
+  } from './use-method';
   import {
     ComAddDatas,
     addCompany,
@@ -238,11 +271,15 @@
     sceneListType,
     getListWorkshop,
     getSceneList,
+    labelModuleListType,
   } from '@/api/scene/sceneOperate';
   import useScene from './use-scene';
   import { addCompanyModuleLabel } from '@/api/scene/secene-templet';
   import useSceneTemplete from './use-sence-templete';
+  import { storeToRefs } from 'pinia';
 
+  // const cameraOverview = useCameraOverview();
+  // const { loading } = storeToRefs(cameraOverview);
   const useSceneList = useScene();
   const { tableData, getSceneDetail } = useSceneList;
   const useSceneTempleteDetail = useSceneTemplete();
@@ -268,7 +305,7 @@
     sceneCode: string; //场景代码
     tagCom?: string[]; //公司场景标签 可选多个
     templateCom?: string[]; //公司场景模板 可选多个
-    tagWorkshop?: string; //场景标签  车间
+    tagWorkshop?: number; //场景标签  车间
     templateWorkshop?: string; //车间模板
     principal?: string; //负责人
   }
@@ -279,7 +316,7 @@
     sceneCode: '',
     tagCom: [],
     templateCom: [],
-    tagWorkshop: '',
+    tagWorkshop: 0,
     templateWorkshop: '',
     principal: '',
   });
@@ -338,10 +375,6 @@
     dataSourceWithParent(tableData.value, null);
     //获取tableData数据
     getSceneDetail();
-    //获取标签
-    // getSceneLabel();
-    // getTemplete();
-    // getWorkshopTemplete();
   });
 
   //用于新增数据后,将新增数据加入父级
@@ -358,6 +391,14 @@
     console.log(rowKeys);
   }
 
+  //从子组件中获取数据
+  const eldrawData = (ruleFormCom, selectItemsCom, addEnableCom) => {
+    ruleFormCom.value = ruleFormCom;
+    selectItems.value = selectItemsCom;
+    addEnable.value = addEnableCom;
+    console.log(ruleForm, selectItems, addEnable);
+  };
+
   const orderByItem = () => {};
   const handlePageNumChange = () => {};
   const handlePageSizeChange = () => {};
@@ -381,7 +422,7 @@
     selectItems.value = [{ tag: '', template: '' }];
     ruleForm.principal = '';
     ruleForm.templateWorkshop = '';
-    ruleForm.tagWorkshop = '';
+    ruleForm.tagWorkshop = undefined;
   };
 
   //用于新增场景
@@ -426,14 +467,13 @@
   //添加公司场景的提交按钮
   const addNewTypeCom = (formEl: FormInstance | undefined) => {
     if (!formEl) return;
+    // eldrawData(ruleFormCom, selectItemsCom, addEnableCom);
 
     //选出不为空字符串的数据
     selectItems.value = selectItems.value.filter((item) => {
       return item.tag && item.template;
     });
-    ruleForm.tagCom = selectItems.value.map((item) => {
-      return item.tag + '-' + item.template;
-    });
+    console.log('selectItems.value', selectItems.value);
 
     //取出数据中所有的code数据
     const allCodes = flattenCodes(tableData.value);
@@ -442,36 +482,11 @@
     const newComData = {
       name: ruleForm.name,
       code: ruleForm.code,
-      // labelList: ruleForm.tagCom,
-      status: addEnable.value,
+      status: Number(addEnable.value),
       isDeleted: 0,
       parentId: 0,
+      serial: 0,
     };
-    //提交数据并重置关闭el-draw
-    addCompany(newComData)
-      .then((res) => {
-        //将selectItems加工成保存公司-模板的数据类型
-        const newModuleLabel = selectItems.value.map((item) => {
-          return {
-            companyId: res,
-            isDeleted: 0,
-            sceneLabelId: item.tag, //item.tag
-            sceneModuleId: item.template, ///item.template
-          };
-        });
-
-        //保存公司-场景标签-场景模板关系
-        addCompanyModuleLabel(newModuleLabel).then(() => {
-          getSceneDetail();
-          resetDraw();
-          tableCom.value = false;
-        });
-      })
-      .catch((err) => {
-        console.log(err);
-      });
-
-    //保存公司-场景标签-场景模板关系
 
     //判断新数据中是否与原有的code重复
     if (allCodes.indexOf(ruleForm.code) > -1) {
@@ -487,9 +502,39 @@
           console.log('取消删除物件');
         });
     } else {
-      tableData.value.push(newComData);
-      resetDraw();
-      tableCom.value = false;
+      // tableData.value.push(newComData);
+
+      console.log('selectItems.value', selectItems.value);
+      //提交数据并重置关闭el-draw
+      addCompany(newComData)
+        .then((res) => {
+          console.log('res', res);
+
+          //将selectItems加工成保存公司-模板的数据类型
+          const newModuleLabel = selectItems.value.map((item) => {
+            return {
+              companyId: res,
+              isDeleted: 0,
+              sceneLabelId: Number(item.tag), //item.tag
+              sceneModuleId: Number(item.template), ///item.template
+            };
+          });
+          console.log('newModuleLabel', newModuleLabel);
+
+          //保存公司-场景标签-场景模板关系
+          addCompanyModuleLabel(newModuleLabel);
+        })
+        .catch((err) => {
+          console.log(err);
+        })
+        .finally(() => {
+          getSceneDetail();
+          resetDraw();
+          tableCom.value = false;
+        });
+
+      // resetDraw();
+      // tableCom.value = false;
     }
   };
 
@@ -499,18 +544,18 @@
 
     console.log('ruleForm.tagWorkshop', ruleForm.tagWorkshop);
 
-    level.value = findItemLevel(tableData.value, editedItem.value.code);
+    level.value = findItemLevel(tableData.value, editedItem.value.id, editedItem.value.name);
     const newAddData = ref({});
     if (level.value === 0) {
       console.log(111);
-      const tegNum = tagList.value.indexOf(ruleForm.tagWorkshop!);
+      // const tegNum = tagList.value.indexOf(ruleForm.tagWorkshop!);
       newAddData.value = {
         code: ruleForm.code,
         companyId: editedItem.value.id,
-        sceneLabelId: tegNum,
+        sceneLabelId: ruleForm.tagWorkshop,
         isDeleted: 0,
         name: ruleForm.name,
-        status: addEnable.value,
+        status: Number(addEnable.value),
         templete: ruleForm.templateWorkshop,
       };
     } else {
@@ -521,7 +566,7 @@
         isDeleted: 0,
         name: ruleForm.name,
         principal: ruleForm.principal,
-        status: addEnable.value,
+        status: Number(addEnable.value),
       };
     }
 
@@ -642,7 +687,7 @@
     editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem 中,以便编辑
 
     //得出当前的数据的层级
-    level.value = findItemLevel(tableData.value, row.code);
+    level.value = findItemLevel(tableData.value, row.id, row.name);
     console.log('level', level.value);
 
     if (level.value === 0) {
@@ -662,7 +707,7 @@
   };
 
   //添加车间中的场景标签
-  const tagList = ref(['生产安全', '安全环保', '物流安全', '园区生活']);
+  const tagList = ref<labelModuleListType[]>([]);
   // const templateList = ['厂房', '危险点', '食堂', '停车场'];
 
   //公司,车间,工位的模板数据
@@ -671,9 +716,10 @@
   // 在这里实现删除行的函数
 
   const handleDelete = (row: Recordable) => {
-    console.log('row', row);
-    level.value = findItemLevel(tableData.value, row.code);
-    const newAddData = ref({});
+    level.value = findItemLevel(tableData.value, row.id, row.name);
+    console.log('level.value', level.value);
+
+    // const newAddData = ref({});
     if (row.children?.length > 0) {
       ElMessageBox.confirm('存在下级场景,无法删除该场景', '无法删除该条信息', {
         confirmButtonText: '确认',
@@ -693,35 +739,23 @@
         type: 'warning',
       })
         .then(() => {
-          if (row && row.name) {
-            deleteTableRow(tableData.value, row.name);
-          }
-
           //删除接口的调用
-          // if (level.value === 0) {
-          //   delCompany(row.id).then(() => {
-          //     getSceneDetail();
-          //   });
-          // } else if (level.value === 1) {
-          //   delWorkshop(row.id).then(() => {
-          //     getSceneDetail();
-          //   });
-          // } else {
-          //   delWorkspace(row.id).then(() => {
-          //     getSceneDetail();
-          //   });
-          // }
-
-          // console.log('确认删除物件');
-          // const deleteData = {
-          //   partTypeId: row.partTypeId,
-          //   isDelete: '1',
-          // } as PartDeleteData;
-          // console.log(deleteData);
-          // deletePartType(deleteData);
+          if (level.value === 0) {
+            console.log(22222);
+            console.log('row.id1', row.id);
+            return delCompany(row.id);
+            console.log('row.id2', row.id);
+          } else if (level.value === 1) {
+            return delWorkshop(row.id);
+          } else {
+            return delWorkspace(row.id);
+          }
         })
         .catch(() => {
           console.log('取消删除物件');
+        })
+        .finally(() => {
+          getSceneDetail();
         });
     }
   };
@@ -729,8 +763,9 @@
   const handleEdit = (row) => {
     editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem 中,以便编辑
     console.log(' editedItem.value', editedItem.value);
+    console.log('tableData', tableData);
 
-    level.value = findItemLevel(tableData.value, row.code);
+    level.value = findItemLevel(tableData.value, row.id, row.name);
     if (level.value === 0) {
       tableCom.value = true;
       companyAddTitle.value = '编辑公司';
@@ -739,9 +774,9 @@
 
       //复原公司选择的场景集合
       if (row.labelList && Array.isArray(row.labelList)) {
-        selectItems.value = row.labelList.map((item) => ({
-          tag: item.split('-')[0],
-          template: item.split('-')[1],
+        selectItems.value = row.labelList.map((item, index) => ({
+          tag: item.id,
+          template: row.moduleList[index].id,
         }));
       }
       ruleForm.name = editedItem.value.name!;
@@ -775,28 +810,10 @@
     }
   };
 
-  // const editDrawerVisible = ref(false);
-
   //编辑时的提交按钮功能
 
   const editedSub = () => {
-    // const editedData = {
-    //   typeName: editedItem.value.typeName,
-    //   partTypeId: editedItem.value.partTypeId,
-    //   enable: editedItem.value.enable,
-    //   num: editedItem.value.num,
-    // } as PartEditData;
-    // console.log(editedData);
-    // editPartType(editedData);
-    // editDrawerVisible.value = false;
-    // level.value = findItemLevel(tableData.value, editedItem.value.code);
-    // console.log();
-
-    console.log(2222222222222);
-
     const allCodes = flattenCodes(tableData.value);
-    console.log('editedItem.value.code', editedItem.value.code);
-    console.log('ruleForm.workshopCode', ruleForm.code);
 
     if (allCodes.indexOf(ruleForm.code) > -1) {
       if (editedItem.value.code !== ruleForm.code) {
@@ -815,17 +832,16 @@
         return;
       }
     }
-    console.log(11111111111);
-    level.value = findItemLevel(tableData.value, editedItem.value.code);
+    level.value = findItemLevel(tableData.value, editedItem.value.id, editedItem.value.name);
     console.log('level', level.value);
 
     if (level.value === 0) {
       selectItems.value = selectItems.value.filter((item) => {
         return item.tag && item.template;
       });
-      ruleForm.tagCom = selectItems.value.map((item) => {
-        return item.tag + '-' + item.template;
-      });
+      // ruleForm.tagCom = selectItems.value.map((item) => {
+      //   return item.tag + '-' + item.template;
+      // });
 
       //使用接口来编辑
 
@@ -836,45 +852,50 @@
       // ruleForm.tagCom = selectItems.value.map((item) => {
       //   return item.tag + '-' + item.template;
       // });
-      // //新增的数据
-      // const editNewCom = {
-      //   name: ruleForm.name,
-      //   code: ruleForm.code,
-      //   labelList: ruleForm.tagCom,
-      //   status: addEnable.value,
-      // };
-      //编辑上传
-      // editCompany(editNewCom).then(() => {
-      //   //保存公司-场景标签-场景模板关系
-      //   const editModuleLabel = selectItems.value.map((item) => {
-      //     return {
-      //       companyId: editedItem.value.id,
-      //       isDeleted: 0,
-      //       sceneLabelId: 0, //item.tag
-      //       sceneModuleId: 0, ///item.template
-      //     };
-      //   });
-      //   addCompanyModuleLabel(editModuleLabel).then(() => {
-      //     getSceneDetail();
-      //     resetDraw();
-      //     tableCom.value = false;
-      //   });
-      // });
+      console.log('addEnable.value', addEnable.value);
 
-      editTableRow(
-        tableData.value,
-        level.value,
-        editedItem.value.name,
-        ruleForm.name,
-        ruleForm.code,
-        addEnable.value,
-        '',
-        '',
-        0,
-        ruleForm.tagCom!,
-      );
+      //新增的数据
+      const editNewCom = {
+        id: editedItem.value.id,
+        name: ruleForm.name,
+        code: ruleForm.code,
+        // labelList: selectItems.value,
+        status: Number(addEnable.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
+            };
+          });
+          addCompanyModuleLabel(editModuleLabel);
+        })
+        .finally(() => {
+          getSceneDetail();
+          resetDraw();
+          tableCom.value = false;
+        });
 
-      tableCom.value = false;
+      // editTableRow(
+      //   tableData.value,
+      //   level.value,
+      //   editedItem.value.name,
+      //   ruleForm.name,
+      //   ruleForm.code,
+      //   addEnable.value,
+      //   '',
+      //   '',
+      //   0,
+      //   ruleForm.tagCom!,
+      // );
+
+      // tableCom.value = false;
     } else if (level.value === 1) {
       console.log(111111, ruleForm.templateWorkshop, ruleForm.tagWorkshop);
 

+ 30 - 76
src/views/dashboard/monitor/constant.ts

@@ -1,5 +1,11 @@
 import { ref } from 'vue';
-import { sceneListType, getListWorkshop, workspaceAddDatas } from '@/api/scene/sceneOperate';
+import {
+  sceneListType,
+  getListWorkshop,
+  workspaceAddDatas,
+  labelModuleListType,
+} from '@/api/scene/sceneOperate';
+import { workShopTempleteType } from '@/api/scene/secene-templet';
 
 export const colomns = [
   { label: '场景名称', prop: 'name', width: 300 },
@@ -7,21 +13,15 @@ export const colomns = [
   { label: '代码', prop: 'code' },
 ];
 
-// export interface User {
-//   name?: string;
-//   tag?: string; //顶级场景下面的场景标签
-//   Toptag?: string[]; //公司层面的标签
-//   code?: string;
-//   hasChildren?: boolean;
-//   children?: User[];
-//   status?: string;
-//   seniorScene?: string;
-//   templeteRoom?: string;
-//   leader?: string;
-// }
-
-interface DataSourceUser extends sceneListType<getListWorkshop<workspaceAddDatas>> {
-  parent?: sceneListType<getListWorkshop<workspaceAddDatas>> | null;
+interface DataSourceUser
+  extends sceneListType<
+    getListWorkshop<workspaceAddDatas, workShopTempleteType>,
+    labelModuleListType
+  > {
+  parent?: sceneListType<
+    getListWorkshop<workspaceAddDatas, workShopTempleteType>,
+    labelModuleListType
+  > | null;
 }
 
 export const dataSourceWithParent = (d: DataSourceUser[], parent: DataSourceUser | null) => {
@@ -47,61 +47,12 @@ export const options = [
   },
 ];
 
-export const tableData = ref<User[]>([
-  {
-    name: '1',
-    tag: '6',
-    code: '22',
-  },
-  {
-    name: '2',
-    tag: '7',
-    code: '33',
-  },
-  {
-    name: '3',
-    tag: '6',
-    code: '333',
-    children: [
-      {
-        name: '31',
-        tag: '6',
-        code: '44',
-        children: [
-          {
-            name: '311',
-            tag: '7',
-            code: 'zzz',
-          },
-        ],
-      },
-      {
-        name: '32',
-        tag: '8',
-        code: 'wangxiaohu',
-        children: [
-          {
-            name: '321',
-            tag: '8',
-            code: 'zzqqqz',
-          },
-        ],
-      },
-    ],
-  },
-  {
-    name: '4',
-    tag: '7',
-    code: '55555',
-  },
-]);
-
 //用于新增数据
-export const updateData = (data, targetName, newAdd) => {
+export const updateData = (data, targetId, newAdd) => {
   for (let i = 0; i < data.length; i++) {
     const currentItem = data[i];
 
-    if (currentItem.name === targetName) {
+    if (currentItem.id === targetId) {
       if (!currentItem.children) {
         currentItem.children = [];
       }
@@ -111,7 +62,7 @@ export const updateData = (data, targetName, newAdd) => {
 
     // 如果有子项,递归查找
     if (currentItem.children && currentItem.children.length > 0) {
-      const found = updateData(currentItem.children, targetName, newAdd);
+      const found = updateData(currentItem.children, targetId, newAdd);
 
       if (found) {
         return true; // 如果在子项中找到目标项,停止继续查找
@@ -123,16 +74,18 @@ export const updateData = (data, targetName, newAdd) => {
 };
 
 //判断该条数据的层级
-export const findItemLevel = (data, targetCode, currentLevel = 0) => {
+export const findItemLevel = (data, targetId, targetName, currentLevel = 0) => {
   for (let i = 0; i < data.length; i++) {
+    console.log('i', i);
+
     const item = data[i];
 
-    if (item.code === targetCode) {
+    if (item.id === targetId && item.name === targetName) {
       return currentLevel;
     }
 
     if (item.children && item.children.length > 0) {
-      const childLevel = findItemLevel(item.children, targetCode, currentLevel + 1);
+      const childLevel = findItemLevel(item.children, targetId, targetName, currentLevel + 1);
       if (childLevel !== -1) {
         return childLevel;
       }
@@ -143,12 +96,12 @@ export const findItemLevel = (data, targetCode, currentLevel = 0) => {
 };
 
 //删除行
-export const deleteTableRow = (dataSource, name) => {
+export const deleteTableRow = (dataSource, targetId) => {
   const deleteRecursive = (data) => {
     for (let i = 0; i < data.length; i++) {
       const currentItem = data[i];
 
-      if (currentItem.name === name) {
+      if (currentItem.id === targetId) {
         // 删除当前项
         data.splice(i, 1);
         return true;
@@ -174,6 +127,7 @@ export const deleteTableRow = (dataSource, name) => {
 //行的编辑提交功能
 export const editTableRow = (
   dataSource,
+  targetId,
   level,
   name,
   newName,
@@ -188,7 +142,7 @@ export const editTableRow = (
     for (let i = 0; i < data.length; i++) {
       const currentItem = data[i];
 
-      if (currentItem.name === name) {
+      if (currentItem.id === targetId) {
         // 修改
         currentItem.name = newName;
         currentItem.code = newCode;
@@ -230,6 +184,6 @@ export const editTableRow = (
 // };
 
 export enum ENABLED {
-  FALSE = 0,
-  TRUE = 1,
+  FALSE = 1,
+  TRUE = 0,
 }

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

@@ -3,7 +3,7 @@ import {
   sceneListType,
   getListWorkshop,
   getSceneList,
-  labelListType,
+  labelModuleListType,
 } from '@/api/scene/sceneOperate';
 import { workShopTempleteType } from '@/api/scene/secene-templet';
 import { ref } from 'vue';
@@ -11,7 +11,7 @@ import { ref } from 'vue';
 export function useScene() {
   //场景数据
   const tableData = ref<
-    sceneListType<getListWorkshop<workspaceAddDatas, workShopTempleteType>, labelListType>[]
+    sceneListType<getListWorkshop<workspaceAddDatas, workShopTempleteType>, labelModuleListType>[]
   >([]);
 
   const getSceneDetail = () => {