77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Vue
		
	
	
| <template>
 | ||
|   <view class="u-time-axis-item">
 | ||
|     <slot name="content" />
 | ||
|     <view class="u-time-axis-node" :style="[nodeStyle]">
 | ||
|       <slot name="node"><view class="u-dot"></view></slot>
 | ||
|     </view>
 | ||
|   </view>
 | ||
| </template>
 | ||
| 
 | ||
| <script>
 | ||
|   /**
 | ||
|    * timeLineItem 时间轴Item
 | ||
|    * @description 时间轴组件一般用于物流信息展示,各种跟时间相关的记录等场景。(搭配u-time-line使用)
 | ||
|    * @tutorial https://www.uviewui.com/components/timeLine.html
 | ||
|    * @property {String} bg-color 左边节点的背景颜色,一般通过slot内容自定义背景颜色即可(默认#ffffff)
 | ||
|    * @property {String Number} node-top 节点左边图标绝对定位的top值,单位rpx
 | ||
|    * @example <u-time-line-item node-top="2">...</u-time-line-item>
 | ||
|    */
 | ||
|   export default {
 | ||
|     name: 'u-time-line-item',
 | ||
|     props: {
 | ||
|       // 节点的背景颜色
 | ||
|       bgColor: {
 | ||
|         type: String,
 | ||
|         default: '#ffffff',
 | ||
|       },
 | ||
|       // 节点左边图标绝对定位的top值
 | ||
|       nodeTop: {
 | ||
|         type: [String, Number],
 | ||
|         default: '',
 | ||
|       },
 | ||
|     },
 | ||
|     data() {
 | ||
|       return {};
 | ||
|     },
 | ||
|     computed: {
 | ||
|       nodeStyle() {
 | ||
|         let style = {
 | ||
|           backgroundColor: this.bgColor,
 | ||
|         };
 | ||
|         if (this.nodeTop != '') style.top = this.nodeTop + 'rpx';
 | ||
|         return style;
 | ||
|       },
 | ||
|     },
 | ||
|   };
 | ||
| </script>
 | ||
| 
 | ||
| <style lang="scss" scoped>
 | ||
|   .u-time-axis-item {
 | ||
|     display: flex;
 | ||
|     flex-direction: column;
 | ||
|     width: 100%;
 | ||
|     position: relative;
 | ||
|     margin-bottom: 32rpx;
 | ||
|   }
 | ||
| 
 | ||
|   .u-time-axis-node {
 | ||
|     position: absolute;
 | ||
|     top: 12rpx;
 | ||
|     left: -40rpx;
 | ||
|     transform-origin: 0;
 | ||
|     transform: translateX(-50%);
 | ||
|     display: flex;
 | ||
|     align-items: center;
 | ||
|     justify-content: center;
 | ||
|     z-index: 1;
 | ||
|     font-size: 24rpx;
 | ||
|   }
 | ||
| 
 | ||
|   .u-dot {
 | ||
|     height: 16rpx;
 | ||
|     width: 16rpx;
 | ||
|     border-radius: 100rpx;
 | ||
|     background: #ddd;
 | ||
|   }
 | ||
| </style>
 |