Skip to content

BizFlowDesigner 流程设计器 ​

审批流设计器(v1,钉钉式结构树形态):垂直节点卡链(发起人 → 审批 / 抄送 / 条件 → 结束),节点间「+」弹出类型菜单插入;条件分支多列渲染(优先级 P1/P2…,分支内子链可继续嵌套条件,列尾可加分支,最多 8 列);点击编辑打开右侧属性面板(审批人类型 / 审批人 tag 列表 / 或签会签 / 条件表达式 / 分支优先级排序);工具栏支持 JSON 导入导出(格式化查看 + 复制 + 解析导入)与结构校验(首节点唯一 start、id 全局唯一、条件至少 2 分支、审批人非空;缺 end 仅告警),校验错误可点击定位到节点并闪烁描边;preview 预览态只读且 start 高亮模拟运行。schema 为纯 JSON(copy-on-write 更新),审批流搭建、OA 流程配置场景的底座。

v1 范围:钉钉式结构树;自由画布拖拽、并行分支、子流程留待 v2。

基础用法 ​

发起人
结束

节点间「+」可插入审批 / 抄送 / 条件节点;工具栏按钮插入到结束节点之前;卡片悬浮右上角可编辑、删除。

默认「发起人 → 结束」骨架:节点间「+」插入节点,工具栏按钮插到结束节点之前,卡片悬浮编辑 / 删除。

审批人配置 ​

发起人
部门经理审批
成员审批张三或签
财务会签
角色审批财务主管出纳会签
结束

最近一次面板保存:(尚未保存过面板)

属性面板编辑审批人类型(成员 / 角色 / 直属主管)、审批人 tag 列表(回车添加、tag 删除)与或签 / 会签;node-edit 回传补丁。

条件分支 ​

发起人
报销金额判断
共 2 个条件分支
P1小额(≤ 1千)
主管审批
直属主管审批直属主管或签
P2大额(> 1千)
是否加急
共 2 个条件分支
P1加急
总经理审批
成员审批王总或签
P2普通
财务审批
角色审批财务主管会签
结束

「大额」分支内嵌套了「是否加急」二级条件;编辑条件节点可在属性面板调整分支名、条件表达式与优先级顺序。

多分支优先级 P1/P2…;分支列内可继续嵌套条件节点;属性面板调整分支名、条件表达式与优先级顺序;列尾「添加分支」上限 8 列。

抄送节点 ​

发起人
主管审批
直属主管审批直属主管或签
抄送备案
财务行政
结束

抄送节点无审批动作:编辑面板仅维护节点名称与接收人列表(回车添加、tag 删除)。

抄送节点展示接收人 chips,面板维护接收人列表(无审批动作)。

预览态 ​

预览态:节点只读
发起人
主管审批
直属主管审批直属主管或签
抄送备案
财务
结束

预览态下「+」插入钮、编辑 / 删除入口全部隐藏,发起人节点带 success 高亮描边模拟流程运行。

preview 隐藏全部编辑入口,发起人节点 success 高亮模拟运行。

JSON 导入导出 ​

发起人
结束

(未操作)

exportJson 导出格式化 JSON、importJson 解析(try/catch + 结构校验)成功替换画布,失败返回错误文案;非法 type / 残缺 JSON 分别演示两条失败分支。

校验与定位 ​

首节点非法
成员审批未配置审批人或签
分支不足
共 1 个条件分支
P1唯一分支

(未校验)

非法 schema(首节点非 start、审批人缺失、分支不足、缺 end 告警)触发校验:画布顶部提示错误清单,点击条目定位节点并闪烁描边。

自定义节点卡 ​

发起人
主管审批2 人
抄送备案1 人
结束

最近点击:(未点击)(插槽替换卡内容,左侧类型色条、hover 操作与 node-click 事件保留)

node 插槽接管节点卡内容,保留卡片容器、类型色条、hover 操作与 node-click。

事件联动 ​

发起人
结束
操作流水(最近 8 条)
(暂无操作)
change(结构变化)/ node-click(点击节点)/ node-edit(面板保存补丁)流水回显。

Props ​

属性名类型默认值说明
v-modelBizFlowSchema内置骨架(发起人→结束)流程 schema(nodes 首个必须 start)
readonlybooleanfalse只读:隐藏「+」插入钮与编辑 / 删除入口
show-toolbarbooleantrue顶部工具栏(左侧添加节点 / 右侧 JSON 与校验)
previewbooleanfalse预览态:只读 + start 节点高亮模拟运行
node-typesBizFlowNodeType[]['approver','cc','condition']「+」菜单与工具栏可添加的节点类型
heightnumber | string640画布区高度(内部滚动)

Events ​

事件名参数说明
update:modelValue(schema: BizFlowSchema)schema 更新(copy-on-write,始终为新引用)
change(schema: BizFlowSchema)结构变化后触发(与 update:modelValue 同步)
node-click(node: BizFlowNode)点击节点卡(含预览态)
node-edit(payload: { id: string; patch: Partial<BizFlowNode> })属性面板保存或 panel 插槽调用 patch

Slots ​

插槽名参数说明
node{ node: BizFlowNode; readonly: boolean }自定义节点卡内容(保留容器 / 色条 / 定位行为)
panel{ node: BizFlowNode; patch: (patch: Partial<BizFlowNode>) => void }自定义属性面板整块(patch 立即写回并触发 node-edit)
toolbar-extra—工具栏右侧扩展位(JSON / 校验按钮之前)
empty—流程为空时画布占位(默认 ElEmpty)

Expose ​

名称类型说明
getSchema() => BizFlowSchema取流程 schema(深拷贝)
setSchema(schema: BizFlowSchema) => void整体替换 schema(深拷贝 + 抬高 id 种子防撞号)
validate() => { valid: boolean; errors: BizFlowValidateError[] }结构校验;告警项在画布顶部提示条展示
addNode(type: BizFlowNodeType) => boolean添加节点(approver/cc/condition 插到末端 end 前;start/end 仅允许补充一次)
removeNode(id: string) => boolean删除节点(start / end 不可删,分支子树整体移除)
exportJson() => string导出格式化 JSON 字符串
importJson(text: string) => { ok: boolean; error?: string }解析并导入 JSON(成功替换画布,失败返回错误文案)