吉安感知网项目-前端
shuishen
2026-01-17 194db7300a3e50d7bd0bb61f8ff6d34d22b72f55
applications/drone-command/src/views/authority/role.vue
@@ -1,13 +1,30 @@
<template>
  <basic-container>
    <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
      :permission="permissionList" :before-open="beforeOpen" @row-del="rowDel" @row-update="rowUpdate"
      @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
      <avue-crud
         :option="option"
         :table-loading="loading"
         :data="data"
         ref="crud"
         v-model="form"
         :permission="permissionList"
         :before-open="beforeOpen"
         @row-del="rowDel"
         @row-update="rowUpdate"
         @row-save="rowSave"
         @search-change="searchChange"
         @search-reset="searchReset"
         @selection-change="selectionChange"
         @current-change="currentChange"
         @size-change="sizeChange"
         @refresh-change="refreshChange"
         @on-load="onLoad"
      >
      <template #menu-left>
        <el-button type="danger" icon="el-icon-delete" v-if="permission.role_delete" plain @click="handleDelete">删 除
            <el-button type="danger" icon="el-icon-delete" v-if="permission.role_delete" plain @click="handleDelete">
               删 除
        </el-button>
        <el-button icon="el-icon-setting" v-if="userInfo.role_name.includes('admin')" @click="handleRole" plain>权限设置
            <el-button icon="el-icon-setting" v-if="userInfo.role_name.includes('admin')" @click="handleRole" plain>
               权限设置
        </el-button>
        <!--  -->
      </template>
@@ -15,32 +32,68 @@
    <el-dialog title="角色权限配置" append-to-body v-model="box" width="620px">
      <el-tabs type="border-card">
        <el-tab-pane label="后台管理">
          <el-tree :data="menuGrantList" show-checkbox node-key="id" ref="treeMenu" :default-checked-keys="menuTreeObj"
            :props="props">
          </el-tree>
               <el-tree
                  :data="menuGrantList"
                  show-checkbox
                  node-key="id"
                  ref="treeMenu"
                  :default-checked-keys="menuTreeObj"
                  :props="props"
               ></el-tree>
        </el-tab-pane>
        <el-tab-pane label="移动app">
          <el-tree :data="menuGrantListApp" show-checkbox node-key="id" ref="treeMenuApp" :default-checked-keys="menuTreeObjApp"
                   :props="props">
          </el-tree>
               <el-tree
                  :data="menuGrantListApp"
                  show-checkbox
                  node-key="id"
                  ref="treeMenuApp"
                  :default-checked-keys="menuTreeObjApp"
                  :props="props"
               ></el-tree>
        </el-tab-pane>
        <el-tab-pane label="新大屏菜单">
          <el-tree :data="menuGrantListNew" show-checkbox node-key="id" ref="treeMenuWebNew" :default-checked-keys="menuTreeObjNew"
                   :props="props">
          </el-tree>
               <el-tree
                  :data="menuGrantListNew"
                  show-checkbox
                  node-key="id"
                  ref="treeMenuWebNew"
                  :default-checked-keys="menuTreeObjNew"
                  :props="props"
               ></el-tree>
        </el-tab-pane>
        <el-tab-pane label="无人机管控">
          <el-tree :data="menuGrantListDroneControl" show-checkbox node-key="id" ref="droneControl" :default-checked-keys="droneControlMenuTreeObj"
                   :props="props">
          </el-tree>
               <el-tree
                  :data="menuGrantListDroneControl"
                  show-checkbox
                  node-key="id"
                  ref="droneControl"
                  :default-checked-keys="droneControlMenuTreeObj"
                  :props="props"
               ></el-tree>
            </el-tab-pane>
            <el-tab-pane label="任务工单">
               <el-tree
                  :data="menuGrantListWork"
                  show-checkbox
                  node-key="id"
                  ref="workRef"
                  :default-checked-keys="workTreeObj"
                  :props="props"
               ></el-tree>
        </el-tab-pane>
        <el-tab-pane label="大屏菜单">
          <el-tree :data="menuGrantListOld" show-checkbox node-key="id" ref="treeMenuWebOld" :default-checked-keys="menuTreeObjOld"
                   :props="props">
          </el-tree>
               <el-tree
                  :data="menuGrantListOld"
                  show-checkbox
                  node-key="id"
                  ref="treeMenuWebOld"
                  :default-checked-keys="menuTreeObjOld"
                  :props="props"
               ></el-tree>
        </el-tab-pane>
        <!-- <el-tab-pane label="数据权限">
          <el-tree
@@ -76,16 +129,7 @@
</template>
<script>
import {
  add,
  getList,
  getRole,
  getRoleTreeById,
  grant,
  grantTree,
  remove,
  update,
} from '@/api/system/role'
import { add, getList, getRole, getRoleTreeById, grant, grantTree, remove, update } from '@/api/system/role'
import { mapGetters } from 'vuex'
import website from '@/config/website'
@@ -103,6 +147,7 @@
      menuGrantListOld: [],
      menuGrantListNew: [],
      menuGrantListDroneControl: [],
         menuGrantListWork: [],
      dataScopeGrantList: [],
      apiScopeGrantList: [],
      apiGrantList: [],
@@ -111,6 +156,7 @@
      menuTreeObjOld: [],
      menuTreeObjNew: [],
      droneControlMenuTreeObj: [],
         workTreeObj: [],
      dataScopeTreeObj: [],
      apiScopeTreeObj: [],
      selectionList: [],
@@ -265,22 +311,20 @@
      const menuList = this.$refs.treeMenu.getCheckedKeys()
      const menuListApp = this.$refs.treeMenuApp.getCheckedKeys()
      const menuListWebNew = this.$refs.treeMenuWebNew.getCheckedKeys()
         const menuListWork = this.$refs.workRef.getCheckedKeys()
      const menuListDroneControl = this.$refs.droneControl.getCheckedKeys()
      const menuListWebOld = this.$refs.treeMenuWebOld.getCheckedKeys()
      // const dataScopeList = this.$refs.treeDataScope.getCheckedKeys();
      const dataScopeList = []
      // const apiScopeList = this.$refs.treeApiScope.getCheckedKeys();
      const apiScopeList = []
      grant(this.idsArray, [
        ...menuList,
        ...menuListApp,
        ...menuListWebNew,
        ...menuListDroneControl,
        ...menuListWebOld,
      ], dataScopeList, apiScopeList).then(() => {
         grant(
            this.idsArray,
            [...menuList, ...menuListApp, ...menuListWebNew, ...menuListDroneControl, ...menuListWebOld, ...menuListWork],
            dataScopeList,
            apiScopeList
         ).then(() => {
        this.box = false
        this.$message({
          type: 'success',
@@ -411,6 +455,13 @@
          this.box = true
        })
      })
         grantTree({ sysType: 6 }).then(res => {
            this.menuGrantListWork = res.data.data.menu
            getRole(this.ids).then(res => {
               this.workTreeObj = res.data.data.menu
               this.box = true
            })
         })
    },
    handleDelete () {
      if (this.selectionList.length === 0) {