端到端功能入口组件
This commit is contained in:
		
							parent
							
								
									17666c2653
								
							
						
					
					
						commit
						6373d8b703
					
				
							
								
								
									
										309
									
								
								com.actionsoft.apps.coe.pal/src/views/subprocess/SubProcess.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										309
									
								
								com.actionsoft.apps.coe.pal/src/views/subprocess/SubProcess.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,309 @@ | ||||
| <template> | ||||
|     <el-dialog | ||||
|             title="生成端到端流程图" | ||||
|             height="350px" | ||||
|             width="800px" | ||||
|             :visible.sync="dialogVisible" | ||||
|             :border="false"> | ||||
|         <div class="sub-process-dialog-content" style="margin: 25px 25px;"> | ||||
|             <el-form label-width="95px" label-position="left"> | ||||
|                 <el-form-item label="位置" required> | ||||
|                     <el-input disabled v-model="subProcessForm.position.label" size="small"> | ||||
|                         <template slot="append"> | ||||
|                             <el-popover ref="positionPopover" placement="bottom" trigger="click" width="600" @show="positionPopoverShowEvent"> | ||||
|                                 <div style="height: 200px; overflow: auto;"> | ||||
|                                     <el-tree | ||||
|                                             v-if="subProcessForm.position.showTree" | ||||
|                                             @node-collapse="closePositionNode" | ||||
|                                             @node-click="positionTreeNodeClickEvent" | ||||
|                                             ref="positionTree" | ||||
|                                             node-key="id" | ||||
|                                             lazy | ||||
|                                             :highlight-current="true" | ||||
|                                             :expand-on-click-node="false" | ||||
|                                             :load="loadPositionTreeNode" | ||||
|                                             :props="treeProps"> | ||||
|                                     <span slot-scope="{node, data}"> | ||||
|                                         <i class="awsui-iconfont tree-content-icon tree-content-icon-padding" :style="{'color': node.data.icon.color}" v-html="node.data.icon.icon"></i> | ||||
|                                         <span :style="{'font-weight': data.id.length < 36 ? '600' : ''}">{{node.label}}</span> | ||||
|                                     </span> | ||||
|                                     </el-tree> | ||||
|                                 </div> | ||||
|                                 <span slot="reference" style="cursor: pointer;"><i class="awsui-iconfont"></i></span> | ||||
|                             </el-popover> | ||||
|                         </template> | ||||
|                     </el-input> | ||||
|                 </el-form-item> | ||||
|                 <el-form-item label="子流程选择" required> | ||||
|                     <el-popover ref="subProcessPopover" placement="bottom" trigger="click" width="600"> | ||||
|                         <div class="sub-process-tree-box" style="height: 300px; overflow: auto;"> | ||||
|                             <el-tree | ||||
|                                     ref="subProcessModelTree" | ||||
|                                     @node-collapse="closeSubProcessNode" | ||||
|                                     node-key="id" | ||||
|                                     lazy | ||||
|                                     show-checkbox | ||||
|                                     :load="loadModelTreeNode" | ||||
|                                     @check="modeTreeNodeCheck" | ||||
|                                     :props="treeProps"> | ||||
|                                 <span slot-scope="{node, data}"> | ||||
|                                     <i class="awsui-iconfont tree-content-icon tree-content-icon-padding" :style="{'color': node.data.icon.color}" v-html="node.data.icon.icon"></i> | ||||
|                                     <span :style="{'font-weight': data.id.length < 36 ? '600' : ''}">{{node.label}}</span> | ||||
|                                 </span> | ||||
|                             </el-tree> | ||||
|                         </div> | ||||
|                         <div slot="reference" style="width: 100%;height: 65px;border: 1px solid #dcdfe6;cursor: pointer;display: inline-flex;align-items: center;flex-wrap: wrap;overflow: auto;"> | ||||
|                             <div> | ||||
|                                 <el-tag style="margin: 5px;"  v-for="tag in subProcessForm.processTags" :key="tag.value">{{ tag.label }}</el-tag> | ||||
|                             </div> | ||||
|                         </div> | ||||
|                     </el-popover> | ||||
|                 </el-form-item> | ||||
|                 <el-form-item label="排布方式" required> | ||||
|                     <el-radio-group v-model="subProcessForm.direction"> | ||||
|                         <el-radio v-for="item in subProcessForm.directionOpts" :key="item.value" :label="item.value">{{ item.label }}</el-radio> | ||||
|                     </el-radio-group> | ||||
|                 </el-form-item> | ||||
|                 <el-form-item label="模型名称" required> | ||||
|                     <el-input v-model="subProcessForm.modelName" size="small"></el-input> | ||||
|                 </el-form-item> | ||||
|             </el-form> | ||||
|         </div> | ||||
|         <div slot="footer" class="dialog-footer"> | ||||
|             <awsui-button type="primary" @click="generateSubProcessModel">确定</awsui-button> | ||||
|             <awsui-button @click="close">取 消</awsui-button> | ||||
|         </div> | ||||
|     </el-dialog> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
|     import awsuiAxios from "../../awsuiAxios"; | ||||
| 
 | ||||
