Browse Source

增加配置角色子系统

lr 2 years ago
parent
commit
fc7623fd5c

+ 11 - 3
src/api/dm/system/dmSystem.js

@@ -32,11 +32,19 @@ export function edit(data) {
   })
 }
 
-export function queryByUserId(userId, isMenu) {
+export function queryByRoleId(roleIds, isMenu) {
   return request({
-    url: 'api/dmSystem/queryByUserId?userId=' + userId + '&isMenu=' + isMenu,
+    url: 'api/dmSystem/queryByRoleId?isMenu=' + isMenu,
+    method: 'post',
+    data: roleIds
+  })
+}
+
+export function getSystemsTree() {
+  return request({
+    url: 'api/dmSystem/lazy',
     method: 'get'
   })
 }
 
-export default { add, edit, del, getDmSystem, queryByUserId }
+export default { add, edit, del, getDmSystem, queryByRoleId, getSystemsTree }

+ 8 - 8
src/api/dm/user/dmUser.js

@@ -49,13 +49,13 @@ export function edit(data) {
   })
 }
 
-export function updateUserSystem(data) {
-  return request({
-    url: 'api/dmUser/updateUserSystem',
-    method: 'post',
-    data
-  })
-}
+// export function updateUserSystem(data) {
+//   return request({
+//     url: 'api/dmUser/updateUserSystem',
+//     method: 'post',
+//     data
+//   })
+// }
 
 export function updateUserAppMenu(data) {
   return request({
@@ -65,4 +65,4 @@ export function updateUserAppMenu(data) {
   })
 }
 
-export default { add, edit, del, getAll, updateUserSystem, updateUserAppMenu }
+export default { add, edit, del, getAll, updateUserAppMenu }

+ 9 - 1
src/api/system/role.js

@@ -54,4 +54,12 @@ export function editMenu(data) {
   })
 }
 
-export default { add, edit, del, get, editMenu, getLevel }
+export function editSystem(data) {
+  return request({
+    url: 'api/roles/system',
+    method: 'put',
+    data
+  })
+}
+
+export default { add, edit, del, get, editMenu, editSystem, getLevel }

+ 2 - 1
src/views/dm/system/index.vue

@@ -79,7 +79,7 @@ import udOperation from '@crud/UD.operation'
 import pagination from '@crud/Pagination'
 import dmUserTemp from '@/components/User/dmUserindex'
 
-const defaultForm = { id: null, systemName: null, systemUrl: null, storage: {}, dmUser: {}, isMenu: false, menuPath: null }
+const defaultForm = { id: null, systemName: null, systemUrl: null, storage: {}, userId: null, dmUser: {}, isMenu: false, menuPath: null }
 export default {
   name: 'DmSystem',
   components: { pagination, crudOperation, rrOperation, udOperation, dmUserTemp },
@@ -146,6 +146,7 @@ export default {
     },
     dmUserCallbackFunc(userList) {
       this.form.dmUser = userList[0]
+      this.form.userId = userList[0].id
     }
   }
 }

+ 7 - 3
src/views/dm/systemNavigation/index.vue

