添加按钮权限

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

View File

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

View File

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

View File

@@ -1,15 +1,6 @@
<template> <template>
<v-navigation-drawer <v-navigation-drawer id="default-drawer" v-model="$store.state.home.drawer" :dark="dark" :right="$vuetify.rtl"
id="default-drawer" :src="drawerImage ? image : ''" :mini-variant.sync="$store.state.home.mini" mini-variant-width="80" app width="260">
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"> <template v-if="drawerImage" #img="props">
<v-img :key="image" :gradient="gradient" v-bind="props" /> <v-img :key="image" :gradient="gradient" v-bind="props" />
</template> </template>
@@ -24,13 +15,7 @@
<template #append> <template #append>
<div class="pa-4 text-center"> <div class="pa-4 text-center">
<app-btn <app-btn class="text-none mb-4" color="white" href="https://vuetifyjs.com" small text>
class="text-none mb-4"
color="white"
href="https://vuetifyjs.com"
small
text
>
Documentation Documentation
</app-btn> </app-btn>
@@ -54,11 +39,14 @@ import { toTree } from "@/util/menuHandle";
export default { export default {
methods: { methods: {
init() { 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() { logout() {
this.$store.dispatch("Logout") this.$store.dispatch("Logout")
this.$router.push({ path: "/login/" }); this.$router.push({ path: "/login/" });
}, },
}, },
created() { 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" :defaultItem="defaultItem"
:headers="headers" :headers="headers"
:axiosUrls="axiosUrls" :axiosUrls="axiosUrls"
:btnEnable="btnEnable"
> >
</ccTable> </ccTable>
</material-card> </material-card>
</template> </template>
<script> <script>
import { getBtn } from "../util/btnHandle";
export default { export default {
created() { created() {
this.init(); this.init();
}, },
methods: { methods: {
init() { init() {
this.btnEnable = getBtn("user")
this.axiosUrls = { this.axiosUrls = {
get: "/role/GetList", get: "/role/GetList",
update: "/role/Update", update: "/role/Update",
@@ -30,6 +33,7 @@ export default {
start: true, start: true,
axiosUrls: { axiosUrls: {
}, },
btnEnable:{},
headers: [ headers: [
// { text: "编号", align: "start", value: "id" }, // { text: "编号", align: "start", value: "id" },
{ text: "角色编号", value: "roleCode", sortable: false }, { text: "角色编号", value: "roleCode", sortable: false },

View File

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