From 3711814016715ef6ebc642b5744c91689630997b Mon Sep 17 00:00:00 2001 From: may <1742057357@qq.com> Date: Wed, 21 Oct 2026 17:07:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(workflow):=20=E6=96=B0=E5=A2=9E=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增定时任务页:按流程编码、节点编码、业务主键、事件类型、状态、 下次触发时间区间筛选,表头展示待触发/重试中/执行中/已取消/已死计数 - 定时引擎未开启(timerEnabled=false)时给出提示条,可在此手动补发 - 支持详情抽屉查看触发策略、时区、已触发次数、载荷与最近错误 - 定时启动类任务支持「立即触发一次」,业务主键可留空自动生成 - 操作列链接按钮改用 flex 排布,规避全局 .data-table .el-button.is-link 的图标尺寸覆盖导致的文字重叠 --- src/api/workflow/timer/index.ts | 51 ++++ src/api/workflow/timer/types.ts | 60 +++++ src/views/workflow/timer/index.vue | 406 +++++++++++++++++++++++++++++ 3 files changed, 517 insertions(+) create mode 100644 src/api/workflow/timer/index.ts create mode 100644 src/api/workflow/timer/types.ts create mode 100644 src/views/workflow/timer/index.vue diff --git a/src/api/workflow/timer/index.ts b/src/api/workflow/timer/index.ts new file mode 100644 index 00000000..27fe04ee --- /dev/null +++ b/src/api/workflow/timer/index.ts @@ -0,0 +1,51 @@ +import type { PageResult } from '@/api/types'; +import type { EventWaitQuery, EventWaitSummary, EventWaitVO, TimerTriggerForm } from '@/api/workflow/timer/types'; +import type { AxiosPromise } from '@/utils/api-types'; +import request from '@/utils/request'; + +/** + * 分页查询定时任务(事件等待记录)列表 + * @param query + */ +export const listEventWait = (query?: EventWaitQuery): AxiosPromise> => { + return request({ + url: '/workflow/eventWait/list', + method: 'get', + params: query + }); +}; + +/** + * 按同一组筛选条件统计各状态等待记录数量 + * @param query + */ +export const summaryEventWait = (query?: EventWaitQuery): AxiosPromise => { + return request({ + url: '/workflow/eventWait/summary', + method: 'get', + params: query + }); +}; + +/** + * 查询定时任务详情 + * @param id + */ +export const getEventWait = (id: string | number): AxiosPromise => { + return request({ + url: '/workflow/eventWait/' + id, + method: 'get' + }); +}; + +/** + * 手动补发一次定时启动任务,返回新建实例主键;不影响该任务的下次触发时间 + * @param data + */ +export const triggerTimerStart = (data: TimerTriggerForm): AxiosPromise => { + return request({ + url: '/workflow/eventWait/trigger', + method: 'post', + data: data + }); +}; diff --git a/src/api/workflow/timer/types.ts b/src/api/workflow/timer/types.ts new file mode 100644 index 00000000..3ebf7cbf --- /dev/null +++ b/src/api/workflow/timer/types.ts @@ -0,0 +1,60 @@ +export interface EventWaitVO { + id: string | number; + definitionId?: string | number; + flowName?: string; + instanceId?: string | number; + businessId?: string; + nodeCode?: string; + eventType?: string; + eventTypeName?: string; + eventName?: string; + attachedTaskId?: string | number; + triggerType?: string; + triggerInterval?: string; + nextTriggerAt?: string; + timezone?: string; + repeatCount?: number; + maxRepeatCount?: number; + status?: string; + statusName?: string; + retryCount?: number; + maxRetryCount?: number; + retryAt?: string; + payload?: string; + lastError?: string; + createTime?: string; + updateTime?: string; + /** 定时引擎扫描开关是否开启 */ + timerEnabled?: boolean; +} + +export interface EventWaitQuery extends PageQuery { + /** 等待状态多选,逗号分隔(WAITING / RETRY / RUNNING / DEAD / CANCELLED) */ + statuses?: string; + /** 事件类型多选,逗号分隔;留空按 timerOnly 取默认范围 */ + eventTypes?: string; + /** 是否只查定时类事件,默认 true */ + timerOnly?: boolean; + flowCode?: string; + businessId?: string; + nodeCode?: string; + eventName?: string; + nextTriggerAtFrom?: string; + nextTriggerAtTo?: string; + orderByColumn?: string; + isAsc?: string; +} + +export interface EventWaitSummary { + waiting: number; + retry: number; + running: number; + dead: number; + cancelled: number; +} + +export interface TimerTriggerForm { + waitId: string | number; + businessId?: string; + variables?: Record; +} diff --git a/src/views/workflow/timer/index.vue b/src/views/workflow/timer/index.vue new file mode 100644 index 00000000..3845668c --- /dev/null +++ b/src/views/workflow/timer/index.vue @@ -0,0 +1,406 @@ + + + + +