浏览代码

feat: 模拟处理 workflow 展示处理

lanceJiang 1 年之前
父节点
当前提交
080fa75687

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

@@ -60,6 +60,7 @@ export default {
 	},
 	watch: {
 		modelValue(val) {
+      console.error(val, 'val........')
 			this.nodeConfig = val
 		},
 		nodeConfig(val) {

+ 1 - 1
src/components/scWorkflow/nodes/approver.vue

@@ -1,6 +1,6 @@
 <template>
 	<div class="node-wrap">
-		<div class="node-wrap-box" :class="{ 'node-wrap-box--disabled': disabled }">
+		<div class="node-wrap-box" :class="[disabled ? 'node-wrap-box--disabled' : '', `node-wrap-box--${nodeConfig.local_status}`]">
 			<div class="title" style="background: var(--el-color-warning)">
 				<el-icon class="icon"><user-filled /></el-icon>
 				<span v-show="!isEditTitle" class="title_label" @click="editTitle('box_nodeTitle')"

+ 1 - 1
src/components/scWorkflow/nodes/branch.vue

@@ -1,5 +1,5 @@
 <template>
-	<div class="branch-wrap" :class="{ 'branch-wrap--disabled': disabled }">
+	<div class="branch-wrap" :class="[disabled ? 'branch-wrap--disabled' : '', `branch-wrap--${nodeConfig.local_status}`]">
 		<div class="branch-box-wrap">
 			<div class="branch-box">
 				<el-button class="add-branch" type="success" plain round @click="addTerm"> 添加条件 </el-button>

+ 1 - 1
src/components/scWorkflow/nodes/promoter.vue

@@ -1,6 +1,6 @@
 <template>
 	<div class="node-wrap">
-		<div class="node-wrap-box start-node" :class="{ 'node-wrap-box--disabled': disabled }">
+		<div class="node-wrap-box start-node" :class="[disabled ? 'node-wrap-box--disabled' : '', `node-wrap-box--${nodeConfig.local_status}`]">
 			<div class="title" style="background: var(--el-color-info)">
 				<el-icon class="icon"><user-filled /></el-icon>
 				<span class="title_label">{{ nodeConfig.nodeName }}</span>

+ 1 - 1
src/components/scWorkflow/nodes/send.vue

@@ -1,6 +1,6 @@
 <template>
 	<div class="node-wrap">
-		<div class="node-wrap-box" :class="{ 'node-wrap-box--disabled': disabled }">
+		<div class="node-wrap-box" :class="[disabled ? 'node-wrap-box--disabled' : '', `node-wrap-box--${nodeConfig.local_status}`]">
 			<div class="title" style="background: var(--el-color-primary)">
 				<el-icon class="icon"><promotion /></el-icon>
 				<span v-show="!isEditTitle" class="title_label" @click="editTitle('box_nodeTitle')"

+ 1 - 0
src/styles/project_normal.scss

@@ -71,4 +71,5 @@ body {
 .warp-right {
 	flex: 1; /*这里设置为占比1,填充满剩余空间*/
 	height: 100%;
+	overflow: hidden;
 }

文件差异内容过多而无法显示
+ 91 - 6
src/views/approve/components/approvedContent.vue


+ 66 - 0
src/views/approve/components/config.ts

@@ -0,0 +1,66 @@
+/*type childrenNode = {
+
+}*/
+type ModelContentConfig = {
+	nodeName: string
+	type: number
+	local_status?: string // 填充自定义状态
+	childNode?: ModelContentConfig
+	conditionNodes?: {
+		conditionList: any[]
+		childrenNode: ModelContentConfig
+	}[]
+}
+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
+	}*/
+	// 通过nodeName 作为唯一值 记录 每个key(nodeName) 对应的childNode 信息
+	const nodeNameObj = {}
+	const fn = (data, p_nodeNames = []) => {
+		data.p_nodeNames = p_nodeNames
+		// 记录
+		nodeNameObj[data.nodeName] = data
+		// const _p_nodeNames = [...p_nodeNames, data.nodeName]
+		const _p_nodeNames = [...p_nodeNames /*, data.nodeName*/]
+		if (data.childNode) {
+			_p_nodeNames.push(data.nodeName)
+			// 正常子节点
+			fn(data.childNode, _p_nodeNames)
+		} else if (data.conditionNodes && Array.isArray(data.conditionNodes)) {
+			// 条件分支节点
+			data.conditionNodes.forEach(v => {
+				fn(v, _p_nodeNames)
+			})
+		}
+	}
+	fn(data)
+	/*Object.keys(nodeNameObj).forEach(k => {
+        const _o = nodeNameObj[k]
+        _o.local_status = 'info'
+    })*/
+	// 给需要修改状态的
+	console.log(nodeNameObj, 'nodeNameObj')
+	const local_status_obj = {
+		0: 'success', // 已执行
+		1: 'error' // 执行中
+	}
+	/**local_status: 0: 已执行(success) 1:执行中(error) // 默认未执行(info)*/
+	Object.keys(renderNodes).forEach((nodeName) => {
+		const local_status = local_status_obj[nodeName] || ''
+		const node = nodeNameObj[nodeName]
+		if (node) {
+			node.local_status = local_status
+		}
+	})
+	// const cur_action =
+}

部分文件因为文件数量过多而无法显示