diff --git a/.env.base b/.env.base index 8a8d91c..799b9e1 100644 --- a/.env.base +++ b/.env.base @@ -2,7 +2,7 @@ NODE_ENV=development # 接口前缀 -VITE_API_BASEPATH=base +VITE_API_BASE_PATH=base # 打包路径 VITE_BASE_PATH=/ diff --git a/.env.dev b/.env.dev index 6a641a3..b5b794e 100644 --- a/.env.dev +++ b/.env.dev @@ -2,7 +2,7 @@ NODE_ENV=production # 接口前缀 -VITE_API_BASEPATH=dev +VITE_API_BASE_PATH=dev # 打包路径 VITE_BASE_PATH=/dist-dev/ diff --git a/.env.gitee b/.env.gitee index c55b595..412f1c4 100644 --- a/.env.gitee +++ b/.env.gitee @@ -2,7 +2,7 @@ NODE_ENV=production # 接口前缀 -VITE_API_BASEPATH=pro +VITE_API_BASE_PATH=pro # 打包路径 VITE_BASE_PATH=/vue-element-plus-admin/ diff --git a/.env.pro b/.env.pro index 99a9480..d21f25c 100644 --- a/.env.pro +++ b/.env.pro @@ -2,7 +2,7 @@ NODE_ENV=production # 接口前缀 -VITE_API_BASEPATH=pro +VITE_API_BASE_PATH=pro # 打包路径 VITE_BASE_PATH=/ diff --git a/.env.test b/.env.test index 3f6ebe1..00d8f8a 100644 --- a/.env.test +++ b/.env.test @@ -2,7 +2,7 @@ NODE_ENV=production # 接口前缀 -VITE_API_BASEPATH=test +VITE_API_BASE_PATH=test # 打包路径 VITE_BASE_PATH=/dist-test/ diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml index 33b6e00..5727846 100644 --- a/.github/workflows/auto-merge.yml +++ b/.github/workflows/auto-merge.yml @@ -24,6 +24,7 @@ jobs: - name: Automerge uses: 'pascalgn/automerge-action@v0.14.3' env: + BASE_BRANCHES: 'release' GITHUB_TOKEN: '${{ secrets.TOKEN }}' MERGE_LABELS: '' MERGE_FILTER_AUTHOR: 'kailong321200875' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 609f607..4367b1c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,7 @@ on: push: branches: - - master + - release name: Release diff --git a/.husky/commit-msg b/.husky/commit-msg old mode 100644 new mode 100755 diff --git a/.husky/pre-commit b/.husky/pre-commit old mode 100644 new mode 100755 diff --git a/mock/department/index.ts b/mock/department/index.ts new file mode 100644 index 0000000..34b5341 --- /dev/null +++ b/mock/department/index.ts @@ -0,0 +1,219 @@ +import config from '@/config/axios/config' +import { MockMethod } from 'vite-plugin-mock' +import { toAnyString } from '@/utils' +import Mock from 'mockjs' + +const { code } = config + +const departmentList: any = [] + +const citys = ['厦门总公司', '北京分公司', '上海分公司', '福州分公司', '深圳分公司', '杭州分公司'] + +for (let i = 0; i < 5; i++) { + departmentList.push({ + // 部门名称 + departmentName: citys[i], + id: toAnyString(), + createTime: '@datetime', + // 状态 + status: Mock.Random.integer(0, 1), + // 备注 + remark: '@cword(10, 15)', + children: [ + { + // 部门名称 + departmentName: '研发部', + createTime: '@datetime', + // 状态 + status: Mock.Random.integer(0, 1), + id: toAnyString(), + remark: '@cword(10, 15)' + }, + { + // 部门名称 + departmentName: '产品部', + createTime: '@datetime', + // 状态 + status: Mock.Random.integer(0, 1), + id: toAnyString(), + remark: '@cword(10, 15)' + }, + { + // 部门名称 + departmentName: '运营部', + createTime: '@datetime', + // 状态 + status: Mock.Random.integer(0, 1), + id: toAnyString(), + remark: '@cword(10, 15)' + }, + { + // 部门名称 + departmentName: '市场部', + createTime: '@datetime', + // 状态 + status: Mock.Random.integer(0, 1), + id: toAnyString(), + remark: '@cword(10, 15)' + }, + { + // 部门名称 + departmentName: '销售部', + createTime: '@datetime', + // 状态 + status: Mock.Random.integer(0, 1), + id: toAnyString(), + remark: '@cword(10, 15)' + }, + { + // 部门名称 + departmentName: '客服部', + createTime: '@datetime', + // 状态 + status: Mock.Random.integer(0, 1), + id: toAnyString(), + remark: '@cword(10, 15)' + } + ] + }) +} + +export default [ + // 列表接口 + { + url: '/department/list', + method: 'get', + response: () => { + return { + data: { + code: code, + data: { + list: departmentList + } + } + } + } + }, + { + url: '/department/table/list', + method: 'get', + response: () => { + return { + data: { + code: code, + data: { + list: departmentList, + total: 5 + } + } + } + } + }, + { + url: '/department/users', + method: 'get', + timeout: 1000, + response: ({ query }) => { + const { pageSize } = query + // 根据pageSize来创建数据 + const mockList: any = [] + for (let i = 0; i < pageSize; i++) { + mockList.push( + Mock.mock({ + // 用户名 + username: '@cname', + // 账号 + account: '@first', + // 邮箱 + email: '@EMAIL', + // 创建时间 + createTime: '@datetime', + // 角色 + role: '@first', + // 用户id + id: toAnyString() + }) + ) + } + return { + data: { + code: code, + data: { + total: 100, + list: mockList + } + } + } + } + }, + // 保存接口 + { + url: '/department/user/save', + method: 'post', + timeout: 1000, + response: () => { + return { + data: { + code: code, + data: 'success' + } + } + } + }, + // 删除接口 + { + url: '/department/user/delete', + method: 'post', + response: ({ body }) => { + const ids = body.ids + if (!ids) { + return { + code: '500', + message: '请选择需要删除的数据' + } + } else { + return { + data: { + code: code, + data: 'success' + } + } + } + } + }, + // 保存接口 + { + url: '/department/save', + method: 'post', + timeout: 1000, + response: () => { + return { + data: { + code: code, + data: 'success' + } + } + } + }, + // 删除接口 + { + url: '/department/delete', + method: 'post', + response: ({ body }) => { + const ids = body.ids + if (!ids) { + return { + code: '500', + message: '请选择需要删除的数据' + } + } else { + return { + data: { + code: code, + data: 'success' + } + } + } + } + } +] as MockMethod[] diff --git a/mock/menu/index.ts b/mock/menu/index.ts new file mode 100644 index 0000000..c2f0f61 --- /dev/null +++ b/mock/menu/index.ts @@ -0,0 +1,250 @@ +import config from '@/config/axios/config' +import { MockMethod } from 'vite-plugin-mock' +import Mock from 'mockjs' + +const { code } = config + +const timeout = 1000 + +export default [ + // 列表接口 + { + url: '/menu/list', + method: 'get', + timeout, + response: () => { + return { + data: { + code: code, + data: { + list: [ + { + path: '/dashboard', + component: '#', + redirect: '/dashboard/analysis', + name: 'Dashboard', + status: Mock.Random.integer(0, 1), + id: 1, + meta: { + title: '首页', + icon: 'ant-design:dashboard-filled', + alwaysShow: true + }, + children: [ + { + path: 'analysis', + component: 'views/Dashboard/Analysis', + name: 'Analysis', + status: Mock.Random.integer(0, 1), + id: 2, + meta: { + title: '分析页', + noCache: true + } + }, + { + path: 'workplace', + component: 'views/Dashboard/Workplace', + name: 'Workplace', + status: Mock.Random.integer(0, 1), + id: 3, + meta: { + title: '工作台', + noCache: true + } + } + ] + }, + { + path: '/external-link', + component: '#', + meta: { + title: '文档', + icon: 'clarity:document-solid' + }, + name: 'ExternalLink', + status: Mock.Random.integer(0, 1), + id: 4, + children: [ + { + path: 'https://element-plus-admin-doc.cn/', + name: 'DocumentLink', + status: Mock.Random.integer(0, 1), + id: 5, + meta: { + title: '文档' + } + } + ] + }, + { + path: '/level', + component: '#', + redirect: '/level/menu1/menu1-1/menu1-1-1', + name: 'Level', + status: Mock.Random.integer(0, 1), + id: 6, + meta: { + title: '菜单', + icon: 'carbon:skill-level-advanced' + }, + children: [ + { + path: 'menu1', + name: 'Menu1', + component: '##', + status: Mock.Random.integer(0, 1), + id: 7, + redirect: '/level/menu1/menu1-1/menu1-1-1', + meta: { + title: '菜单1' + }, + children: [ + { + path: 'menu1-1', + name: 'Menu11', + component: '##', + status: Mock.Random.integer(0, 1), + id: 8, + redirect: '/level/menu1/menu1-1/menu1-1-1', + meta: { + title: '菜单1-1', + alwaysShow: true + }, + children: [ + { + path: 'menu1-1-1', + name: 'Menu111', + component: 'views/Level/Menu111', + status: Mock.Random.integer(0, 1), + id: 9, + permission: ['edit', 'add', 'delete'], + meta: { + title: '菜单1-1-1' + } + } + ] + }, + { + path: 'menu1-2', + name: 'Menu12', + component: 'views/Level/Menu12', + status: Mock.Random.integer(0, 1), + id: 10, + permission: ['edit', 'add', 'delete'], + meta: { + title: '菜单1-2' + } + } + ] + }, + { + path: 'menu2', + name: 'Menu2Demo', + component: 'views/Level/Menu2', + status: Mock.Random.integer(0, 1), + id: 11, + permission: ['edit', 'add', 'delete'], + meta: { + title: '菜单2' + } + } + ] + }, + { + path: '/example', + component: '#', + redirect: '/example/example-dialog', + name: 'Example', + status: Mock.Random.integer(0, 1), + id: 12, + meta: { + title: '综合示例', + icon: 'ep:management', + alwaysShow: true + }, + children: [ + { + path: 'example-dialog', + component: 'views/Example/Dialog/ExampleDialog', + name: 'ExampleDialog', + status: Mock.Random.integer(0, 1), + id: 13, + permission: ['edit', 'add', 'delete'], + meta: { + title: '综合示例-弹窗', + permission: ['edit', 'add'] + } + }, + { + path: 'example-page', + component: 'views/Example/Page/ExamplePage', + name: 'ExamplePage', + status: Mock.Random.integer(0, 1), + id: 14, + permission: ['edit', 'add', 'delete'], + meta: { + title: '综合示例-页面', + permission: ['edit', 'add'] + } + }, + { + path: 'example-add', + component: 'views/Example/Page/ExampleAdd', + name: 'ExampleAdd', + status: Mock.Random.integer(0, 1), + id: 15, + permission: ['edit', 'add', 'delete'], + meta: { + title: '综合示例-新增', + noTagsView: true, + noCache: true, + hidden: true, + showMainRoute: true, + activeMenu: '/example/example-page', + permission: ['delete', 'add'] + } + }, + { + path: 'example-edit', + component: 'views/Example/Page/ExampleEdit', + name: 'ExampleEdit', + status: Mock.Random.integer(0, 1), + id: 16, + permission: ['edit', 'add', 'delete'], + meta: { + title: '综合示例-编辑', + noTagsView: true, + noCache: true, + hidden: true, + showMainRoute: true, + activeMenu: '/example/example-page', + permission: ['delete', 'add'] + } + }, + { + path: 'example-detail', + component: 'views/Example/Page/ExampleDetail', + name: 'ExampleDetail', + status: Mock.Random.integer(0, 1), + id: 17, + permission: ['edit', 'add', 'delete'], + meta: { + title: '综合示例-详情', + noTagsView: true, + noCache: true, + hidden: true, + showMainRoute: true, + activeMenu: '/example/example-page', + permission: ['delete', 'edit'] + } + } + ] + } + ] + } + } + } + } + } +] as MockMethod[] diff --git a/mock/role/index.ts b/mock/role/index.ts index 72022c6..3f93471 100644 --- a/mock/role/index.ts +++ b/mock/role/index.ts @@ -1,5 +1,7 @@ import config from '@/config/axios/config' import { MockMethod } from 'vite-plugin-mock' +import Mock from 'mockjs' +import { toAnyString } from '@/utils' const { code } = config @@ -105,14 +107,6 @@ const adminList = [ meta: { title: 'UseForm' } - }, - { - path: 'ref-form', - component: 'views/Components/Form/RefForm', - name: 'RefForm', - meta: { - title: 'RefForm' - } } ] }, @@ -143,13 +137,29 @@ const adminList = [ } }, { - path: 'ref-table', - component: 'views/Components/Table/RefTable', - name: 'RefTable', + path: 'tree-table', + component: 'views/Components/Table/TreeTable', + name: 'TreeTable', meta: { - title: 'RefTable' + title: 'TreeTable' + } + }, + { + path: 'table-image-preview', + component: 'views/Components/Table/TableImagePreview', + name: 'TableImagePreview', + meta: { + title: 'router.PicturePreview' } } + // { + // path: 'ref-table', + // component: 'views/Components/Table/RefTable', + // name: 'RefTable', + // meta: { + // title: 'RefTable' + // } + // } ] }, { @@ -259,14 +269,6 @@ const adminList = [ meta: { title: 'router.inputPassword' } - }, - { - path: 'sticky', - component: 'views/Components/Sticky', - name: 'Sticky', - meta: { - title: 'router.sticky' - } } ] }, @@ -290,13 +292,21 @@ const adminList = [ } }, { - path: 'useCrudSchemas', - component: 'views/hooks/useCrudSchemas', - name: 'UseCrudSchemas', + path: 'useOpenTab', + component: 'views/hooks/useOpenTab', + name: 'UseOpenTab', meta: { - title: 'useCrudSchemas' + title: 'useOpenTab' } } + // { + // path: 'useCrudSchemas', + // component: 'views/hooks/useCrudSchemas', + // name: 'UseCrudSchemas', + // meta: { + // title: 'useCrudSchemas' + // } + // } ] }, { @@ -462,6 +472,59 @@ const adminList = [ } } ] + }, + { + path: '/authorization', + component: '#', + redirect: '/authorization/user', + name: 'Authorization', + meta: { + title: 'router.authorization', + icon: 'eos-icons:role-binding', + alwaysShow: true + }, + children: [ + { + path: 'department', + component: 'views/Authorization/Department/Department', + name: 'Department', + meta: { + title: 'router.department' + } + }, + { + path: 'user', + component: 'views/Authorization/User/User', + name: 'User', + meta: { + title: 'router.user' + } + }, + { + path: 'menu', + component: 'views/Authorization/Menu/Menu', + name: 'Menu', + meta: { + title: 'router.menuManagement' + } + }, + { + path: 'role', + component: 'views/Authorization/Role/Role', + name: 'Role', + meta: { + title: 'router.role' + } + }, + { + path: 'test', + component: 'views/Authorization/Test/Test', + name: 'Test', + meta: { + title: 'router.permission' + } + } + ] } ] @@ -481,6 +544,8 @@ const testList: string[] = [ '/components/table', '/components/table/default-table', '/components/table/use-table', + '/components/table/tree-table', + '/components/table/table-image-preview', '/components/table/ref-table', '/components/editor-demo', '/components/editor-demo/editor', @@ -498,7 +563,8 @@ const testList: string[] = [ '/Components/Sticky', '/hooks', '/hooks/useWatermark', - '/hooks/useCrudSchemas', + '/hooks/useOpenTab', + // '/hooks/useCrudSchemas', '/level', '/level/menu1', '/level/menu1/menu1-1', @@ -511,12 +577,441 @@ const testList: string[] = [ '/example/example-add', '/example/example-edit', '/example/example-detail', + '/authorization', + '/authorization/department', + '/authorization/user', + '/authorization/role', + '/authorization/menu', + '/authorization/test', '/error', '/error/404-demo', '/error/403-demo', '/error/500-demo' ] +const List: any[] = [] + +const roleNames = ['超级管理员', '管理员', '普通用户', '游客'] +const menus = [ + [ + { + path: '/dashboard', + component: '#', + redirect: '/dashboard/analysis', + name: 'Dashboard', + status: Mock.Random.integer(0, 1), + id: 1, + meta: { + title: '首页', + icon: 'ant-design:dashboard-filled', + alwaysShow: true + }, + children: [ + { + path: 'analysis', + component: 'views/Dashboard/Analysis', + name: 'Analysis', + status: Mock.Random.integer(0, 1), + id: 2, + meta: { + title: '分析页', + noCache: true + } + }, + { + path: 'workplace', + component: 'views/Dashboard/Workplace', + name: 'Workplace', + status: Mock.Random.integer(0, 1), + id: 3, + meta: { + title: '工作台', + noCache: true + } + } + ] + }, + { + path: '/external-link', + component: '#', + meta: { + title: '文档', + icon: 'clarity:document-solid' + }, + name: 'ExternalLink', + status: Mock.Random.integer(0, 1), + id: 4, + children: [ + { + path: 'https://element-plus-admin-doc.cn/', + name: 'DocumentLink', + status: Mock.Random.integer(0, 1), + id: 5, + meta: { + title: '文档' + } + } + ] + }, + { + path: '/level', + component: '#', + redirect: '/level/menu1/menu1-1/menu1-1-1', + name: 'Level', + status: Mock.Random.integer(0, 1), + id: 6, + meta: { + title: '菜单', + icon: 'carbon:skill-level-advanced' + }, + children: [ + { + path: 'menu1', + name: 'Menu1', + component: '##', + status: Mock.Random.integer(0, 1), + id: 7, + redirect: '/level/menu1/menu1-1/menu1-1-1', + meta: { + title: '菜单1' + }, + children: [ + { + path: 'menu1-1', + name: 'Menu11', + component: '##', + status: Mock.Random.integer(0, 1), + id: 8, + redirect: '/level/menu1/menu1-1/menu1-1-1', + meta: { + title: '菜单1-1', + alwaysShow: true + }, + children: [ + { + path: 'menu1-1-1', + name: 'Menu111', + component: 'views/Level/Menu111', + status: Mock.Random.integer(0, 1), + id: 9, + permission: ['edit', 'add', 'delete'], + meta: { + title: '菜单1-1-1', + permission: ['edit', 'add', 'delete'] + } + } + ] + }, + { + path: 'menu1-2', + name: 'Menu12', + component: 'views/Level/Menu12', + status: Mock.Random.integer(0, 1), + id: 10, + permission: ['edit', 'add', 'delete'], + meta: { + title: '菜单1-2', + permission: ['edit', 'add', 'delete'] + } + } + ] + }, + { + path: 'menu2', + name: 'Menu2Demo', + component: 'views/Level/Menu2', + status: Mock.Random.integer(0, 1), + id: 11, + permission: ['edit', 'add', 'delete'], + meta: { + title: '菜单2', + permission: ['edit', 'add', 'delete'] + } + } + ] + }, + { + path: '/example', + component: '#', + redirect: '/example/example-dialog', + name: 'Example', + status: Mock.Random.integer(0, 1), + id: 12, + meta: { + title: '综合示例', + icon: 'ep:management', + alwaysShow: true + }, + children: [ + { + path: 'example-dialog', + component: 'views/Example/Dialog/ExampleDialog', + name: 'ExampleDialog', + status: Mock.Random.integer(0, 1), + id: 13, + permission: ['edit', 'add', 'delete'], + meta: { + title: '综合示例-弹窗', + permission: ['edit', 'add', 'delete'] + } + }, + { + path: 'example-page', + component: 'views/Example/Page/ExamplePage', + name: 'ExamplePage', + status: Mock.Random.integer(0, 1), + id: 14, + permission: ['edit', 'add', 'delete'], + meta: { + title: '综合示例-页面', + permission: ['edit', 'add', 'delete'] + } + }, + { + path: 'example-add', + component: 'views/Example/Page/ExampleAdd', + name: 'ExampleAdd', + status: Mock.Random.integer(0, 1), + id: 15, + permission: ['edit', 'add', 'delete'], + meta: { + title: '综合示例-新增', + noTagsView: true, + noCache: true, + hidden: true, + showMainRoute: true, + activeMenu: '/example/example-page', + permission: ['edit', 'add', 'delete'] + } + }, + { + path: 'example-edit', + component: 'views/Example/Page/ExampleEdit', + name: 'ExampleEdit', + status: Mock.Random.integer(0, 1), + id: 16, + permission: ['edit', 'add', 'delete'], + meta: { + title: '综合示例-编辑', + noTagsView: true, + noCache: true, + hidden: true, + showMainRoute: true, + activeMenu: '/example/example-page', + permission: ['edit', 'add', 'delete'] + } + }, + { + path: 'example-detail', + component: 'views/Example/Page/ExampleDetail', + name: 'ExampleDetail', + status: Mock.Random.integer(0, 1), + id: 17, + permission: ['edit', 'add', 'delete'], + meta: { + title: '综合示例-详情', + noTagsView: true, + noCache: true, + hidden: true, + showMainRoute: true, + activeMenu: '/example/example-page', + permission: ['edit', 'add', 'delete'] + } + } + ] + } + ], + [ + { + path: '/dashboard', + component: '#', + redirect: '/dashboard/analysis', + name: 'Dashboard', + status: Mock.Random.integer(0, 1), + id: 1, + meta: { + title: '首页', + icon: 'ant-design:dashboard-filled', + alwaysShow: true + }, + children: [ + { + path: 'analysis', + component: 'views/Dashboard/Analysis', + name: 'Analysis', + status: Mock.Random.integer(0, 1), + id: 2, + meta: { + title: '分析页', + noCache: true + } + }, + { + path: 'workplace', + component: 'views/Dashboard/Workplace', + name: 'Workplace', + status: Mock.Random.integer(0, 1), + id: 3, + meta: { + title: '工作台', + noCache: true + } + } + ] + } + ], + [ + { + path: '/external-link', + component: '#', + meta: { + title: '文档', + icon: 'clarity:document-solid' + }, + name: 'ExternalLink', + status: Mock.Random.integer(0, 1), + id: 4, + children: [ + { + path: 'https://element-plus-admin-doc.cn/', + name: 'DocumentLink', + status: Mock.Random.integer(0, 1), + id: 5, + meta: { + title: '文档' + } + } + ] + }, + { + path: '/level', + component: '#', + redirect: '/level/menu1/menu1-1/menu1-1-1', + name: 'Level', + status: Mock.Random.integer(0, 1), + id: 6, + meta: { + title: '菜单', + icon: 'carbon:skill-level-advanced' + }, + children: [ + { + path: 'menu1', + name: 'Menu1', + component: '##', + status: Mock.Random.integer(0, 1), + id: 7, + redirect: '/level/menu1/menu1-1/menu1-1-1', + meta: { + title: '菜单1' + }, + children: [ + { + path: 'menu1-1', + name: 'Menu11', + component: '##', + status: Mock.Random.integer(0, 1), + id: 8, + redirect: '/level/menu1/menu1-1/menu1-1-1', + meta: { + title: '菜单1-1', + alwaysShow: true + }, + children: [ + { + path: 'menu1-1-1', + name: 'Menu111', + component: 'views/Level/Menu111', + status: Mock.Random.integer(0, 1), + id: 9, + permission: ['edit', 'add', 'delete'], + meta: { + title: '菜单1-1-1', + permission: ['edit', 'add', 'delete'] + } + } + ] + }, + { + path: 'menu1-2', + name: 'Menu12', + component: 'views/Level/Menu12', + status: Mock.Random.integer(0, 1), + id: 10, + permission: ['edit', 'add', 'delete'], + meta: { + title: '菜单1-2', + permission: ['edit', 'add', 'delete'] + } + } + ] + }, + { + path: 'menu2', + name: 'Menu2Demo', + component: 'views/Level/Menu2', + status: Mock.Random.integer(0, 1), + id: 11, + permission: ['edit', 'add', 'delete'], + meta: { + title: '菜单2', + permission: ['edit', 'add', 'delete'] + } + } + ] + } + ], + [ + { + path: '/example', + component: '#', + redirect: '/example/example-dialog', + name: 'Example', + status: Mock.Random.integer(0, 1), + id: 12, + meta: { + title: '综合示例', + icon: 'ep:management', + alwaysShow: true + }, + children: [ + { + path: 'example-detail', + component: 'views/Example/Page/ExampleDetail', + name: 'ExampleDetail', + status: Mock.Random.integer(0, 1), + id: 17, + permission: ['edit', 'add', 'delete'], + meta: { + title: '综合示例-详情', + noTagsView: true, + noCache: true, + hidden: true, + showMainRoute: true, + activeMenu: '/example/example-page', + permission: ['edit', 'add', 'delete'] + } + } + ] + } + ] +] + +for (let i = 0; i < 4; i++) { + List.push( + Mock.mock({ + id: toAnyString(), + // timestamp: +Mock.Random.date('T'), + roleName: roleNames[i], + role: '@first', + status: Mock.Random.integer(0, 1), + createTime: '@datetime', + remark: '@cword(10, 15)', + menu: menus[i] + }) + ) +} + export default [ // 列表接口 { @@ -532,5 +1027,21 @@ export default [ } } } + }, + { + url: '/role/table', + method: 'get', + timeout, + response: () => { + return { + data: { + code: code, + data: { + list: List, + total: 4 + } + } + } + } } ] as MockMethod[] diff --git a/mock/table/index.ts b/mock/table/index.ts index ca8512d..04a3d78 100644 --- a/mock/table/index.ts +++ b/mock/table/index.ts @@ -12,7 +12,7 @@ const count = 100 const baseContent = '
I am testing data, I am testing data.