vue流程图

效果图
在这里插入图片描述
组件

<template><div class="processBox" v-if="list.length"><div class="childs"><div class="child" v-for="(item,index) in list" :key="item.id +'-child-'+index"><div class="child-item" :style="{marginRight: item.children && item.children.length > 1 ? '20px' :''}"><div class="childname" :id="item.id"><div class="shows"><slot :items="item">{{item.name}}</slot></div><div class="position-arrow" v-if="list.length > 1"><i class="el-icon-right"></i></div><div class="position-top" v-if="isFirst(item.id) && domready" :style="position_top(item.id,'top')"></div><div class="position-top" v-if="isLast(item.id)" :style="position_top(item.id,'bottom')"></div></div><div class="childarrow" :style="{borderRight:item.children && item.children.length >1 ? '2px solid #606266' : '3px solid transparent'}"><div :class="item.children && item.children.length<=1?'long-img':''"></div><i class="el-icon-right" v-if="item.children && item.children.length" ></i></div></div><div class="child-children" v-if="item.children && item.children.length"><processJson :list="item.children" ><template v-slot="item"><slot :items='item.items' /></template></processJson></div></div></div></div>
</template><script>
export default {name: "processJson",components: {},data() {return {domready: false,};},props: {list: {type: Array,default: () => [],},},mounted() {this.$nextTick(() => {this.domready = true;});},methods: {position_top(id, position) {let dom = document.getElementById(id);let height;if (dom) {height = dom.clientHeight;}let rt;if (position === "top") {rt = {height: height / 2 - 2 + "px",top: 0,};}if (position === "bottom") {rt = {height: height / 2 + 1 + "px",bottom: 0,};}return rt;},isFirst(id) {return (this.list.length > 1 && this.list.map((x) => x.id).indexOf(id) === 0);},isLast(id) {return (this.list.length > 1 &&this.list.map((x) => x.id).indexOf(id) === this.list.length - 1);},},
};
</script><style lang="scss" scoped>
.el-icon-right{font-weight: 600;
}
.processBox {p {margin: 0;font-size: 13px;}display: flex;.father {width: 70px;background-color: red;padding: 100px 10px;}.childs {.child {display: flex;background-color: #fff;.child-item {display: flex;align-items: center;margin: 10px 0;.childname {.shows {text-align: left;border: 1px solid #b4b4b4;padding: 10px;// height: 100px;width: 100%;box-shadow: 1px 2px 8px #00000033;&:hover{box-shadow: 1px 2px 8px #00000066;}}cursor: pointer;height: 100%;display: flex;align-items: center;text-align: center;justify-content: center;position: relative;padding: 10px 0;.position-arrow {position: absolute;// top: 50%;left: -22px;}.position-top {position: absolute;width: 3px;background-color: #fff;left: -23px;height: 10px;}}.childarrow {height: 100%;// border-right: ;display: flex;align-items: center;}}}.child-children {display: flex;flex-direction: column;justify-content: center;}}.long-img{width: 20px;height: 2px;background-color: #606266;}.icon_arrow {// margin-left: 20px;&:after {width: 30px;height: 1px;background-color: #000;}}
}
</style>

调用

<template><div><josnToProcess :list="list"><template #default="{ items }"><div class="node_item ">{{items.unitName }}</div></template></josnToProcess></div>
</template><script>
import josnToProcess from "./tree-right.vue";
export default {name: "",props: {},components: { josnToProcess },data() {return {list: [{unitName: "长沙供电公司1",id: "1",children: [{unitName: "长沙供电公司1-1",id: "1-1",children: [{unitName: "长沙供电公司1-1-1",id: "1-1-1",},{unitName: "长沙供电公司1-1-2",id: "1-1-2",},],},{unitName: "1-2",id: "1-2",children: [{unitName: "1-2-1",id: "1-2-1",},],},{unitName: "长沙供电公司1-3",id: "1-3",children: [{unitName: "长沙供电公司1-3-1",id: "1-3-1",},{unitName: "长沙供电公司1-3-2",id: "1-3-2",},],},{unitName: "长沙供电公司1-4",id: "1-4",},],},{unitName: "长沙供电公司2",id: "2",},{unitName: "长沙供电公司3",id: "3",children: [{unitName: "长沙供电公司3-1",id: "3-1",children: [{unitName: "长沙供电公司3-1-1",id: "3-1-1",},],},{unitName: "长沙供电公司3-1-2",id: "3-1-2",children: [{unitName: "长沙供电公司3-1-2-1",id: "3-1-2-1",children: [{unitName: "长沙供电公司3-1-2-1-1",id: "3-1-2-1-1",},],},{unitName: "长沙供电公司3-1-2-2",id: "3-3-1-2-2",},],},],},{unitName: "长沙供电公司1-3",id: "4",},],showFields: [//show fields{name: "姓名:",key: "name",},{name: "年龄:",key: "age",},],};},computed: {},watch: {},methods: {},created() {},mounted() {},
};
</script><style scoped lang="scss">
.node_item {width: 230px;height: 116px;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/417890.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机导论06-人机交互

文章目录 人机交互基础人机交互概述人机交互及其发展人机交互方式人机界面 新型人机交互技术显示屏技术跟踪与识别&#xff08;技术&#xff09;脑-机接口 多媒体技术多媒体技术基础多媒体的概念多媒体技术及其特性多媒体技术的应用多媒体技术发展趋势 多媒体应用技术文字&…

Codeforces Round 803 (Div. 2) E. PermutationForces II(思维题 位置序列)

题目 给定长为n(n<2e5)的两个序列a和b&#xff0c; a为n的一个排列&#xff0c; b也为n的一个排列&#xff0c;但有一些位置被-1替换了&#xff0c;保证没被替换的位置在[1,n]之间且两两不同 你有一个距离最大限制s&#xff0c;你可以执行n次操作&#xff0c; 第i次操作…

详解Python web框架到底是怎么来的?

前言 咱都知道软件开发的架构有两种&#xff0c;分别是C/S架构与B/S架构&#xff0c;本质上都是借助socket实现网络通信&#xff0c;因此Django作为一个web框架本质上也是一个socket服务端&#xff0c;浏览器则是客户端&#xff0c;我们可以自己实现简易的web框架来更好的理解…

一篇文章讲透python双层独立循环(--附案例(python如何实现循环存放文件)

看过电视剧《开端》的都知道&#xff0c;处在循环中是多么让人崩溃的事情&#xff0c;循环可以制造问题&#xff0c;但循环同样可以解决问题。现在我们要讲的这个案例就是利用循环来实现的。 案例说明&#xff1a; 有一个excel文档&#xff0c;一列记录的是文件名&#xff0c;…

2.1.4-相关性分析

跳转到根目录&#xff1a;知行合一&#xff1a;投资篇 已完成&#xff1a; 1、投资&技术   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas   1.2 金融数据处理   1.3 金融数据可视化 2、投资方法论   2.1.1 预期年化收益率   2.1.2 一个关于yaxb的…

高级架构师是如何设计一个系统的?

架构师如何设计系统&#xff1f; 系统拆分 通过DDD领域模型&#xff0c;对服务进行拆分&#xff0c;将一个系统拆分为多个子系统&#xff0c;做成SpringCloud的微服务。微服务设计时要尽可能做到少扇出&#xff0c;多扇入&#xff0c;根据服务器的承载&#xff0c;进行客户端负…

sqli-labs关卡25(基于get提交的过滤and和or的联合注入)

文章目录 前言一、回顾上一关知识点二、靶场第二十五关通关思路1、判断注入点2、爆字段个数3、爆显位位置4、爆数据库名5、爆数据库表名6、爆数据库列名7、爆数据库数据 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的…

无忧秘书智脑:轻松驾驭“看图说话”功能,职场沟通更高效

在现代职场中&#xff0c;有效的沟通是提升工作效率的关键。然而&#xff0c;有时候我们面对一张图片或图表&#xff0c;却难以用言语准确表达其中的信息。这时&#xff0c;无忧秘书智脑的“看图说话”功能就派上了用场。这篇文章将手把手教你如何使用这一功能&#xff0c;以及…

【论文笔记】A Survey on 3D Gaussian Splatting

原文链接&#xff1a;https://arxiv.org/abs/2401.03890 1. 引言 NeRF在计算效率和可控性上具有局限性&#xff0c;这导致了3D高斯溅射&#xff08;3D GS&#xff09;的出现&#xff0c;重新定义了场景表达和渲染。 3D GS通过引入新的场景表达技术&#xff0c;用大量的3D高斯…

【Java】后端开发语言Java和C#,两者对比注解和属性的区别以及作用

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《Java》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握…

HBase学习五:运维排障

1、负载均衡 1.1 Rgion迁移 在当前的HBase版本中,Region迁移虽然是一个轻量级操作,但实现逻辑依然比较复杂,≈复杂性主要表现在两个方面:其一,Region迁移过程涉及多种状态的改变;其二,迁移过程中涉及Master、ZooKeeper(ZK)以及RegionServer等多个组件的相互协调。 …

字符和ASCII编码

文章目录 一、什么是字符二、什么是ASCII编码三&#xff0c;怎么打印字符对应的ASCII值 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、什么是字符 日常代码中敲写代码中&#xff0c;在键盘上可以敲出各种字符&#xff0c;如a&#xff0c;q&#x…