Просмотр исходного кода

reactor:流程模板配置需求调整;

zhangchong 1 год назад
Родитель
Сommit
5e229463f8

+ 0 - 1
src/components/LogicFlow/index.vue

@@ -380,7 +380,6 @@ const saveOnly = throttle((formEl: FormInstance | undefined) => {
 				closePage();
 			});
 		}
-
 		emits('on-save', getGraphData());
 	});
 }, 300);

+ 1 - 1
src/components/LogicFlow/snakerflow/index.ts

@@ -32,7 +32,7 @@ class SnakerFlowAdapter {
       lf.graphModel.code = userData.code
       lf.graphModel.flowType = userData.flowType
       lf.graphModel.description = userData.description
-      lf.graphModel.isMainHandlerShow = userData.flowType
+      lf.graphModel.isMainHandlerShow = userData.isMainHandlerShow
       lf.graphModel.id = userData.id
       return userData
     }

+ 155 - 147
src/components/LogicFlow/snakerflow/tool.ts

@@ -1,4 +1,4 @@
-import {BaseEdgeModel, BaseNodeModel} from '@logicflow/core';
+import { BaseEdgeModel, BaseNodeModel } from '@logicflow/core';
 
 /**
  * 节点样式处理方法
@@ -6,60 +6,66 @@ import {BaseEdgeModel, BaseNodeModel} from '@logicflow/core';
  * @param {*} style
  * @returns
  */
-export const nodeStyleHandle = (_this: BaseNodeModel, style: {
-  [x: string]: any;
-  r?: number;
-  fill?: string;
-  stroke?: string;
-  strokeWidth?: number;
-}): {
-  [x: string]: any;
-  r?: number;
-  fill?: string;
-  stroke?: string;
-  strokeWidth?: number;
+export const nodeStyleHandle = (
+	_this: BaseNodeModel,
+	style: {
+		[x: string]: any;
+		r?: number;
+		fill?: string;
+		stroke?: string;
+		strokeWidth?: number;
+	}
+): {
+	[x: string]: any;
+	r?: number;
+	fill?: string;
+	stroke?: string;
+	strokeWidth?: number;
 } => {
-  if (_this.properties.state === 'active') {
-    style.stroke = '#00ff00'
-  } else if (_this.properties.state === 'history') {
-    style.stroke = '#ff0000'
-  }
-  return style
-}
+	if (_this.properties.state === 'active') {
+		style.stroke = '#00ff00';
+	} else if (_this.properties.state === 'history') {
+		style.stroke = '#ff0000';
+	}
+	return style;
+};
 /**
  * 边样式处理方法
  * @param _this
  * @param {*} style
  * @returns
  */
