diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index 4d205f1..c3bef2b 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -183,6 +183,8 @@ const local: App.I18n.Schema = { retry_task: 'Retry task', retry_scene: 'Retry scene', workflow: 'Workflow', + job: 'Schedule Task Management', + job_task: 'Schedule Task List', 'manage_user-detail': 'User Detail', manage_role: 'Role Manage', manage_menu: 'Menu Manage', @@ -716,6 +718,49 @@ const local: App.I18n.Schema = { }, addWorkflow: 'Add Workflow', editWorkflow: 'Add Workflow' + }, + jobTask: { + title: 'JobTask List', + groupName: 'Group name', + jobName: 'Mission name', + argsStr: 'Method parameters', + argsType: 'Parameter Type', + nextTriggerAt: 'Next trigger time', + jobStatus: 'State', + routeKey: 'Routing strategy', + executorType: 'Actuator type', + triggerType: 'Trigger type', + triggerInterval: 'Interval duration', + blockStrategy: 'Blocking strategy', + executorTimeout: 'Overtime time', + maxRetryTimes: 'Maximum number of retries', + retryInterval: 'Retry interval', + taskType: 'Task type', + parallelNum: 'Parallel number', + bucketIndex: 'Bucket', + description: 'Description', + updateDt: 'Update time', + form: { + jobStatus: 'Please enter status', + maxRetryTimes: 'Please enter maximum number of retry', + description: 'Please enter description', + triggerType: 'Please enter trigger type', + jobName: 'Please enter Mission name', + executorTimeout: 'Please enter executor timeout', + triggerInterval: 'Please enter interval duration', + taskType: 'Please enter Task type', + parallelNum: 'Please enter Parallel number', + bucketIndex: 'Please enter Bucket', + executorType: 'Please enter Actuator type', + routeKey: 'Please enter Routing strategy', + blockStrategy: 'Please enter Blocking strategy', + argsType: 'Please enter Parameter Type', + argsStr: 'Please enter executor arguments', + groupName: 'Please enter Group name', + retryInterval: 'Please enter retry interval' + }, + addJobTask: 'Add job task', + editJobTask: 'Edit job task' } }, form: { diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index ed747b6..18f8675 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -184,6 +184,8 @@ const local: App.I18n.Schema = { retry_task: '重试任务', retry_scene: '重试场景', workflow: '工作流', + job: '定时任务管理', + job_task: '定时任务信息', 'manage_user-detail': '用户详情', manage_role: '角色管理', manage_menu: '菜单管理', @@ -712,6 +714,49 @@ const local: App.I18n.Schema = { }, addWorkflow: '新增工作流', editWorkflow: '编辑工作流' + }, + jobTask: { + title: '定时任务列表', + groupName: '组名称', + jobName: '任务名称', + argsStr: '方法参数', + argsType: '参数类型', + nextTriggerAt: '触发时间', + jobStatus: '状态', + routeKey: '路由策略', + executorType: '执行器类型', + triggerType: '触发类型', + triggerInterval: '间隔时长', + blockStrategy: '阻塞策略', + executorTimeout: '超时时间', + maxRetryTimes: '最大重试次数', + retryInterval: '重试间隔', + taskType: '任务类型', + parallelNum: '并行数', + bucketIndex: 'Bucket', + description: '描述', + updateDt: '更新时间', + form: { + jobStatus: '请输入状态', + maxRetryTimes: '请输入最大重试次数', + description: '请输入描述', + triggerType: '请输入触发类型', + jobName: '请输入任务名称', + executorTimeout: '请输入超时时间', + triggerInterval: '请输入间隔时长', + taskType: '请输入任务类型', + parallelNum: '请输入并行数', + bucketIndex: '请输入Bucket', + executorType: '请输入执行器类型', + routeKey: '请输入路由策略', + blockStrategy: '请输入阻塞策略', + argsType: '请输入参数类型', + argsStr: '请输入方法参数', + groupName: '请输入组名称', + retryInterval: '请输入重试间隔' + }, + addJobTask: '新增定时任务', + editJobTask: '编辑定时任务' } }, form: { diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts index 288fb0f..2a3c285 100644 --- a/src/router/elegant/imports.ts +++ b/src/router/elegant/imports.ts @@ -30,6 +30,7 @@ export const views: Record Promise import("@/views/function/toggle-auth/index.vue"), group: () => import("@/views/group/index.vue"), home: () => import("@/views/home/index.vue"), + job_task: () => import("@/views/job/task/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 802f7ba..a938221 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -187,6 +187,26 @@ export const generatedRoutes: GeneratedRoute[] = [ order: 1 } }, + { + name: 'job', + path: '/job', + component: 'layout.base', + meta: { + title: 'job', + i18nKey: 'route.job' + }, + children: [ + { + name: 'job_task', + path: '/job/task', + component: 'view.job_task', + meta: { + title: 'job_task', + i18nKey: 'route.job_task' + } + } + ] + }, { name: 'login', path: '/login/:module(pwd-login)?', diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts index 92b8704..d73ae07 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)); @@ -163,6 +163,8 @@ const routeMap: RouteMap = { "function_toggle-auth": "/function/toggle-auth", "group": "/group", "home": "/home", + "job": "/job", + "job_task": "/job/task", "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 a4dec25..c5cec72 100644 --- a/src/service/api/index.ts +++ b/src/service/api/index.ts @@ -9,3 +9,4 @@ export * from './group-config'; export * from './retry-task'; export * from './retry'; export * from './workflow'; +export * from './job-task'; diff --git a/src/service/api/job-task.ts b/src/service/api/job-task.ts new file mode 100644 index 0000000..a320986 --- /dev/null +++ b/src/service/api/job-task.ts @@ -0,0 +1,28 @@ +import { request } from '../request'; + +/** get JobTask page */ +export function fetchGetJobTaskPage(params?: Api.JobTask.JobTaskSearchParams) { + return request({ + url: '/job/page/list', + method: 'get', + params + }); +} + +/** add JobTask */ +export function fetchAddJobTask(params?: Api.JobTask.JobTask) { + return request({ + url: '/job/page/list', + method: 'post', + params + }); +} + +/** edit JobTask */ +export function fetchEditJobTask(params?: Api.JobTask.JobTask) { + return request({ + url: '/job/page/list', + method: 'put', + params + }); +} diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index 792d773..baf438c 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -796,4 +796,82 @@ declare namespace Api { /** workflow list */ type WorkflowList = Common.PaginatingQueryRecord; } + + /** + * namespace JobTask + * + * backend api module: "jobTask" + */ + namespace JobTask { + type CommonSearchParams = Pick; + + /** JobTask */ + type JobTask = Common.CommonRecord<{ + /** 组名称 */ + groupName: string; + /** 任务名称 */ + jobName: string; + /** 方法参数 */ + argsStr: string; + /** 参数类型 */ + argsType: string; + /** 扩展字段 */ + extAttrs: string; + /** 下次触发时间 */ + nextTriggerAt: string; + /** 状态 */ + jobStatus: string; + /** 路由策略 */ + routeKey: string; + /** 执行器类型 */ + executorType: string; + /** 触发类型 */ + triggerType: string; + /** 间隔时长 */ + triggerInterval: number; + /** 阻塞策略 */ + blockStrategy: number; + /** 超时时间 */ + executorTimeout: number; + /** 最大重试次数 */ + maxRetryTimes: number; + /** 重试间隔 */ + retryInterval: number; + /** 任务类型 */ + taskType: number; + /** 并行数 */ + parallelNum: number; + /** Bucket */ + bucketIndex: number; + /** 描述 */ + description: string; + }>; + + /** JobTask search params */ + type JobTaskSearchParams = CommonType.RecordNullable< + Pick< + Api.JobTask.JobTask, + | 'groupName' + | 'jobName' + | 'argsStr' + | 'argsType' + | 'jobStatus' + | 'routeKey' + | 'executorType' + | 'triggerType' + | 'triggerInterval' + | 'blockStrategy' + | 'executorTimeout' + | 'maxRetryTimes' + | 'retryInterval' + | 'taskType' + | 'parallelNum' + | 'description' + > & + CommonSearchParams + >; + + /** JobTask list */ + type JobTaskList = Common.PaginatingQueryRecord; + } } diff --git a/src/typings/app.d.ts b/src/typings/app.d.ts index 01b8990..02b1bda 100644 --- a/src/typings/app.d.ts +++ b/src/typings/app.d.ts @@ -884,6 +884,49 @@ declare namespace App { addWorkflow: string; editWorkflow: string; }; + jobTask: { + title: string; + groupName: string; + jobName: string; + argsStr: string; + argsType: string; + nextTriggerAt: string; + jobStatus: string; + routeKey: string; + executorType: string; + triggerType: string; + triggerInterval: string; + blockStrategy: string; + executorTimeout: string; + maxRetryTimes: string; + retryInterval: string; + taskType: string; + parallelNum: string; + bucketIndex: string; + description: string; + updateDt: string; + form: { + jobName: string; + jobStatus: string; + maxRetryTimes: string; + description: string; + triggerType: string; + executorTimeout: string; + triggerInterval: string; + taskType: string; + parallelNum: string; + bucketIndex: string; + executorType: string; + routeKey: string; + blockStrategy: string; + argsType: string; + argsStr: string; + groupName: string; + retryInterval: string; + }; + addJobTask: string; + editJobTask: string; + }; }; form: { required: string; diff --git a/src/typings/elegant-router.d.ts b/src/typings/elegant-router.d.ts index d90b22d..1e61d60 100644 --- a/src/typings/elegant-router.d.ts +++ b/src/typings/elegant-router.d.ts @@ -37,6 +37,8 @@ declare module "@elegant-router/types" { "function_toggle-auth": "/function/toggle-auth"; "group": "/group"; "home": "/home"; + "job": "/job"; + "job_task": "/job/task"; "login": "/login/:module(pwd-login)?"; "manage": "/manage"; "manage_menu": "/manage/menu"; @@ -101,6 +103,7 @@ declare module "@elegant-router/types" { | "function" | "group" | "home" + | "job" | "login" | "manage" | "multi-menu" @@ -142,6 +145,7 @@ declare module "@elegant-router/types" { | "function_toggle-auth" | "group" | "home" + | "job_task" | "manage_menu" | "manage_role" | "manage_user-detail" diff --git a/src/views/job/task/index.vue b/src/views/job/task/index.vue new file mode 100644 index 0000000..2b64026 --- /dev/null +++ b/src/views/job/task/index.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/src/views/job/task/modules/job-task-operate-drawer.vue b/src/views/job/task/modules/job-task-operate-drawer.vue new file mode 100644 index 0000000..51bf6f1 --- /dev/null +++ b/src/views/job/task/modules/job-task-operate-drawer.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/src/views/job/task/modules/job-task-search.vue b/src/views/job/task/modules/job-task-search.vue new file mode 100644 index 0000000..99e2a2b --- /dev/null +++ b/src/views/job/task/modules/job-task-search.vue @@ -0,0 +1,40 @@ + + + + +