节点校验
节点校验可通过两种方式实现:
获取流程配置结果前校验
该方式可在获取流程配置结果前通过调用校验方法对全部节点进行校验
更新节点配置前校验
该方式可在当前节点更新节点配置前(点击确定按钮时)校验
获取流程配置结果前校验
注册节点校验
在节点视图组件中添加以下代码
// xxx-node.vue
<template>
</template>
<script setup name="notify-node">
import {getCurrentInstance, inject} from "vue";
import {KEY_VALIDATOR} from "qx-easy-process/dist/config/provide-keys.js"
const props = defineProps({
node: { // 传入的流程配置数据
type: Object,
default: {}
}
});
// 获取流程验证器实例
const validator = inject(KEY_VALIDATOR)
// 注册验证器
validator.register(props.node.tempNodeId, () => {
// 验证当前节点逻辑……
// 返回验证结果
return {
"valid": true, // true | false 是否验证通过
"message": "" // 当valid = false时的提示信息
}
})
</script>
获取验证结果
// <ProcessDesigner ref="process" :data="processData"/>
proxy.$refs.process.validate((valid, messages) => {
if(valid) {
// 验证通过,获取结果
let result = proxy.$refs.process.getResult();
} else {
// 验证未通过,messages为验证失败节点的提示信息,数组类型
}
})
更新节点配置前校验
该功能v3.1.0以上版本支持
在节点配置组件中添加以下代码
// xxx-drawer.vue
<template>
<!-- 抄送人配置 -->
<div>
抄送人:<input v-model="props.config.name" />
</div>
</template>
<script setup name="notify-drawer">
import {getCurrentInstance, inject} from "vue";
import {KEY_PROCESS_DATA} from "@/easy-process/config/provide-keys.js"
const props = defineProps({
config: { // 传入的流程配置数据
type: Object,
default: {}
}
});
const { proxy } = getCurrentInstance();
// 获取流程数据
const processData = inject(KEY_PROCESS_DATA)
/**
* 更新流程数据前置处理,函数名称固定为:preUpdateHandle
* 该函数会优先于全局修改节点配置之前事件(on_pre_update_node_config)执行
* @returns {boolean} 返回 true 表示可以更新流程数据,返回 false 表示不能更新流程数据,会阻断更新流程
*/
const preUpdateHandle = () => {
if (!props.config.name) {
alert("请填写抄送人")
return false
}
return true
}
// 对外开放preUpdateHandle
defineExpose({
preUpdateHandle,
});
</script>
<style lang="less" scoped>
</style>
