diff --git a/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue b/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
index 25532344..25e4ed74 100644
--- a/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
+++ b/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
@@ -306,6 +306,9 @@ const addNode = (type: number) => {
},
timeoutSetting: {
enable: false
+ },
+ multiInstanceSetting: {
+ enable: false
}
}
}
diff --git a/src/components/SimpleProcessDesignerV2/src/consts.ts b/src/components/SimpleProcessDesignerV2/src/consts.ts
index b8d08b79..e74ad58a 100644
--- a/src/components/SimpleProcessDesignerV2/src/consts.ts
+++ b/src/components/SimpleProcessDesignerV2/src/consts.ts
@@ -821,6 +821,7 @@ export type ChildProcessSetting = {
skipStartUserNode: boolean,
startUserSetting: StartUserSetting,
timeoutSetting: TimeoutSetting,
+ multiInstanceSetting: MultiInstanceSetting,
}
export type IOParameter = {
source: string
@@ -836,6 +837,13 @@ export type TimeoutSetting = {
type?: DelayTypeEnum,
timeExpression?: string,
}
+export type MultiInstanceSetting = {
+ enable: boolean,
+ sequential?: boolean,
+ completeRatio?: number,
+ sourceType?: ChildProcessMultiInstanceSourceTypeEnum,
+ source?: string,
+}
export enum ChildProcessStartUserTypeEnum {
/**
* 同主流程发起人
@@ -869,3 +877,22 @@ export const CHILD_PROCESS_START_USER_EMPTY_TYPE = [
{ label: '子流程管理员', value: ChildProcessStartUserEmptyTypeEnum.CHILD_PROCESS_ADMIN },
{ label: '主流程管理员', value: ChildProcessStartUserEmptyTypeEnum.MAIN_PROCESS_ADMIN }
]
+export enum ChildProcessMultiInstanceSourceTypeEnum {
+ /**
+ * 固定数量
+ */
+ FIXED_QUANTITY = 1,
+ /**
+ * 数字表单
+ */
+ DIGITAL_FORM = 2,
+ /**
+ * 多项表单
+ */
+ MULTI_FORM = 3,
+}
+export const CHILD_PROCESS_MULTI_INSTANCE_SOURCE_TYPE = [
+ { label: '固定数量', value: ChildProcessMultiInstanceSourceTypeEnum.FIXED_QUANTITY },
+ { label: '数字表单', value: ChildProcessMultiInstanceSourceTypeEnum.DIGITAL_FORM },
+ { label: '多项表单', value: ChildProcessMultiInstanceSourceTypeEnum.MULTI_FORM }
+]
diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue
index 0289151b..b8f3172e 100644
--- a/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue
+++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue
@@ -164,8 +164,10 @@
- {{ item.label }}
+ :value="item.value"
+ >
+ {{ item.label }}
- {{ item.label }}
+ :value="item.value"
+ >
+ {{ item.label }}
后进入下一节点
+
+ 多实例设置
+
+
+
+
+
+
+
+
+ 完成比例(%)
+
+
+
+ 多实例来源
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -276,7 +342,9 @@ import {
ChildProcessStartUserTypeEnum,
CHILD_PROCESS_START_USER_TYPE,
ChildProcessStartUserEmptyTypeEnum,
- CHILD_PROCESS_START_USER_EMPTY_TYPE
+ CHILD_PROCESS_START_USER_EMPTY_TYPE,
+ CHILD_PROCESS_MULTI_INSTANCE_SOURCE_TYPE,
+ ChildProcessMultiInstanceSourceTypeEnum
} from '../consts'
import { useWatchNode, useDrawer, useNodeName, useFormFieldsAndStartUser } from '../node'
import { parseFormFields } from '@/components/FormCreate/src/utils'
@@ -315,7 +383,8 @@ const formRules = reactive({
timeoutEnable: [{ required: true, message: '超时设置是否开启不能为空', trigger: 'change' }],
timeoutType: [{ required: true, message: '超时设置时间不能为空', trigger: 'change' }],
timeDuration: [{ required: true, message: '超时设置时间不能为空', trigger: 'change' }],
- dateTime: [{ required: true, message: '超时设置时间不能为空', trigger: 'change' }]
+ dateTime: [{ required: true, message: '超时设置时间不能为空', trigger: 'change' }],
+ multiInstanceEnable: [{ required: true, message: '多实例设置不能为空', trigger: 'change' }]
})
type ChildProcessFormType = {
async: boolean
@@ -331,6 +400,11 @@ type ChildProcessFormType = {
timeDuration: number
timeUnit: TimeUnitType
dateTime: string
+ multiInstanceEnable: boolean
+ sequential: boolean
+ completeRatio: number
+ multiInstanceSourceType: ChildProcessMultiInstanceSourceTypeEnum
+ multiInstanceSource: string
}
const configForm = ref({
async: false,
@@ -345,10 +419,21 @@ const configForm = ref({
timeoutType: DelayTypeEnum.FIXED_TIME_DURATION,
timeDuration: 1,
timeUnit: TimeUnitType.HOUR,
- dateTime: ''
+ dateTime: '',
+ multiInstanceEnable: false,
+ sequential: false,
+ completeRatio: 100,
+ multiInstanceSourceType: ChildProcessMultiInstanceSourceTypeEnum.FIXED_QUANTITY,
+ multiInstanceSource: ''
})
const childProcessOptions = ref()
const formFieldOptions = useFormFieldsAndStartUser()
+const digitalFormFieldOptions = computed(() => {
+ return formFieldOptions.filter((item) => item.type === 'inputNumber')
+})
+const multiFormFieldOptions = computed(() => {
+ return formFieldOptions.filter((item) => item.type === 'select' || item.type === 'checkbox')
+})
const childFormFieldOptions = ref()
// 保存配置
@@ -393,6 +478,19 @@ const saveConfig = async () => {
configForm.value.dateTime
}
}
+ // 8. 多实例设置
+ currentNode.value.childProcessSetting.multiInstanceSetting = {
+ enable: configForm.value.multiInstanceEnable
+ }
+ if (configForm.value.multiInstanceEnable) {
+ currentNode.value.childProcessSetting.multiInstanceSetting.sequential = configForm.value.sequential
+ currentNode.value.childProcessSetting.multiInstanceSetting.completeRatio =
+ configForm.value.completeRatio
+ currentNode.value.childProcessSetting.multiInstanceSetting.sourceType =
+ configForm.value.multiInstanceSourceType
+ currentNode.value.childProcessSetting.multiInstanceSetting.source =
+ configForm.value.multiInstanceSource
+ }
}
currentNode.value.showText = `调用子流程:${childInfo.name}`
@@ -436,6 +534,16 @@ const showChildProcessNodeConfig = (node: SimpleFlowNode) => {
configForm.value.dateTime = node.childProcessSetting.timeoutSetting.timeExpression ?? ''
}
}
+ // 8. 多实例设置
+ configForm.value.multiInstanceEnable =
+ node.childProcessSetting.multiInstanceSetting.enable ?? false
+ if (configForm.value.multiInstanceEnable) {
+ configForm.value.sequential = node.childProcessSetting.multiInstanceSetting.sequential ?? false
+ configForm.value.completeRatio = node.childProcessSetting.multiInstanceSetting.completeRatio ?? 100
+ configForm.value.multiInstanceSourceType =
+ node.childProcessSetting.multiInstanceSetting.sourceType ?? ChildProcessMultiInstanceSourceTypeEnum.FIXED_QUANTITY
+ configForm.value.multiInstanceSource = node.childProcessSetting.multiInstanceSetting.source ?? ''
+ }
}
loadFormInfo()
}
@@ -481,6 +589,9 @@ const getIsoTimeDuration = () => {
}
return strTimeDuration
}
+const handleMultiInstanceSourceTypeChange = () => {
+ configForm.value.multiInstanceSource = ''
+}
onMounted(async () => {
childProcessOptions.value = await getModelList(undefined)