当前位置: 首页 > article >正文

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

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.kler.cn/news/288447.html

相关文章:

  • Oracle 网络安全产品安全认证检索
  • 编程如何塑造我们的世界
  • 安宝特科技 | AR眼镜在安保与安防领域的创新应用及前景
  • 项目管理时间痛点解决百宝箱
  • 2025最新剧本杀服务平台构建攻略,Java SpringBoot+Vue,打造沉浸式用户体验!
  • 【Kubernetes部署篇】二进制搭建K8s高可用集群1.26.15版本(超详细,可跟做)
  • VMware命令
  • python基础语法(二)
  • 微软分享其首款定制人工智能芯片Maia 100的更多细节
  • ssh的小绝招,一般人我不告诉他!ssh免密登陆和第三方踏板登陆内网
  • 【负载均衡】LoadBalance场景演示
  • kafka快速上手
  • React 服务器组件
  • 智能汽车座椅制造:RFID技术助力精密加工与全程追踪
  • Getting an error trying to import environment OpenAI Gym
  • mongodb 时间存储使用Date还是时间戳
  • 【Python机器学习】NLP词频背后的含义——主成分分析
  • 使⽤docker部署project-exam-system(2)
  • [翻译+笔记] 用于视频生成的Diffusion Model
  • codesys进行控制虚拟轴运动时出现的一些奇怪bug的解释
  • 山体滑坡监测预警系统—百科分享
  • 开放式耳机怎么戴?开放式耳机比入耳式耳机舒适吗?
  • leetcode43字符串乘法
  • 梯度提升机:数据分析的强有力工具
  • webpack-01
  • 【HarmonyOS 4.0】网络请求 - axios
  • Spring Boot实现发QQ邮件
  • Windows环境Chrome安装提示无可用更新问题解决【2024年版】
  • 【2024-2025源码+文档+调试讲解】微信小程序的城市公交查询系统
  • 前端js—实现字符串拼接