封装时间轴组件 timeline

要求时间轴的点展示进度百分比,线也根据进度不同展示不同长度的颜色

实现效果:

使用的组件库是vant的circle

子组件:

<template>
  <div class="m-timeline-area" :style="`width: ${width}px`">
    <div class="m-timeline">
      <div
        v-for="(item, index) in timelineDesc"
        :key="index"
        :class="['m-timeline-item', {'last': index === timelineDesc.length - 1}]"
      >
        <div class="u-tail" />
        <div class="u-finish" :style="{'--rate':item.ratePercent,'--borderColor':item.rate==100?'rgb(4, 185, 19)':'rgb(0, 128, 255)'}" />
        <div class="u-dot">
          <van-circle
            v-model="item.currentRate"
            layer-color="#e4e4e4"
            :color="item.rate==100?'rgb(4, 185, 19)':item.rate==0?'#e4e4e4':'rgb(0, 128, 255)'"
            :stroke-width="60"
            :rate="item.rate"
            :speed="100"
            size="44px"
            :text="item.text"
          />
        </div>
        <div class="u-content">{{ item.title || '--' }}
          <div class="time">
            <div>计划完成时间:{{ item.planTime }}</div>
            <div>实际完成时间:{{ item.finishTime }}</div>
          </div>

        </div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  name: 'Timeline',
  props: {
    timelineDesc: { // 时间轴内容数组
      type: Array,
      default: () => {
        return []
      }
    },
    width: { // 时间轴区域总宽度
      type: Number,
      default: 360
    }
  },
  data() {
    return {
      currentRate: 0
    }
  },
  computed: {
    text() {
      return this.currentRate.toFixed(0) + '%'
    }
  }
}
</script>
 <style lang="less" scoped>
 @blue: #1890ff;
 @green: #52c41a;
 @red: #f5222d;
 @gray: rgba(0,0,0,.25);
 .m-timeline-area {
   margin: 0 auto;
   .m-timeline {
     .m-timeline-item {
       position: relative;
       padding-bottom: 10px;
       .u-tail {
         position: absolute;
         top: 44px;
         left: 21px;
         height: calc(100% - 44px);
         border-left: 3px solid #e4e4e4; // 实线
         // border-left: 2px dotted #e8e8e8; // 点线
         // border-left: 2px dashed #e8e8e8; // 虚线
       }
       .u-finish{
         position: absolute;
         top: 44px;
         left: 21px;
         height: calc((100% - 44px)*var(--rate));
         border-left: 3px solid var(--borderColor); // 实线
       }
       .u-dot {
         position: absolute;
         width: 40px;
         height: 40px;
       }
       .u-content {
         position: relative;
         top: 8px;
         margin-left: 50px;
         word-break: break-all;
         word-wrap: break-word;
         line-height: 24px;
         font-size: 16px;
         font-weight: 500;
         .time{
            font-size: 14px;
            margin-top: 10px;
            font-weight: 400;
         }
       }
     }
     .last {
       .u-tail,.u-finish {
         display: none;
       }
     }
   }
 }
 </style>

父组件

 <time-line :timeline-desc="timelineDesc" :width="480" />
