纯vue手写流程组件

前言

  • 网上有很多的vue的流程组件,但是本人不喜欢很多冗余的代码,喜欢动手敲代码;
  • 刚开始写的时候,确实没法下笔,最后一层一层剥离,总算实现了;
  • 大家可以参考我写的代码,可以拿过去定制化修改(因为每个项目的UI风格不一样,更多是样式的不一样);
  • 关于功能,多一些点击事件呀什么的,我相信对大家来说是问题不大的,难度的部分是怎么画出来;
  • 下面的代码支持vue2也支持vue3,只不过是选项式,反正都支持。不喜欢的,可以稍微改下script部分,改成组合式API就好了。

代码

<!-- * @author kjprime* @description 流程组件-->
<template><div class="process-tree"><!-- 同一层级数据渲染,渲染到了同一行 --><divv-for="(item, index) in data":key="index"class="process-tree__row"><!-- 盒子--><divclass="process-tree__row__box":class="{// 左横线'line-left': index !== 0,// 右横线'line-right': index !== data.length - 1,}"><!-- 盒子里面的容器 --><divclass="process-tree__row__box--container":class="{// 向上竖线'line-bottom': item.children && item.children.length > 0,// 向下竖线'line-top': !isTreeRoot,}"><!-- 向下指向的三角形 --><divv-if="!isTreeRoot"class="process-tree__row__box--container__triangle"/><!-- 内容 --><div class="process-tree__row__box--container__content">{{ item.title }}</div></div></div><process-tree:data="item.children":isTreeRoot="false"/></div></div>
</template><script>
export default {name: "process-tree",props: {/*** @type {Array}* @default []* @example* [*   {*    title: "1",*    children: []*   }* ]* @description 数据*/data: {type: Array,default: () => [],},// 是否为数的root节点// 其实可以通过传父亲与子,通过对比是不是root就可以判断,但是感觉没有必要,直接通过prop可以解决。isTreeRoot: {type: Boolean,default: true,},},
};
</script><style lang="scss" scoped>
// 底部的线高度,也可以当作容器之间的间距
$line-bottom-length: 20px;
// 线粗细
$line-crude: 1px;
// 线颜色
$line-color: rgba(43, 163, 253);
// 盒子里面的容器的border粗细
$container-border-width: 1px;.process-tree {display: flex;&__row {&__box {display: flex;justify-content: center;position: relative;&--container {position: relative;display: flex;justify-content: center;background-color: #eafffc;border: $container-border-width solid $line-color;padding: 4px;margin: $line-bottom-length;color: #fff;&__triangle {position: absolute;border-left: 4.5px solid transparent;border-right: 4.5px solid transparent;border-top: 6px solid rgba(43, 163, 253, 0.7);top: -6px;}&__content {display: flex;flex-direction: column;justify-content: space-between;align-items: center;color: black;padding: 8px 40px;}}}}// 线样式@mixin line {content: "";display: block;height: $line-bottom-length;position: absolute;left: 0;right: 0;margin: auto;background-color: $line-color;}// 向下的线.line-bottom {&::after {@include line;width: $line-crude;bottom: -$line-bottom-length - $container-border-width;}}// 向上的线.line-top {&::before {@include line;width: $line-crude;top: -$line-bottom-length - $container-border-width;}}// 向左的线.line-left {&::after {@include line;width: calc(50%);height: $line-crude;left: calc(-50%);top: 0;}}// 向右的线.line-right {&::before {@include line;width: calc(50%);height: $line-crude;right: calc(-50%);top: 0;}}
}
</style>
  • 实操使用
 <ProcessTree :data="problemTreeData" />
problemTreeData: [{title: "1",children: [{title: "2",children: [{title: "3",children: [{title: "4",},],},{title: "3",children: [{title: "4",},],},],},{title: "2",},],},
]
  • 效果图
    效果图

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

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

相关文章

数字化转型驱动卫生用品安全革新

当315晚会上晃动的暗访镜头揭露卫生巾生产车间里漂浮的异物、纸尿裤原料仓中霉变的碎屑时&#xff0c;这一触目惊心的场景无情地撕开了“贴身安全”的遮羞布&#xff0c;暴露的不仅是部分企业的道德缺失&#xff0c;更凸显了当前检测与监管体系的漏洞&#xff0c;为整个行业敲响…

【C++】:异常

目录 C语言处理错误的方式 C异常的概念 C异常的使用 异常的抛出与捕获匹配原则 函数调用链中的栈展开 异常重新抛出 异常安全 异常规范 标准库异常体系 自定义异常体系 异常的优缺点 C语言处理错误的方式 返回值检查&#xff1a;函数返回特定错误码或值标识失败&am…

SZU软件工程大学生涯 2022~2026

用于个人面试前自我介绍&#xff0c;防止忘记或谈吐不流利。 面试官您好&#xff0c;我是来自深圳大学计算机与软件学院的软件工程专业的王雅贤。在校期间&#xff0c;我修读了程序设计基础、面向对象程序设计、数据结构、算法分析与设计、操作系统等核心课程&#xff0c;系统…

【JavaWeb学习Day27】

Tlias前端 员工管理 条件分页查询&#xff1a; 页面布局 搜索栏&#xff1a; <!-- 搜索栏 --><div class"container"><el-form :inline"true" :model"searchEmp" class"demo-form-inline"><el-form-item label…

Linux 系统运行 Android 应用的几种方案

这几年&#xff0c;国产操作系统替代正在有条不紊地进行中。但生态是绕不过去的一道坎&#xff0c;指望应用厂商一下子完成国产系统适配也不现实。之前介绍过使用 Wine 运行 Windows 应用的方案&#xff0c;减少了国产系统应用偏少的难题。比如我在办公室使用最多的企业微信&am…

Python进阶教程丨lambda函数

1. lambda函数是什么&#xff1f; 在 Python 里&#xff0c;lambda 函数是一种特殊类型的函数&#xff0c;也被叫做匿名函数。匿名”意味着它不需要像常规函数那样使用 def 来进行命名。lambda lambda 函数本质上是简洁的临时函数 &#xff0c;它适用于只需要简单逻辑的场景&a…

TK矩阵系统:高效管理与智能化操作平台

随着TikTok等社交媒体平台的快速发展&#xff0c;短视频创作和内容运营逐渐成为互联网行业的重要组成部分。为了帮助内容创作者、品牌运营商以及数据分析人员更高效地管理多个TikTok账号并优化运营策略&#xff0c;TK矩阵系统提供了一种全新的解决方案&#xff0c;结合了先进的…

Spring Boot整合Apache BookKeeper教程

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot整合Apache BookKeeper教程 1. 简介 Apache BookKeeper 是一个高性能、持久化的分布式日志存储系统&#xff0c;适用于需要强一致性和高吞吐量的…

苹果HFS+56TB存储MOV文件出错的恢复方法

HFS文件系统是Apple电脑中默认的最常见的文件系统。HFS来源于UNIX&#xff0c;优势就是稳定性&#xff0c;另外HFS是支持日志功能的&#xff0c;所以很多存储设备也采用了HFS文件系统。再稳定的文件系统也有“马失前蹄”的时候&#xff0c;下面就来聊下HFS出现文件出错、丢失时…

电源电路篇

电源电路篇 一、LDO-Low Dropout Regulator(低压差线性稳压器)1.1 AMS1117-3.3V芯片 二、DCDC-Direct Current to Direct Current(开关稳压器)2.1 降压(Buck)电路2.1.1 TPS5450-5V芯片 一、LDO-Low Dropout Regulator(低压差线性稳压器) LDO是一种线性稳压器&#xff0c;用于提…

java项目之在线购物系统(源码+文档)

项目简介 在线购物系统实现了以下功能&#xff1a; 使用在线购物系统的用户分管理员和用户两个角色的权限子模块。 管理员所能使用的功能主要有&#xff1a;主页、个人中心、用户管理、商品分类管理、商品信息管理、系统管理、订单管理等。 用户可以实现主页、个人中心、我的…

go语言中空结构体

空结构体(struct{}) 普通理解 在结构体中&#xff0c;可以包裹一系列与对象相关的属性&#xff0c;但若该对象没有属性呢&#xff1f;那它就是一个空结构体。 空结构体&#xff0c;和正常的结构体一样&#xff0c;可以接收方法函数。 type Lamp struct{}func (l Lamp) On()…

Unity实现连连看连线效果

1.一个比较简单的向量计算&#xff0c;用的LineRenderer实现&#xff1b; 已知起始A点和终点C点&#xff0c;求B点&#xff1b; 先计算A点到C点的向量取归一化当做方向&#xff0c;再给定一个“模长”&#xff08;B点到A点的模长&#xff09;乘以该方向&#xff0c;最后加上L…

【MySQL】触发器与存储引擎

目录 触发器基本概念触发器操作创建触发器NEW 与 OLD查看触发器删除触发器 注意事项 存储引擎基本概念基本操作查询当前数据库支持的存储引擎查看当前的默认存储引擎查看某个表用的存储引擎创建表时指定存储引擎修改表的存储引擎 触发器 基本概念 概述&#xff1a; 触发器&a…

能“嘎嘎提升”提升用户居住体验的智能家居物联网框架推荐!

智能家居在日常生活中给我们的带来了更多的便利&#xff0c;更让有些用户切实地体会到了科技的魅力&#xff0c;对于想要打造属于自己的智能家居氛围感的用户们&#xff0c;以下是一些能够帮助提升居住体验的智能家居物联网框架及应用&#xff1a; 1. 涂鸦智能&#xff08;Tuy…

DevEco Studio的使用

目录 1.创建ArkTS工程 2.ArkTS工程目录结构&#xff08;Stage模型&#xff09; 构建第一个页面 构建第二个页面 实现页面间的跳转 1.创建ArkTS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择…

性能监控——vmstat

性能监控——vmstat ​ 性能监控是对 IT 系统运行效率和有效性的系统观察和测量。它涉及收集、分析和报告各种组件&#xff08;包括应用程序、网络、服务器和数据库&#xff09;的关键性能指标 (KPI)。此过程使用专门的工具来跟踪响应时间、吞吐量、资源利用率和错误率等指标。…

搭建Python量化开发环境:从零开始的完整指南

搭建Python量化开发环境&#xff1a;从零开始的完整指南 在量化投资领域&#xff0c;一个稳定且高效的开发环境是成功的关键。本文将引导你一步步搭建起自己的Python量化开发环境&#xff0c;确保你能够顺利开始编写和运行量化策略。 &#x1f680;量化软件开通 &#x1f68…

图像分割的mask有空洞怎么修补

分享一个对实例分割mask修补的方法&#xff0c;希望对大家有所帮助。 1. 这是我准备分割的图片 2 分割结果 可以看到衣服部分有一些没分割出来&#xff0c;二值化图片能清晰看到衣服部分有些黑色未分出的地方。 3 补全mask区域 import cv2 import numpy as npdef fill_mask_h…

Qt 控件概述 QLabel

目录 QLabel显示类控件 label如何做到与窗口同步变化 边框 Frame QLabel显示类控件 ​​ ​​ textFormat &#xff1a;设置文件格式 ​ Pixmap &#xff1a;标签图片 label如何做到与窗口同步变化 Qt中对应用户的操作 &#xff1a; 事件和信号 拖拽窗口大小就会触发…