From 4628d94415c1787da8b04499e295967f15c4eef5 Mon Sep 17 00:00:00 2001 From: Vben Date: Thu, 4 Mar 2021 01:25:50 +0800 Subject: [PATCH] feat: added system management sample page --- CHANGELOG.zh_CN.md | 3 +- mock/demo/system.ts | 10 ++++- src/api/demo/model/systemModel.ts | 9 +++- src/api/demo/system.ts | 12 ++++-- .../Form/src/components/FormItem.tsx | 5 ++- src/components/Tree/src/TreeHeader.vue | 14 ++++--- src/components/Tree/src/index.vue | 26 ++++++++---- src/router/menus/modules/demo/system.ts | 18 +------- .../demo/system/account/AccountModal.vue | 22 ++++++++-- src/views/demo/system/account/account.data.ts | 42 +++++++++++++++---- src/views/demo/system/account/index.vue | 15 ++++--- src/views/demo/system/role/RoleDrawer.vue | 33 +++++++++++---- src/views/demo/system/role/index.vue | 4 +- src/views/demo/system/role/role.data.ts | 5 +-- 14 files changed, 150 insertions(+), 68 deletions(-) diff --git a/CHANGELOG.zh_CN.md b/CHANGELOG.zh_CN.md index 4919e2b3..d4514738 100644 --- a/CHANGELOG.zh_CN.md +++ b/CHANGELOG.zh_CN.md @@ -8,12 +8,11 @@ - axios 支持 form-data 格式请求 - 新增图标选择器组件(支持本地和在线方式) -- 新增修改密码界面 -- 新增部门管理示例界面 - 新增 WebSocket 示例和服务脚本 - Tree 组件新增 `renderIcon` 属性用于控制层级图标显示 - Tree->actionItem 新增 show 属性,用于动态控制按钮显示 - Tree 新增工具栏/title/搜索功能 +- 新增部门管理/修改密码/账号管理/角色管理/菜单管理示例界面 ### ⚡ Performance Improvements diff --git a/mock/demo/system.ts b/mock/demo/system.ts index 7a930e7e..33526f38 100644 --- a/mock/demo/system.ts +++ b/mock/demo/system.ts @@ -116,7 +116,7 @@ export default [ }, }, { - url: '/api/system/getRoleList', + url: '/api/system/getRoleListByPage', timeout: 100, method: 'get', response: ({ query }) => { @@ -124,6 +124,14 @@ export default [ return resultPageSuccess(page, pageSize, roleList); }, }, + { + url: '/api/system/getAllRoleList', + timeout: 100, + method: 'get', + response: () => { + return resultSuccess(roleList); + }, + }, { url: '/api/system/getDeptList', timeout: 100, diff --git a/src/api/demo/model/systemModel.ts b/src/api/demo/model/systemModel.ts index 4cd5c1ca..f8936c29 100644 --- a/src/api/demo/model/systemModel.ts +++ b/src/api/demo/model/systemModel.ts @@ -4,11 +4,14 @@ export type AccountParams = BasicPageParams & { account?: string; nickname?: string; }; -export type RoleParams = BasicPageParams & { + +export type RoleParams = { roleName?: string; status?: string; }; +export type RolePageParams = BasicPageParams & RoleParams; + export type DeptParams = { deptName?: string; status?: string; @@ -66,4 +69,6 @@ export type DeptListGetResultModel = BasicFetchResult; export type MenuListGetResultModel = BasicFetchResult; -export type RoleListGetResultModel = BasicFetchResult; +export type RolePageListGetResultModel = BasicFetchResult; + +export type RoleListGetResultModel = RoleListItem[]; diff --git a/src/api/demo/system.ts b/src/api/demo/system.ts index 133ea7b1..62ab4b8a 100644 --- a/src/api/demo/system.ts +++ b/src/api/demo/system.ts @@ -3,9 +3,11 @@ import { DeptListItem, MenuParams, RoleParams, + RolePageParams, MenuListGetResultModel, DeptListGetResultModel, AccountListGetResultModel, + RolePageListGetResultModel, RoleListGetResultModel, } from './model/systemModel'; import { defHttp } from '/@/utils/http/axios'; @@ -14,7 +16,8 @@ enum Api { AccountList = '/system/getAccountList', DeptList = '/system/getDeptList', MenuList = '/system/getMenuList', - RoleList = '/system/getRoleList', + RolePageList = '/system/getRoleListByPage', + GetAllRoleList = '/system/getAllRoleList', } export const getAccountList = (params: AccountParams) => @@ -26,5 +29,8 @@ export const getDeptList = (params?: DeptListItem) => export const getMenuList = (params?: MenuParams) => defHttp.get({ url: Api.MenuList, params }); -export const getRoleList = (params?: RoleParams) => - defHttp.get({ url: Api.RoleList, params }); +export const getRoleListByPage = (params?: RolePageParams) => + defHttp.get({ url: Api.RolePageList, params }); + +export const getAllRoleList = (params?: RoleParams) => + defHttp.get({ url: Api.GetAllRoleList, params }); diff --git a/src/components/Form/src/components/FormItem.tsx b/src/components/Form/src/components/FormItem.tsx index 8a949dd2..3bba7a04 100644 --- a/src/components/Form/src/components/FormItem.tsx +++ b/src/components/Form/src/components/FormItem.tsx @@ -311,11 +311,12 @@ export default defineComponent({ const realColProps = { ...baseColProps, ...colProps }; const { isIfShow, isShow } = getShow(); + const values = unref(getValues); const getContent = () => { return colSlot - ? getSlot(slots, colSlot, unref(getValues)) + ? getSlot(slots, colSlot, values) : renderColContent - ? renderColContent(unref(getValues)) + ? renderColContent(values) : renderItem(); }; diff --git a/src/components/Tree/src/TreeHeader.vue b/src/components/Tree/src/TreeHeader.vue index db3bde74..9b2e0ef6 100644 --- a/src/components/Tree/src/TreeHeader.vue +++ b/src/components/Tree/src/TreeHeader.vue @@ -10,9 +10,12 @@ @@ -46,6 +49,7 @@ Dropdown, Menu, MenuItem: Menu.Item, + MenuDivider: Menu.Divider, InputSearch: Input.Search, }, props: { @@ -64,9 +68,9 @@ const { t } = useI18n(); const toolbarList = ref([ { label: t('component.tree.selectAll'), value: ToolbarEnum.SELECT_ALL }, - { label: t('component.tree.unSelectAll'), value: ToolbarEnum.UN_SELECT_ALL }, + { label: t('component.tree.unSelectAll'), value: ToolbarEnum.UN_SELECT_ALL, divider: true }, { label: t('component.tree.expandAll'), value: ToolbarEnum.EXPAND_ALL }, - { label: t('component.tree.unExpandAll'), value: ToolbarEnum.UN_EXPAND_ALL }, + { label: t('component.tree.unExpandAll'), value: ToolbarEnum.UN_EXPAND_ALL, divider: true }, { label: t('component.tree.checkStrictly'), value: ToolbarEnum.CHECK_STRICTLY }, { label: t('component.tree.checkUnStrictly'), value: ToolbarEnum.CHECK_UN_STRICTLY }, ]); diff --git a/src/components/Tree/src/index.vue b/src/components/Tree/src/index.vue index 41f1abf1..58c5f331 100644 --- a/src/components/Tree/src/index.vue +++ b/src/components/Tree/src/index.vue @@ -1,7 +1,7 @@ diff --git a/src/views/demo/system/role/index.vue b/src/views/demo/system/role/index.vue index 4d8b601a..ff488ac3 100644 --- a/src/views/demo/system/role/index.vue +++ b/src/views/demo/system/role/index.vue @@ -30,7 +30,7 @@ import { defineComponent } from 'vue'; import { BasicTable, useTable, TableAction } from '/@/components/Table'; - import { getRoleList } from '/@/api/demo/system'; + import { getRoleListByPage } from '/@/api/demo/system'; import { useDrawer } from '/@/components/Drawer'; import RoleDrawer from './RoleDrawer.vue'; @@ -44,7 +44,7 @@ const [registerDrawer, { openDrawer }] = useDrawer(); const [registerTable, { reload }] = useTable({ title: '角色列表', - api: getRoleList, + api: getRoleListByPage, columns, formConfig: { labelWidth: 120, diff --git a/src/views/demo/system/role/role.data.ts b/src/views/demo/system/role/role.data.ts index f31a4dff..b49ea32f 100644 --- a/src/views/demo/system/role/role.data.ts +++ b/src/views/demo/system/role/role.data.ts @@ -2,7 +2,6 @@ import { BasicColumn } from '/@/components/Table'; import { FormSchema } from '/@/components/Table'; import { h } from 'vue'; import { Tag } from 'ant-design-vue'; - export const columns: BasicColumn[] = [ { title: '角色名称', @@ -94,9 +93,9 @@ export const formSchema: FormSchema[] = [ component: 'InputTextArea', }, { - label: '菜单分配', + label: ' ', field: 'menu', slot: 'menu', - component: 'Render', + component: 'Input', }, ]; -- GitLab