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 @@ + + +