From 2e94c88b634368a7fba75fc8cbb25b0c20618ced Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8C=BF=E5=B0=8F=E5=A4=A9?= <1638245306@qq.com>
Date: Fri, 3 Feb 2023 19:26:32 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD:=20=E8=A7=92?=
=?UTF-8?q?=E8=89=B2=E6=8E=88=E6=9D=83=E6=8C=89=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../dvadmin/system/fixtures/init_role.json | 2 -
backend/dvadmin/system/models.py | 52 +++++++++++++------
backend/dvadmin/system/views/role.py | 2 +-
web/src/views/system/role/index.vue | 10 +++-
4 files changed, 45 insertions(+), 21 deletions(-)
diff --git a/backend/dvadmin/system/fixtures/init_role.json b/backend/dvadmin/system/fixtures/init_role.json
index 911f7ca..6fb63fe 100644
--- a/backend/dvadmin/system/fixtures/init_role.json
+++ b/backend/dvadmin/system/fixtures/init_role.json
@@ -5,7 +5,6 @@
"sort": 1,
"status": true,
"admin": true,
- "data_range": 3,
"remark": null
},
{
@@ -14,7 +13,6 @@
"sort": 2,
"status": true,
"admin": true,
- "data_range": 3,
"remark": null
}
]
diff --git a/backend/dvadmin/system/models.py b/backend/dvadmin/system/models.py
index d471438..1ffa0b6 100644
--- a/backend/dvadmin/system/models.py
+++ b/backend/dvadmin/system/models.py
@@ -79,20 +79,6 @@ class Role(CoreModel):
sort = models.IntegerField(default=1, verbose_name="角色顺序", help_text="角色顺序")
status = models.BooleanField(default=True, verbose_name="角色状态", help_text="角色状态")
admin = models.BooleanField(default=False, verbose_name="是否为admin", help_text="是否为admin")
- DATASCOPE_CHOICES = (
- (0, "仅本人数据权限"),
- (1, "本部门及以下数据权限"),
- (2, "本部门数据权限"),
- (3, "全部数据权限"),
- (4, "自定数据权限"),
- )
- data_range = models.IntegerField(default=0, choices=DATASCOPE_CHOICES, verbose_name="数据权限范围", help_text="数据权限范围")
- remark = models.TextField(verbose_name="备注", help_text="备注", null=True, blank=True)
- dept = models.ManyToManyField(to="Dept", verbose_name="数据权限-关联部门", db_constraint=False, help_text="数据权限-关联部门")
- menu = models.ManyToManyField(to="Menu", verbose_name="关联菜单", db_constraint=False, help_text="关联菜单")
- permission = models.ManyToManyField(
- to="MenuButton", verbose_name="关联菜单的接口按钮", db_constraint=False, help_text="关联菜单的接口按钮"
- )
class Meta:
db_table = table_prefix + "system_role"
@@ -121,7 +107,7 @@ class Dept(CoreModel):
)
@classmethod
- def recursion_dept_info(cls, dept_id: int, dept_all_list=None, dept_list=None):
+ def recursion_all_dept(cls, dept_id: int, dept_all_list=None, dept_list=None):
"""
递归获取部门的所有下级部门
:param dept_id: 需要获取的id
@@ -136,7 +122,7 @@ class Dept(CoreModel):
for ele in dept_all_list:
if ele.get("parent") == dept_id:
dept_list.append(ele.get("id"))
- cls.recursion_dept_info(ele.get("id"), dept_all_list, dept_list)
+ cls.recursion_all_dept(ele.get("id"), dept_all_list, dept_list)
return list(set(dept_list))
class Meta:
@@ -206,6 +192,40 @@ class MenuButton(CoreModel):
ordering = ("-name",)
+class RoleMenuButtonPermission(CoreModel):
+ role = models.ForeignKey(
+ to="Role",
+ db_constraint=False,
+ related_name="role_menu_button",
+ on_delete=models.CASCADE,
+ verbose_name="关联角色",
+ help_text="关联角色",
+ )
+ menu_button = models.ForeignKey(
+ to="MenuButton",
+ db_constraint=False,
+ related_name="menu_button_permission",
+ on_delete=models.CASCADE,
+ verbose_name="关联菜单按钮",
+ help_text="关联菜单按钮",
+ )
+ DATASCOPE_CHOICES = (
+ (0, "仅本人数据权限"),
+ (1, "本部门及以下数据权限"),
+ (2, "本部门数据权限"),
+ (3, "全部数据权限"),
+ (4, "自定数据权限"),
+ )
+ data_range = models.IntegerField(default=0, choices=DATASCOPE_CHOICES, verbose_name="数据权限范围",
+ help_text="数据权限范围")
+ dept = models.ManyToManyField(to="Dept", verbose_name="数据权限-关联部门", db_constraint=False,
+ help_text="数据权限-关联部门")
+ class Meta:
+ db_table = table_prefix + "role_menu_button_permission"
+ verbose_name = "角色菜单权限表"
+ verbose_name_plural = verbose_name
+ ordering = ("-create_datetime",)
+
class Dictionary(CoreModel):
TYPE_LIST = (
(0, "text"),
diff --git a/backend/dvadmin/system/views/role.py b/backend/dvadmin/system/views/role.py
index 727e355..35ea394 100644
--- a/backend/dvadmin/system/views/role.py
+++ b/backend/dvadmin/system/views/role.py
@@ -38,7 +38,7 @@ class RoleInitSerializer(CustomModelSerializer):
class Meta:
model = Role
- fields = ['name', 'key', 'sort', 'status', 'admin', 'data_range', 'remark',
+ fields = ['name', 'key', 'sort', 'status', 'admin',
'creator', 'dept_belong_id']
read_only_fields = ["id"]
extra_kwargs = {
diff --git a/web/src/views/system/role/index.vue b/web/src/views/system/role/index.vue
index d2ff9e0..5cae97c 100644
--- a/web/src/views/system/role/index.vue
+++ b/web/src/views/system/role/index.vue
@@ -5,6 +5,7 @@
{{ scope.row.url }}
+
@@ -12,7 +13,9 @@
import { ref, onMounted } from 'vue';
import { useExpose, useCrud } from '@fast-crud/fast-crud';
import { createCrudOptions } from './curd';
-
+import RolePermission from '/@/views/system/rolePermission/index.vue'
+const rolePermission = ref();
+defineExpose(rolePermission)
// crud组件的ref
const crudRef = ref();
// crud 配置的ref
@@ -20,7 +23,7 @@ const crudBinding = ref();
// 暴露的方法
const { crudExpose } = useExpose({ crudRef, crudBinding });
// 你的crud配置
-const { crudOptions } = createCrudOptions({ crudExpose });
+const { crudOptions } = createCrudOptions({ crudExpose ,rolePermission });
// 初始化crud配置
const { resetCrudOptions } = useCrud({ crudExpose, crudOptions });
// 你可以调用此方法,重新初始化crud配置
@@ -30,4 +33,7 @@ const { resetCrudOptions } = useCrud({ crudExpose, crudOptions });
onMounted(() => {
crudExpose.doRefresh();
});
+
+
+