mirror of
https://gitee.com/myxzgzs/boyue-ui-admin-vue3
synced 2025-08-08 16:32:43 +08:00
【功能修复】条件节点配置问题修复
This commit is contained in:
parent
aeb096a311
commit
b047fd9929
@ -71,7 +71,8 @@ import {
|
|||||||
NODE_DEFAULT_NAME,
|
NODE_DEFAULT_NAME,
|
||||||
NodeType,
|
NodeType,
|
||||||
RejectHandlerType,
|
RejectHandlerType,
|
||||||
SimpleFlowNode
|
SimpleFlowNode,
|
||||||
|
DEFAULT_CONDITION_GROUP_VALUE
|
||||||
} from './consts'
|
} from './consts'
|
||||||
import {generateUUID} from '@/utils'
|
import {generateUUID} from '@/utils'
|
||||||
|
|
||||||
@ -167,21 +168,7 @@ const addNode = (type: number) => {
|
|||||||
conditionSetting: {
|
conditionSetting: {
|
||||||
defaultFlow: false,
|
defaultFlow: false,
|
||||||
conditionType: ConditionType.RULE,
|
conditionType: ConditionType.RULE,
|
||||||
conditionGroups: {
|
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE
|
||||||
and: true,
|
|
||||||
conditions: [
|
|
||||||
{
|
|
||||||
and: true,
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
opCode: '==',
|
|
||||||
leftSide: '',
|
|
||||||
rightSide: ''
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -239,21 +226,7 @@ const addNode = (type: number) => {
|
|||||||
conditionSetting: {
|
conditionSetting: {
|
||||||
defaultFlow: false,
|
defaultFlow: false,
|
||||||
conditionType: ConditionType.RULE,
|
conditionType: ConditionType.RULE,
|
||||||
conditionGroups: {
|
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE
|
||||||
and: true,
|
|
||||||
conditions: [
|
|
||||||
{
|
|
||||||
and: true,
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
opCode: '==',
|
|
||||||
leftSide: '',
|
|
||||||
rightSide: ''
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -463,6 +463,24 @@ export type ConditionGroup = {
|
|||||||
// 条件数组
|
// 条件数组
|
||||||
conditions: Condition[]
|
conditions: Condition[]
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 条件组默认值
|
||||||
|
*/
|
||||||
|
export const DEFAULT_CONDITION_GROUP_VALUE = {
|
||||||
|
and: true,
|
||||||
|
conditions: [
|
||||||
|
{
|
||||||
|
and: true,
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
opCode: '==',
|
||||||
|
leftSide: '',
|
||||||
|
rightSide: ''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 条件结构定义
|
* 条件结构定义
|
||||||
|
@ -46,7 +46,6 @@
|
|||||||
import {
|
import {
|
||||||
SimpleFlowNode,
|
SimpleFlowNode,
|
||||||
ConditionType,
|
ConditionType,
|
||||||
ConditionSetting,
|
|
||||||
COMPARISON_OPERATORS,
|
COMPARISON_OPERATORS,
|
||||||
ProcessVariableEnum
|
ProcessVariableEnum
|
||||||
} from '../consts'
|
} from '../consts'
|
||||||
@ -69,7 +68,7 @@ const props = defineProps({
|
|||||||
})
|
})
|
||||||
const settingVisible = ref(false)
|
const settingVisible = ref(false)
|
||||||
const currentNode = ref<SimpleFlowNode>(props.conditionNode)
|
const currentNode = ref<SimpleFlowNode>(props.conditionNode)
|
||||||
const condition = ref<ConditionSetting>()
|
const condition = ref<any>()
|
||||||
const open = () => {
|
const open = () => {
|
||||||
condition.value = currentNode.value.conditionSetting
|
condition.value = currentNode.value.conditionSetting
|
||||||
settingVisible.value = true
|
settingVisible.value = true
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-form ref="formRef" :model="condition" :rules="formRules" label-position="top">
|
<el-form ref="formRef" :model="condition" :rules="formRules" label-position="top">
|
||||||
<el-form-item label="配置方式" prop="conditionType">
|
<el-form-item label="配置方式" prop="conditionType">
|
||||||
<el-radio-group v-model="condition!.conditionType">
|
<el-radio-group v-model="condition.conditionType" @change="changeConditionType">
|
||||||
<el-radio
|
<el-radio
|
||||||
v-for="(dict, indexConditionType) in conditionConfigTypes"
|
v-for="(dict, indexConditionType) in conditionConfigTypes"
|
||||||
:key="indexConditionType"
|
:key="indexConditionType"
|
||||||
@ -12,34 +12,34 @@
|
|||||||
</el-radio>
|
</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="condition.conditionType === ConditionType.RULE" label="条件规则">
|
<el-form-item v-if="condition.conditionType === ConditionType.RULE && condition.conditionGroups" label="条件规则">
|
||||||
<div class="condition-group-tool">
|
<div class="condition-group-tool">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<div class="mr-4">条件组关系</div>
|
<div class="mr-4">条件组关系</div>
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="condition!.conditionGroups!.and"
|
v-model="condition.conditionGroups.and"
|
||||||
inline-prompt
|
inline-prompt
|
||||||
active-text="且"
|
active-text="且"
|
||||||
inactive-text="或"
|
inactive-text="或"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-space direction="vertical" :spacer="condition!.conditionGroups!.and ? '且' : '或'">
|
<el-space direction="vertical" :spacer="condition.conditionGroups.and ? '且' : '或'">
|
||||||
<el-card
|
<el-card
|
||||||
class="condition-group"
|
class="condition-group"
|
||||||
style="width: 530px"
|
style="width: 530px"
|
||||||
v-for="(equation, cIdx) in condition!.conditionGroups!.conditions"
|
v-for="(equation, cIdx) in condition.conditionGroups.conditions"
|
||||||
:key="cIdx"
|
:key="cIdx"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="condition-group-delete"
|
class="condition-group-delete"
|
||||||
v-if="condition!.conditionGroups!.conditions.length > 1"
|
v-if="condition.conditionGroups.conditions.length > 1"
|
||||||
>
|
>
|
||||||
<Icon
|
<Icon
|
||||||
color="#0089ff"
|
color="#0089ff"
|
||||||
icon="ep:circle-close-filled"
|
icon="ep:circle-close-filled"
|
||||||
:size="18"
|
:size="18"
|
||||||
@click="deleteConditionGroup(condition!.conditionGroups!.conditions, cIdx)"
|
@click="deleteConditionGroup(condition.conditionGroups.conditions, cIdx)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<template #header>
|
<template #header>
|
||||||
@ -114,7 +114,7 @@
|
|||||||
color="#0089ff"
|
color="#0089ff"
|
||||||
icon="ep:plus"
|
icon="ep:plus"
|
||||||
:size="24"
|
:size="24"
|
||||||
@click="addConditionGroup(condition?.conditionGroups!.conditions)"
|
@click="addConditionGroup(condition.conditionGroups?.conditions)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -125,7 +125,7 @@
|
|||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
type="textarea"
|
type="textarea"
|
||||||
v-model="condition!.conditionExpression"
|
v-model="condition.conditionExpression"
|
||||||
clearable
|
clearable
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
@ -138,13 +138,18 @@ import {
|
|||||||
COMPARISON_OPERATORS,
|
COMPARISON_OPERATORS,
|
||||||
CONDITION_CONFIG_TYPES,
|
CONDITION_CONFIG_TYPES,
|
||||||
ConditionType,
|
ConditionType,
|
||||||
ConditionSetting,
|
DEFAULT_CONDITION_GROUP_VALUE,
|
||||||
ProcessVariableEnum
|
ProcessVariableEnum
|
||||||
} from '../../consts'
|
} from '../../consts'
|
||||||
import { BpmModelFormType } from '@/utils/constants'
|
import { BpmModelFormType } from '@/utils/constants'
|
||||||
import { useFormFields } from '../../node'
|
import { useFormFields } from '../../node'
|
||||||
|
|
||||||
const props = defineProps<{modelValue: ConditionSetting}>()
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
})
|
||||||
const emit = defineEmits(['update:modelValue'])
|
const emit = defineEmits(['update:modelValue'])
|
||||||
const condition = computed({
|
const condition = computed({
|
||||||
get() {
|
get() {
|
||||||
@ -183,6 +188,14 @@ const formRules = reactive({
|
|||||||
})
|
})
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
|
|
||||||
|
/** 切换条件配置方式 */
|
||||||
|
const changeConditionType = () => {
|
||||||
|
if (condition.value.conditionType === ConditionType.RULE) {
|
||||||
|
if (!condition.value.conditionGroups) {
|
||||||
|
condition.value.conditionGroups = DEFAULT_CONDITION_GROUP_VALUE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
const deleteConditionGroup = (conditions, index) => {
|
const deleteConditionGroup = (conditions, index) => {
|
||||||
conditions.splice(index, 1)
|
conditions.splice(index, 1)
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import NodeHandler from '../NodeHandler.vue'
|
import NodeHandler from '../NodeHandler.vue'
|
||||||
import ProcessNodeTree from '../ProcessNodeTree.vue'
|
import ProcessNodeTree from '../ProcessNodeTree.vue'
|
||||||
import { SimpleFlowNode, NodeType, NODE_DEFAULT_TEXT } from '../consts'
|
import { SimpleFlowNode, NodeType, ConditionType, DEFAULT_CONDITION_GROUP_VALUE, NODE_DEFAULT_TEXT } from '../consts'
|
||||||
import { getDefaultConditionNodeName } from '../utils'
|
import { getDefaultConditionNodeName } from '../utils'
|
||||||
import { useTaskStatusClass } from '../node'
|
import { useTaskStatusClass } from '../node'
|
||||||
import { generateUUID } from '@/utils'
|
import { generateUUID } from '@/utils'
|
||||||
@ -149,7 +149,7 @@ const blurEvent = (index: number) => {
|
|||||||
showInputs.value[index] = false
|
showInputs.value[index] = false
|
||||||
const conditionNode = currentNode.value.conditionNodes?.at(index) as SimpleFlowNode
|
const conditionNode = currentNode.value.conditionNodes?.at(index) as SimpleFlowNode
|
||||||
conditionNode.name =
|
conditionNode.name =
|
||||||
conditionNode.name || getDefaultConditionNodeName(index, conditionNode.defaultFlow)
|
conditionNode.name || getDefaultConditionNodeName(index, conditionNode.conditionSetting?.defaultFlow)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 点击条件名称
|
// 点击条件名称
|
||||||
@ -178,8 +178,11 @@ const addCondition = () => {
|
|||||||
type: NodeType.CONDITION_NODE,
|
type: NodeType.CONDITION_NODE,
|
||||||
childNode: undefined,
|
childNode: undefined,
|
||||||
conditionNodes: [],
|
conditionNodes: [],
|
||||||
conditionType: 1,
|
conditionSetting: {
|
||||||
defaultFlow: false
|
defaultFlow: false,
|
||||||
|
conditionType: ConditionType.RULE,
|
||||||
|
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
conditionNodes.splice(lastIndex, 0, conditionData)
|
conditionNodes.splice(lastIndex, 0, conditionData)
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import NodeHandler from '../NodeHandler.vue'
|
import NodeHandler from '../NodeHandler.vue'
|
||||||
import ProcessNodeTree from '../ProcessNodeTree.vue'
|
import ProcessNodeTree from '../ProcessNodeTree.vue'
|
||||||
import { SimpleFlowNode, NodeType, NODE_DEFAULT_TEXT } from '../consts'
|
import { SimpleFlowNode, NodeType, ConditionType, DEFAULT_CONDITION_GROUP_VALUE, NODE_DEFAULT_TEXT } from '../consts'
|
||||||
import { useTaskStatusClass } from '../node'
|
import { useTaskStatusClass } from '../node'
|
||||||
import { getDefaultInclusiveConditionNodeName } from '../utils'
|
import { getDefaultInclusiveConditionNodeName } from '../utils'
|
||||||
import { generateUUID } from '@/utils'
|
import { generateUUID } from '@/utils'
|
||||||
@ -153,7 +153,7 @@ const blurEvent = (index: number) => {
|
|||||||
showInputs.value[index] = false
|
showInputs.value[index] = false
|
||||||
const conditionNode = currentNode.value.conditionNodes?.at(index) as SimpleFlowNode
|
const conditionNode = currentNode.value.conditionNodes?.at(index) as SimpleFlowNode
|
||||||
conditionNode.name =
|
conditionNode.name =
|
||||||
conditionNode.name || getDefaultInclusiveConditionNodeName(index, conditionNode.defaultFlow)
|
conditionNode.name || getDefaultInclusiveConditionNodeName(index, conditionNode.conditionSetting?.defaultFlow)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 点击条件名称
|
// 点击条件名称
|
||||||
@ -182,8 +182,11 @@ const addCondition = () => {
|
|||||||
type: NodeType.CONDITION_NODE,
|
type: NodeType.CONDITION_NODE,
|
||||||
childNode: undefined,
|
childNode: undefined,
|
||||||
conditionNodes: [],
|
conditionNodes: [],
|
||||||
conditionType: 1,
|
conditionSetting: {
|
||||||
defaultFlow: false
|
defaultFlow: false,
|
||||||
|
conditionType: ConditionType.RULE,
|
||||||
|
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
conditionNodes.splice(lastIndex, 0, conditionData)
|
conditionNodes.splice(lastIndex, 0, conditionData)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user