diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index 18df177..239253b 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -265,6 +265,9 @@ const local: App.I18n.Schema = { retry_scene: 'Retry scene', retry_log: 'Retry Log', 'retry_dead-letter': 'Retry Dead Letter', + user: 'User', + user_manager: 'User Info', + retry_log: 'Retry log', workflow: 'Workflow', workflow_task: 'Workflow Task', workflow_batch: 'Workflow Batch', @@ -920,6 +923,24 @@ const local: App.I18n.Schema = { jobName: 'Please enter job name', taskBatchStatus: 'Please enter state' } + }, + userManager: { + title: 'UserCenter List', + username: 'Username', + role: 'Role', + permissions: 'group', + checkPassword: 'Confirm Password', + password: 'Password', + form: { + role: 'Please enter Role', + password: 'Please enter Password', + username: 'Please enter Username', + checkPassword: 'Please enter Confirm Password', + permissions: 'Please select Group', + namespaceIds: 'Please select Namespaces' + }, + addUser: 'Add User Center', + editUser: 'Add User Center' } }, form: { diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index b7f0bdc..272ff48 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -264,6 +264,8 @@ const local: App.I18n.Schema = { retry: '重试任务', retry_task: '重试任务', 'retry_dead-letter': '死信任务', + user: '用户管理', + user_manager: '用户信息', retry_scene: '重试场景', retry_log: '重试日志', workflow: '工作流', @@ -916,6 +918,24 @@ const local: App.I18n.Schema = { jobName: '请输入任务名称', taskBatchStatus: '请输入状态' } + }, + userManager: { + title: '用户列表', + username: '用户名', + role: '角色', + permissions: '组', + checkPassword: '确认密码', + password: '密码', + form: { + role: '请输入角色', + password: '请输入密码', + username: '请输入用户名', + checkPassword: '请输入确认密码', + permissions: '请选择组', + namespaceIds: '请选择命名空间' + }, + addUser: '新增用户中心', + editUser: '编辑用户中心' } }, form: { diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts index 30e47eb..7d7c0f4 100644 --- a/src/router/elegant/imports.ts +++ b/src/router/elegant/imports.ts @@ -47,6 +47,7 @@ export const views: Record Promise import("@/views/retry/scene/index.vue"), retry_task: () => import("@/views/retry/task/index.vue"), "user-center": () => import("@/views/user-center/index.vue"), + user_manager: () => import("@/views/user/manager/index.vue"), workflow_batch: () => import("@/views/workflow/batch/index.vue"), workflow_task: () => import("@/views/workflow/task/index.vue"), }; diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts index d4bb7eb..1037685 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -471,6 +471,28 @@ export const generatedRoutes: GeneratedRoute[] = [ } ] }, + { + name: 'user', + path: '/user', + component: 'layout.base', + meta: { + title: 'user', + i18nKey: 'route.user' + }, + children: [ + { + name: 'user_manager', + path: '/user/manager', + component: 'view.user_manager', + meta: { + title: 'user_manager', + i18nKey: 'route.user_manager', + icon: 'streamline:interface-user-multiple-close-geometric-human-multiple-person-up-user', + order: 900 + } + } + ] + }, { name: 'user-center', path: '/user-center', diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts index d66cb0a..26bdf0c 100644 --- a/src/router/elegant/transform.ts +++ b/src/router/elegant/transform.ts @@ -188,6 +188,8 @@ const routeMap: RouteMap = { "retry_log": "/retry/log", "retry_scene": "/retry/scene", "retry_task": "/retry/task", + "user": "/user", + "user_manager": "/user/manager", "user-center": "/user-center", "workflow": "/workflow", "workflow_batch": "/workflow/batch", diff --git a/src/service/api/group.ts b/src/service/api/group.ts index 1186c48..3750b7e 100644 --- a/src/service/api/group.ts +++ b/src/service/api/group.ts @@ -50,3 +50,12 @@ export function fetchGetPartitionTableList() { method: 'get' }); } + +/** get all group config list */ +export function fetchGetAllGroupConfigList(data: string[]) { + return request({ + url: '/group/all/group-config/list', + method: 'post', + data + }); +} diff --git a/src/service/api/index.ts b/src/service/api/index.ts index e1d82d2..c50b77d 100644 --- a/src/service/api/index.ts +++ b/src/service/api/index.ts @@ -12,3 +12,4 @@ export * from './retry-dead-letter'; export * from './workflow'; export * from './job'; export * from './job-batch'; +export * from './user'; diff --git a/src/service/api/user.ts b/src/service/api/user.ts new file mode 100644 index 0000000..a50a2ef --- /dev/null +++ b/src/service/api/user.ts @@ -0,0 +1,36 @@ +import { request } from '../request'; + +/** get user list */ +export function fetchGetUserPageList(params?: Api.UserManager.UserManagerSearchParams) { + return request({ + url: '/user/page/list', + method: 'get', + params + }); +} + +/** add user */ +export function fetchAddUser(data: Api.UserManager.UserManager) { + return request({ + url: '/user', + method: 'post', + data + }); +} + +/** edit user */ +export function fetchEditUser(data: Api.UserManager.UserManager) { + return request({ + url: '/user', + method: 'put', + data + }); +} + +/** delete user */ +export function fetchDelUser(id: number) { + return request({ + url: `/user/${id}`, + method: 'delete' + }); +} diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index fb65e18..fb30fe4 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -1076,4 +1076,40 @@ declare namespace Api { /** retryLog list */ type RetryLogList = Common.PaginatingQueryRecord; } + /** + * namespace UserManager + * + * backend api module: "UserManager" + */ + namespace UserManager { + type CommonSearchParams = Pick; + + /** userCenter */ + type UserManager = Common.CommonRecord<{ + /** 用户名 */ + username: string; + /** 密码 */ + password: string; + /** 确认密码 */ + checkPassword: string; + /** 角色 */ + role: string; + /** 命名空间 */ + namespaceIds?: string; + /** 组 */ + permissions: string[]; + }>; + + /** userManager search params */ + type UserManagerSearchParams = CommonType.RecordNullable< + Pick< + Api.UserManager.UserManager, + 'username' | 'password' | 'checkPassword' | 'role' | 'namespaceIds' | 'permissions' + > & + CommonSearchParams + >; + + /** userCenter list */ + type UserManagerList = Common.PaginatingQueryRecord; + } } diff --git a/src/typings/app.d.ts b/src/typings/app.d.ts index 425e332..7f4e311 100644 --- a/src/typings/app.d.ts +++ b/src/typings/app.d.ts @@ -1081,6 +1081,24 @@ declare namespace App { taskBatchStatus: string; }; }; + userManager: { + title: string; + username: string; + role: string; + checkPassword: string; + password: string; + permissions: string; + form: { + role: string; + password: string; + username: string; + checkPassword: string; + permissions: string; + namespaceIds: string; + }; + addUser: string; + editUser: string; + }; }; form: { required: string; diff --git a/src/views/retry/log/index.vue b/src/views/retry/log/index.vue index 2be45be..966b14c 100644 --- a/src/views/retry/log/index.vue +++ b/src/views/retry/log/index.vue @@ -26,7 +26,8 @@ const { columns, columnChecks, data, getData, loading, mobilePagination, searchP { type: 'selection', align: 'center', - width: 48 + width: 48, + disabled: row => row.retryStatus !== 1 }, { key: 'index', diff --git a/src/views/user/manager/index.vue b/src/views/user/manager/index.vue new file mode 100644 index 0000000..ffe2adc --- /dev/null +++ b/src/views/user/manager/index.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/src/views/user/manager/modules/user-manager-operate-drawer.vue b/src/views/user/manager/modules/user-manager-operate-drawer.vue new file mode 100644 index 0000000..ee11795 --- /dev/null +++ b/src/views/user/manager/modules/user-manager-operate-drawer.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/src/views/user/manager/modules/user-manager-search.vue b/src/views/user/manager/modules/user-manager-search.vue new file mode 100644 index 0000000..20d0226 --- /dev/null +++ b/src/views/user/manager/modules/user-manager-search.vue @@ -0,0 +1,37 @@ + + + + +