diff --git a/apps/web-antd/src/api/system/menu/index.ts b/apps/web-antd/src/api/system/menu/index.ts index 65c3b4f9..e4f14c17 100644 --- a/apps/web-antd/src/api/system/menu/index.ts +++ b/apps/web-antd/src/api/system/menu/index.ts @@ -1,7 +1,7 @@ -import type { Menu, MenuOption, MenuResp } from './model'; - import type { ID, IDS } from '#/api/common'; +import type { Menu, MenuOption, MenuResp } from './model'; + import { requestClient } from '#/api/request'; enum Api { diff --git a/apps/web-antd/src/api/system/menu/model.d.ts b/apps/web-antd/src/api/system/menu/model.d.ts index 0234425f..0a988bc2 100644 --- a/apps/web-antd/src/api/system/menu/model.d.ts +++ b/apps/web-antd/src/api/system/menu/model.d.ts @@ -33,6 +33,8 @@ export interface MenuOption { weight: number; children: MenuOption[]; key: string; // 实际上不存在 ide报错 + menuType: string; + icon: string; } /** diff --git a/apps/web-antd/src/components/tree/index.ts b/apps/web-antd/src/components/tree/index.ts index 3dfcd39a..f142790a 100644 --- a/apps/web-antd/src/components/tree/index.ts +++ b/apps/web-antd/src/components/tree/index.ts @@ -1 +1,2 @@ +export { default as MenuSelectTable } from './src/menu-select-table.vue'; export { default as TreeSelectPanel } from './src/tree-select-panel.vue'; diff --git a/apps/web-antd/src/components/tree/src/menu-select-table.vue b/apps/web-antd/src/components/tree/src/menu-select-table.vue new file mode 100644 index 00000000..78c8d5e9 --- /dev/null +++ b/apps/web-antd/src/components/tree/src/menu-select-table.vue @@ -0,0 +1,440 @@ + + + + + + + + + + + + 测试expose + + {{ $t('pages.common.collapse') }} + + + {{ $t('pages.common.expand') }} + + + + + + handlePermissionChange(row)" + > + {{ permission.label }} + + + + + + diff --git a/apps/web-antd/src/views/system/role-beta/data.tsx b/apps/web-antd/src/views/system/role-beta/data.tsx new file mode 100644 index 00000000..b7cdf6b7 --- /dev/null +++ b/apps/web-antd/src/views/system/role-beta/data.tsx @@ -0,0 +1,224 @@ +import type { FormSchemaGetter } from '#/adapter/form'; +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { getDictOptions } from '#/utils/dict'; +import { DictEnum } from '@vben/constants'; +import { getPopupContainer } from '@vben/utils'; +import { Tag } from 'ant-design-vue'; + +/** + * authScopeOptions user也会用到 + */ +export const authScopeOptions = [ + { color: 'green', label: '全部数据权限', value: '1' }, + { color: 'default', label: '自定数据权限', value: '2' }, + { color: 'orange', label: '本部门数据权限', value: '3' }, + { color: 'cyan', label: '本部门及以下数据权限', value: '4' }, + { color: 'error', label: '仅本人数据权限', value: '5' }, + { color: 'default', label: '部门及以下或本人数据权限', value: '6' }, +]; + +export const querySchema: FormSchemaGetter = () => [ + { + component: 'Input', + fieldName: 'roleName', + label: '角色名称', + }, + { + component: 'Input', + fieldName: 'roleKey', + label: '权限字符', + }, + { + component: 'Select', + componentProps: { + options: getDictOptions(DictEnum.SYS_NORMAL_DISABLE), + }, + fieldName: 'status', + label: '状态', + }, + { + component: 'RangePicker', + fieldName: 'createTime', + label: '创建时间', + }, +]; + +export const columns: VxeGridProps['columns'] = [ + { type: 'checkbox', width: 60 }, + { + title: '角色名称', + field: 'roleName', + }, + { + title: '权限字符', + field: 'roleKey', + slots: { + default: ({ row }) => { + return {row.roleKey}; + }, + }, + }, + { + title: '数据权限', + field: 'dataScope', + slots: { + default: ({ row }) => { + const found = authScopeOptions.find( + (item) => item.value === row.dataScope, + ); + if (found) { + return {found.label}; + } + return {row.dataScope}; + }, + }, + }, + { + title: '排序', + field: 'roleSort', + }, + { + title: '状态', + field: 'status', + slots: { default: 'status' }, + }, + { + title: '创建时间', + field: 'createTime', + }, + { + field: 'action', + fixed: 'right', + slots: { default: 'action' }, + title: '操作', + width: 180, + }, +]; + +export const drawerSchema: FormSchemaGetter = () => [ + { + component: 'Input', + dependencies: { + show: () => false, + triggerFields: [''], + }, + fieldName: 'roleId', + label: '角色ID', + }, + { + component: 'Input', + fieldName: 'roleName', + label: '角色名称', + rules: 'required', + }, + { + component: 'Input', + fieldName: 'roleKey', + help: '如: test simpleUser等', + label: '权限标识', + rules: 'required', + }, + { + component: 'InputNumber', + fieldName: 'roleSort', + label: '角色排序', + rules: 'required', + }, + { + component: 'Select', + componentProps: { + allowClear: false, + options: getDictOptions(DictEnum.SYS_NORMAL_DISABLE), + getPopupContainer, + }, + defaultValue: '0', + fieldName: 'status', + help: '修改后, 拥有该角色的用户将自动下线.', + label: '角色状态', + rules: 'required', + }, + { + component: 'Radio', + dependencies: { + show: () => false, + triggerFields: [''], + }, + fieldName: 'menuCheckStrictly', + label: '菜单权限', + }, + { + component: 'Input', + defaultValue: [], + fieldName: 'menuIds', + label: '菜单权限', + formItemClass: 'col-span-2', + }, + { + component: 'Textarea', + defaultValue: '', + fieldName: 'remark', + formItemClass: 'items-baseline col-span-2', + 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-beta/index.vue b/apps/web-antd/src/views/system/role-beta/index.vue new file mode 100644 index 00000000..73c763b1 --- /dev/null +++ b/apps/web-antd/src/views/system/role-beta/index.vue @@ -0,0 +1,239 @@ + + + + + + + + + {{ $t('pages.common.export') }} + + + {{ $t('pages.common.delete') }} + + + {{ $t('pages.common.add') }} + + + + + + + + + + + + + {{ $t('pages.common.edit') }} + + + + {{ $t('pages.common.delete') }} + + + + + + + + 数据权限 + + + 分配用户 + + + + + {{ $t('pages.common.more') }} + + + + + + + + + diff --git a/apps/web-antd/src/views/system/role-beta/role-auth-modal.vue b/apps/web-antd/src/views/system/role-beta/role-auth-modal.vue new file mode 100644 index 00000000..4e184a8d --- /dev/null +++ b/apps/web-antd/src/views/system/role-beta/role-auth-modal.vue @@ -0,0 +1,116 @@ + + + + + + + + + + + diff --git a/apps/web-antd/src/views/system/role-beta/role-drawer.vue b/apps/web-antd/src/views/system/role-beta/role-drawer.vue new file mode 100644 index 00000000..8c19094c --- /dev/null +++ b/apps/web-antd/src/views/system/role-beta/role-drawer.vue @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + diff --git a/apps/web-antd/src/views/演示使用自行删除/menu/index.vue b/apps/web-antd/src/views/演示使用自行删除/menu/index.vue index 06ee7a1f..7b7b2b5a 100644 --- a/apps/web-antd/src/views/演示使用自行删除/menu/index.vue +++ b/apps/web-antd/src/views/演示使用自行删除/menu/index.vue @@ -1,230 +1,27 @@ - - - - - - - {{ $t('pages.common.collapse') }} - - - {{ $t('pages.common.expand') }} - - - - - - - - {{ $t('pages.common.delete') }} - - - - - + + -