el-timeline嵌套el-timeline使用时,子级el-timeline节点时间线不显示

Posted 小行星125

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了el-timeline嵌套el-timeline使用时,子级el-timeline节点时间线不显示相关的知识,希望对你有一定的参考价值。

问题描述:
el-timeline嵌套el-timeline使用时,子级el-timeline节点时间线不显示。
问题结果如下图所示

待实现效果如下图所示

问题原因:
父级el-timeline的第三个el-timeline-item在elementUI原生样式中会自动定义为末级节点,其中末级节点样式影响了子节点样式,故子节点时间线不显示。
如下图所示

解决思路:
给嵌套使用的子级el-timeline组件的el-timeline-item增加属性区分当前节点是否为最后一个节点,一般来说接口会返回一个状态来区分当前节点是否已审批,顺序排列时,未审批节点即为最后一个节点,利用这个思路我们给子级el-timeline的末级节点单独书写样式来解决这一问题。

step1:根据是否已审批属性判断当前节点是否为最后一个节点,增加对应标识
     this.resultList = res.data // 接口返回数据列表
     let subIndex = this.resultList.findIndex(item => item.taskHandleStatus === 'UNDO') // 获取未审批节点下标
      if (subIndex > -1) 
          let item = this.resultList[subIndex]
          this.$set(item, 'isLastNode', true) // 给未审批节点设置标识
       
step2:根据标识自定义节点样式;
     // 子级el-timeline组件标签
      <el-timeline>
          <el-timeline-item
               v-for="(item, index) in resultList"
               :key="'icon_' + index"
               :class="item.isNextNode ? 'undo-node' : 'pass-node'"
           ></el-timeline-item>
      </el-timeline>
      
   // 自定义样式----注意一定要加important 才能够覆盖原生elementUI的样式属性
   .pass-node .el-timeline-item__tail 
    	border-color: #81d15b; 
    	display: block !important; // 末级节点显示时间线
  	
   .pass-node:last-child .el-timeline-item__tail 
    	display: none !important; // 最后一个末级节点不显示时间线
  	

以上是关于el-timeline嵌套el-timeline使用时,子级el-timeline节点时间线不显示的主要内容,如果未能解决你的问题,请参考以下文章

vue基于el-timeline组件实现动态表格时间线

时间轴组件(Vue+element)

Django怎么使一个页面嵌套另一个页面

如何使用媒体查询或运算符使 SASS 嵌套嵌套媒体查询工作

如何使嵌套路由继承父级的属性?

如何使用嵌套别名使查询更简单?