Appearance
业务流程工具箱接入
1、通过流程信息初始化
- 业务入口引用流程工具箱FlowBox
- 根据业务与引擎关系创建流程实例
- 根据业务需求判断是否绑定流程与业务(isCreateTask:false时,不创建流程,无需绑定)
- 加载表单方案(isCreateTask:false时,不创建流程,表单方案不执行过滤操作)
示例
js
<template>
<FlowBox v-if="flowVisible" ref="FlowBox" @close="closeForm" />
</template>
<script>
import FlowBox from '@/views/workFlow/components/FlowBox';
export default {
components: { FlowBox },
data () {
return {
flowVisible: false,
};
},
methods: {
closeForm () {
this.flowVisible = false;
},
onSave () {
//流程引擎启动参数
let info = {
id: '',//流程示例id,非打开实例操作传空
enCode: '流程引擎code',
bizFlag: '业务标识,区分同流程不同业务',
opType: -1,//创建
isCreateTask: true,//是否创建流程,默认创建
bizId: ""//业务id,
};
this.flowVisible = true;
this.$nextTick(() => {
this.$refs.FlowBox.init(info).then((task) => {
console.log('流程实例数据:', task);
//FIXME:第一次存储数据到ggsl表,存储的是验证信息
if (!!task.id) {
//TODO:保存流程实例id(task.id)到业务中
}
//加载表单方案,
this.$refs.FlowBox.schemeInit();
});
});
},
},
};
</script>
2、通过流程经办主键初始化
- 业务入口引用流程工具箱FlowBox
- 通过ref调用initById方法进行初始化
- 回调函数:flowInited 当流程工具箱初始化完成回调的函数
- 回调函数:receiveFlowHandleResult 工作流操作按钮执行结果回调的函数
示例2
js
<template>
<FlowBox
ref="flowBox"
@flowInited="flowInited"
@receiveFlowHandleResult="receiveFlowHandleResult"/>
</template>
<script>
import FlowBox from '@/views/workFlow/components/FlowBox';
export default {
components: { FlowBox },
data () {
return {
flowVisible: false,
};
},
methods: {
function onSave () {
this.ref.value.initById?.('309cf0df29674b94b75e13df19e7b08d')//工作流经办id
},
//接收流程回调处理结果
function receiveFlowHandleResult (key, res) {
console.log("receiveFlowHandleResult:", key, res)
}
// 触发工作流事件
function eventReceiver (key, data) {
console.log(key,data);
}
// 工作流初始化结束事件
// data{
// processId 流程id
// id 流程id
// fullName 任务标题
// state 任务状态 0-草稿、1-待处理、2-通过、3-退回、4-撤销、5-终止
// enCode 任务编码
// flowCode 流程编码
// flowName 流程名称
// flowType 流程类型
// flowCategory 流程数据源
// thisStep 当前步骤
// thisStepId 当前步骤Id
// flowTemplateJson 流程模板
// }
function flowInited (data) {
console.log(data);
}
}
};
</script>
3、自定义工作流操作按钮(扩展)
- 业务入口引用流程工具箱FlowBox
- 根据业务与引擎关系创建流程实例
- 通过FlowBox的插槽实现工作流操作按钮的自定义
- 通过FlowBox的ref 执行eventReceiver函数来绑定工作流按钮事件
示例3
js
<template>
<FlowBox v-if="flowVisible" ref="FlowBox" @close="closeForm">
// bizFlowOb:{ //工作流信息
// entity:{
// btnPermissions:[], //工作流按钮权限,
// formInfo:[], //工作流表单信息
// }
// }
<template v-slot:bizView="bizFlowOb">
<div class="bg-white h-full overflow-hidden">
<div class="p-2 flex justify-between">
<div>
<!-- 工作流按钮 -->
<e-btn size="default" :group="true" :schema="bizFlowOb.entity.btnPermissions" @cmd="btnCmd" />
</div>
</div>
</div>
</template>
</FlowBox>
</template>
<script>
import FlowBox from '@/views/workFlow/components/FlowBox';
export default {
components: { FlowBox },
data () {
return {
flowVisible: false,
};
},
methods: {
// 触发工作流事件
btnCmd (key, data) {
this.$refs.FlowBox.eventReceiver(key);
}
}
};
</script>