From 71b28e2a9b4d2c35ebe42369f82e8fe2d520f5b3 Mon Sep 17 00:00:00 2001 From: dhb52 Date: Fri, 26 Apr 2024 01:06:58 +0800 Subject: [PATCH] =?UTF-8?q?wip:=20=E4=BB=BB=E5=8A=A1=E6=89=B9=E6=AC=A1-?= =?UTF-8?q?=E5=88=9D=E7=A8=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/langs/en-us.ts | 15 +++ src/locales/langs/zh-cn.ts | 15 +++ src/router/elegant/imports.ts | 1 + src/router/elegant/routes.ts | 10 ++ src/router/elegant/transform.ts | 5 +- src/service/api/index.ts | 1 + src/service/api/job-batch.ts | 10 ++ src/typings/api.d.ts | 47 +++++++ src/typings/app.d.ts | 14 ++ src/views/job/batch/index.vue | 126 ++++++++++++++++++ .../job/batch/modules/job-batch-search.vue | 41 ++++++ 11 files changed, 283 insertions(+), 2 deletions(-) create mode 100644 src/service/api/job-batch.ts create mode 100644 src/views/job/batch/index.vue create mode 100644 src/views/job/batch/modules/job-batch-search.vue diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index 4fba786..564fc1a 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -268,6 +268,7 @@ const local: App.I18n.Schema = { workflow_batch: 'Workflow Batch', job: 'Schedule Task Management', job_task: 'Schedule Task List', + job_batch: 'Schedule Task Batch List', 'manage_user-detail': 'User Detail', manage_role: 'Role Manage', manage_menu: 'Menu Manage', @@ -367,6 +368,7 @@ const local: App.I18n.Schema = { retryTask: 'Retry Task', retryTaskTip: 'Total task volume: retry/callback task volume', jobTask: 'Job Task', + jobBatch: 'Job Batch', jobTaskTip: 'Success rate: total completion/total dispatch amount', onlineServiceCount: 'Online Machine', onlineServiceTip: 'Always online machines: the sum of clients and servers registered to the system', @@ -882,6 +884,19 @@ const local: App.I18n.Schema = { cron: 'CRON表达式', workflow: '工作流' } + }, + jobBatch: { + title: 'Job Batch List', + groupName: 'Group name', + jobName: 'Job name', + executionAt: 'Start execution time', + taskBatchStatus: 'Task Batch Status', + operationReason: 'Reason for operation', + form: { + groupName: 'Please enter group name', + jobName: 'Please enter job name', + taskBatchStatus: 'Please enter state' + } } }, form: { diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index f3ac3d1..3ac9898 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -269,6 +269,7 @@ const local: App.I18n.Schema = { workflow_batch: '执行批次', job: '定时任务', job_task: '任务管理', + job_batch: '执行批次', 'manage_user-detail': '用户详情', manage_role: '角色管理', manage_menu: '菜单管理', @@ -364,6 +365,7 @@ const local: App.I18n.Schema = { retryTask: '重试任务', retryTaskTip: '总任务量: 重试/回调任务量', jobTask: '定时任务', + jobBatch: '任务批次', jobTaskTip: '成功率:总完成/总调度量', onlineServiceCount: '总在线机器', onlineServiceTip: '总在线机器:注册到系统的客户端和服务端之和', @@ -878,6 +880,19 @@ const local: App.I18n.Schema = { cron: 'CRON表达式', workflow: '工作流' } + }, + jobBatch: { + title: '任务批次列表', + groupName: '组名称', + jobName: '任务名称', + executionAt: '开始执行时间', + taskBatchStatus: '状态', + operationReason: '操作原因', + form: { + groupName: '请输入组名称', + jobName: '请输入任务名称', + taskBatchStatus: '请输入状态' + } } }, form: { diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts index 68918f1..9ca9816 100644 --- a/src/router/elegant/imports.ts +++ b/src/router/elegant/imports.ts @@ -31,6 +31,7 @@ export const views: Record Promise import("@/views/group/index.vue"), home: () => import("@/views/home/index.vue"), job_task: () => import("@/views/job/task/index.vue"), + job_batch: () => import("@/views/job/batch/index.vue"), manage_menu: () => import("@/views/manage/menu/index.vue"), manage_role: () => import("@/views/manage/role/index.vue"), "manage_user-detail": () => import("@/views/manage/user-detail/[id].vue"), diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts index 66c863c..ee14017 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -211,6 +211,16 @@ export const generatedRoutes: GeneratedRoute[] = [ i18nKey: 'route.job_task', icon: 'octicon:tasklist' } + }, + { + name: 'job_batch', + path: '/job/batch', + component: 'view.job_batch', + meta: { + title: 'job_batch', + i18nKey: 'route.job_batch', + icon: 'carbon:batch-job' + } } ] }, diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts index 6e4f79e..0b1a1f9 100644 --- a/src/router/elegant/transform.ts +++ b/src/router/elegant/transform.ts @@ -114,14 +114,14 @@ function transformElegantRouteToVueRoute( } } - + // add redirect to child if (children?.length && !vueRoute.redirect) { vueRoute.redirect = { name: children[0].name }; } - + if (children?.length) { const childRoutes = children.flatMap(child => transformElegantRouteToVueRoute(child, layouts, views)); @@ -165,6 +165,7 @@ const routeMap: RouteMap = { "home": "/home", "job": "/job", "job_task": "/job/task", + "job_batch": "/job/batch", "login": "/login/:module(pwd-login)?", "manage": "/manage", "manage_menu": "/manage/menu", diff --git a/src/service/api/index.ts b/src/service/api/index.ts index 723387f..dbc4d37 100644 --- a/src/service/api/index.ts +++ b/src/service/api/index.ts @@ -10,3 +10,4 @@ export * from './retry-task'; export * from './retry'; export * from './workflow'; export * from './job'; +export * from './job-batch'; diff --git a/src/service/api/job-batch.ts b/src/service/api/job-batch.ts new file mode 100644 index 0000000..82f2f2b --- /dev/null +++ b/src/service/api/job-batch.ts @@ -0,0 +1,10 @@ +import { request } from '../request'; + +/** get Job page */ +export function fetchGetJobBatchList(params?: Api.JobBatch.JobBatchSearchParams) { + return request({ + url: '/job/batch/list', + method: 'get', + params + }); +} diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index 9706353..60838ff 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -916,6 +916,53 @@ declare namespace Api { type TriggerType = 2 | 3 | 99; } + /** + * namespace JobBatch + * + * backend api module: "jobBatch" + */ + namespace JobBatch { + type CommonSearchParams = Pick; + + /** JobBatch */ + type JobBatch = Common.CommonRecord<{ + /** 组名称 */ + groupName: string; + /** 任务名称 */ + jobName: string; + /** 工作流节点名称 */ + nodeName: string; + /** 任务信息id */ + jobId: string; + /** 状态 */ + taskBatchStatus: Common.TaskBatchStatus; + /** 开始执行时间 */ + executionAt: string; + /** 操作原因 */ + operationReason: Common.OperationReason; + /** 执行器类型 */ + executorType: Common.ExecutorType; + /** 执行器名称 */ + executorInfo: string; + /** 工作流的回调节点信息 */ + callback: object; + /** 名称 */ + decision: object; + /** 工作流批次id */ + workflowTaskBatchId: string; + /** 工作流节点id */ + workflowNodeId: string; + }>; + + /** JobBatch search params */ + type JobBatchSearchParams = CommonType.RecordNullable< + Pick & CommonSearchParams + >; + + /** JobBatch list */ + type JobBatchList = Common.PaginatingQueryRecord; + } + /** * namespace WorkflowBatch * diff --git a/src/typings/app.d.ts b/src/typings/app.d.ts index 7499405..0b53302 100644 --- a/src/typings/app.d.ts +++ b/src/typings/app.d.ts @@ -529,6 +529,7 @@ declare namespace App { retryTask: string; retryTaskTip: string; jobTask: string; + jobBatch: string; jobTaskTip: string; onlineServiceCount: string; onlineServiceTip: string; @@ -1045,6 +1046,19 @@ declare namespace App { workflow: string; }; }; + jobBatch: { + title: string; + groupName: string; + jobName: string; + executionAt: string; + taskBatchStatus: string; + operationReason: string; + form: { + groupName: string; + jobName: string; + taskBatchStatus: string; + }; + }; }; form: { required: string; diff --git a/src/views/job/batch/index.vue b/src/views/job/batch/index.vue new file mode 100644 index 0000000..a735159 --- /dev/null +++ b/src/views/job/batch/index.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/src/views/job/batch/modules/job-batch-search.vue b/src/views/job/batch/modules/job-batch-search.vue new file mode 100644 index 0000000..85d9d04 --- /dev/null +++ b/src/views/job/batch/modules/job-batch-search.vue @@ -0,0 +1,41 @@ + + + + +