diff --git a/web/src/views/system/role/components/RoleDrawer.vue b/web/src/views/system/role/components/RoleDrawer.vue new file mode 100644 index 0000000..c147b66 --- /dev/null +++ b/web/src/views/system/role/components/RoleDrawer.vue @@ -0,0 +1,58 @@ + + + + + 当前授权角色: + {{ RoleDrawer.roleName }} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/views/system/role/components/RoleMenuBtn.vue b/web/src/views/system/role/components/RoleMenuBtn.vue new file mode 100644 index 0000000..8d0f1b4 --- /dev/null +++ b/web/src/views/system/role/components/RoleMenuBtn.vue @@ -0,0 +1,186 @@ + + + 配置操作功能接口权限,配置数据权限点击小齿轮 + + + {{ btn.data_range !== null ? `${btn.name}(${formatDataRange(btn.data_range)})` : btn.name }} + + + + + + + + + + + + + + + + + + 确定 + 取消 + + + + + + + + diff --git a/web/src/views/system/role/components/RoleMenuField.vue b/web/src/views/system/role/components/RoleMenuField.vue new file mode 100644 index 0000000..e367677 --- /dev/null +++ b/web/src/views/system/role/components/RoleMenuField.vue @@ -0,0 +1,118 @@ + + + + 保存 + 配置数据列字段权限 + + + + + + 字段 + + + + {{ head.label }} + + + + + + {{ c_item.title }} + + + + + + + + + + + + diff --git a/web/src/views/system/role/components/RoleMenuTree.vue b/web/src/views/system/role/components/RoleMenuTree.vue new file mode 100644 index 0000000..c296e9a --- /dev/null +++ b/web/src/views/system/role/components/RoleMenuTree.vue @@ -0,0 +1,81 @@ + + + + + + diff --git a/web/src/views/system/role/components/api.ts b/web/src/views/system/role/components/api.ts new file mode 100644 index 0000000..dc3a5dc --- /dev/null +++ b/web/src/views/system/role/components/api.ts @@ -0,0 +1,88 @@ +import { request } from '/@/utils/service'; +import XEUtils from 'xe-utils'; +/** + * 获取 角色-菜单 + * @param query + */ +export function getRoleMenu(query: object) { + return request({ + url: '/api/system/role_menu_button_permission/get_role_menu/', + method: 'get', + params: query, + }).then((res: any) => { + return XEUtils.toArrayTree(res.data, { key: 'id', parentKey: 'parent', children: 'children', strict: false }); + }); +} +/** + * 设置 角色-菜单 + * @param data + * @returns + */ +export function setRoleMenu(data: object) { + return request({ + url: '/api/system/role_menu_button_permission/set_role_menu/', + method: 'put', + data, + }); +} +/** + * 获取 角色-菜单-按钮-列字段 + * @param query + */ +export function getRoleMenuBtnField(query: object) { + return request({ + url: '/api/system/role_menu_button_permission/get_role_menu_btn_field/', + method: 'get', + params: query, + }); +} + +/** + * 设置 角色-菜单-按钮 + * @param data + */ +export function setRoleMenuBtn(data: object) { + return request({ + url: '/api/system/role_menu_button_permission/set_role_menu_btn/', + method: 'put', + data, + }); +} + +/** + * 设置 角色-菜单-列字段 + * @param data + */ +export function setRoleMenuField(roleId: string | number | undefined, data: object) { + return request({ + url: `/api/system/role_menu_button_permission/${roleId}/set_role_menu_field/`, + method: 'put', + data, + }); +} + +/** + * 设置 角色-菜单-按钮-数据权限 + * @param query + * @returns + */ +export function setRoleMenuBtnDataRange(data: object) { + return request({ + url: '/api/system/role_menu_button_permission/set_role_menu_btn_data_range/', + method: 'put', + data, + }); +} + +/** + * 获取当前用户角色下所能授权的部门 + * @param query + * @returns + */ +export function getRoleToDeptAll(query: object) { + return request({ + url: '/api/system/role_menu_button_permission/role_to_dept_all/', + method: 'get', + params: query, + }); +} diff --git a/web/src/views/system/role/stores/RoleDrawerStores.ts b/web/src/views/system/role/stores/RoleDrawerStores.ts new file mode 100644 index 0000000..7121c37 --- /dev/null +++ b/web/src/views/system/role/stores/RoleDrawerStores.ts @@ -0,0 +1,32 @@ +import { defineStore } from 'pinia'; +import { RoleDrawerType } from '../types'; +/** + * 权限配置:抽屉 + */ +const initialState: RoleDrawerType = { + drawerVisible: false, + roleId: undefined, + roleName: undefined, +}; + +export const RoleDrawerStores = defineStore('RoleDrawerStores', { + state: (): RoleDrawerType => ({ + ...initialState, + }), + actions: { + /** + * 打开权限修改抽屉 + */ + handleDrawerOpen(row: any) { + this.drawerVisible = true; + this.roleName = row.name; + this.roleId = row.id; + }, + /** + * 关闭权限修改抽屉 + */ + handleDrawerClose() { + Object.assign(this.$state, initialState); + }, + }, +}); diff --git a/web/src/views/system/role/stores/RoleMenuBtnStores.ts b/web/src/views/system/role/stores/RoleMenuBtnStores.ts new file mode 100644 index 0000000..8ef4610 --- /dev/null +++ b/web/src/views/system/role/stores/RoleMenuBtnStores.ts @@ -0,0 +1,24 @@ +import { defineStore } from 'pinia'; +import { RoleMenuBtnType } from '../types'; +/** + * 权限配置:角色-菜单-按钮 + */ + +export const RoleMenuBtnStores = defineStore('RoleMenuBtnStores', { + state: (): RoleMenuBtnType[] => [], + actions: { + /** + * 初始化 + */ + setState(data: RoleMenuBtnType[]) { + this.$state = data; + this.$state.length = data.length; + }, + updateState(data: RoleMenuBtnType) { + const index = this.$state.findIndex((item) => item.id === data.id); + if (index !== -1) { + this.$state[index] = data; + } + }, + }, +}); diff --git a/web/src/views/system/role/stores/RoleMenuFieldStores.ts b/web/src/views/system/role/stores/RoleMenuFieldStores.ts new file mode 100644 index 0000000..c01c080 --- /dev/null +++ b/web/src/views/system/role/stores/RoleMenuFieldStores.ts @@ -0,0 +1,24 @@ +import { defineStore } from 'pinia'; +import { RoleMenuFieldType, RoleMenuFieldHeaderType } from '../types'; +/** + * 权限配置:角色-菜单-列字段 + */ + +export const RoleMenuFieldStores = defineStore('RoleMenuFieldStores', { + state: (): RoleMenuFieldType[] => [], + actions: { + /** 重置 */ + setState(data: RoleMenuFieldType[]) { + this.$state = data; + this.$state.length = data.length; + }, + }, +}); + +export const RoleMenuFieldHeaderStores = defineStore('RoleMenuFieldHeaderStores', { + state: (): RoleMenuFieldHeaderType[] => [ + { value: 'is_create', label: '新增可见', disabled: 'disabled_create', checked: false }, + { value: 'is_update', label: '编辑可见', disabled: 'disabled_update', checked: false }, + { value: 'is_query', label: '列表可见', disabled: 'disabled_query', checked: false }, + ], +}); diff --git a/web/src/views/system/role/stores/RoleMenuTreeStores.ts b/web/src/views/system/role/stores/RoleMenuTreeStores.ts new file mode 100644 index 0000000..14f28c6 --- /dev/null +++ b/web/src/views/system/role/stores/RoleMenuTreeStores.ts @@ -0,0 +1,21 @@ +import { defineStore } from 'pinia'; +import { RoleMenuTreeType } from '../types'; +/** + * 权限抽屉:角色-菜单 + */ + +export const RoleMenuTreeStores = defineStore('RoleMenuTreeStores', { + state: (): RoleMenuTreeType => ({ + id: 0, + parent: 0, + name: '', + isCheck: false, + is_catalog: false, + }), + actions: { + /** 赋值 */ + setRoleMenuTree(data: RoleMenuTreeType) { + this.$state = data; + }, + }, +});