| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | 
							- <template>
 
- 	<view class="u-progress" :style="{
 
- 		borderRadius: round ? '100rpx' : 0,
 
- 		height: height + 'rpx',
 
- 		backgroundColor: inactiveColor
 
- 	}">
 
- 		<view :class="[
 
- 			type ? `u-type-${type}-bg` : '',
 
- 			striped ? 'u-striped' : '',
 
- 			striped && stripedActive ? 'u-striped-active' : ''
 
- 		]" class="u-active" :style="[progressStyle]">
 
- 			<slot v-if="$slots.default || $slots.$default" />
 
- 			<block v-else-if="showPercent">
 
- 				{{percent + '%'}}
 
- 			</block>
 
- 		</view>
 
- 	</view>
 
- </template>
 
- <script>
 
- 	/**
 
- 	 * lineProgress 线型进度条
 
- 	 * @description 展示操作或任务的当前进度,比如上传文件,是一个线形的进度条。
 
- 	 * @tutorial https://www.uviewui.com/components/lineProgress.html
 
- 	 * @property {String Number} percent 进度条百分比值,为数值类型,0-100
 
- 	 * @property {Boolean} round 进度条两端是否为半圆(默认true)
 
- 	 * @property {String} type 如设置,active-color值将会失效
 
- 	 * @property {String} active-color 进度条激活部分的颜色(默认#19be6b)
 
- 	 * @property {String} inactive-color 进度条的底色(默认#ececec)
 
- 	 * @property {Boolean} show-percent 是否在进度条内部显示当前的百分比值数值(默认true)
 
- 	 * @property {String Number} height 进度条的高度,单位rpx(默认28)
 
- 	 * @property {Boolean} striped 是否显示进度条激活部分的条纹(默认false)
 
- 	 * @property {Boolean} striped-active 条纹是否具有动态效果(默认false)
 
- 	 * @example <u-line-progress :percent="70" :show-percent="true"></u-line-progress>
 
- 	 */
 
- 	export default {
 
- 		name: "u-line-progress",
 
- 		props: {
 
- 			// 两端是否显示半圆形
 
- 			round: {
 
- 				type: Boolean,
 
- 				default: true
 
- 			},
 
- 			// 主题颜色
 
- 			type: {
 
- 				type: String,
 
- 				default: ''
 
- 			},
 
- 			// 激活部分的颜色
 
- 			activeColor: {
 
- 				type: String,
 
- 				default: '#19be6b'
 
- 			},
 
- 			inactiveColor: {
 
- 				type: String,
 
- 				default: '#ececec'
 
- 			},
 
- 			// 进度百分比,数值
 
- 			percent: {
 
- 				type: Number,
 
- 				default: 0
 
- 			},
 
- 			// 是否在进度条内部显示百分比的值
 
- 			showPercent: {
 
- 				type: Boolean,
 
- 				default: true
 
- 			},
 
- 			// 进度条的高度,单位rpx
 
- 			height: {
 
- 				type: [Number, String],
 
- 				default: 28
 
- 			},
 
- 			// 是否显示条纹
 
- 			striped: {
 
- 				type: Boolean,
 
- 				default: false
 
- 			},
 
- 			// 条纹是否显示活动状态
 
- 			stripedActive: {
 
- 				type: Boolean,
 
- 				default: false
 
- 			}
 
- 		},
 
- 		data() {
 
- 			return {
 
- 			}
 
- 		},
 
- 		computed: {
 
- 			progressStyle() {
 
- 				let style = {};
 
- 				style.width = this.percent + '%';
 
- 				if(this.activeColor) style.backgroundColor = this.activeColor;
 
- 				return style;
 
- 			}
 
- 		},
 
- 		methods: {
 
- 		}
 
- 	}
 
- </script>
 
- <style lang="scss" scoped>
 
- 	@import "../../libs/css/style.components.scss";
 
- 	
 
- 	.u-progress {
 
- 		overflow: hidden;
 
- 		height: 15px;
 
- 		/* #ifndef APP-NVUE */
 
- 		display: inline-flex;
 
- 		/* #endif */
 
- 		align-items: center;
 
- 		width: 100%;
 
- 		border-radius: 100rpx;
 
- 	}
 
- 	.u-active {
 
- 		width: 0;
 
- 		height: 100%;
 
- 		align-items: center;
 
- 		@include vue-flex;
 
- 		justify-items: flex-end;
 
- 		justify-content: space-around;
 
- 		font-size: 20rpx;
 
- 		color: #ffffff;
 
- 		transition: all 0.4s ease;
 
- 	}
 
- 	.u-striped {
 
- 		background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
 
- 		background-size: 39px 39px;
 
- 	}
 
- 	.u-striped-active {
 
- 		animation: progress-stripes 2s linear infinite;
 
- 	}
 
- 	@keyframes progress-stripes {
 
- 		0% {
 
- 			background-position: 0 0;
 
- 		}
 
- 		100% {
 
- 			background-position: 39px 0;
 
- 		}
 
- 	}
 
- </style>
 
 
  |