diff --git a/apps/vue/src/api/task-management/backgroundJobInfo.ts b/apps/vue/src/api/task-management/backgroundJobInfo.ts new file mode 100644 index 000000000..4dbb69242 --- /dev/null +++ b/apps/vue/src/api/task-management/backgroundJobInfo.ts @@ -0,0 +1,78 @@ +import { defAbpHttp } from '/@/utils/http/abp'; +import { + BackgroundJobInfo, + BackgroundJobInfoCreate, + BackgroundJobInfoUpdate, + BackgroundJobInfoGetListInput, +} from './model/backgroundJobInfoModel'; +import { format } from '/@/utils/strings'; +import { PagedResultDto } from '../model/baseModel'; + +enum Api { + GetById = '/api/task-management/background-jobs/{id}', + GetList = '/api/task-management/background-jobs', + Create = '/api/task-management/background-jobs', + Update = '/api/task-management/background-jobs/{id}', + Delete = '/api/task-management/background-jobs/{id}', + Pause = '/api/task-management/background-jobs/{id}/pause', + Resume = '/api/task-management/background-jobs/{id}/resume', + Trigger = '/api/task-management/background-jobs/{id}/trigger', + Stop = '/api/task-management/background-jobs/{id}/stop', +} + +export const getById = (id: string) => { + return defAbpHttp.get({ + url: format(Api.GetById, { id: id }), + }); +}; + +export const getList = (input: BackgroundJobInfoGetListInput) => { + return defAbpHttp.get>({ + url: Api.GetList, + params: input, + }); +}; + +export const create = (input: BackgroundJobInfoCreate) => { + return defAbpHttp.post({ + url: Api.Create, + data: input, + }); +}; + +export const update = (id: string, input: BackgroundJobInfoUpdate) => { + return defAbpHttp.put({ + url: format(Api.Update, { id: id }), + data: input, + }); +}; + +export const deleteById = (id: string) => { + return defAbpHttp.delete({ + url: format(Api.Delete, { id: id }), + }); +}; + +export const pause = (id: string) => { + return defAbpHttp.put({ + url: format(Api.Pause, { id: id }), + }); +}; + +export const resume = (id: string) => { + return defAbpHttp.put({ + url: format(Api.Resume, { id: id }), + }); +}; + +export const trigger = (id: string) => { + return defAbpHttp.put({ + url: format(Api.Trigger, { id: id }), + }); +}; + +export const stop = (id: string) => { + return defAbpHttp.put({ + url: format(Api.Stop, { id: id }), + }); +}; diff --git a/apps/vue/src/api/task-management/backgroundJobLog.ts b/apps/vue/src/api/task-management/backgroundJobLog.ts new file mode 100644 index 000000000..816530283 --- /dev/null +++ b/apps/vue/src/api/task-management/backgroundJobLog.ts @@ -0,0 +1,32 @@ +import { defAbpHttp } from '/@/utils/http/abp'; +import { + BackgroundJobLog, + BackgroundJobLogGetListInput, +} from './model/backgroundJobLogModel'; +import { format } from '/@/utils/strings'; +import { PagedResultDto } from '../model/baseModel'; + +enum Api { + GetById = '/api/task-management/background-jobs/logs/{id}', + GetList = '/api/task-management/background-jobs/logs', + Delete = '/api/task-management/background-jobs/logs/{id}', +} + +export const getById = (id: string) => { + return defAbpHttp.get({ + url: format(Api.GetById, { id: id }), + }); +}; + +export const getList = (input: BackgroundJobLogGetListInput) => { + return defAbpHttp.get>({ + url: Api.GetList, + params: input, + }); +}; + +export const deleteById = (id: string) => { + return defAbpHttp.delete({ + url: format(Api.Delete, { id: id }), + }); +}; diff --git a/apps/vue/src/api/task-management/model/backgroundJobInfoModel.ts b/apps/vue/src/api/task-management/model/backgroundJobInfoModel.ts new file mode 100644 index 000000000..8bf3a9d8d --- /dev/null +++ b/apps/vue/src/api/task-management/model/backgroundJobInfoModel.ts @@ -0,0 +1,88 @@ +import { ExtensibleAuditedEntity, IHasConcurrencyStamp, PagedAndSortedResultRequestDto } from "../../model/baseModel"; + +export enum JobStatus { + None = -1, + Completed = 0, + Running = 10, + Paused = 20, + Stopped = 30, +} + +export enum JobType { + Once, + Period, + Persistent, +} + +export enum JobPriority { + Low = 5, + BelowNormal = 10, + Normal = 0xF, + AboveNormal = 20, + High = 25 +} + +export interface BackgroundJobInfo extends ExtensibleAuditedEntity, IHasConcurrencyStamp { + isEnabled: boolean; + name: string; + group: string; + type: string; + result: string; + args: ExtraPropertyDictionary, + description?: string; + beginTime: Date; + endTime?: Date; + lastRunTime?: Date; + nextRunTime?: Date; + jobType: JobType; + cron: string; + triggerCount: number; + tryCount: number; + maxTryCount: number; + maxCount: number; + isAbandoned: boolean; + interval: number; + priority: JobPriority; + lockTimeOut: number; +} + +interface BackgroundJobInfoCreateOrUpdate { + isEnabled: boolean; + args: ExtraPropertyDictionary; + description?: string; + beginTime: Date; + endTime?: Date; + jobType: JobType; + cron: string; + maxCount: number; + interval: number; + priority: JobPriority; + lockTimeOut: number; +} + +export interface BackgroundJobInfoCreate extends BackgroundJobInfoCreateOrUpdate { + name: string; + group: string; + type: string; +} + +export interface BackgroundJobInfoUpdate extends BackgroundJobInfoCreateOrUpdate, IHasConcurrencyStamp { + +} + +export interface BackgroundJobInfoGetListInput extends PagedAndSortedResultRequestDto { + filter?: string; + name?: string; + group?: string; + type?: string; + status?: JobStatus; + beginTime?: Date; + endTime?: Date; + beginLastRunTime?: Date; + endLastRunTime?: Date; + beginCreationTime?: Date; + endCreationTime?: Date; + isAbandoned?: boolean; + jobType?: JobType; + priority?: JobPriority; +} diff --git a/apps/vue/src/api/task-management/model/backgroundJobLogModel.ts b/apps/vue/src/api/task-management/model/backgroundJobLogModel.ts new file mode 100644 index 000000000..d1e8377bd --- /dev/null +++ b/apps/vue/src/api/task-management/model/backgroundJobLogModel.ts @@ -0,0 +1,22 @@ +import { PagedAndSortedResultRequestDto } from '/@/api/model/baseModel'; + +export interface BackgroundJobLog { + id: number; + jobName: string; + jobGroup: string; + jobType: string; + message: string; + runTime: Date; + exception?: string; +} + +export interface BackgroundJobLogGetListInput extends PagedAndSortedResultRequestDto { + jobId?: string; + filter?: string; + hasExceptions?: boolean; + name?: string; + group?: string; + type?: string; + beginRunTime?: Date; + endRunTime?: Date; +} diff --git a/apps/vue/src/views/task-management/background-jobs/components/BackgroundJobInfoModal.vue b/apps/vue/src/views/task-management/background-jobs/components/BackgroundJobInfoModal.vue new file mode 100644 index 000000000..ea653d3ea --- /dev/null +++ b/apps/vue/src/views/task-management/background-jobs/components/BackgroundJobInfoModal.vue @@ -0,0 +1,325 @@ +