更新大理市民卡app
diff --git a/uview-ui/components/u-line-progress/u-line-progress.vue b/uview-ui/components/u-line-progress/u-line-progress.vue
new file mode 100644
index 0000000..77e2da2
--- /dev/null
+++ b/uview-ui/components/u-line-progress/u-line-progress.vue
@@ -0,0 +1,147 @@
+<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>