|     export default { | ||||
|         name: "SubProcess", | ||||
|         props: { | ||||
|             visible: { | ||||
|                 type: Boolean, | ||||
|                 default: false | ||||
|             }, | ||||
|         }, | ||||
|         data(){ | ||||
|             return { | ||||
|                 dialogVisible: false, | ||||
|                 subProcessForm: { | ||||
|                     position: { | ||||
|                         path: '', | ||||
|                         label: '', | ||||
|                         showTree: false, | ||||
|                     }, | ||||
|                     processList: [], | ||||
|                     direction: 'vertically', | ||||
|                     directionOpts: [{value: 'vertically', label: '纵向排布'},{value: 'horizontal', label: '横向排布'}], | ||||
|                     modelName: '', | ||||
|                     processTags: [], | ||||
|                     popoverVisible: false | ||||
|                 }, | ||||
|                 treeProps: { | ||||
|                     label: 'name', | ||||
|                     isLeaf: 'leaf' | ||||
|                 }, | ||||
|             } | ||||
|         }, | ||||
|         methods: { | ||||
|             initData(){ | ||||
|                 // 获取位置根目录 | ||||
|                 const param = { | ||||
|                     url: 'jd', | ||||
|                     data: { | ||||
|                         cmd: 'com.actionsoft.apps.coe.method.process.subprocess.init_data', | ||||
|                     } | ||||
|                 } | ||||
|                 awsuiAxios.post(param) | ||||
|                     .then(ro => { | ||||
|                         if (ro.result === 'ok') { | ||||
|                             // console.log('initData', ro); | ||||
|                             this.subProcessForm.position.label = ro.data.dirRootName; | ||||
|                             this.subProcessForm.position.path = ro.data.dirRootPath; | ||||
|                         }else if (ro.result === 'error') { | ||||
|                             this.$message({type: 'error', message: ro.msg}); | ||||
|                             this.$emit('getResult'); | ||||
|                         } | ||||
|                     }) | ||||
|                     .catch(err => { | ||||
|                         console.log(err); | ||||
|                     }); | ||||
|             }, | ||||
|             close(){ | ||||
|                 this.$emit('getResult'); | ||||
|                 this.clearData(); | ||||
|                 // 子流程树节点所选清空 | ||||
|                 this.$refs.subProcessModelTree.setCheckedKeys([]); | ||||
|             }, | ||||
|             closeAdapter(done) { | ||||
|                 this.close(); | ||||
|                 done(); | ||||
|             }, | ||||
|             clearData(){ | ||||
|                 this.dialogVisible = false; | ||||
|                 this.subProcessForm.processTags = []; | ||||
|                 this.subProcessForm.processList = []; | ||||
|                 this.subProcessForm.modelName = ''; | ||||
|                 this.subProcessForm.popoverVisible = false; | ||||
|                 this.subProcessForm.position.label = ''; | ||||
|                 this.subProcessForm.position.showTree = false; | ||||
|             }, | ||||
|             // 生成端到端总图 | ||||
|             generateSubProcessModel(){ | ||||
|                 console.log('执行参数',this.subProcessForm); | ||||
|             }, | ||||
|             // 加载子流程节点树 | ||||
|             loadModelTreeNode(node, resolve){ | ||||
|                 const that = this; | ||||
|                 const param = { | ||||
|                     url: 'jd', | ||||
|                     data: { | ||||
|                         cmd: 'com.actionsoft.apps.coe.method.process.subprocess.find_tree_node', | ||||
|                         wsId: that.$store.getters.getWsIdFn, | ||||
|                         teamId: that.$store.getters.getTeamIdFn, | ||||
|                         createUsers: JSON.stringify(that.$store.getters.getCreateUsers), | ||||
|                         orgIds: JSON.stringify(that.$store.getters.getOrgIds), | ||||
|                         methodIds: JSON.stringify(that.$store.getters.getMethodIds), | ||||
|                         pid: '' | ||||
|                     } | ||||
|                 }; | ||||
|                 if (node.level !== 0){ | ||||
|                     param.data.pid = node.data.id; | ||||
|                 } | ||||
|                 awsuiAxios.post(param) | ||||
|                     .then(ro => { | ||||
|                         if (ro.result === 'ok') { | ||||
|                             resolve(ro.data); | ||||
|                             const tree = that.$refs.subProcessModelTree; | ||||
|                             if (ro.data.length){ | ||||
|                                 tree.getNode(ro.data[0].id).expand(); | ||||
|                                 setTimeout(() => { | ||||
|                                     let childNode = tree.getNode(ro.data[0].id).childNodes[0]; | ||||
|                                     if (childNode != null) { | ||||
|                                         childNode.expand(); | ||||
|                                     } | ||||
|                                 }, 500); | ||||
|                             } | ||||
|                         } | ||||
|                     }) | ||||
|                     .catch(err => { | ||||
|                         console.log(err); | ||||
|                     }); | ||||
|             }, | ||||
|             modeTreeNodeCheck(data, obj){ | ||||
|                 const that = this; | ||||
|                 if (!obj.checkedKeys.length) { | ||||
|                     // 当前树没有选中的节点 对应的tag数组清空 | ||||
|                     that.subProcessForm.processTags = []; | ||||
|                     return; | ||||
|                 } | ||||
|                 // 调接口查询当前选中节点的所有子节点 | ||||
|                 const param = { | ||||
|                     url: 'jd', | ||||
|                     data: { | ||||
|                         cmd: 'com.actionsoft.apps.coe.method.process.subprocess.find_tree_child_node_all', | ||||
|                         nodeKeyJsonArr: JSON.stringify(obj.checkedKeys) | ||||
|                     } | ||||
|                 }; | ||||
|                 awsuiAxios.post(param) | ||||
|                     .then(ro => { | ||||
|                         if (ro.result === 'ok') { | ||||
|                             // console.log('节点选中接口',ro.data); | ||||
|                             that.subProcessForm.processTags = ro.data; | ||||
|                         } | ||||
|                     }) | ||||
|                     .catch(err => { | ||||
|                         that.$message({type: 'error', message: err.msg}); | ||||
|                     }); | ||||
|             }, | ||||
|             // 关闭时清空,下次展开重新请求动态加载 | ||||
|             closeSubProcessNode(obj, node, tree) { | ||||
|                 node.childNodes = []; | ||||
|                 node.loaded = false; | ||||
|             }, | ||||
|             // 加载指定位置节点树 | ||||
|             loadPositionTreeNode(node, resolve){ | ||||
|                 const that = this; | ||||
|                 const param = { | ||||
|                     url: 'jd', | ||||
|                     data: { | ||||
|                         cmd: 'com.actionsoft.apps.coe.method.process.subprocess.construct_position_tree', | ||||
|                         wsId: that.$store.getters.getWsIdFn, | ||||
|                         teamId: that.$store.getters.getTeamIdFn, | ||||
|                         pid: '', | ||||
|                     } | ||||
|                 }; | ||||
|                 if (node.level !== 0){ | ||||
|                     param.data.pid = node.data.id; | ||||
|                 } | ||||
|                 awsuiAxios.post(param) | ||||
|                     .then(ro => { | ||||
|                         if (ro.result === 'ok') { | ||||
|                             resolve(ro.data); | ||||
|                             const tree = that.$refs.positionTree; | ||||
|                             if (ro.data.length){ | ||||
|                                 tree.getNode(ro.data[0].id).expand(); | ||||
|                                 setTimeout(() => { | ||||
|                                     let childNode = tree.getNode(ro.data[0].id).childNodes[0]; | ||||
|                                     if (childNode != null) { | ||||
|                                         childNode.expand(); | ||||
|                                     } | ||||
|                                 }, 500); | ||||
|                             } | ||||
|                         } | ||||
|                     }) | ||||
|                     .catch(err => { | ||||
|                         console.log(err); | ||||
|                     }); | ||||
|             }, | ||||
|             closePositionNode(obj, node, tree){ | ||||
|                 node.childNodes = []; | ||||
|                 node.loaded = false; | ||||
|             }, | ||||
|             positionTreeNodeClickEvent(data, node, obj){ | ||||
|                 if (node.data.id === this.subProcessForm.position.path.split("/")[0]){ | ||||
|                     return; | ||||
|                 } | ||||
|                 let tempNode = null; | ||||
|                 let pathIds = []; | ||||
|                 let pathNames = []; | ||||
|                 for (let i = 0; i < node.level; i++) { | ||||
|                     if (tempNode == null){ | ||||
|                         pathIds.push(node.data.id); | ||||
|                         pathNames.push(node.data.name); | ||||
|                         tempNode = node; | ||||
|                     }else { | ||||
|                         tempNode = tempNode.parent; | ||||
|                         pathIds.push(tempNode.data.id); | ||||
|                         pathNames.push(tempNode.data.name); | ||||
|                     } | ||||
|                 } | ||||
|                 this.subProcessForm.position.label = pathNames.reverse().join("/"); | ||||
|                 this.subProcessForm.position.path = pathIds.reverse().join("/"); | ||||
| 
 | ||||
|                 this.$refs.positionPopover.doClose(); | ||||
|             }, | ||||
|             positionPopoverShowEvent(){ | ||||
|                 this.subProcessForm.position.showTree = true; | ||||
|             } | ||||
|         }, | ||||
|         watch: { | ||||
|             visible(val) { | ||||
|                 this.dialogVisible = val; | ||||
|                 if (val) { | ||||
|                     this.initData(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
|     /deep/ .el-dialog__body { | ||||
|         padding: 10px 20px; | ||||
|     } | ||||
| </style> | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 ouyang
						ouyang