田源
2023-09-22 5f06c56fd6273a34a502ea730382296cf1c1707f
Source/UBCS-WEB/src/views/integration/systemInfo.vue
@@ -19,16 +19,59 @@
                  :size="size" clearable style="width:300px;margin-left: 10px;"
                  @clear="handleClear" @keyup.enter.native="handleEnter"></el-input>
      </template>
      <template #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">
      <el-row>
        <el-col :span="10">
          <avue-tree ref="tree"
                     v-model="TreeForm"
                     :data="TreeData"
                     :option="TreeOption"
                     @check-change="checkChange">
          </avue-tree>
        </el-col>
      </el-row>
      <div slot="footer" class="dialog-footer" style="height: 50px;line-height: 50px">
        <el-button icon="el-icon-plus" size="small" type="primary" @click="empower">授 权</el-button>
        <el-button icon="el-icon-close" size="small" type="danger">重 置</el-button>
      </div>
    </el-dialog>
  </basic-container>
</template>
<script>
import {getSysInfoList, sysInfoAdd, sysInfoEdit, sysInfoDel} from '@/api/integration/sysInfo.js'
import {
  getSysInfoList,
  sysInfoAdd,
  sysInfoEdit,
  sysInfoDel,
  sysInfoTree,
  batchAddSave
} from '@/api/integration/sysInfo.js'
export default {
  data() {
    return {
      checkAll: {},
      ParentList: [],
      //避免缓存
      reload: Math.random(),
      TreeLoading: false,
      TreeOption: {
        defaultExpandAll: false,
        multiple: true,
        addBtn: false,
        filter: false
      },
      TreeData: [],
      TreeForm: {},
      loading: false,
      dialogVisible: false,
      page: {
        currentPage: 1,
        pageSize: 10,
@@ -92,29 +135,88 @@
      },
    }
  },
  created() {
  },
  methods: {
    // 获取列表
    // async getDataList() {
    //     this.loading = true
    //     console.log(this.search)
    //     const { pageSize, currentPage } = this.page
    //     let param = { size: pageSize, current: currentPage }
    //     this.search = Object.keys(this.search)
    //         .filter((key) => this.search[key] !== null && this.search[key] !== undefined && this.search[key] !== "")
    //         .reduce((acc, key) => ({ ...acc, [key]: this.search[key] }), {});
    //     const response = await getSysInfoList(pageSize,currentPage,{...param})
    //     if (response.status === 200) {
    //         console.log(response)
    //         this.loading = false
    //         const data = response.data.data
    //         this.data = data.records
    //         this.page.total = data.total
    //     } else this.loading = false
    // },
    empower() {
      batchAddSave(this.checkAll.oid, this.checkAll.id, this.ParentList).then(res => {
        console.log(res)
      })
    },
    //分类授权多选回调
    checkChange(row, checked) {
      if (checked) {
        if (!row.parentId && row.children) {
          const parentRecord = {
            oid: row.oid,
            classifyId: row.attributes.classifyId,
            classifyOid: row.attributes.classifyOid,
            classParentOid: row.parentId,
          };
          this.ParentList.push(parentRecord);
          // 如果row的children不为空,继续循环children中的每个对象
          if (row.children && row.children.length > 0) {
            for (let child of row.children) {
              const childRecord = {
                oid: child.oid,
                classifyId: child.attributes.classifyId,
                classifyOid: child.attributes.classifyOid,
                classParentOid: child.parentId,
              };
              this.ParentList.push(childRecord);
              // 如果子对象的children不为空,继续循环获取数据
              if (child.children && child.children.length > 0) {
                for (let subChild of child.children) {
                  const subRecord = {
                    oid: subChild.oid,
                    classifyId: subChild.attributes.classifyId,
                    classifyOid: subChild.attributes.classifyOid,
                    classParentOid: subChild.parentId,
                  };
                  this.ParentList.push(subRecord);
                }
              }
            }
          }
          console.log(this.ParentList);
        }
      } else {
        this.ParentList = this.ParentList.filter(res => res.classifyId !== row.classifyId);
        console.log(this.ParentList);
      }
    },
    //分类授权
    classifyHandler(row) {
      this.loading = true;
      this.checkAll = row
      sysInfoTree({systemOid: row.oid, systemId: row.id}).then(res => {
        this.TreeData = res.data;
        this.ModifyProperties(this.TreeData, 'text', 'label');
        // 根据 this.TreeData 的长度计算延迟时间
        const delayTime = this.TreeData.length * 1;
        setTimeout(() => {
          this.loading = false;
          this.reload = Math.random()
          this.dialogVisible = true;
        }, delayTime);
      });
    },
    //定义一个修改数据属性名的方法
    ModifyProperties(obj, oldName, newName) {
      for (let key in obj) {
        if (key === oldName) {
          obj[newName] = obj[key];
          delete obj[key];
        }
        if (typeof obj[key] === 'object') {
          this.ModifyProperties(obj[key], oldName, newName);
        }
      }
    },
    async getDataList() {
      this.loading = true;
      console.log(this.search);
      const { pageSize, currentPage } = this.page;
      const {pageSize, currentPage} = this.page;
      const conditions = {};
      if (Object.keys(this.search).length > 0) {
        for (const key in this.search) {
@@ -216,9 +318,7 @@
    },
    // enter搜索
    handleEnter() {
      if (this.search[this.selectValue] === '') return
      else this.getDataList()
      this.getDataList()
    },
    // 输入框清空
    handleClear() {
@@ -241,13 +341,12 @@
    },
    // 多选
    selectionChange(list) {
      console.log(list)
      let newData = list.map(item => {
        const {oid} = item
        return oid
      })
      this.delIds = {oids: newData.toString()}
      console.log(this.delIds)
      // console.log(this.delIds)
    },
  }
}