diff --git a/src/components/common/block-strategy.vue b/src/components/common/block-strategy.vue
new file mode 100644
index 0000000..b7ebb3c
--- /dev/null
+++ b/src/components/common/block-strategy.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
diff --git a/src/components/common/executor-type.vue b/src/components/common/executor-type.vue
new file mode 100644
index 0000000..104bcb3
--- /dev/null
+++ b/src/components/common/executor-type.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
diff --git a/src/components/common/route-key.vue b/src/components/common/route-key.vue
index 679a1ad..af29e1a 100644
--- a/src/components/common/route-key.vue
+++ b/src/components/common/route-key.vue
@@ -4,6 +4,10 @@ import { $t } from '@/locales';
import { translateOptions } from '@/utils/common';
import { routeKeyRecordOptions } from '@/constants/business';
+defineOptions({
+ name: 'RouterKey'
+});
+
const routeKeyRef = ref();
const emit = defineEmits();
diff --git a/src/components/common/task-type.vue b/src/components/common/task-type.vue
new file mode 100644
index 0000000..a4be4cb
--- /dev/null
+++ b/src/components/common/task-type.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
diff --git a/src/components/common/trigger-type.vue b/src/components/common/trigger-type.vue
new file mode 100644
index 0000000..78d53f8
--- /dev/null
+++ b/src/components/common/trigger-type.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
diff --git a/src/constants/business.ts b/src/constants/business.ts
index 27eb553..16e4c00 100644
--- a/src/constants/business.ts
+++ b/src/constants/business.ts
@@ -124,6 +124,28 @@ export const routeKeyRecord: Record = {
};
export const routeKeyRecordOptions = transformRecordToNumberOption(routeKeyRecord, true);
+/** 阻塞策略 */
+export const blockStrategyRecord: Record = {
+ 1: 'common.blockStrategy.items.discard',
+ 2: 'common.blockStrategy.items.overwrite',
+ 3: 'common.blockStrategy.items.parallel'
+};
+export const blockStrategyRecordOptions = transformRecordToNumberOption(blockStrategyRecord);
+
+/** 执行器类型 */
+export const executorTypeRecord: Record = {
+ 1: 'common.executorType.items.java'
+};
+export const executorTypeRecordOptions = transformRecordToNumberOption(executorTypeRecord);
+
+/** 任务类型 */
+export const taskTypeRecord: Record = {
+ 1: 'common.taskType.items.cluster',
+ 2: 'common.taskType.items.broadcast',
+ 3: 'common.taskType.items.slice'
+};
+export const taskTypeRecordRecordOptions = transformRecordToNumberOption(taskTypeRecord);
+
/** 延迟等级 */
export const DelayLevel: Record = {
1: '10s',
@@ -160,7 +182,7 @@ export const triggerTypeRecord: Record =
// 只会在定时任务中使用
99: 'page.jobTask.triggerTypeItem.workflow'
};
-export const triggerTypeOptions = transformRecordToNumberOption(triggerTypeRecord, true);
+export const triggerTypeOptions = transformRecordToNumberOption(triggerTypeRecord);
export const taskBatchStatusRecord: Record = {
1: 'common.taskBatchStatus.items.waiting',
@@ -170,7 +192,7 @@ export const taskBatchStatusRecord: Record = {
0: 'common.jobOperationReason.items.none',
@@ -189,4 +211,4 @@ export const operationReasonRecord: Record Promise import("@/views/notify/recipient/index.vue"),
notify_scene: () => import("@/views/notify/scene/index.vue"),
pods: () => import("@/views/pods/index.vue"),
+ retry_log: () => import("@/views/retry/log/index.vue"),
retry_scene: () => import("@/views/retry/scene/index.vue"),
retry_task: () => import("@/views/retry/task/index.vue"),
"user-center": () => import("@/views/user-center/index.vue"),
diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts
index 5f154db..40911c1 100644
--- a/src/router/elegant/routes.ts
+++ b/src/router/elegant/routes.ts
@@ -420,6 +420,15 @@ export const generatedRoutes: GeneratedRoute[] = [
icon: 'carbon:retry-failed'
},
children: [
+ {
+ name: 'retry_log',
+ path: '/retry/log',
+ component: 'view.retry_log',
+ meta: {
+ title: 'retry_log',
+ i18nKey: 'route.retry_log'
+ }
+ },
{
name: 'retry_scene',
path: '/retry/scene',
diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts
index e6a6ee2..6e4f79e 100644
--- a/src/router/elegant/transform.ts
+++ b/src/router/elegant/transform.ts
@@ -183,6 +183,7 @@ const routeMap: RouteMap = {
"notify_scene": "/notify/scene",
"pods": "/pods",
"retry": "/retry",
+ "retry_log": "/retry/log",
"retry_scene": "/retry/scene",
"retry_task": "/retry/task",
"user-center": "/user-center",
diff --git a/src/service/api/index.ts b/src/service/api/index.ts
index a28e4c9..723387f 100644
--- a/src/service/api/index.ts
+++ b/src/service/api/index.ts
@@ -9,4 +9,4 @@ export * from './group';
export * from './retry-task';
export * from './retry';
export * from './workflow';
-export * from './job-task';
+export * from './job';
diff --git a/src/service/api/job-task.ts b/src/service/api/job-task.ts
deleted file mode 100644
index 36245e4..0000000
--- a/src/service/api/job-task.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { request } from '../request';
-
-/** get JobTask page */
-export function fetchGetJobTaskPage(params?: Api.Job.JobSearchParams) {
- return request({
- url: '/job/page/list',
- method: 'get',
- params
- });
-}
-
-/** add JobTask */
-export function fetchAddJobTask(params?: Api.Job.Job) {
- return request({
- url: '/job/page/list',
- method: 'post',
- params
- });
-}
-
-/** edit JobTask */
-export function fetchEditJobTask(params?: Api.Job.Job) {
- return request({
- url: '/job/page/list',
- method: 'put',
- params
- });
-}
diff --git a/src/service/api/job.ts b/src/service/api/job.ts
new file mode 100644
index 0000000..51ac746
--- /dev/null
+++ b/src/service/api/job.ts
@@ -0,0 +1,37 @@
+import { request } from '../request';
+
+/** get Job page */
+export function fetchGetJobPage(params?: Api.Job.JobSearchParams) {
+ return request({
+ url: '/job/page/list',
+ method: 'get',
+ params
+ });
+}
+
+/** add Job */
+export function fetchAddJob(data: Api.Job.Job) {
+ return request({
+ url: '/job',
+ method: 'post',
+ data
+ });
+}
+
+/** edit Job */
+export function fetchEditJob(data: Api.Job.Job) {
+ return request({
+ url: '/job',
+ method: 'put',
+ data
+ });
+}
+
+/** edit Job */
+export function fetchUpdateJobStatus(data: Api.Job.JobUpdateJobStatusRequestVO) {
+ return request({
+ url: '/job/status',
+ method: 'put',
+ data
+ });
+}
diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts
index fc6520b..da4f748 100644
--- a/src/typings/api.d.ts
+++ b/src/typings/api.d.ts
@@ -73,6 +73,18 @@ declare namespace Api {
/** 1: 一致性Hash 2: 随机 3: LRU 4: 轮询 */
type RouteKey = 1 | 2 | 3 | 4;
+ /** 阻塞策略 1:丢弃 2:覆盖 3:并行 */
+ type BlockStrategy = 1 | 2 | 3;
+
+ /** 执行器类型 1:Java */
+ type ExecutorType = 1;
+
+ /** 触发类型 2:固定时间 3:CRON 表达式 99:工作流 */
+ type TriggerType = 2 | 3 | 99;
+
+ /** 任务类型 1:集群 2:广播 3:切片 */
+ type TaskType = 1 | 2 | 3;
+
/** 1、待处理 2、运行中 3、成功 4、失败 5、停止 6、取消 */
type TaskBatchStatus = 1 | 2 | 3 | 4 | 5 | 6;
@@ -817,12 +829,11 @@ declare namespace Api {
}
/**
- * namespace JobTask
+ * namespace Job
*
- * backend api module: "jobTask"
+ * backend api module: "job"
*/
namespace Job {
- import EnableStatusNumber = Api.Common.EnableStatusNumber;
type CommonSearchParams = Pick;
/** Job */
@@ -834,23 +845,25 @@ declare namespace Api {
/** 方法参数 */
argsStr: string;
/** 参数类型 */
- argsType: string;
+ argsType: number;
/** 扩展字段 */
- extAttrs: string;
+ extAttrs?: string;
/** 下次触发时间 */
- nextTriggerAt: string;
+ nextTriggerAt?: string;
/** 状态 */
- jobStatus: EnableStatusNumber;
+ jobStatus: Common.EnableStatusNumber;
/** 路由策略 */
- routeKey: string;
+ routeKey: Common.RouteKey;
/** 执行器类型 */
- executorType: string;
+ executorType: Common.ExecutorType;
+ /** 执行器名称 */
+ executorInfo: string;
/** 触发类型 */
- triggerType: string;
+ triggerType: Common.TriggerType;
/** 间隔时长 */
- triggerInterval: number;
+ triggerInterval: string;
/** 阻塞策略 */
- blockStrategy: number;
+ blockStrategy: Common.BlockStrategy;
/** 超时时间 */
executorTimeout: number;
/** 最大重试次数 */
@@ -858,13 +871,13 @@ declare namespace Api {
/** 重试间隔 */
retryInterval: number;
/** 任务类型 */
- taskType: number;
+ taskType: Common.TaskType;
/** 并行数 */
parallelNum: number;
/** Bucket */
- bucketIndex: number;
+ bucketIndex?: number;
/** 描述 */
- description: string;
+ description?: string;
}>;
/** JobTask search params */
@@ -891,6 +904,11 @@ declare namespace Api {
CommonSearchParams
>;
+ type JobUpdateJobStatusRequestVO = {
+ id: string;
+ jobStatus: Common.EnableStatusNumber;
+ };
+
/** JobTask list */
type JobList = Common.PaginatingQueryRecord;
diff --git a/src/typings/app.d.ts b/src/typings/app.d.ts
index b311712..19cfa02 100644
--- a/src/typings/app.d.ts
+++ b/src/typings/app.d.ts
@@ -319,6 +319,40 @@ declare namespace App {
round: string;
};
};
+ blockStrategy: {
+ label: string;
+ form: string;
+ items: {
+ discard: string;
+ overwrite: string;
+ parallel: string;
+ };
+ };
+ executorType: {
+ label: string;
+ form: string;
+ items: {
+ java: string;
+ };
+ };
+ taskType: {
+ label: string;
+ form: string;
+ items: {
+ cluster: string;
+ broadcast: string;
+ slice: string;
+ };
+ };
+ triggerType: {
+ label: string;
+ form: string;
+ items: {
+ cron: string;
+ fixed: string;
+ workflow: string;
+ };
+ };
taskBatchStatus: {
label: string;
form: string;
@@ -967,6 +1001,7 @@ declare namespace App {
jobStatus: string;
routeKey: string;
executorType: string;
+ executorInfo: string;
triggerType: string;
triggerInterval: string;
blockStrategy: string;
@@ -986,10 +1021,12 @@ declare namespace App {
triggerType: string;
executorTimeout: string;
triggerInterval: string;
+ triggerInterval_CRON: string;
taskType: string;
parallelNum: string;
bucketIndex: string;
executorType: string;
+ executorInfo: string;
routeKey: string;
blockStrategy: string;
argsType: string;
diff --git a/src/views/job/task/index.vue b/src/views/job/task/index.vue
index 2b64026..1286ed5 100644
--- a/src/views/job/task/index.vue
+++ b/src/views/job/task/index.vue
@@ -1,16 +1,19 @@
diff --git a/src/views/job/task/modules/job-task-operate-drawer.vue b/src/views/job/task/modules/job-task-operate-drawer.vue
index 986fcf4..d07b543 100644
--- a/src/views/job/task/modules/job-task-operate-drawer.vue
+++ b/src/views/job/task/modules/job-task-operate-drawer.vue
@@ -1,11 +1,14 @@