Merge remote-tracking branch 'origin/dev' into dev
						commit
						6a7f21ad39
					
				|  | @ -412,6 +412,7 @@ PLUGINS_URL_PATTERNS = [] | |||
| # from dvadmin_ak_sk.settings import *            # 秘钥管理管理 | ||||
| # from dvadmin_tenants.settings import *          # 租户管理 | ||||
| # from dvadmin_cloud_storage.settings import * # 云存储 | ||||
| #from dvadmin_low_code_crud.settings import *  # 低代码操作 | ||||
| # ... | ||||
| 
 | ||||
| # ********** 一键导入插件配置结束 ********** | ||||
|  |  | |||
|  | @ -6,7 +6,12 @@ | |||
| @Created on: 2021/6/3 003 0:30 | ||||
| @Remark: 菜单按钮管理 | ||||
| """ | ||||
| from dvadmin.system.models import MenuButton | ||||
| from django.db.models import F, CharField, Value, ExpressionWrapper | ||||
| from django.db.models.functions import Cast, Concat | ||||
| from rest_framework.decorators import action | ||||
| 
 | ||||
| from dvadmin.system.models import MenuButton, Menu | ||||
| from dvadmin.utils.json_response import DetailResponse | ||||
| from dvadmin.utils.serializers import CustomModelSerializer | ||||
| from dvadmin.utils.viewset import CustomModelViewSet | ||||
| 
 | ||||
|  | @ -58,3 +63,16 @@ class MenuButtonViewSet(CustomModelViewSet): | |||
|     create_serializer_class = MenuButtonCreateUpdateSerializer | ||||
|     update_serializer_class = MenuButtonCreateUpdateSerializer | ||||
|     extra_filter_backends = [] | ||||
| 
 | ||||
|     @action(methods=['get'], detail=False) | ||||
|     def get_btn_permission(self,request): | ||||
|         """ | ||||
|         获取当前用户的按钮权限 | ||||
|         """ | ||||
|         user = request.user | ||||
|         if not user.is_superuser: | ||||
|             menuIds = user.role.values_list('menu__id', flat=True) | ||||
|         else: | ||||
|             menuIds = Menu.objects.filter(status=1) | ||||
|         queryset = MenuButton.objects.filter(menu__in=menuIds).annotate(permission=Concat('menu__web_path',Value(':'),'value',output_field=CharField())).values_list('permission',flat=True) | ||||
|         return DetailResponse(data=queryset) | ||||
|  |  | |||
							
								
								
									
										1
									
								
								web/.env
								
								
								
								
							
							
						
						
									
										1
									
								
								web/.env
								
								
								
								
							|  | @ -6,7 +6,6 @@ VUE_APP_TITLE=DvAdmin | |||
| # 网络请求公用地址 | ||||
| VUE_APP_API=/api/ | ||||
| 
 | ||||
| 
 | ||||
| # 仓库地址 | ||||
| VUE_APP_REPO=https://github.com/d2-projects/d2-admin-start-kit | ||||
| 
 | ||||
|  |  | |||
|  | @ -29,6 +29,7 @@ | |||
|     "faker": "^4.1.0", | ||||
|     "flex.css": "^1.1.7", | ||||
|     "fuse.js": "^5.2.3", | ||||
|     "highlight.js": "^11.8.0", | ||||
|     "hotkeys-js": "^3.7.3", | ||||
|     "js-cookie": "^2.2.1", | ||||
|     "js-md5": "^0.7.3", | ||||
|  |  | |||
|  | @ -56,6 +56,7 @@ new Vue({ | |||
|     // 初始化配置 | ||||
|     this.$store.dispatch('d2admin/settings/load') | ||||
|     this.$store.dispatch('d2admin/dictionary/load') | ||||
|     this.$store.dispatch('d2admin/permission/load') | ||||
|   }, | ||||
|   created () { | ||||
| 
 | ||||
|  |  | |||
|  | @ -6,34 +6,25 @@ | |||
|  * 联系Qq:1638245306 | ||||
|  * @文件介绍: 权限控制 | ||||
|  */ | ||||
| import XEUtils from 'xe-utils' | ||||
| import store from '@/store' | ||||
| import router from '@/router' | ||||
| export default { | ||||
|   hasPermissions (value) { | ||||
|     if (process.env.VUE_APP_PM_ENABLED) { | ||||
|       const path = router.history.current.path// 当前路由 | ||||
|       let need = [] | ||||
|       let needList = [] | ||||
|       if (typeof value === 'string') { | ||||
|         need.push(value) | ||||
|         needList.push(path + ':' + value) | ||||
|       } else if (value && value instanceof Array && value.length > 0) { | ||||
|         need = need.concat(value) | ||||
|         needList = needList.concat(path + ':' + value) | ||||
|       } | ||||
|       if (need.length === 0) { | ||||
|       if (needList.length === 0) { | ||||
|         throw new Error('need permissions! Like v-permission="usersphere:user:view" ') | ||||
|       } | ||||
|       // 获取所有的菜单路由(包含权限) | ||||
|       let menuTree = sessionStorage.getItem('menuData') | ||||
|       menuTree = JSON.parse(menuTree) | ||||
|       const userPermissionList = XEUtils.toTreeArray(menuTree) | ||||
|       const permissionList = [] | ||||
|       for (const item of userPermissionList) { | ||||
|         if (item.menuPermission) { | ||||
|           for (const per of item.menuPermission) { | ||||
|             permissionList.push(item.path + ':' + per) | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       return permissionList.includes(path + ':' + value) | ||||
|       const userPermissionList = store.getters['d2admin/permission/permissionList'] | ||||
|       return userPermissionList.some(permission => { | ||||
|         return needList.includes(permission) | ||||
|       }) | ||||
|     } | ||||
|     return true | ||||
|   } | ||||
|  |  | |||
|  | @ -20,6 +20,14 @@ const frameIn = [{ | |||
|       }, | ||||
|       component: _import('dashboard/workbench/index') | ||||
|     }, | ||||
|     { | ||||
|       path: 'page1', | ||||
|       name: 'page1', | ||||
|       meta: { | ||||
|         auth: true | ||||
|       }, | ||||
|       component: _import('demo/page1/index') | ||||
|     }, | ||||
|     { | ||||
|       path: 'userInfo', | ||||
|       name: 'userInfo', | ||||
|  |  | |||
|  | @ -0,0 +1,46 @@ | |||
| import { request } from '@/api/service' | ||||
| const urlPrefix = '/api/system/menu_button/get_btn_permission/' | ||||
| export default { | ||||
|   namespaced: true, | ||||
|   state: { | ||||
|     // 未读消息 | ||||
|     data: [] | ||||
|   }, | ||||
|   getters: { | ||||
|     permissionList (state) { | ||||
|       return state.data | ||||
|     } | ||||
|   }, | ||||
|   actions: { | ||||
|     /** | ||||
|      * @description 获取数据 | ||||
|      * @param {Object} context | ||||
|      * @param {String} param message {String} 信息 | ||||
|      * @param {String} param type {String} 类型 | ||||
|      * @param {Object} payload meta {Object} 附带的信息 | ||||
|      */ | ||||
|     async load ({ | ||||
|       state, | ||||
|       commit | ||||
|     }) { | ||||
|       request({ | ||||
|         url: urlPrefix, | ||||
|         method: 'get', | ||||
|         params: {} | ||||
|       }).then(res => { | ||||
|         const { data } = res | ||||
|         commit('set', data) | ||||
|       }) | ||||
|     } | ||||
|   }, | ||||
|   mutations: { | ||||
|     /** | ||||
|      * 设置权限数据 | ||||
|      * @param state | ||||
|      * @param number | ||||
|      */ | ||||
|     async set (state, data) { | ||||
|       state.data = data | ||||
|     } | ||||
|   } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	 李强
						李强