Vue实现步骤条(el-step)+Popover弹出框

news2024/9/25 23:19:44

1、实现效果

hover到每一个步骤条上时,如果当前有未完成情况(unFinishedMe不为空),就使用popover显示出来,如果没有hover时就不显示

2、实现思路

循环app信息列表显示多个进度条 使用el-steps

循环步骤列表,显示多个步骤 使用el-step

使用el-popover,进行未完成情况的展示

3、页面代码

主要点:

el-popover使用v-model绑定一个变量来控制el-poppver的显示与隐藏

要在列表中每一个步骤节点加一个showPopover字段控制el-poppver的显示与隐藏

trigger使用方式要使用manual,自己写代码来控制显示与隐藏

使用@mouseenter和@mouseleave方法控制鼠标移动时el-poppver的显示与隐藏

方法参数需要是列表的索引

<el-row>
      <div v-for="(item,index0) in appVersionInfoList" :key="index0">
        <el-col :span="4" style="margin-left: 80px;margin-top: 50px">
          <div>{{ item.appName }}</div>
        </el-col>
        <el-col :span="20" style="margin-left: 250px;margin-top: 0px">
          <el-steps finish-status="success" style="margin: 20px" :active="1" space="450px">
            <el-step  v-for="(phaseInfo, index) in item.phaseInfoList" :key="index">
              <template slot="description" width="150px" >
                <el-popover
                  :key="index"
                  v-model="phaseInfo.showPopover"
                  placement="right"
                  trigger= "manual">
                  <span style="font-size: 15px;font-weight: bold">未完成情况</span>
                  <el-divider ></el-divider>
                  <ul>
                    <li style="text-align: left" v-for="unfinishName in phaseInfo.unFinishedMe">{{ unfinishName }}</li>
                  </ul>
                  <div slot="reference" style="width: 120px" @mouseenter="handleMouseEnter(index0,index)"
                        @mouseleave="handleMouseLeave(index0,index)" >
                    <div style="margin-top: 30px;font-size: 20px">{{ phaseInfo.phaseName }}</div>
                    <div style="margin-top: 10px;font-size: 15px">{{ phaseInfo.phaseTime }}</div>
                  </div>
                </el-popover>
              </template>
            </el-step>
          </el-steps>
        </el-col>
      </div>
    </el-row>

4、数据结构+方法

appVersionInfoList: [
        {
          appName: "百度App 1.1.1",
          phaseInfoList: [
            {
              phaseName: "需求开发测试",
              phaseTime: "2019-04-11",
              unFinishedMe: [
                "张三",
                "李四",
                "王五",
                "赵六"
              ],
              showPopover:false
            },
            {
              phaseName: "需求集成阶段",
              phaseTime: "2020-04-11",
              unFinishedMe: [
              ],
              showPopover:false
            },
            {
              phaseName: "灰度阶段",
              phaseTime: "2020-04-11",
              unFinishedMe: [
                "张三",
                "李四",
                "王五",
                "赵六"
              ],

              showPopover:false
            }
          ]
        }, {
          appName: "抖音App 1.1.1",
          phaseInfoList: [
            {
              phaseName: "需求开发测试",
              phaseTime: "2019-04-11",
              unFinishedMe: [
              ],
              showPopover:false
            },
            {
              phaseName: "需求集成阶段",
              phaseTime: "2020-04-11",
              unFinishedMe: [
              ],
              showPopover:false
            }
          ]
        }
      ]

    handleMouseEnter(index0,index) {
      var phaseInfoListElement = this.appVersionInfoList[index0].phaseInfoList[index];
      if(phaseInfoListElement.unFinishedMe.length>0){
        phaseInfoListElement.showPopover=true;
      }
    },

    handleMouseLeave(index0,index) {

      this.appVersionInfoList[index0].phaseInfoList[index].showPopover=false;
    }

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

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

相关文章

LeetCode的高频SQL50题(基础版)学习笔记

题目在此网站 https://leetcode.cn/ 查询 # Write your MySQL query statement below select product_id from products where low_fats like Y and recyclable like Y;# Write your MySQL query statement below select name from customer where referee_id !2 or referee_i…

Java笔试面试题AI答之面向对象(7)

文章目录 37. Java成员变量与局部变量的区别有哪些?38. Java 创建一个对象用什么运算符? 对象实体与对象引用有何不同?对象实体与对象引用的不同示例 39. 类的构造方法的作用是什么? 若一个类没有声明构造方法&#xff0c;该程序能正确执行吗? 为什么?40. Java构造方法有…

服了!DELETE 同一行记录也会造成死锁---图文解析

服了&#xff01;DELETE 同一行记录也会造成死锁&#xff01;&#xff01; 作者&#xff1a;转转技术团队 链接&#xff1a;https://juejin.cn/post/7387227689319563290 来源&#xff1a;稀土掘金 MySQL 锁回顾 共享锁 使用共享锁&#xff08;Shared Lock&#xff09;时&am…

模糊视频一键变清晰,从此告别模糊不清的画质

话不多说&#xff0c;咱们直入主题。你是不是有比较模糊的视频&#xff0c;比如老视频&#xff0c;老电影和监控视频&#xff0c;对了&#xff0c;还有日本土特产&#xff08;懂的都懂&#xff09;&#xff0c;模糊的视频看起是不是很不舒服&#xff0c;长期久了还会影响视力影…

这些可视化Python库非常强!

介绍的大体流程是&#xff1a;库名、类型、github star、功能、使用方法、案例、学习资料。 第一部分&#xff1a;数据可视化 pyecharts 类型&#xff1a;可视化图表设计 GitHub Star &#xff1a;5985 功能&#xff1a; 简洁的 API 设计&#xff0c;使用如丝滑般流畅&am…

