Browse Source

reactor:流程调整;

zhangchong 1 year ago
parent
commit
1bcc2a3d7d

+ 7 - 0
src/components/LogicFlow/PropertySetting/index.vue

@@ -8,6 +8,7 @@
 				ref="ruleFormRef"
 				@countersignStartStepCodeChange="countersignStartStepCodeChange"
         :baseData="props.baseData"
+        :nodes="props.nodes"
 			/>
 			<template #footer>
 				<div style="flex: auto">
@@ -48,6 +49,11 @@ const props = defineProps({
     type: Object,
     required: false,
     default: () => {},
+  },
+  nodes:{
+    type: Array,
+    required: false,
+    default: () => [],
   }
 });
 // 标题
@@ -116,6 +122,7 @@ const propertyKeys:Array<string> = [
   'instancePolicy',
   'terminalDynamicMark',
   'tag',
+  'summaryTargetCode'
 ];
 // 去重后的key
 const propertyKeysSet = Array.from(new Set(propertyKeys));

+ 14 - 0
src/components/LogicFlow/PropertySetting/task.vue

@@ -12,6 +12,12 @@
 					<el-option v-for="item in baseData.stepTypeOptions" :key="item.key" :label="item.value" :value="item.key" />
 				</el-select>
 			</el-form-item>
+      <!--   如果是节点类型为汇总节点  需要选择汇总目标节点   -->
+      <el-form-item label="汇总目标节点" prop="summaryTargetCode" :rules="[{ required: true, message: '请选择汇总目标节点', trigger: 'change' }]" v-if="form.stepType === 3">
+        <el-select v-model="form.summaryTargetCode" class="w100" placeholder="请选择汇总目标节点">
+          <el-option v-for="item in summaryTargetCodeOptions" :key="item.key" :label="item.value" :value="item.key" />
+        </el-select>
+      </el-form-item>
 			<el-form-item label="业务类型" prop="businessType" :rules="[{ required: true, message: '请选择业务类型', trigger: 'change' }]">
 				<el-select v-model="form.businessType" class="w100" placeholder="请选择业务类型">
 					<el-option v-for="item in baseData.businessTypeOptions" :key="item.key" :label="item.value" :value="item.key" />
@@ -163,6 +169,10 @@ const props = defineProps({
 		type: Object,
 		default: () => {},
 	},
+  nodes: {
+    type: Array,
+    default: () => []
+  }
 });
 // 注意:ref不能与model一样,相同的话表单双向绑定将会失效
 const form = reactive<Record<string, any>>({
@@ -179,6 +189,7 @@ const form = reactive<Record<string, any>>({
 	instanceMode: null, // 实例化模式
 	instancePolicy: null, // 动态策略
 	terminalDynamicMark: null, // 动态终止标识
+  summaryTargetCode: null, // 汇总目标编码
 	tag: '', // 标识
 });
 const emits = defineEmits(['update:modelValue']); // 定义事件
@@ -271,9 +282,12 @@ const baseData = reactive<any>({
 	dynamicPolicyOptions: <EmptyArrayType>[], // 会签策略
 	instanceModeOptions: <EmptyArrayType>[], // 实例化模式
 });
+const summaryTargetCodeOptions = ref<EmptyArrayType>([]); // 汇总目标节点
 onMounted(async () => {
 	const { stepTypeOptions, businessTypeOptions, handlerTypeOptions, countersignMode, dynamicPolicyOptions, executeModeOptions, instanceModeOptions } =
 		props.baseData;
+  // 筛选出节点中的普通节点
+  summaryTargetCodeOptions.value = props.nodes.map((item: any) => ({ key: item.id, value: item.text.value,...item.properties })).filter((item: any) => item.stepType === 0);
 	baseData.businessTypeOptions = businessTypeOptions; // 业务类型
 	baseData.stepTypeOptions = stepTypeOptions; // 节点类型
 	baseData.handlerTypeOptions = handlerTypeOptions; // 办理者类型

+ 7 - 2
src/components/LogicFlow/index.vue

@@ -44,6 +44,7 @@
 				@change="handlePropertyChange"
 				@changeOther="handlePropertyChangeOther"
 				:baseData="baseDataResult"
+        :nodes="nodes"
 			/>
 		</div>
 	</div>
@@ -290,6 +291,7 @@ const initOp = () => {
 const propertySettingRef = ref(null) as any;
 // 当前操作节点/或边id
 const currentOpId = ref('');
+const nodes = ref<EmptyArrayType>([]);
 const initEvent = () => {
 	if (props.viewer) return;
 	// 初始化事件
@@ -307,8 +309,10 @@ const initEvent = () => {
 	//     type: 'process'
 	//   })
 	// })
+
+
 	// 节点点击事件
-	eventCenter.on('node:click', (args: any) => {
+	eventCenter.on('node:click', (args: any,data) => {
 		if (['hotline:start', 'hotline:task'].includes(args.data.type)) {
 			currentOpId.value = args.data.id;
 			propertySettingRef.value.show({
@@ -316,9 +320,10 @@ const initEvent = () => {
 				code: args.data.id,
 				id: args.data.id,
 				name: args.data.text?.value,
-				type: args.data.type,
+				type: args.data.type
 			});
 		}
+    nodes.value = lf.graphModel.nodes;
 	});
 	// 边点击事件
 	// eventCenter.on('edge:click', (args: any) => {