-export const edgeStyleHandle = (_this: BaseEdgeModel, style: {
-  [x: string]: any;
-  r?: number;
-  fill?: string;
-  stroke?: string;
-  strokeWidth?: number;
-}): {
-  [x: string]: any;
-  r?: number;
-  fill?: string;
-  stroke?: string;
-  strokeWidth?: number;
+export const edgeStyleHandle = (
+	_this: BaseEdgeModel,
+	style: {
+		[x: string]: any;
+		r?: number;
+		fill?: string;
+		stroke?: string;
+		strokeWidth?: number;
+	}
+): {
+	[x: string]: any;
+	r?: number;
+	fill?: string;
+	stroke?: string;
+	strokeWidth?: number;
 } => {
-  if (_this.properties.state === 'active') {
-    style.stroke = '#00ff00'
-  } else if (_this.properties.state === 'history') {
-    style.stroke = '#ff0000'
-  }
-  return style
-}
+	if (_this.properties.state === 'active') {
+		style.stroke = '#00ff00';
+	} else if (_this.properties.state === 'history') {
+		style.stroke = '#ff0000';
+	}
+	return style;
+};
 /**
  * 将获取到的数据转换成logic flow需要的数据
  * @param {*} data(...processInfo,nodes,edges)
  * @returns
  */
 export const resDataToLogicFlow = (data: any): any => {
-  return JSON.parse(data.externalData)
-}
+	return JSON.parse(data.externalData);
+};
 
 /**
  * 将LogicFlow的数据转成提交的格式
@@ -67,112 +73,114 @@ export const resDataToLogicFlow = (data: any): any => {
  * @returns
  */
 export const logicFlowJsonToSubmit = (data: any): object => {
-  let returnData = {}
-  // data的数据由流程定义文件信息+logicFlow数据构成
-  // 先构建成流程对象
-  const processObj = <any>{
-    name: data.name, // 流程定义名称
-    code: data.code, // 流程定义code
-    flowType: data.flowType, // 模板类型
-    description: data.description, // 流程定义描述
-    id: data.id, // 流程id
-    steps: [] // 所有步骤
-  }
+	let returnData = {};
+	// data的数据由流程定义文件信息+logicFlow数据构成
+	// 先构建成流程对象
+	const processObj = <any>{
+		name: data.name, // 流程定义名称
+		code: data.code, // 流程定义code
+		flowType: data.flowType, // 模板类型
+		isMainHandlerShow: data.isMainHandlerShow, // 是否显示主办人
+		description: data.description, // 流程定义描述
+		id: data.id, // 流程id
+		steps: [], // 所有步骤
+	};
 
-  // /**
-  //  * 获取开始节点
-  //  * @returns
-  //  */
-  const getStartNode = () => {
-    return data.nodes.filter((node: any) => {
-      // 是开始节点,且非子流程中的开始节点
-      return node.type === 'hotline:start'
-    })
-  }
-  // 获取结束节点
-  const getEndNode = () => {
-    return data.nodes.filter((node: any) => {
-      return node.type === 'hotline:end'
-    })
-  }
-  // /**
-  //  * 构建节点属性
-  //  * @param {}} node
-  //  * @returns
-  //  */
-  const buildNode = (node: any) => {
-    return {
-      name: (node.text instanceof String || node.text === undefined) ? node.text : node.text.value,
-      ...node.properties,
-      handlerTypeItems: formatArrayHandlerTypeItems(node),
-      code: node.id,
-      nextSteps: node.nextSteps
-    }
-  }
-  /**
-   * 处理数组类型
-   * @param {} node
-   */
-  const formatArrayHandlerTypeItems = (node: any) => {
-    const nodeName = node.type.replace('hotline:', '')
-    let data: string[] = []
-    if (['start', 'task'].includes(nodeName)) {
-      if (node.properties.handlerTypeItems && Object.prototype.toString.call(node.properties.handlerTypeItems) === '[object String]') {
-        data = JSON.parse(node.properties.handlerTypeItems)
-      }
-    }
-    return data;
-  }
+	// /**
+	//  * 获取开始节点
+	//  * @returns
+	//  */
+	const getStartNode = () => {
+		return data.nodes.filter((node: any) => {
+			// 是开始节点,且非子流程中的开始节点
+			return node.type === 'hotline:start';
+		});
+	};
+	// 获取结束节点
+	const getEndNode = () => {
+		return data.nodes.filter((node: any) => {
+			return node.type === 'hotline:end';
+		});
+	};
+	// /**
+	//  * 构建节点属性
+	//  * @param {}} node
+	//  * @returns
+	//  */
+	const buildNode = (node: any) => {
+		return {
+			name: node.text instanceof String || node.text === undefined ? node.text : node.text.value,
+			...node.properties,
+			handlerTypeItems: formatArrayHandlerTypeItems(node),
+			code: node.id,
+			nextSteps: node.nextSteps,
+		};
+	};
+	/**
+	 * 处理数组类型
+	 * @param {} node
+	 */
+	const formatArrayHandlerTypeItems = (node: any) => {
+		const nodeName = node.type.replace('hotline:', '');
+		let data: string[] = [];
+		if (['start', 'task'].includes(nodeName)) {
+			if (node.properties.handlerTypeItems && Object.prototype.toString.call(node.properties.handlerTypeItems) === '[object String]') {
+				data = JSON.parse(node.properties.handlerTypeItems);
+			}
+		}
+		return data;
+	};
 
-  const startNode = getStartNode();
-  const endNode = getEndNode();
-  if (!startNode[0]) {
-    // 开始节点不存在
-    return { error: '开始节点不存在' }
-  }
-  if(startNode.length > 1){
-    // 开始节点存在多个
-    return { error: '开始节点存在多个' }
-  }
-    if (!endNode[0]) {
-    // 结束节点不存在
-    return { error: '结束节点不存在' }
-  }
-  if(endNode.length > 1){
-    // 结束节点存在多个
-    return { error: '结束节点存在多个' }
-  }
-  for (let node of data.nodes) {
-    node.nextSteps = [];
-    const edges = data.edges.filter((v: any) => v.sourceNodeId === node.id);// 找到当前节点的边
-    for (let edge of edges) {
-      if (edge.sourceNodeId === node.id) {
-        node.nextSteps.push({
-          code: edge.targetNodeId
-        })
-      }
-    }
-    processObj.steps.push(buildNode(node))
-  }
-  for (let i of processObj.steps) {//普通节点字段非空校验
-    if(['start','task'].includes(i.code)){
-      if (!i.stepType && String(i.stepType) !== '0') {
-        return { error: `请选择${i.name}的节点类型` };
-      }
-      if (!i.businessType && String(i.businessType) !== '0') {
-        return { error: `请选择${i.name}的业务类型` };
-      }
-      if (!i.executeMode && String(i.executeMode) !== '0') {
-        return { error: `请选择${i.name}的执行者模式` };
-      }
-      if (!i.handlerType && String(i.handlerType) !== '0') {
-        return { error: `请选择${i.name}的办理者类型` };
-      }
-    }
-  }
-  returnData = {
-    ...processObj
-  }
+	const startNode = getStartNode();
+	const endNode = getEndNode();
+	if (!startNode[0]) {
+		// 开始节点不存在
+		return { error: '开始节点不存在' };
+	}
+	if (startNode.length > 1) {
+		// 开始节点存在多个
+		return { error: '开始节点存在多个' };
+	}
+	if (!endNode[0]) {
+		// 结束节点不存在
+		return { error: '结束节点不存在' };
+	}
+	if (endNode.length > 1) {
+		// 结束节点存在多个
+		return { error: '结束节点存在多个' };
+	}
+	for (let node of data.nodes) {
+		node.nextSteps = [];
+		const edges = data.edges.filter((v: any) => v.sourceNodeId === node.id); // 找到当前节点的边
+		for (let edge of edges) {
+			if (edge.sourceNodeId === node.id) {
+				node.nextSteps.push({
+					code: edge.targetNodeId,
+				});
+			}
+		}
+		processObj.steps.push(buildNode(node));
+	}
+	for (let i of processObj.steps) {
+		//普通节点字段非空校验
+		if (['start', 'task'].includes(i.code)) {
+			if (!i.stepType && String(i.stepType) !== '0') {
+				return { error: `请选择${i.name}的节点类型` };
+			}
+			if (!i.businessType && String(i.businessType) !== '0') {
+				return { error: `请选择${i.name}的业务类型` };
+			}
+			if (!i.executeMode && String(i.executeMode) !== '0') {
+				return { error: `请选择${i.name}的执行者模式` };
+			}
+			if (!i.handlerType && String(i.handlerType) !== '0') {
+				return { error: `请选择${i.name}的办理者类型` };
+			}
+		}
+	}
+	returnData = {
+		...processObj,
+	};
 
-  return returnData;
-}
+	return returnData;
+};

