feat(oa): add return, resubmit, and multi-round approval progress

Align with DingTalk semantics: reject ends the instance, return keeps it for initiator edits, and revoke-and-resubmit creates a linked new instance. Progress timeline projects rounds via oa_instance_event.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-07-15 14:53:52 +08:00
1 parent 265d790ea6
commit 26800865cd
13 files changed
+4736 -72

No files matched your search

@@ -0,0 +1,34 @@
-- OA 审批进度多轮 + 打回 + 撤销重提关联
-- MySQL 5.7 / utf8mb4
ALTER TABLE oa_instance
ADD COLUMN source_instance_id VARCHAR(64) NULL COMMENT '撤销重提所关联的原实例ID' AFTER status,
ADD COLUMN current_round INT NOT NULL DEFAULT 1 COMMENT '当前提交轮次,从1起' AFTER source_instance_id;
-- status 语义:running / returned / completed / rejected / cancelled
-- returned = 已打回,待发起人修改再提交
ALTER TABLE oa_task
ADD COLUMN round_no INT NOT NULL DEFAULT 1 COMMENT '所属提交轮次' AFTER sign_mode;
CREATE TABLE IF NOT EXISTS oa_instance_event (
id VARCHAR(64) NOT NULL COMMENT '主键ID',
instance_id VARCHAR(64) NOT NULL COMMENT '实例ID',
round_no INT NOT NULL DEFAULT 1 COMMENT '轮次',
event_type VARCHAR(32) NOT NULL COMMENT 'submit/return/withdraw/complete/reject_end',
actor_user_id VARCHAR(64) NULL COMMENT '操作人',
task_id VARCHAR(64) NULL COMMENT '关联任务(打回时)',
node_key VARCHAR(64) NULL COMMENT '节点key',
comment_text VARCHAR(512) NULL COMMENT '意见',
tenant_no VARCHAR(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
order_num INT NULL COMMENT '排序号',
remark VARCHAR(512) NULL COMMENT '备注',
create_by VARCHAR(64) NULL COMMENT '创建人id',
create_dept_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_by VARCHAR(64) NULL COMMENT '更新人id',
update_time DATETIME NOT NULL COMMENT '更新时间',
del_flag SMALLINT NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
KEY idx_oa_evt_inst (instance_id, del_flag, create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OA实例操作事件(进度轴)';