feat: 子流程添加多实例支持

pull/624/head
Lesan 2024-12-18 09:47:51 +08:00
parent d4401919a4
commit f35a64961e
1 changed files with 88 additions and 3 deletions

View File

@ -37,6 +37,53 @@
/>
</el-select>
</el-form-item>
<el-form-item label="是否多实例" prop="multiInstance">
<el-radio-group v-model="configForm.multiInstance">
<el-radio :value="true" :label="true"></el-radio>
<el-radio :value="false" :label="false"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="多人审批方式" prop="approveMethod" v-if="configForm.multiInstance">
<el-radio-group v-model="configForm.approveMethod">
<div class="flex-col">
<div
v-for="(item, index) in APPROVE_METHODS"
:key="index"
class="flex items-center"
>
<el-radio :value="item.value" :label="item.value">
{{ item.label }}
</el-radio>
<el-form-item prop="approveRatio">
<el-input-number
v-model="configForm.approveRatio"
:min="10"
:max="100"
:step="10"
size="small"
v-if="
item.value === ApproveMethodType.APPROVE_BY_RATIO &&
configForm.approveMethod === ApproveMethodType.APPROVE_BY_RATIO
"
/>
</el-form-item>
</div>
</div>
</el-radio-group>
</el-form-item>
<el-form-item
label="多实例来源"
prop="multiInstanceSource"
v-if="configForm.multiInstance"
>
<el-input
type="textarea"
v-model="configForm.multiInstanceSource"
clearable
style="width: 100%"
placeholder="请输入多实例来源(目前仅支持流程表达式!"
/>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
@ -52,7 +99,13 @@
</template>
<script setup lang="ts">
import { getChildProcessSimpleList } from '@/api/bpm/definition'
import { SimpleFlowNode, NodeType } from '../consts'
import {
SimpleFlowNode,
NodeType,
APPROVE_METHODS,
ApproveMethodType,
CandidateStrategy
} from '../consts'
import { useWatchNode, useDrawer, useNodeName } from '../node'
defineOptions({
name: 'ChildProcessNodeConfig'
@ -75,10 +128,18 @@ const activeTabName = ref('child')
const formRef = ref() // Ref
//
const formRules = reactive({
childProcessKey: [{ required: true, message: '子流程不能为空', trigger: 'change' }]
childProcessKey: [{ required: true, message: '子流程不能为空', trigger: 'change' }],
multiInstance: [{ required: true, message: '是否多实例不能为空', trigger: 'change' }],
approveMethod: [{ required: true, message: '多人审批方式不能为空', trigger: 'change' }],
approveRatio: [{ required: true, message: '通过比例不能为空', trigger: 'change' }],
multiInstanceSource: [{ required: true, message: '多实例来源不能为空', trigger: 'blur' }]
})
const configForm = ref({
childProcessKey: ''
childProcessKey: '',
multiInstance: false,
approveMethod: ApproveMethodType.SEQUENTIAL_APPROVE,
approveRatio: 100,
multiInstanceSource: ''
})
const childProcessOptions = ref()
@ -94,6 +155,20 @@ const saveConfig = async () => {
currentNode.value.name = nodeName.value!
currentNode.value.childProcess = `${childInfo.key}:${childInfo.name}`
currentNode.value.showText = `调用子流程:${childInfo.name}`
if (configForm.value.multiInstance) {
currentNode.value.candidateStrategy = CandidateStrategy.EXPRESSION
currentNode.value.candidateParam = configForm.value.multiInstanceSource
currentNode.value.approveMethod = configForm.value.approveMethod
if (configForm.value.approveMethod === ApproveMethodType.APPROVE_BY_RATIO) {
currentNode.value.approveRatio = configForm.value.approveRatio
}
} else {
currentNode.value.candidateStrategy = undefined
currentNode.value.candidateParam = undefined
currentNode.value.approveMethod = undefined
currentNode.value.approveRatio = undefined
}
settingVisible.value = false
return true
}
@ -103,6 +178,16 @@ const showChildProcessNodeConfig = (node: SimpleFlowNode) => {
if (node.childProcess && node.childProcess !== '') {
configForm.value.childProcessKey = node.childProcess.split(':')[0]
}
console.log(node)
if (node.candidateStrategy) {
configForm.value.multiInstance = true
configForm.value.multiInstanceSource = node.candidateParam
configForm.value.approveMethod = node.approveMethod
if (node.approveMethod === ApproveMethodType.APPROVE_BY_RATIO) {
configForm.value.approveRatio = node.approveRatio
}
console.log(configForm.value)
}
}
defineExpose({ openDrawer, showChildProcessNodeConfig }) //