+ 10 - 14
src/views/system/config/workflow/index.vue

@@ -23,12 +23,12 @@
 							/>
 						</el-form-item>
 						<el-form-item label="模板状态" prop="Status" v-show="state.activeName === '1'">
-							<el-select v-model="state.queryParams.Status" class="w100" placeholder="请选择模板状态" v-show="state.activeName === '1'">
+							<el-select v-model="state.queryParams.Status" placeholder="请选择模板状态" v-show="state.activeName === '1'">
 								<el-option v-for="item in state.statusList" :key="item.value" :label="item.label" :value="item.value" />
 							</el-select>
 						</el-form-item>
 						<el-form-item label="业务模块" prop="ModuleCode" v-show="state.activeName === '2'">
-							<el-select v-model="state.queryParams.ModuleCode" class="w100" placeholder="请选择业务模块">
+							<el-select v-model="state.queryParams.ModuleCode" placeholder="请选择业务模块">
 								<el-option v-for="item in state.moduleOptions" :key="item.key" :label="item.value" :value="item.key" />
 							</el-select>
 						</el-form-item>
@@ -42,7 +42,7 @@
 						</el-form-item>
 					</el-form>
 					<div class="mb20">
-						<el-button type="primary" @click="onAddTemp" v-waves v-if="state.activeName === '1'" v-auth="'system:workflow:template:add'">
+						<el-button type="primary" @click="onAddTemp" v-if="state.activeName === '1'" v-auth="'system:workflow:template:add'">
 							<SvgIcon name="ele-Plus" class="mr5" />新增
 						</el-button>
 					</div>
@@ -180,7 +180,7 @@
 </template>
 
 <script lang="ts" setup name="systemWorkflow">
-import { defineAsyncComponent, onActivated, onMounted, reactive, ref } from 'vue';
+import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
 import { useRoute, useRouter } from 'vue-router';
 import type { FormInstance } from 'element-plus';
 import { ElMessage, ElMessageBox } from 'element-plus';
@@ -342,7 +342,6 @@ const onDeleteTemp = (row: any) => {
 };
 // 发布模板
 const onReleaseTemp = async (row: any) => {
-	console.log(row);
 	ElMessageBox.confirm(`此操作将发布模板:“${row.name}”,是否继续?`, '提示', {
 		confirmButtonText: '确认',
 		cancelButtonText: '取消',
@@ -428,20 +427,17 @@ const configClear = (row: any) => {
 		.catch(() => {});
 };
 const params = history.state;
-onMounted(async () => {
-	queryList();
-	// 获取页面基础信息
+// 获取页面基础信息
+const getBaseData = async () => {
 	const res: any = await baseData();
 	state.moduleOptions = res.result?.moduleOptions ?? [];
+};
+onMounted(async () => {
+	await getBaseData();
 	if (params.index) {
 		state.activeName = params.index as string;
 	}
-});
-onActivated(() => {
-	if (params.index) {
-		state.activeName = params.index as string;
-		queryList();
-	}
+	queryList();
 });
 </script>
 <style lang="scss" scoped>