فهرست منبع

feat: 流程图展示处理

lanceJiang 1 سال پیش
والد
کامیت
db8d949839
2فایلهای تغییر یافته به همراه47 افزوده شده و 28 حذف شده
  1. 2 4
      src/views/approve/components/approvedContent.vue
  2. 45 24
      src/views/approve/components/config.ts

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 2 - 4
src/views/approve/components/approvedContent.vue


+ 45 - 24
src/views/approve/components/config.ts

@@ -1,10 +1,8 @@
-/*type childrenNode = {
-
-}*/
 type ModelContentConfig = {
 	nodeName: string
 	type: number
 	local_status?: string // 填充自定义状态
+	p_nodeNames?: string[] // 填充自定义状态
 	childNode?: ModelContentConfig
 	conditionNodes?: {
 		conditionList: any[]
@@ -15,18 +13,10 @@ type RenderNodes = {
 	[key: string]: 0 | 1 // 0已执行 1执行中
 }
 export const package_modelContentConfig = (data: ModelContentConfig, renderNodes: RenderNodes) => {
-	/**local_status: 0: 已执行(success) 1:执行中(error) // 默认未执行(info)*/
-	/*const flatList = []
-	// 给整个数据 初始化状态 为 未处理
-	let curData = data
-	while (curData.childNode) {
-		// curData.local_status = 'info'
-		flatList.push(curData.childNode)
-		curData = curData.childNode
-	}*/
+	/**local_status: 0: 已执行(success) 1:执行中(danger) // 默认未执行(info)*/
 	// 通过nodeName 作为唯一值 记录 每个key(nodeName) 对应的childNode 信息
-	const nodeNameObj = {}
-	const fn = (data, p_nodeNames = []) => {
+	const nodeNameObj: { [nodeName: string]: ModelContentConfig } = {}
+	const fn = (data: ModelContentConfig, p_nodeNames = []) => {
 		data.p_nodeNames = p_nodeNames
 		// 记录
 		nodeNameObj[data.nodeName] = data
@@ -44,23 +34,54 @@ export const package_modelContentConfig = (data: ModelContentConfig, renderNodes
 		}
 	}
 	fn(data)
-	/*Object.keys(nodeNameObj).forEach(k => {
-        const _o = nodeNameObj[k]
-        _o.local_status = 'info'
-    })*/
 	// 给需要修改状态的
-	console.log(nodeNameObj, 'nodeNameObj')
+	// console.log(nodeNameObj, 'nodeNameObj')
 	const local_status_obj = {
 		0: 'success', // 已执行
-		1: 'error' // 执行中
+		1: 'danger' // 执行中
 	}
-	/**local_status: 0: 已执行(success) 1:执行中(error) // 默认未执行(info)*/
-	Object.keys(renderNodes).forEach((nodeName) => {
-		const local_status = local_status_obj[nodeName] || ''
+	let cur_nodeName = ''
+	/**local_status: 0: 已执行(success) 1:执行中(danger) // 默认未执行(info)*/
+	Object.keys(renderNodes).forEach(nodeName => {
+		// console.log(nodeName, 'nodeName')
+		const local_status = local_status_obj[renderNodes[nodeName]] || ''
 		const node = nodeNameObj[nodeName]
 		if (node) {
 			node.local_status = local_status
 		}
+		// 执行中的key 提取出来
+		if (node.local_status === 'danger') {
+			cur_nodeName = nodeName
+		}
+	})
+
+	/*const cur_actionKey = Object.keys(nodeNameObj).find(nodeName => {
+		const node = nodeNameObj[nodeName]
+		// 执行中的key 提取出来
+		if (node.local_status === 'danger') {
+		}
+		nodeName
+	})*/
+	const curNode = nodeNameObj[cur_nodeName] as ModelContentConfig
+	// 如果有执行中的 node 给父级做状态渲染
+	if (curNode) {
+		const p_nodeNames = curNode.p_nodeNames || []
+		if (p_nodeNames.length) {
+			p_nodeNames.forEach(nodeName => {
+				const p_node = nodeNameObj[nodeName]
+				// 父级node 设置为 已执行
+				if (p_node.local_status) {
+					p_node.local_status = 'success'
+				}
+			})
+		}
+	}
+
+	// 给没有标记 local_status 的 默认填充 未处理
+	Object.keys(nodeNameObj).forEach(nodeName => {
+		const node = nodeNameObj[nodeName]
+		if (!node.local_status) {
+			node.local_status = 'info'
+		}
 	})
-	// const cur_action =
 }

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است