uniapp中使用封装步骤条组件

针对步骤条封装完终于清清楚楚啦

先看效果:

附上代码:使用可直接复用:数据是写在了当前组件中,如有必须,可以使用其中的props传值stepInfos传递相应的数据,根据steps步数就可以控制走到哪一步啦

复制代码
<template>
	<view class="step-bar">
		<view class="step_item" v-for="(item,index) in stepInfo.list" :key="item.id">
			<view :class="stepInfo.step >= index+1 ? 'circle circle-active':'circle'"></view>
			<view :class="stepInfo.step >= index+2 ? 'line line-active':'line'" v-if="index!==stepInfo.list.length-1">
			</view>
			<view class="middle-box">
				<text
					:class="stepInfo.step < index+1 ? 'text1-actived':stepInfo.step == index+1?'text1-active':text1">{{item.name}}</text>
				<text class="text2">{{item.time}}</text>
			</view>
			<view class="status_text"
				:class="stepInfo.step < index+1 ? 'text1-actived':stepInfo.step == index+1?'text1-active':text1">
				{{item.status}}
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		props: {
			// 传递步骤参数
			stepInfo: {
				type: Object,
				default: function() {
					return {
						list: [],
						step: 0
					}
				}
			}

		},
		data() {
			return {
				stepInfo: {
					step: 3,
					list: [{
						id: 1,
						name: '发起充值',
						time: '2020-12-12 12:47:56',
						status: '已完成'
					}, {
						id: 2,
						name: '处理中',
						time: '2020-12-12 12:47:56',
						status: '进行中'
					}, {
						id: 3,
						name: '到账成功',
						time: '2020-12-12 12:47:56',
						status: '未开始'
					}]
				}
			}
		},
	}
</script>

<style lang="scss" scoped>
	.step_item {
		position: relative;
		height: 144rpx;
		display: flex;

		.line {
			position: absolute;
			top: 40rpx;
			left: 8rpx;
			content: "";
			width: 4rpx;
			height: 100rpx;
			background-color: #E6E8EF;
		}

		.line-active {
			background-color: #FF2B46;
		}
	}

	.circle {
		width: 20rpx;
		height: 20rpx;
		margin-right: 40rpx;
		margin-top: 10rpx;
		border-radius: 50%;
		background-color: #E6E8EF;
	}

	.circle-active {
		background-color: #FF2B46;
	}

	.middle-box {
		display: flex;
		flex-direction: column;

		.text2 {
			color: #999999;
			font-size: 24rpx;
		}
	}


	.text1 {
		color: #666666;
		font-size: 28rpx;
	}

	.text1-active {
		color: #FF2B46;
	}

	.text1-actived {
		color: #333333;
	}

	.status_text {
		flex-grow: 1;
		display: flex;
		justify-content: flex-end;
		font-size: 28rpx;
	}


	.status_text_active {
		// color: #FF2B46;
	}
</style>
相关推荐
To_OC1 天前
别再瞎写 React Router!7 个高频踩坑点一次性讲透
前端·javascript·react.js
岭南灯火1 天前
前端通用交互式几何编辑器的开发经验
前端·设计模式·架构
岭南灯火1 天前
前端通用交互式几何编辑器的设计法则 7 - 设计模式与原则
前端·设计模式·架构
岭南灯火1 天前
前端通用交互式几何编辑器的设计法则 4 - 绘制、悬停与编辑
前端·设计模式·架构
岭南灯火1 天前
前端通用交互式几何编辑器的设计法则 3 - 数据对象的设计
前端·javascript·架构
Jackson__1 天前
从 LLM 到 Agent:一篇文章搞懂 AI 圈热词!
前端·agent·ai编程
岭南灯火1 天前
前端通用交互式几何编辑器的设计法则 2 - 交互事件流
前端·javascript·架构
岭南灯火1 天前
前端通用交互式几何编辑器的设计法则 6 - 配套设施与工程化
前端·设计模式·架构
岭南灯火1 天前
前端通用交互式几何编辑器的设计法则 5 - 辅助元素的设计
前端·设计模式·架构
岭南灯火1 天前
前端通用交互式几何编辑器的设计法则 1 - 入口的对象及其成员
前端·javascript·架构