@@ -31,11 +31,15 @@ export default {
     ])
   },
   mounted() {
-    this.queryByUserId(this.user.id)
+    const roles = []
+    for (let i = 0; i < this.user.roles.length; i++) {
+      roles.push(this.user.roles[i].id)
+    }
+    this.queryByUserId(roles)
   },
   methods: {
-    queryByUserId(userId) {
-      crudDmSystem.queryByUserId(userId, 1).then(res => {
+    queryByUserId(roles) {
+      crudDmSystem.queryByRoleId(roles, 1).then(res => {
         console.log('res', res)
         this.systemList = res
       })

+ 58 - 58
src/views/dm/user/index.vue

@@ -4,7 +4,7 @@
     <div class="head-container">
       <!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
       <crudOperation :permission="permission" />
-      <el-button class="filter-item" size="mini" type="success" icon="el-icon-edit" :disabled="crud.selections.length !== 1" @click="systemConfigClick(crud.selections[0])">配置子系统权限</el-button>
+      <!--      <el-button class="filter-item" size="mini" type="success" icon="el-icon-edit" :disabled="crud.selections.length !== 1" @click="systemConfigClick(crud.selections[0])">配置子系统权限</el-button>-->
       <el-button class="filter-item" size="mini" type="success" icon="el-icon-edit" :disabled="crud.selections.length !== 1" @click="appMenuConfigClick(crud.selections[0])">配置APP菜单权限</el-button>
       <div class="head-container">
         <div v-if="crud.props.searchToggle">
@@ -21,25 +21,25 @@
           <rrOperation />
         </div>
       </div>
-      <!--配置子系统权限-->
-      <el-dialog title="配置子系统权限" :visible.sync="systemConfig">
-        <el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
-          <el-descriptions>
-            <el-descriptions-item label="姓名">{{ form.name }}</el-descriptions-item>
-            <el-descriptions-item label="员工工号">{{ form.userNumber }}</el-descriptions-item>
-            <el-descriptions-item label="职务">{{ form.jobs && form.jobs.map(item => item.name).join(',') }}</el-descriptions-item>
-            <el-descriptions-item label="所属部门">{{ form.dept.name }}</el-descriptions-item>
-          </el-descriptions>
-          <div>授权子系统权限:</div>
-          <el-checkbox-group v-model="dmUserSystem">
-            <el-checkbox v-for="dmSystem in dmSystemList" :key="dmSystem.id" :label="dmSystem.id" name="type" border>{{ dmSystem.systemName }}</el-checkbox>
-          </el-checkbox-group>
-        </el-form>
-        <div slot="footer" class="dialog-footer">
-          <el-button type="text" @click="cancelSystemConfig">取消</el-button>
-          <el-button :loading="crud.status.cu === 2" type="primary" @click="submitSystemConfig">确认</el-button>
-        </div>
-      </el-dialog>
+      <!--      &lt;!&ndash;配置子系统权限&ndash;&gt;-->
+      <!--      <el-dialog title="配置子系统权限" :visible.sync="systemConfig">-->
+      <!--        <el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">-->
+      <!--          <el-descriptions>-->
+      <!--            <el-descriptions-item label="姓名">{{ form.name }}</el-descriptions-item>-->
+      <!--            <el-descriptions-item label="员工工号">{{ form.userNumber }}</el-descriptions-item>-->
+      <!--            <el-descriptions-item label="职务">{{ form.jobs && form.jobs.map(item => item.name).join(',') }}</el-descriptions-item>-->
+      <!--            <el-descriptions-item label="所属部门">{{ form.dept.name }}</el-descriptions-item>-->
+      <!--          </el-descriptions>-->
+      <!--          <div>授权子系统权限:</div>-->
+      <!--          <el-checkbox-group v-model="dmUserSystem">-->
+      <!--            <el-checkbox v-for="dmSystem in dmSystemList" :key="dmSystem.id" :label="dmSystem.id" name="type" border>{{ dmSystem.systemName }}</el-checkbox>-->
+      <!--          </el-checkbox-group>-->
+      <!--        </el-form>-->
+      <!--        <div slot="footer" class="dialog-footer">-->
+      <!--          <el-button type="text" @click="cancelSystemConfig">取消</el-button>-->
+      <!--          <el-button :loading="crud.status.cu === 2" type="primary" @click="submitSystemConfig">确认</el-button>-->
+      <!--        </div>-->
+      <!--      </el-dialog>-->
 
       <!--配置app菜单权限-->
       <el-dialog title="配置app菜单权限" :visible.sync="appMenuConfig">
@@ -107,7 +107,7 @@
 
 <script>
 import crudDmUser from '@/api/dm/user/dmUser'
-import { getDmSystem, queryByUserId } from '@/api/dm/system/dmSystem'
+// import { getDmSystem, queryByUserId } from '@/api/dm/system/dmSystem'
 import { getDmAppMenu } from '@/api/dm/appMenu/dmAppMenu'
 import CRUD, { presenter, header, form, crud } from '@crud/crud'
 import rrOperation from '@crud/RR.operation'
@@ -153,43 +153,43 @@ export default {
     [CRUD.HOOK.beforeRefresh]() {
       return true
     },
-    systemConfigClick(data) {
-      this.form = data
-      let dmSystems = []
-      queryByUserId(data.id, '').then(res => {
-        console.log('res:', res)
-        dmSystems = res
-        for (let i = 0; i < dmSystems.length; i++) {
-          this.dmUserSystem.push(dmSystems[i].id)
-        }
-        console.log('this.dmUserSystem', this.dmUserSystem)
-        this.systemConfig = true
-        this.getDmSystemList()
-      })
-    },
-    // 获取所有子系统
-    getDmSystemList() {
-      getDmSystem().then(res => {
-        this.dmSystemList = res.content
-      })
-    },
-    cancelSystemConfig() {
-      this.dmSystemList = []
-      this.dmUserSystem = []
-      this.systemConfig = false
-    },
-    submitSystemConfig() {
-      console.log(this.dmUserSystem)
-
-      const updateUserSystemData = {}
-      updateUserSystemData.userId = this.form.id
-      updateUserSystemData.systemIds = this.dmUserSystem
-      crudDmUser.updateUserSystem(updateUserSystemData)
-      this.dmSystemList = []
-      this.dmUserSystem = []
-      this.systemConfig = false
-      this.crud.refresh()
-    },
+    // systemConfigClick(data) {
+    //   this.form = data
+    //   let dmSystems = []
+    //   queryByUserId(data.id, '').then(res => {
+    //     console.log('res:', res)
+    //     dmSystems = res
+    //     for (let i = 0; i < dmSystems.length; i++) {
+    //       this.dmUserSystem.push(dmSystems[i].id)
+    //     }
+    //     console.log('this.dmUserSystem', this.dmUserSystem)
+    //     this.systemConfig = true
+    //     this.getDmSystemList()
+    //   })
+    // },
+    // // 获取所有子系统
+    // getDmSystemList() {
+    //   getDmSystem().then(res => {
+    //     this.dmSystemList = res.content
+    //   })
+    // },
+    // cancelSystemConfig() {
+    //   this.dmSystemList = []
+    //   this.dmUserSystem = []
+    //   this.systemConfig = false
+    // },
+    // submitSystemConfig() {
+    //   console.log(this.dmUserSystem)
+    //
+    //   const updateUserSystemData = {}
+    //   updateUserSystemData.userId = this.form.id
+    //   updateUserSystemData.systemIds = this.dmUserSystem
+    //   crudDmUser.updateUserSystem(updateUserSystemData)
+    //   this.dmSystemList = []
+    //   this.dmUserSystem = []
+    //   this.systemConfig = false
+    //   this.crud.refresh()
+    // },
     appMenuConfigClick(data) {
       this.form = data
       console.log('data.dmAppMenus.length:', data.dmAppMenus.length)

+ 1 - 1
src/views/login.vue

@@ -57,7 +57,7 @@ export default {
       codeUrl: '',
       cookiePass: '',
       loginForm: {
-        username: 'admin',
+        username: 'zkadmin',
         password: '123456',
         rememberMe: false,
         code: '',

+ 6 - 2
src/views/middle.vue

@@ -266,10 +266,14 @@ export default {
         password: this.dmUser.user.ossPassword
       }
       this.$store.dispatch('Sso', user).then(() => {
-        crudDmSystem.queryByUserId(this.dmUser.user.id, 0).then((res) => {
+        const roles = []
+        for (let i = 0; i < this.dmUser.user.roles.length; i++) {
+          roles.push(this.dmUser.user.roles[i].id)
+        }
+        crudDmSystem.queryByRoleId(roles, 0).then((res) => {
           this.systemList = res
         })
-        crudDmSystem.queryByUserId(this.dmUser.user.id, 1).then((res) => {
+        crudDmSystem.queryByRoleId(roles, 1).then((res) => {
           this.systemListOne = res
         })
       })

+ 89 - 0
src/views/system/role/index.vue

@@ -113,6 +113,39 @@
           />
         </el-card>
       </el-col>
+      <!-- 子系统授权 -->
+      <el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="7">
+        <el-card class="box-card" shadow="never">
+          <div slot="header" class="clearfix">
+            <el-tooltip class="item" effect="dark" content="选择指定角色分配子系统" placement="top">
+              <span class="role-span">子系统分配</span>
+            </el-tooltip>
+            <el-button
+              v-permission="['admin','roles:edit']"
+              :disabled="!showButton2"
+              :loading="menuLoading2"
+              icon="el-icon-check"
+              size="mini"
+              style="float: right; padding: 6px 9px"
+              type="primary"
+              @click="saveSystem"
+            >保存</el-button>
+          </div>
+          <el-tree
+            ref="system"
+            lazy
+            :data="systems"
+            :default-checked-keys="systemIds"
+            :load="getSystemDatas"
+            :props="defaultProps2"
+            check-strictly
+            accordion
+            show-checkbox
+            node-key="id"
+            @check="systemChange"
+          />
+        </el-card>
+      </el-col>
     </el-row>
   </div>
 </template>
@@ -121,6 +154,7 @@
 import crudRoles from '@/api/system/role'
 import { getDepts, getRoleDeptSuperior } from '@/api/system/dept'
 import { getMenusTree, getChild } from '@/api/system/menu'
+import { getSystemsTree } from '@/api/dm/system/dmSystem'
 import CRUD, { presenter, header, form, crud } from '@crud/crud'
 import rrOperation from '@crud/RR.operation'
 import crudOperation from '@crud/CRUD.operation'
@@ -142,9 +176,12 @@ export default {
   data() {
     return {
       defaultProps: { children: 'children', label: 'label', isLeaf: 'leaf' },
+      defaultProps2: { children: 'children', label: 'systemName', isLeaf: 'leaf' },
       dateScopes: ['全部', '本级', '自定义'], level: 3,
       currentId: 0, menuLoading: false, showButton: false,
+      menuLoading2: false, showButton2: false,
       menus: [], menuIds: [], depts: [], deptDatas: [], // 多选时使用
+      systems: [], systemIds: [],
       permission: {
         add: ['admin', 'roles:add'],
         edit: ['admin', 'roles:edit'],
@@ -176,6 +213,13 @@ export default {
         })
       }, 100)
     },
+    getSystemDatas(node, resolve) {
+      setTimeout(() => {
+        getSystemsTree().then(res => {
+          resolve(res)
+        })
+      }, 100)
+    },
     [CRUD.HOOK.afterRefresh]() {
       this.$refs.menu.setCheckedKeys([])
     },
@@ -220,14 +264,20 @@ export default {
         const _this = this
         // 清空菜单的选中
         this.$refs.menu.setCheckedKeys([])
+        this.$refs.system.setCheckedKeys([])
         // 保存当前的角色id
         this.currentId = val.id
         // 初始化默认选中的key
         this.menuIds = []
+        this.systemIds = []
         val.menus.forEach(function(data) {
           _this.menuIds.push(data.id)
         })
+        val.systems.forEach(function(data) {
+          _this.systemIds.push(data.id)
+        })
         this.showButton = true
+        this.showButton2 = true
       }
     },
     menuChange(menu) {
@@ -252,6 +302,27 @@ export default {
         this.$refs.menu.setCheckedKeys(this.menuIds)
       })
     },
+    systemChange(system) {
+      // 获取该节点的所有子节点,id 包含自身
+      const childIds = [system.id]
+      // 判断是否在 systemIds 中,如果存在则删除,否则添加
+      if (this.systemIds.indexOf(system.id) !== -1) {
+        for (let i = 0; i < childIds.length; i++) {
+          const index = this.systemIds.indexOf(childIds[i])
+          if (index !== -1) {
+            this.systemIds.splice(index, 1)
+          }
+        }
+      } else {
+        for (let i = 0; i < childIds.length; i++) {
+          const index = this.systemIds.indexOf(childIds[i])
+          if (index === -1) {
+            this.systemIds.push(childIds[i])
+          }
+        }
+      }
+      this.$refs.system.setCheckedKeys(this.systemIds)
+    },
     // 保存菜单
     saveMenu() {
       this.menuLoading = true
@@ -270,6 +341,24 @@ export default {
         console.log(err.response.data.message)
       })
     },
+    // 保存子系统
+    saveSystem() {
+      this.menuLoading2 = true
+      const role = { id: this.currentId, systems: [] }
+      // 得到已选中的 key 值
+      this.systemIds.forEach(function(id) {
+        const system = { id: id }
+        role.systems.push(system)
+      })
+      crudRoles.editSystem(role).then(() => {
+        this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
+        this.menuLoading2 = false
+        this.update()
+      }).catch(err => {
+        this.menuLoading2 = false
+        console.log(err.response.data.message)
+      })
+    },
     // 改变数据
     update() {
       // 无刷新更新 表格数据