From 37669d067c43a3807df848f0caf67cbeab3e1b33 Mon Sep 17 00:00:00 2001 From: Vben Date: Mon, 1 Mar 2021 00:56:25 +0800 Subject: [PATCH] wip: add account management page --- mock/demo/system.ts | 30 ++++++ mock/demo/table-demo.ts | 2 +- src/api/demo/model/systemModel.ts | 21 ++++ src/api/demo/system.ts | 10 ++ src/components/Table/src/style/index.less | 13 +-- src/locales/lang/en/routes/demo/system.ts | 5 + src/locales/lang/zh_CN/routes/demo/system.ts | 5 + src/router/menus/modules/demo/system.ts | 17 +++ src/router/routes/modules/dashboard.ts | 2 +- src/router/routes/modules/demo/charts.ts | 2 +- src/router/routes/modules/demo/comp.ts | 2 +- src/router/routes/modules/demo/feat.ts | 2 +- src/router/routes/modules/demo/iframe.ts | 2 +- src/router/routes/modules/demo/level.ts | 2 +- src/router/routes/modules/demo/page.ts | 2 +- src/router/routes/modules/demo/permission.ts | 2 +- src/router/routes/modules/demo/system.ts | 27 +++++ src/router/routes/modules/home.ts | 2 +- src/views/biz/.gitkeep | 0 src/views/demo/.gitkeep | 0 .../demo/system/account/AccountModal.vue | 52 +++++++++ src/views/demo/system/account/account.data.ts | 88 +++++++++++++++ src/views/demo/system/account/index.vue | 100 ++++++++++++++++++ 23 files changed, 372 insertions(+), 16 deletions(-) create mode 100644 mock/demo/system.ts create mode 100644 src/api/demo/model/systemModel.ts create mode 100644 src/api/demo/system.ts create mode 100644 src/locales/lang/en/routes/demo/system.ts create mode 100644 src/locales/lang/zh_CN/routes/demo/system.ts create mode 100644 src/router/menus/modules/demo/system.ts create mode 100644 src/router/routes/modules/demo/system.ts delete mode 100644 src/views/biz/.gitkeep delete mode 100644 src/views/demo/.gitkeep create mode 100644 src/views/demo/system/account/AccountModal.vue create mode 100644 src/views/demo/system/account/account.data.ts create mode 100644 src/views/demo/system/account/index.vue diff --git a/mock/demo/system.ts b/mock/demo/system.ts new file mode 100644 index 00000000..bc72d2b6 --- /dev/null +++ b/mock/demo/system.ts @@ -0,0 +1,30 @@ +import { MockMethod } from 'vite-plugin-mock'; +import { resultPageSuccess } from '../_util'; + +const list = (() => { + const result: any[] = []; + for (let index = 0; index < 20; index++) { + result.push({ + id: `${index}`, + account: '@first', + email: '@email', + nickname: '@cname()', + role: '@first', + updateTime: '@datetime', + remark: '@cword(0,20)', + }); + } + return result; +})(); + +export default [ + { + url: '/api/system/getAccountList', + timeout: 100, + method: 'get', + response: ({ query }) => { + const { page = 1, pageSize = 20 } = query; + return resultPageSuccess(page, pageSize, list); + }, + }, +] as MockMethod[]; diff --git a/mock/demo/table-demo.ts b/mock/demo/table-demo.ts index 17e80228..fb04f29c 100644 --- a/mock/demo/table-demo.ts +++ b/mock/demo/table-demo.ts @@ -28,7 +28,7 @@ const demoList = (() => { export default [ { url: '/api/table/getDemoList', - timeout: 1000, + timeout: 100, method: 'get', response: ({ query }) => { const { page = 1, pageSize = 20 } = query; diff --git a/src/api/demo/model/systemModel.ts b/src/api/demo/model/systemModel.ts new file mode 100644 index 00000000..eb0fc803 --- /dev/null +++ b/src/api/demo/model/systemModel.ts @@ -0,0 +1,21 @@ +import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel'; + +export type Params = BasicPageParams & { + account?: string; + nickname?: string; +}; + +export interface DemoListItem { + id: string; + account: string; + email: string; + nickname: string; + role: number; + updateTime: string; + remark: string; +} + +/** + * @description: Request list return value + */ +export type DemoListGetResultModel = BasicFetchResult; diff --git a/src/api/demo/system.ts b/src/api/demo/system.ts new file mode 100644 index 00000000..3fe1ccf9 --- /dev/null +++ b/src/api/demo/system.ts @@ -0,0 +1,10 @@ +import { Params, DemoListGetResultModel } from './model/systemModel'; +import { defHttp } from '/@/utils/http/axios'; + +enum Api { + // The address does not exist + AccountList = '/system/getAccountList', +} + +export const getAccountList = (params: Params) => + defHttp.get({ url: Api.AccountList, params }); diff --git a/src/components/Table/src/style/index.less b/src/components/Table/src/style/index.less index 55b93a2d..0f348c9e 100644 --- a/src/components/Table/src/style/index.less +++ b/src/components/Table/src/style/index.less @@ -4,6 +4,7 @@ .@{prefix-cls} { &-form-container { + width: 100%; padding: 16px; .ant-form { @@ -50,8 +51,8 @@ // .ant-table { - // width: 100%; - // overflow-x: hidden; + width: 100%; + overflow-x: hidden; // border: none; &-title { @@ -159,15 +160,15 @@ // overflow-y: hidden !important; // } - // .ant-table-fixed { - // border-bottom: none; - // } + // .ant-table-fixed { + // border-bottom: none; + // } // } // .ant-table-bordered .ant-table-thead > tr:not(:last-child) > th, // .ant-table-tbody > tr > td { // word-break: break-word; - // border-color: @border-color !important; + // // border-color: @border-color !important; // } .ant-table-footer { diff --git a/src/locales/lang/en/routes/demo/system.ts b/src/locales/lang/en/routes/demo/system.ts new file mode 100644 index 00000000..e6a24263 --- /dev/null +++ b/src/locales/lang/en/routes/demo/system.ts @@ -0,0 +1,5 @@ +export default { + moduleName: 'System management', + + account: 'Account management', +}; diff --git a/src/locales/lang/zh_CN/routes/demo/system.ts b/src/locales/lang/zh_CN/routes/demo/system.ts new file mode 100644 index 00000000..2f16ba49 --- /dev/null +++ b/src/locales/lang/zh_CN/routes/demo/system.ts @@ -0,0 +1,5 @@ +export default { + moduleName: '系统管理', + + account: '账号管理', +}; diff --git a/src/router/menus/modules/demo/system.ts b/src/router/menus/modules/demo/system.ts new file mode 100644 index 00000000..200d5460 --- /dev/null +++ b/src/router/menus/modules/demo/system.ts @@ -0,0 +1,17 @@ +import type { MenuModule } from '/@/router/types'; +import { t } from '/@/hooks/web/useI18n'; + +const menu: MenuModule = { + orderNo: 2000, + menu: { + name: t('routes.demo.system.moduleName'), + path: '/system', + children: [ + { + path: 'account', + name: t('routes.demo.system.account'), + }, + ], + }, +}; +export default menu; diff --git a/src/router/routes/modules/dashboard.ts b/src/router/routes/modules/dashboard.ts index 31b21f23..cd93d8bd 100644 --- a/src/router/routes/modules/dashboard.ts +++ b/src/router/routes/modules/dashboard.ts @@ -9,7 +9,7 @@ const dashboard: AppRouteModule = { component: LAYOUT, redirect: '/dashboard/workbench', meta: { - icon: 'bx:bx-home', + icon: 'ion:grid-outline', title: t('routes.dashboard.dashboard'), }, children: [ diff --git a/src/router/routes/modules/demo/charts.ts b/src/router/routes/modules/demo/charts.ts index 7be294d4..5831ce9a 100644 --- a/src/router/routes/modules/demo/charts.ts +++ b/src/router/routes/modules/demo/charts.ts @@ -9,7 +9,7 @@ const charts: AppRouteModule = { component: LAYOUT, redirect: '/charts/apexChart', meta: { - icon: 'vaadin:spline-area-chart', + icon: 'ion:bar-chart-outline', title: t('routes.demo.charts.charts'), }, children: [ diff --git a/src/router/routes/modules/demo/comp.ts b/src/router/routes/modules/demo/comp.ts index 41b3f901..bbc2f579 100644 --- a/src/router/routes/modules/demo/comp.ts +++ b/src/router/routes/modules/demo/comp.ts @@ -9,7 +9,7 @@ const comp: AppRouteModule = { component: LAYOUT, redirect: '/comp/basic', meta: { - icon: 'ic:outline-settings-input-component', + icon: 'ion:layers-outline', title: t('routes.demo.comp.comp'), }, diff --git a/src/router/routes/modules/demo/feat.ts b/src/router/routes/modules/demo/feat.ts index 757183cc..901782f0 100644 --- a/src/router/routes/modules/demo/feat.ts +++ b/src/router/routes/modules/demo/feat.ts @@ -9,7 +9,7 @@ const feat: AppRouteModule = { component: LAYOUT, redirect: '/feat/icon', meta: { - icon: 'ic:outline-featured-play-list', + icon: 'ion:git-compare-outline', title: t('routes.demo.feat.feat'), }, children: [ diff --git a/src/router/routes/modules/demo/iframe.ts b/src/router/routes/modules/demo/iframe.ts index ad50d387..0e8c479e 100644 --- a/src/router/routes/modules/demo/iframe.ts +++ b/src/router/routes/modules/demo/iframe.ts @@ -10,7 +10,7 @@ const iframe: AppRouteModule = { component: LAYOUT, redirect: '/frame/doc', meta: { - icon: 'mdi:page-next-outline', + icon: 'ion:tv-outline', title: t('routes.demo.iframe.frame'), }, diff --git a/src/router/routes/modules/demo/level.ts b/src/router/routes/modules/demo/level.ts index f019d795..f95e5c0a 100644 --- a/src/router/routes/modules/demo/level.ts +++ b/src/router/routes/modules/demo/level.ts @@ -9,7 +9,7 @@ const permission: AppRouteModule = { component: LAYOUT, redirect: '/level/menu1/menu1-1/menu1-1-1', meta: { - icon: 'carbon:user-role', + icon: 'ion:menu-outline', title: t('routes.demo.level.level'), }, diff --git a/src/router/routes/modules/demo/page.ts b/src/router/routes/modules/demo/page.ts index 66dc39d0..bede4e49 100644 --- a/src/router/routes/modules/demo/page.ts +++ b/src/router/routes/modules/demo/page.ts @@ -12,7 +12,7 @@ const page: AppRouteModule = { component: LAYOUT, redirect: '/page-demo/exception', meta: { - icon: 'mdi:page-next-outline', + icon: 'ion:aperture-outline', title: t('routes.demo.page.page'), }, children: [ diff --git a/src/router/routes/modules/demo/permission.ts b/src/router/routes/modules/demo/permission.ts index b8793b19..d46f5208 100644 --- a/src/router/routes/modules/demo/permission.ts +++ b/src/router/routes/modules/demo/permission.ts @@ -10,7 +10,7 @@ const permission: AppRouteModule = { component: LAYOUT, redirect: '/permission/front/page', meta: { - icon: 'carbon:user-role', + icon: 'ion:key-outline', title: t('routes.demo.permission.permission'), }, diff --git a/src/router/routes/modules/demo/system.ts b/src/router/routes/modules/demo/system.ts new file mode 100644 index 00000000..b5507797 --- /dev/null +++ b/src/router/routes/modules/demo/system.ts @@ -0,0 +1,27 @@ +import type { AppRouteModule } from '/@/router/types'; + +import { LAYOUT } from '/@/router/constant'; +import { t } from '/@/hooks/web/useI18n'; + +const system: AppRouteModule = { + path: '/system', + name: 'System', + component: LAYOUT, + redirect: '/system/account', + meta: { + icon: 'ion:settings-outline', + title: t('routes.demo.system.moduleName'), + }, + children: [ + { + path: 'account', + name: 'Account', + meta: { + title: t('routes.demo.system.account'), + }, + component: () => import('/@/views/demo/system/account/index.vue'), + }, + ], +}; + +export default system; diff --git a/src/router/routes/modules/home.ts b/src/router/routes/modules/home.ts index b8a85fe4..0fa86141 100644 --- a/src/router/routes/modules/home.ts +++ b/src/router/routes/modules/home.ts @@ -9,7 +9,7 @@ const dashboard: AppRouteModule = { component: LAYOUT, redirect: '/home/welcome', meta: { - icon: 'bx:bx-home', + icon: 'ion:home-outline', title: t('routes.dashboard.welcome'), }, children: [ diff --git a/src/views/biz/.gitkeep b/src/views/biz/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/src/views/demo/.gitkeep b/src/views/demo/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/src/views/demo/system/account/AccountModal.vue b/src/views/demo/system/account/AccountModal.vue new file mode 100644 index 00000000..a57e4d09 --- /dev/null +++ b/src/views/demo/system/account/AccountModal.vue @@ -0,0 +1,52 @@ + + diff --git a/src/views/demo/system/account/account.data.ts b/src/views/demo/system/account/account.data.ts new file mode 100644 index 00000000..5632fd43 --- /dev/null +++ b/src/views/demo/system/account/account.data.ts @@ -0,0 +1,88 @@ +import { BasicColumn } from '/@/components/Table'; +import { FormSchema } from '/@/components/Table'; + +export const columns: BasicColumn[] = [ + { + title: 'ID', + dataIndex: 'id', + width: 80, + }, + { + title: '用户名', + dataIndex: 'account', + width: 120, + }, + { + title: '昵称', + dataIndex: 'nickname', + width: 120, + }, + { + title: '邮箱', + dataIndex: 'email', + width: 200, + }, + { + title: '更新时间', + dataIndex: 'updateTime', + width: 180, + }, + { + title: '角色', + dataIndex: 'role', + width: 200, + }, + { + title: '备注', + dataIndex: 'remark', + width: 200, + }, +]; + +export const searchFormSchema: FormSchema[] = [ + { + field: 'account', + label: '用户名', + component: 'Input', + colProps: { span: 8 }, + }, + { + field: 'nickname', + label: '昵称', + component: 'Input', + colProps: { span: 8 }, + }, +]; + +export const accountFormSchema: FormSchema[] = [ + { + field: 'account', + label: '用户名', + component: 'Input', + required: true, + }, + { + field: 'nickname', + label: '昵称', + component: 'Input', + required: true, + }, + { + label: '邮箱', + field: 'email', + component: 'Input', + required: true, + }, + // TODO + { + label: '角色', + field: 'role', + component: 'Input', + required: true, + }, + { + label: '备注', + field: 'remark', + component: 'InputTextArea', + }, +]; diff --git a/src/views/demo/system/account/index.vue b/src/views/demo/system/account/index.vue new file mode 100644 index 00000000..da6a0b6f --- /dev/null +++ b/src/views/demo/system/account/index.vue @@ -0,0 +1,100 @@ + + +