import TimeLine from './TimeLine'
  data() {
    return {
      timelineDesc: [
        { title: '启动', planTime: '2024-10-20', finishTime: '2023-12-30', rate: 100, currentRate: 0, text: '100%', ratePercent: 1 },
        { title: '需求确认', planTime: '2024-10-20', finishTime: '2023-12-30', rate: 60, currentRate: 0, text: '60%', ratePercent: 0.6 },
        { title: '项目开发', planTime: '2024-10-20', finishTime: '2023-12-30', rate: 30, currentRate: 0, text: '30%', ratePercent: 0.3 },
        { title: '功能测试', planTime: '2024-10-20', finishTime: '2023-12-30', rate: 0, currentRate: 0, text: '0%', ratePercent: 0 },
        { title: '上线', planTime: '2024-10-20', finishTime: '2023-12-30', rate: 0, currentRate: 0, text: '0%', ratePercent: 0 }
      ],
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

0年费、0月费、免kyc,支持ChatGPTPlus充值虚拟卡

虚拟卡通常是指银行卡的虚拟卡&#xff0c;是在银行卡的基础上的银联、VISA、万事达卡BIN码衍生出的一种虚拟账户。虚拟卡一般都是用于网络上无卡支付&#xff0c;因此虚拟卡都不会配备相应的实体卡片。银行卡的虚拟卡&#xff0c;在分类上与实体卡并无什么区别&#xff0c;也分…

如何在uniapp中使用uviewUI-适合uniapp的ui组件

文章目录 1、如果使用的是npm方式2、如果是用Hbuilder X导入3、通用步骤4、使用5、可以适配微信小程序 前文说了uniapp能用哪些前端框架&#xff0c;今天来推荐uview。其最新版为2.0.36。最近一次更新日期&#xff1a;2023-03-27。 uView是uni-app生态专用的UI框架&#xff0c…

2023.12.4 GIT的概念和组成

目录 1.git的介绍 2.git的历史 开发者&#xff1a;Linus Torvalds Linux的创始人 3.git和svn的对比 svn:集中式管理 git:分布式管理 4.git管理的组成结构 1.git的介绍 git是项目版本管理工具,能自动的将多个版本进行管理存储,类似于快照,多个人共享版本 git的诞生:分布式…

Android 架构实战MVI进阶

MVI架构的原理和流程 MVI架构是一种基于响应式编程的架构模式&#xff0c;它将应用程序分为四个核心组件&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;、意图&#xff08;Intent&#xff09;和状态&#xff08;State&#xff09;。 原理&…

⭐ Unity + ARKIT 介绍 以及 平面检测的实现

在AR插件中&#xff0c;ARKIT是比较特殊的一个&#xff0c;首先他在很多追踪上的效果要比其他的AR插件要好&#xff0c;但是只能在IOS系统设备上运行。 1.首先ARKIT在最新版Unity已经集成在AR Foundation中&#xff0c;那我们就需要ARSession 和ARSessionOrigin这两个重要组件…

京东数据平台(京东商家数据):2023年10月京东饮料行业品牌店铺销量销额排行榜

鲸参谋监测的京东平台10月份饮料市场销售数据已出炉&#xff01; 10月份&#xff0c;饮料市场整体销售上涨。根据鲸参谋平台的数据显示&#xff0c;今年10月份&#xff0c;京东平台饮料市场的销量为670万&#xff0c;同比增长约2%&#xff1b;销售额为3.8亿&#xff0c;同比增长…

盛元广通智慧水务实验室管理系统

盛元广通智慧水务实验室管理系统通过分析基础业务系统流程&#xff0c;对业务系统流程从项目管理、水样管理、易耗品管理、仪器设备管理、异常报警、数据分析方面、旨在提高水质监测工作的效率、准确性和数据管理能力。通过自动化系统的建设解决了自动化操控问题&#xff0c;实…

揭秘MySQL索引世界:概念、分类、应用场景一网打尽

一、索引概念 MySQL索引是一种用于提高数据库查询性能的数据结构。它允许数据库系统更有效地检索数据行&#xff0c;减少了在大型数据集中搜索特定数据的时间。索引的作用类似于书籍的目录&#xff0c;通过提供关键字与实际数据位置之间的映射&#xff0c;加速对数据库表中数据…

idea利用SpringMVC框架整合ThymeLeaf

简洁一些&#xff1a;两个重要文件 1.controller指定html文件:我们访问http://localhost:8080/test package com.example.appledemo.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import o…

ubuntu20.04使用LIO-SAM对热室空间进行重建

一、安装LIO-SAM 1.环境配置 默认已经安装过ros sudo apt-get install -y ros-Noetic-navigation sudo apt-get install -y ros-Noetic-robot-localization sudo apt-get install -y ros-Noetic-robot-state-publisher 安装 gtsam(如果是18.04的ubuntu直接按照官网配置&…

RabbitMQ 的七种消息传递形式

文章目录 一、RabbitMQ 架构简介二、准备工作 三、消息收发1. Hello World2. Work queues3. Publish/Subscrite3.1. Direct3.2. Fanout3.3. Topic3.4. Header 4. Routing5. Topics 大部分情况下&#xff0c;我们可能都是在 Spring Boot 或者 Spring Cloud 环境下使用 RabbitMQ&…

HTTPS 之fiddler抓包--jmeter请求

一、浅谈HTTPS 我们都知道HTTP并非是安全传输&#xff0c;在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的。目前越来越多的企业选择使用HTTPS协议与用户进行通信&#xff0c;如百度、谷歌等。HTTPS在传输数据之前需要客户端&#xff08;浏览器&#xff09;与服务…

2023年,社媒营销的「心智王者」到底是谁?

“在未来社会&#xff0c;每个人都可能在15分钟内出名&#xff0c;并有机会出名15分钟。” ——安迪沃霍尔 2023年品牌营销&#xff0c;社交媒体是绝对主战场&#xff1a; 明星加持&#xff0c;玩转粉丝经济&#xff1b; “满天星”式种草&#xff0c;打造爆品&#xff1b; …

Burp suite抓虚拟机的包

参考&#xff1a;物理机burp抓虚拟机包) 打开物理机的Burp&#xff0c;Proxy->Proxy settings->Add->Specific address&#xff0c;挑个自己喜欢的&#xff08;除了 127.0.0.1 和 IPV6 地址&#xff09;。 端口号自己填一个。 打开虚拟机浏览器&#xff0c;Internet选…

代码随想录算法训练营第五十五天【动态规划part15】 | 392.判断子序列、115.不同的子序列

392.判断子序列 题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 求解思路 也可以用双指针来做。 动规五部曲 1.确定dp数组及其下标含义 以下标i-1为结尾的字符串s&#xff0c;和以下标j-1为结尾的字符串t&#xff0c;相同子序列的长度…

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(四):板载IO与总线扩展IO的编码器与脉冲配置的应用

XPCIE1032H功能简介 XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡&#xff0c;可选6-64轴运动控制&#xff0c;支持多路高速数字输入输出&#xff0c;可轻松实现多轴同步控制和高速数据传输。 XPCIE1032H集成了强大的运动控制功能&#xff0c;结合MotionRT7运动…

自动化框架错误排查:本地全通过,pipline上大部分报错

现象: 最近经过一次切环境和验证码部分的代码重构,果不其然,我们的自动化框架就出错了 我在本地修改调试,并在堡垒机上全部跑过 但在pipline上则大部分报错 进一步排查 这么多case报错,而且报错log都一模一样,推断是底层出错 我在堡垒机上使用命令行来跑case,发现与…

vue 修改 this.$confirm 的文字样式、自定义样式

通常使用 confirm 确认框时&#xff0c;一般这样写&#xff1a; <template><el-button type"text" click"open">点击打开 Message Box</el-button> </template><script>export default {methods: {open() {this.$confirm(此…

14、pytest像用参数一样使用fixture

官方实例 # content of test_fruit.py import pytestclass Fruit:def __init__(self, name):self.name nameself.cubed Falsedef cube(self):self.cubed Trueclass FruitSalad:def __init__(self, *fruit_bowl):self.fruit fruit_bowlself._cube_fruit()def _cube_fruit(s…