田源
2023-12-07 580f505f445e8cd9341fef695af1aea8ce4afaea
Source/UBCS-WEB/src/views/integration/systemInfo.vue
@@ -1,13 +1,16 @@
<template>
  <basic-container>
    <avue-crud ref="crud" :data="data" :option="option" :page.sync="page" :search.sync="search" :table-loading="loading"
    <avue-crud ref="crud" :data="data" :option="option" :page.sync="page" :permission="permissionList"
               :search.sync="search"
               :table-loading="loading"
               @on-load="getDataList" @row-save="handleSave" @row-del="handleDelete" @row-update="handleEdit"
               @refresh-change="handleRefresh" @size-change="handleSizePage" @current-change="handleCurrentPage"
               @selection-change="selectionChange" @row-click="handleRowClick">
      <template slot="menuLeft">
        <!-- <el-button icon="el-icon-search" size="small" type="primary" @click="handleStatus">查 询
        </el-button> -->
        <el-button icon="el-icon-delete" size="small" type="danger" @click="handleDeleteByIds">删 除
        <el-button v-if="permissionList.delBtn" icon="el-icon-delete" size="small" type="danger"
                   @click="handleDeleteByIds">删 除
        </el-button>
      </template>
      <template slot="search" slot-scope="{row,size}">
@@ -19,10 +22,11 @@
                  :size="size" clearable style="width:300px;margin-left: 10px;"
                  @clear="handleClear" @keyup.enter.native="handleEnter"></el-input>
      </template>
      <template #menu="{row,index,size}">
      <template v-if="permissionList.empower" #menu="{row,index,size}">
        <el-button icon="el-icon-menu" size="small" type="text" @click="classifyHandler(row)">分类授权</el-button>
      </template>
    </avue-crud>
    <el-dialog :visible.sync="dialogVisible" append-to-body class="avue-dialog avue-dialog--top" title="分类授权"
               top="-50px">
@@ -54,6 +58,7 @@
  sysInfoTree,
  batchAddSave
} from '@/api/integration/sysInfo.js'
import {mapGetters} from "vuex";
export default {
  data() {
@@ -90,7 +95,23 @@
      search: {},
      delIds: [],
      data: [],
      option: {
    }
  },
  created() {
  },
  computed: {
    ...mapGetters(["permission"]),
    permissionList() {
      return {
        addBtn: this.vaildData(this.permission.systemInfo.systemInfo_add, false),
        editBtn: this.vaildData(this.permission.systemInfo.systemInfo_edit, false),
        delBtn: this.vaildData(this.permission.systemInfo.systemInfo_delete, false),
        empower: this.vaildData(this.permission.systemInfo.systemInfo_empower, false),
      }
    },
    option() {
      return {
        height: "auto",
        tip: false,
        border: true,
@@ -134,23 +155,21 @@
            type: 'textarea'
          }
        ]
      },
      }
    }
  },
  created() {
  },
  methods: {
    //重置
    resetting(){
    resetting() {
      this.$refs.tree.setCheckedKeys([])
      // console.log(this.ParentList)
    },
    empower() {
      batchAddSave(this.checkAll.oid, this.checkAll.id, this.ParentList).then(res => {
        // console.log(res.data)
        if(res.data.code === 200){
        if (res.data.code === 200) {
          this.$message.success(res.data.msg)
          this.dialogVisible=false;
          this.dialogVisible = false;
        }
      })
    },
@@ -159,35 +178,35 @@
      if (checked) {
        this.addAllChildren(row.children);
        this.addToParentList(row);
        // 勾选行时,将当前行以及其所有子节点添加到ParentList中
        // 勾选行时将所有节点添加到ParentList中
      } else {
        this.removeAllChildren(row.children);
        this.removeFromParentList(row);
        // 取消勾选行时,将当前行以及其所有子节点从ParentList中移除
        // 取消勾选将所有节点添加从ParentList中移除
      }
      // console.table(this.ParentList);
    },
    //子节点添加
    addAllChildren(children) {
      for (let child of children) {
        this.addToParentList(child);
        // 将子节点添加到 ParentList 中
        if (child.children && child.children.length > 0) {
          this.addAllChildren(child.children);
          // 递归调用继续添加子节点的子节点
        }
      }
    },
    //子节点移除
    removeAllChildren(children) {
      for (let child of children) {
        this.removeFromParentList(child);
        // 将子节点从 ParentList 中移除
        if (child.children && child.children.length > 0) {
          this.removeAllChildren(child.children);
          // 递归调用继续移除子节点的子节点
        }
      }
    },
    //当前父节点添加
    addToParentList(item) {
      const classifyOid = item.attributes.classifyOid;
      if (!this.isClassifyOidExists(classifyOid)) {
@@ -197,9 +216,9 @@
          classifyOid: classifyOid,
        };
        this.ParentList.push(record);
        // 将节点添加到ParentList中
      }
    },
    //当前父节点移除
    removeFromParentList(item) {
      const classifyOid = item.attributes.classifyOid;
      if (this.isClassifyOidExists(classifyOid)) {
@@ -207,12 +226,13 @@
        if (index !== -1) {
          this.ParentList.splice(index, 1);
        }
        // 将节点从ParentList中移除
      }
    },
    //判重-ParentList
    isClassifyOidExists(classifyOid) {
      return this.ParentList.some(item => item.classifyOid === classifyOid);
    },
    //查找index位置
    findIndexByClassifyOid(classifyOid) {
      return this.ParentList.findIndex(item => item.classifyOid === classifyOid);
    },
@@ -223,16 +243,17 @@
      sysInfoTree({systemOid: row.oid, systemId: row.id}).then(res => {
        let List = [];
        let value = 0;
        let NumberList= [];
        let NumberList = [];
        function traverse(obj, parent) {
          //重新构建一次选中当前row的数据
          const record = {
            label: obj.text,
            oid: obj.oid,
            attributes:{
            attributes: {
              classifyId: obj.attributes.classifyId,
              classifyOid: obj.attributes.classifyOid,
              selected:obj.attributes.selected
              selected: obj.attributes.selected
            },
            classParentOid: obj.parentId,
            value: value,
@@ -265,6 +286,7 @@
            }
          }
        }
        for (let item of res.data) {
          traverse(item, null);
        }
@@ -273,6 +295,7 @@
        // this.ModifyProperties(this.TreeData, 'text', 'label');
        // 根据this.TreeData的长度计算延迟时间
        const delayTime = this.TreeData.length * 1;
        console.log(delayTime)
        setTimeout(() => {
          this.loading = false;
          this.reload = Math.random();
@@ -330,6 +353,7 @@
            message: '新增数据成功!'
          })
          done(row)
          await this.getDataList();
          // this.$refs.crud.refreshTable()
          // this.getDataList()
        }
@@ -350,6 +374,7 @@
          })
          done(row)
        }
        await this.getDataList();
      } catch {
        loading()
      }
@@ -385,7 +410,7 @@
            type: 'success',
            message: '删除成功!'
          });
          this.getDataList()
          await this.getDataList()
        }
      })
    },