LLM(二):Prompt

一&#xff0c;什么是Prompt 在人工智能领域&#xff0c;Prompt指的是用户给大型语言模型发出的指令。作用是引导模型生成符合预期主题或内容的文本&#xff0c;从而控制生成结果的方向和内容。 大模型是根据用户提出的问题来输出下文&#xff0c;所以用户提出的问题的质量也…

三种智能指针

智能指针 new和delete 1:new初始化 new未初始化值 int *p new int;//p值未定义string *str new string;//为空串&#xff0c;调用string默认构造函数new 初始化值 int *p new int(100);string *str new string(6,a);//aaaaaavector类型指针 vector<int> *p new v…

pikepdf:一个实用的PDF文件处理Python库

我是东哥&#xff0c;今天给大家介绍一个实用的Python库——pikepdf&#xff0c;它能让你像操作文本文件一样轻松地处理PDF&#xff0c;无论是读取、修改还是保存&#xff0c;都能迎刃而解。 基本介绍 pikepdf是一个基于Python的库&#xff0c;它允许开发者轻松地读取、写入和…

第四课,接收键盘输入

一&#xff0c;关于基本框架中头文件的作用 头文件就是一个工具箱&#xff0c;C中有很多工具&#xff0c;我们最熟悉的cout就是其中之一 引入头文件&#xff1a;如果你想在你的代码中使用工具箱里的工具&#xff0c;C会很大方的让你用&#xff0c;但前提是你必须在本页代码的最…

为什么 CNC 加工会产生毛刺?

在现代机械加工领域&#xff0c;CNC(计算机数控)加工以其高精度、高效率的特点被广泛应用。然而&#xff0c;在 CNC 加工过程中&#xff0c;毛刺的产生常常是一个令人困扰的问题。时利和将解析为什么 CNC 加工会产生毛刺呢? 一、刀具磨损 刀具在长时间的使用过程中会逐渐磨损。…

如何一步快速去除黑神话悟空图片上的文字?一招教会你

设计师朋友们&#xff0c;如果老板让你用去除海报上的文字&#xff0c;你会怎么做&#xff1f; 用PS的内容识别填充&#xff0c;图片就会变模糊再精修简直太麻烦啦&#xff01; 还好我最近找到一个图片处理神器&#xff0c;一键就能P去图片的文字&#xff01;简单又高效&…

day04-面向对象-常用API时间Arrays

一、常用API 1.1 StringBuilder类 StringBuilder类代表可变的字符串对象&#xff0c;理解为一个操作字符串的容器相对于String来说,比本来的操作效率更高 ​ StringBuilder常用方法public StringBuilder(): 构建一个空的可变字符串对象public StringBuilder(String str): 构建…

vue3中vite基于vite-plugin-html的多入口打包

先看打包效果 1、安装vite-plugin-html 2、配置多个入口 每个入口都要有模板(index.html、App.vue、main.js复制一份&#xff0c;根据实际需求调整三个文件) 3、配置vite.config.js 4、代码片段 import { createHtmlPlugin } from vite-plugin-htmlconst htmlParams {minif…

关于springboot的Rest请求映射处理的源码分析(一)

我们在开发中很常见的一种方式是通过请求的类型&#xff0c;也就是restful风格来区别我们的请求接口。 通过请求类型的不同(GET POST PUT DELETE) 来区分即便是请求路径相同的请求。 但是他的底层是如何支持的呢&#xff0c;明明我请求路径都是/user。就因为类型不同就能区分到…

网络层 III(划分子网和构造超网)【★★★★★★】

&#xff08;★★&#xff09;代表非常重要的知识点&#xff0c;&#xff08;★&#xff09;代表重要的知识点。 一、网络层转发分组的过程 分组转发都是基于目的主机所在网络的&#xff0c;这是因为互联网上的网络数远小于主机数&#xff0c;这样可以极大地压缩转发表的大小。…

【Python报错】AttributeError`:`‘NoneType‘ object has no attribute ‘XXXX‘`

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 在Python编程中&#xff0c;AttributeError是一个常见的错误类型&#xff0c;它表示尝试访问的对象没有该属性。本文将探讨…

深度强化学习算法(六)(附带MATLAB程序)

深度强化学习&#xff08;Deep Reinforcement Learning, DRL&#xff09;结合了深度学习和强化学习的优点&#xff0c;能够处理具有高维状态和动作空间的复杂任务。它的核心思想是利用深度神经网络来逼近强化学习中的策略函数和价值函数&#xff0c;从而提高学习能力和决策效率…

CNN网络的一些基本知识

CNN 网络的layer介绍 在卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;中&#xff0c;往往包含许多种不同的网络层交替组成&#xff0c;主要有卷积层&#xff08;Convolutional Layer&#xff09;、池化层&#xff08;Pooling Layer&#…

《黑神话:悟空》爆火,对程序员的 5 点启示(2)

前言 继续上篇未完章节…… 4. 需求捕捉 需求有真需求和伪需求的区别&#xff0c;捕捉和理解用户的真需求对于产品非常重要。 在《黑神话&#xff1a;悟空》面世以后&#xff0c;很多玩家都不吝称赞&#xff0c;有玩家这么评论&#xff1a; 不吹牛逼&#xff0c;这一段我眼…

C#中通过TabControl控制MDI子窗体显示切换的实现过程

类似excel表格中各个表单sheet的切换效果&#xff0c;使用tabcontrol控件实现类似的功能。效果如下&#xff1a; 过程涉及父窗体MDIParent1、子窗体main、自定义基础功能类MdiChildBase。 基础功能类MdiChildBase继承自Form创建&#xff0c;定义了一个委托SetTabControlDelega…