diff --git a/src/components/common/select-group.vue b/src/components/common/select-group.vue new file mode 100644 index 0000000..3dde282 --- /dev/null +++ b/src/components/common/select-group.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index 846771a..4adaba6 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -182,6 +182,7 @@ const local: App.I18n.Schema = { retry: 'Retry task', retry_task: 'Retry task', retry_scene: 'Retry scene', + workflow: 'Workflow', 'manage_user-detail': 'User Detail', manage_role: 'Role Manage', manage_menu: 'Menu Manage', @@ -697,6 +698,24 @@ const local: App.I18n.Schema = { lru: 'LRU', round: '轮询' } + }, + workflow: { + title: 'Workflow List', + workflowName: 'Workflow name', + groupName: 'Group name', + nextTriggerAt: 'Trigger time', + workflowStatus: 'State', + triggerType: 'Trigger type', + triggerInterval: 'Interval duration', + executorTimeout: 'Overtime time', + updateDt: 'Update time', + form: { + workflowName: 'Please enter Workflow name', + groupName: 'Please enter Group name', + workflowStatus: 'Please enter State' + }, + addWorkflow: 'Add Workflow', + editWorkflow: 'Add Workflow' } }, form: { diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index 6dfac5d..0486735 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -183,6 +183,7 @@ const local: App.I18n.Schema = { retry: '重试任务', retry_task: '重试任务', retry_scene: '重试场景', + workflow: '工作流', 'manage_user-detail': '用户详情', manage_role: '角色管理', manage_menu: '菜单管理', @@ -693,6 +694,24 @@ const local: App.I18n.Schema = { lru: 'LRU', round: '轮询' } + }, + workflow: { + title: '工作流列表', + workflowName: '工作流名称', + groupName: '组名称', + nextTriggerAt: '触发时间', + workflowStatus: '状态', + triggerType: '触发类型', + triggerInterval: '间隔时长', + executorTimeout: '超时时间', + updateDt: '更新时间', + form: { + workflowName: '请输入工作流名称', + groupName: '请输入组名称', + workflowStatus: '请输入状态' + }, + addWorkflow: '新增工作流', + editWorkflow: '编辑工作流' } }, form: { diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts index 3af0063..4d910c5 100644 --- a/src/router/elegant/imports.ts +++ b/src/router/elegant/imports.ts @@ -43,4 +43,5 @@ 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"), + workflow: () => import("@/views/workflow/index.vue"), }; diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts index 1e96f78..d821cd9 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -419,5 +419,14 @@ export const generatedRoutes: GeneratedRoute[] = [ i18nKey: 'route.user-center', hideInMenu: true } + }, + { + name: 'workflow', + path: '/workflow', + component: 'layout.base$view.workflow', + meta: { + title: 'workflow', + i18nKey: 'route.workflow' + } } ]; diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts index 2072217..d1dc1dd 100644 --- a/src/router/elegant/transform.ts +++ b/src/router/elegant/transform.ts @@ -183,7 +183,8 @@ const routeMap: RouteMap = { "retry": "/retry", "retry_scene": "/retry/scene", "retry_task": "/retry/task", - "user-center": "/user-center" + "user-center": "/user-center", + "workflow": "/workflow" }; /** diff --git a/src/service/api/index.ts b/src/service/api/index.ts index 171b1f9..a4dec25 100644 --- a/src/service/api/index.ts +++ b/src/service/api/index.ts @@ -8,3 +8,4 @@ export * from './notify'; export * from './group-config'; export * from './retry-task'; export * from './retry'; +export * from './workflow'; diff --git a/src/service/api/workflow.ts b/src/service/api/workflow.ts new file mode 100644 index 0000000..79a4ce0 --- /dev/null +++ b/src/service/api/workflow.ts @@ -0,0 +1,10 @@ +import { request } from '../request'; + +/** get namespace list */ +export function fetchGetWorkflowPageList(params?: Api.Workflow.WorkflowSearchParams) { + return request({ + url: '/workflow/page/list', + method: 'get', + params + }); +} diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index c1c7574..c6b275a 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -749,4 +749,40 @@ declare namespace Api { /** 1: 一致性Hash 2: 随机 3: LRU 4: 轮询 */ type RouteKey = 1 | 2 | 3 | 4; } + + /** + * namespace Workflow + * + * backend api module: "workflow" + */ + namespace Workflow { + import EnableStatusNumber = Api.Common.EnableStatusNumber; + type CommonSearchParams = Pick; + + /** workflow */ + type Workflow = Common.CommonRecord<{ + /** 工作流名称 */ + workflowName: string; + /** 组名称 */ + groupName: string; + /** 触发时间 */ + nextTriggerAt: string; + /** 状态 */ + workflowStatus: EnableStatusNumber; + /** 触发类型 */ + triggerType: number; + /** 间隔时长 */ + triggerInterval: string; + /** 超时时间 */ + executorTimeout: number; + }>; + + /** workflow search params */ + type WorkflowSearchParams = CommonType.RecordNullable< + Pick & CommonSearchParams + >; + + /** workflow list */ + type WorkflowList = Common.PaginatingQueryRecord; + } } diff --git a/src/typings/app.d.ts b/src/typings/app.d.ts index 5e57ce7..01b8990 100644 --- a/src/typings/app.d.ts +++ b/src/typings/app.d.ts @@ -866,6 +866,24 @@ declare namespace App { round: string; }; }; + workflow: { + title: string; + workflowName: string; + groupName: string; + nextTriggerAt: string; + workflowStatus: string; + triggerType: string; + triggerInterval: string; + executorTimeout: string; + updateDt: string; + form: { + workflowName: string; + groupName: string; + workflowStatus: string; + }; + addWorkflow: string; + editWorkflow: string; + }; }; form: { required: string; diff --git a/src/typings/components.d.ts b/src/typings/components.d.ts index 66c2658..2c92956 100644 --- a/src/typings/components.d.ts +++ b/src/typings/components.d.ts @@ -96,6 +96,7 @@ declare module 'vue' { RouterView: typeof import('vue-router')['RouterView'] Search: typeof import('../components/common/search-form.vue')['default'] SearchForm: typeof import('./../components/common/search-form.vue')['default'] + SelectGroup: typeof import('./../components/common/select-group.vue')['default'] SoybeanAvatar: typeof import('./../components/custom/soybean-avatar.vue')['default'] SvgIcon: typeof import('./../components/custom/svg-icon.vue')['default'] SystemLogo: typeof import('./../components/common/system-logo.vue')['default'] diff --git a/src/typings/elegant-router.d.ts b/src/typings/elegant-router.d.ts index a930d83..7e02934 100644 --- a/src/typings/elegant-router.d.ts +++ b/src/typings/elegant-router.d.ts @@ -58,6 +58,7 @@ declare module "@elegant-router/types" { "retry_scene": "/retry/scene"; "retry_task": "/retry/task"; "user-center": "/user-center"; + "workflow": "/workflow"; }; /** @@ -108,6 +109,7 @@ declare module "@elegant-router/types" { | "pods" | "retry" | "user-center" + | "workflow" >; /** @@ -153,6 +155,7 @@ declare module "@elegant-router/types" { | "retry_scene" | "retry_task" | "user-center" + | "workflow" >; /** diff --git a/src/views/workflow/index.vue b/src/views/workflow/index.vue new file mode 100644 index 0000000..cba9fa2 --- /dev/null +++ b/src/views/workflow/index.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/src/views/workflow/modules/workflow-search.vue b/src/views/workflow/modules/workflow-search.vue new file mode 100644 index 0000000..dbd7c2d --- /dev/null +++ b/src/views/workflow/modules/workflow-search.vue @@ -0,0 +1,47 @@ + + + + +