From a661afc3e874a5a0fd0532c862065ba0cdc8fbfd Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Wed, 25 Sep 2024 11:47:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/src/components/tree/index.ts | 1 + .../components/tree/src/tree-select-panel.vue | 179 ++++++++++++++++++ apps/web-antd/src/views/system/role/data.tsx | 61 ++++++ apps/web-antd/src/views/system/role/index.vue | 20 +- .../src/views/system/role/role-auth-modal.vue | 121 ++++++++++++ 5 files changed, 381 insertions(+), 1 deletion(-) create mode 100644 apps/web-antd/src/components/tree/index.ts create mode 100644 apps/web-antd/src/components/tree/src/tree-select-panel.vue create mode 100644 apps/web-antd/src/views/system/role/role-auth-modal.vue diff --git a/apps/web-antd/src/components/tree/index.ts b/apps/web-antd/src/components/tree/index.ts new file mode 100644 index 00000000..3dfcd39a --- /dev/null +++ b/apps/web-antd/src/components/tree/index.ts @@ -0,0 +1 @@ +export { default as TreeSelectPanel } from './src/tree-select-panel.vue'; diff --git a/apps/web-antd/src/components/tree/src/tree-select-panel.vue b/apps/web-antd/src/components/tree/src/tree-select-panel.vue new file mode 100644 index 00000000..0e5cf184 --- /dev/null +++ b/apps/web-antd/src/components/tree/src/tree-select-panel.vue @@ -0,0 +1,179 @@ + + + diff --git a/apps/web-antd/src/views/system/role/data.tsx b/apps/web-antd/src/views/system/role/data.tsx index c29e8a3b..129d2e51 100644 --- a/apps/web-antd/src/views/system/role/data.tsx +++ b/apps/web-antd/src/views/system/role/data.tsx @@ -1,6 +1,7 @@ import type { FormSchemaGetter } from '#/adapter'; import { DictEnum } from '@vben/constants'; +import { getPopupContainer } from '@vben/utils'; import { getDictOptions } from '#/utils/dict'; @@ -116,3 +117,63 @@ export const drawerSchema: FormSchemaGetter = () => [ label: '备注', }, ]; + +export const authModalSchemas: FormSchemaGetter = () => [ + { + component: 'Input', + dependencies: { + show: () => false, + triggerFields: [''], + }, + fieldName: 'roleId', + label: '角色ID', + }, + { + component: 'Radio', + dependencies: { + show: () => false, + triggerFields: [''], + }, + fieldName: 'deptCheckStrictly', + label: 'deptCheckStrictly', + }, + { + component: 'Input', + componentProps: { + disabled: true, + }, + fieldName: 'roleName', + label: '角色名称', + }, + { + component: 'Input', + componentProps: { + disabled: true, + }, + fieldName: 'roleKey', + label: '权限标识', + }, + { + component: 'Select', + componentProps: { + allowClear: false, + getPopupContainer, + options: authScopeOptions, + }, + fieldName: 'dataScope', + help: '更改后需要用户重新登录才能生效', + label: '权限范围', + }, + { + component: 'TreeSelect', + defaultValue: [], + dependencies: { + show: (values) => values.dataScope === '2', + triggerFields: ['dataScope'], + }, + fieldName: 'deptIds', + formItemClass: 'items-baseline', + help: '更改后立即生效', + label: '部门权限', + }, +]; diff --git a/apps/web-antd/src/views/system/role/index.vue b/apps/web-antd/src/views/system/role/index.vue index a5c89b22..5166fd00 100644 --- a/apps/web-antd/src/views/system/role/index.vue +++ b/apps/web-antd/src/views/system/role/index.vue @@ -3,7 +3,7 @@ import type { Recordable } from '@vben/types'; import { onMounted, ref } from 'vue'; -import { Page, useVbenDrawer } from '@vben/common-ui'; +import { Page, useVbenDrawer, useVbenModal } from '@vben/common-ui'; import { $t } from '@vben/locales'; import { Card, Table } from 'ant-design-vue'; @@ -12,6 +12,7 @@ import { useVbenForm } from '#/adapter'; import { roleList } from '#/api/system/role'; import { querySchema } from './data'; +import roleAuthModal from './role-auth-modal.vue'; import roleDrawer from './role-drawer.vue'; const [QueryForm] = useVbenForm({ @@ -83,6 +84,15 @@ function handleEdit(record: Recordable) { drawerApi.setData({ id: record.roleId }); drawerApi.open(); } + +const [RoleAuthModal, authModalApi] = useVbenModal({ + connectedComponent: roleAuthModal, +}); + +function handleAuthEdit(record: Recordable) { + authModalApi.setData({ id: record.roleId }); + authModalApi.open(); +} diff --git a/apps/web-antd/src/views/system/role/role-auth-modal.vue b/apps/web-antd/src/views/system/role/role-auth-modal.vue new file mode 100644 index 00000000..c07e412a --- /dev/null +++ b/apps/web-antd/src/views/system/role/role-auth-modal.vue @@ -0,0 +1,121 @@ + + +