完善动态菜单、设置角色等功能,修复登录问题

This commit is contained in:
橙子
2022-05-08 14:46:22 +08:00
parent e3a06b28dd
commit d252229777
22 changed files with 150 additions and 263 deletions

View File

@@ -49,180 +49,16 @@
<script>
// Utilities
// import { get, sync } from 'vuex-pathify'
import userApi from "@/api/userApi";
import store from "@/store/index.js";
import { toTree } from "@/util/menuHandle";
export default {
methods: {
init() {
//这里动态获取菜单,暂时写死
// userApi.GetMenuByHttpUser().then((resp) => {
// this.items = resp.data.children;
// });
this.items =
[
{
icon: "mdi-view-dashboard",
router: "/",
menu_name: "首页",
roles: null,
mould: null,
is_top: 0,
sort: 0,
is_show: 1,
parentId: 1,
children: null,
id: 2,
is_delete: 0,
},
{
icon: "mdi-account-box-multiple",
router: null,
menu_name: "用户角色管理",
roles: null,
mould: null,
is_top: 0,
sort: 0,
is_show: 1,
parentId: 1,
children: [
{
icon: "mdi-account-box",
router: "/AdmUser/",
menu_name: "用户管理",
roles: null,
mould: null,
is_top: 0,
sort: 0,
is_show: 1,
parentId: 3,
children: null,
id: 4,
is_delete: 0,
},
{
icon: "mdi-account-circle",
router: "/admrole/",
menu_name: "角色管理",
roles: null,
mould: null,
is_top: 0,
sort: 0,
is_show: 1,
parentId: 3,
children: null,
id: 9,
is_delete: 0,
},
],
id: 3,
is_delete: 0,
},
{
icon: "mdi-account-cash",
router: null,
menu_name: "角色接口管理",
roles: null,
mould: null,
is_top: 0,
sort: 0,
is_show: 1,
parentId: 1,
children: [
{
icon: "mdi-clipboard-check-multiple",
router: "/AdmMenu/",
menu_name: "菜单管理",
roles: null,
mould: null,
is_top: 0,
sort: 0,
is_show: 1,
parentId: 14,
children: null,
id: 15,
is_delete: 0,
},
{
icon: "mdi-circle-slice-8",
router: "/admMould/",
menu_name: "接口管理",
roles: null,
mould: null,
is_top: 0,
sort: 0,
is_show: 1,
parentId: 14,
children: null,
id: 20,
is_delete: 0,
},
{
icon: "mdi-clipboard-account",
router: "/admRoleMenu/",
menu_name: "角色菜单分配管理",
roles: null,
mould: null,
is_top: 0,
sort: 0,
is_show: 1,
parentId: 14,
children: null,
id: 25,
is_delete: 0,
},
],
id: 14,
is_delete: 0,
},
{
icon: "mdi-clipboard-flow-outline",
router: null,
menu_name: "路由管理",
roles: null,
mould: null,
is_top: 0,
sort: 0,
is_show: 1,
parentId: 1,
children: [
{
icon: "mdi-account-eye",
router: "/userinfo/",
menu_name: "用户信息",
roles: null,
mould: null,
is_top: 0,
sort: 0,
is_show: 1,
parentId: 26,
children: null,
id: 27,
is_delete: 0,
},
{
icon: "mdi-account-eye",
router: "/pan",
menu_name: "云盘管理",
roles: null,
mould: null,
is_top: 0,
sort: 0,
is_show: 1,
parentId: 26,
children: null,
id: 28,
is_delete: 0,
},
],
id: 26,
is_delete: 0,
},
]
this.items=toTree( store.state.user.user.menus);
},
logout() {
this.$store.dispatch("Logout");
this.$router.push({ path: "/login" });
this.$store.dispatch("Logout")
this.$router.push({ path: "/login/" });
},
},
created() {

View File

@@ -1,8 +1,8 @@
<template>
<v-list-group :group="group" :prepend-icon="item.icon" eager v-bind="$attrs">
<v-list-group :group="group" :prepend-icon="item.menuIcon" eager v-bind="$attrs">
<template v-slot:activator>
<v-list-item-icon
v-if="!item.icon && !item.avatar"
v-if="!item.menuIcon && !item.avatar"
class="text-caption text-uppercase text-center my-2 align-self-center"
style="margin-top: 14px"
>
@@ -13,8 +13,8 @@
<v-img :src="item.avatar" />
</v-list-item-avatar>
<v-list-item-content v-if="item.menu_name">
<v-list-item-title v-text="item.menu_name" />
<v-list-item-content v-if="item.menuName">
<v-list-item-title v-text="item.menuName" />
</v-list-item-content>
</template>
@@ -57,7 +57,7 @@ export default {
return this.genGroup(this.item.children);
},
title() {
const matches = this.item.menu_name.match(/\b(\w)/g);
const matches = this.item.menuName.match(/\b(\w)/g);
if (matches != null) {
return matches.join("");
}

View File

@@ -11,7 +11,7 @@
v-on="$listeners"
>
<v-list-item-icon
v-if="!item.icon"
v-if="!item.menuIcon"
class="text-caption text-uppercase justify-center ml-1 my-2 align-self-center"
>
{{ title }}
@@ -22,14 +22,14 @@
</v-list-item-avatar>
<v-list-item-icon
v-if="item.icon"
v-if="item.menuIcon"
class="my-2 align-self-center"
>
<v-icon v-text="item.icon" />
<v-icon v-text="item.menuIcon" />
</v-list-item-icon>
<v-list-item-content v-if="item.menu_name">
<v-list-item-title v-text="item.menu_name" />
<v-list-item-content v-if="item.menuName">
<v-list-item-title v-text="item.menuName" />
</v-list-item-content>
</v-list-item>
</template>
@@ -47,7 +47,7 @@
computed: {
title () {
const matches = this.item.menu_name.match(/\b(\w)/g)
const matches = this.item.menuName.match(/\b(\w)/g)
if(matches!=null)
{
return matches.join('')