添加按钮权限

This commit is contained in:
橙子
2022-05-12 23:39:42 +08:00
parent 82f70e0ac9
commit bce955a1e1
9 changed files with 111 additions and 73 deletions

View File

@@ -32,7 +32,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[Permission($"{nameof(T)}:get:list")]
[Permission($"{nameof(T)}:get")]
[HttpGet]
public virtual async Task<Result> GetById(long id)
{
@@ -43,7 +43,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
/// 列表查询
/// </summary>
/// <returns></returns>
[Permission($"{nameof(T)}:get:list")]
[Permission($"{nameof(T)}:get")]
[HttpPost]
public virtual async Task<Result> GetList(QueryCondition queryCondition)
{
@@ -55,7 +55,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
/// </summary>
/// <param name="queryCondition"></param>
/// <returns></returns>
[Permission($"{nameof(T)}:get:list")]
[Permission($"{nameof(T)}:get")]
[HttpPost]
public virtual async Task<Result> PageList(QueryPageCondition queryCondition)
{

View File

@@ -24,7 +24,7 @@
></v-text-field>
<v-btn
v-if="axiosUrls.add != null"
v-if="btnEnable.add==true"
color="primary"
dark
class="mb-2 mx-2"
@@ -35,7 +35,7 @@
<!-- 添加提示框 -->
<v-dialog
v-if="axiosUrls.add != null"
v-if="btnEnable.add ==true"
v-model="dialog"
max-width="500px"
>
@@ -72,7 +72,7 @@
</v-dialog>
<v-btn
v-if="axiosUrls.del != null"
v-if="btnEnable.del == true"
color="secondary"
class="mb-2"
@click="deleteItem(null)"
@@ -87,14 +87,14 @@
<slot name="action" :item="item"></slot>
<v-icon
v-if="axiosUrls.update != null"
v-if="btnEnable.update ==true"
small
class="mr-2"
@click="editItem(item)"
>
mdi-pencil
</v-icon>
<v-icon v-if="axiosUrls.del != null" small @click="deleteItem(item)">
<v-icon v-if="btnEnable.del ==true" small @click="deleteItem(item)">
mdi-delete
</v-icon>
</template>
@@ -119,6 +119,9 @@ export default {
axiosUrls: {
type: Object,
},
btnEnable: {
type: Object,
},
},
data: () => ({
page: 1,
@@ -166,7 +169,7 @@ export default {
});
},
initialize() {
if(this.axiosUrls.get!=undefined && this.axiosUrls.get!=null )
if(this.btnEnable.get==true )
{
this.dataInit(this.axiosUrls.get)
}

View File

@@ -107,9 +107,9 @@ export default {
editedIndex: -1,
defaultItem: {
menuIcon: "mdi-view-dashboard",
permissionCode: "test",
menuName: "管理",
router:"/",
permissionCode: "",
menuName: "",
router:"",
parentId: 0,
MenuType:0
},

View File

@@ -1,15 +1,6 @@
<template>
<v-navigation-drawer
id="default-drawer"
v-model="$store.state.home.drawer"
:dark="dark"
:right="$vuetify.rtl"
:src="drawerImage ? image : ''"
:mini-variant.sync="$store.state.home.mini"
mini-variant-width="80"
app
width="260"
>
<v-navigation-drawer id="default-drawer" v-model="$store.state.home.drawer" :dark="dark" :right="$vuetify.rtl"
:src="drawerImage ? image : ''" :mini-variant.sync="$store.state.home.mini" mini-variant-width="80" app width="260">
<template v-if="drawerImage" #img="props">
<v-img :key="image" :gradient="gradient" v-bind="props" />
</template>
@@ -24,13 +15,7 @@
<template #append>
<div class="pa-4 text-center">
<app-btn
class="text-none mb-4"
color="white"
href="https://vuetifyjs.com"
small
text
>
<app-btn class="text-none mb-4" color="white" href="https://vuetifyjs.com" small text>
Documentation
</app-btn>
@@ -54,11 +39,14 @@ import { toTree } from "@/util/menuHandle";
export default {
methods: {
init() {
this.items=toTree( store.state.user.user.menus);
const menus = store.state.user.user.menus.filter((m) => {
return m.menuType == 0;
});
this.items = toTree(menus);
},
logout() {
this.$store.dispatch("Logout")
this.$router.push({ path: "/login/" });
this.$router.push({ path: "/login/" });
},
},
created() {

View File

@@ -0,0 +1,77 @@
import store from '../store/index'
//匹配按钮,判断是否有按钮存在
function getBtn(par) {
var axiosEnable = {
get: false,
update: false,
del: false,
add: false,
};
const per = store.state.user.per;
switch (par) {
case "user":
per.forEach(p => {
if(p=="user:get")
{
axiosEnable.get=true;
}
else if(p=="user:update")
{
axiosEnable.update=true;
}
else if(p=="user:del")
{
axiosEnable.del=true;
}
else if(p=="user:add")
{
axiosEnable.add=true;
}
});
break;
case "role":
if(p=="role:get")
{
axiosEnable.get=true;
}
else if(p=="role:update")
{
axiosEnable.update=true;
}
else if(p=="role:del")
{
axiosEnable.del=true;
}
else if(p=="role:add")
{
axiosEnable.add=true;
}
break;
case "menu":
if(p=="menu:get")
{
axiosEnable.get=true;
}
else if(p=="menu:update")
{
axiosEnable.update=true;
}
else if(p=="menu:del")
{
axiosEnable.del=true;
}
else if(p=="menu:add")
{
axiosEnable.add=true;
}
break;
default: console.log("未发现合法路由")
}
return axiosEnable;
}
export {getBtn};

View File

@@ -1,26 +0,0 @@
import store from '../store/index'
//匹配按钮,判断是否有按钮存在
const btnDic =
{
"user:get": "/",
"user:add": "/",
"user:update": "/",
"user:del": "/",
}
function getBtn(par) {
const per=[];
switch(par){
case "user":
break;
default:console.log("未发现合法路由")
}
}
export default { menuDic, btnDic };

View File

@@ -7,17 +7,20 @@
:defaultItem="defaultItem"
:headers="headers"
:axiosUrls="axiosUrls"
:btnEnable="btnEnable"
>
</ccTable>
</material-card>
</template>
<script>
import { getBtn } from "../util/btnHandle";
export default {
created() {
this.init();
},
methods: {
init() {
this.btnEnable = getBtn("user")
this.axiosUrls = {
get: "/role/GetList",
update: "/role/Update",
@@ -30,6 +33,7 @@ export default {
start: true,
axiosUrls: {
},
btnEnable:{},
headers: [
// { text: "编号", align: "start", value: "id" },
{ text: "角色编号", value: "roleCode", sortable: false },

View File

@@ -3,22 +3,13 @@
<template #title>
用户管理 <small class="text-body-1">用户可拥有多个角色</small>
</template>
<ccCombobox
headers="设置角色"
:items="roleItems"
@select="getSelect"
itemText="roleName"
>
<ccCombobox headers="设置角色" :items="roleItems" @select="getSelect" itemText="roleName">
<template v-slot:save>
<v-btn @click="setRole" color="blue darken-1" text> 保存</v-btn>
</template>
</ccCombobox>
<ccTable
:defaultItem="defaultItem"
:headers="headers"
:axiosUrls="axiosUrls"
@selected="getTableSelect"
>
<ccTable :defaultItem="defaultItem" :headers="headers" :axiosUrls="axiosUrls" :btnEnable="btnEnable"
@selected="getTableSelect">
<template v-slot:action="{ item }">
<v-icon small class="mr-2" @click="showItem(item)"> mdi-eye </v-icon>
</template>
@@ -28,6 +19,7 @@
<script>
import userApi from "../api/userApi";
import roleApi from "../api/roleApi";
import { getBtn } from "../util/btnHandle";
export default {
created() {
this.init();
@@ -61,7 +53,7 @@ export default {
},
init() {
//这里可以遍历后台的菜单code根据对应的菜单code来给axiosUrls的增删改查赋值即可
this.btnEnable = getBtn("user")
this.axiosUrls = {
get: "/user/GetList",
update: "/user/Update",
@@ -70,8 +62,7 @@ export default {
};
roleApi.getList().then((resp) => {
console.log(resp.data)
this.roleItems=JSON.parse(JSON.stringify(resp.data));
this.roleItems = JSON.parse(JSON.stringify(resp.data));
});
},
setRole() {
@@ -99,6 +90,7 @@ export default {
},
},
data: () => ({
btnEnable: [],
TableSelect: [],
select: [],
roleItems: [],