弧形进度条

12.4 弧形进度条

#midea-progresscycle-view 环形进度条

APP内置组件,功能由原生实现,无需引入H5组件。

#实例:

#基础用法

<template>
  <div class="wrapper">
    <dof-minibar
      title="progresscycle"
      background-color="#0092d7"
      text-color="#ffffff"
      :isImage="true"
      :left-button="leftButton"
      right-text="Home"
    ></dof-minibar>
    <scroller class="scroller">
      <div class="progresscycle-wrapper">
          <midea-progresscycle-view v-if="isShow" class="progresscycle" :data="chartData"></midea-progresscycle-view>
      </div>
      <div class="param-wrapper">
          <div class="item-group">
              <text class="text-label">起始角度:</text>
              <input class="text-input" type="text" placeholder="起始角度" v-model="chartData.startingSlice" />
          </div>
          <div class="item-group">
              <text class="text-label">总进度:</text>
              <input class="text-input" type="text" placeholder="总进度" v-model="chartData.totalCounter" />
          </div>
          <div class="item-group">
              <text class="text-label">步长:</text>
              <input class="text-input" type="text" placeholder="步长" v-model="step" />
          </div>
      </div>

      <div class="btn-wrapper">
        <dof-button
          :text="(intervalHandler?'停止':'开始')+'增加进度(步长/秒)'"
          type="primary"
          :btnStyle="{'width': '500px', 'height':'60px', 'margin-top':'0px'}"
          @dofButtonClicked="dofButtonClicked">
        </dof-button>
      </div>
      <div class="btn-wrapper">
        <dof-button
          text="增加进度"
          type="primary"
          :btnStyle="{'width': '500px', 'height':'60px', 'margin-top':'0px'}"
          @dofButtonClicked="dofButtonClicked1">
        </dof-button>
      </div>
      <div class="btn-wrapper">
        <dof-button
          text="重新加载"
          type="primary"
          :btnStyle="{'width': '500px', 'height':'60px', 'margin-top':'0px'}"
          @dofButtonClicked="dofButtonClicked2">
        </dof-button>
      </div>
      <div class="btn-wrapper">
        <dof-button
          text="清零"
          type="primary"
          :btnStyle="{'width': '500px', 'height':'60px', 'margin-top':'0px'}"
          @dofButtonClicked="dofButtonClicked3">
        </dof-button>
      </div>
    </scroller>
  </div>
</template>

<style scoped>
.wrapper {
    background-image: linear-gradient(to bottom, #ffbb00, #ffaa10);
}
.scroller {
    padding-bottom: 50px;
}
.progresscycle-wrapper {
    width: 750px;
    justify-content: center;
    align-items: center;
    /* border-color: red;
    border-width: 1px; */
    padding: 20px;
}
.progresscycle {
    width: 480px;
    height: 480px;
    justify-content: center;
    align-items: center;
}
.param-wrapper {
    width: 750px;
    padding-top: 32px;
    padding-left: 32px;
    padding-right: 32px;
    background-image: linear-gradient(to bottom, #ffbb00, #ffaa10);
}
.item-group {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    padding-top: 10px;
    padding-bottom: 10px;
}
.text-label {
    font-family: PingFangSC-Regular;
    font-size: 28px;
    color: #000000;
    width: 150px;
    padding-top: 16px;
    margin-bottom: 16px;
    padding-right: 20px;
    text-align: right;
}
.text-input {
    flex: 1;
    font-family: PingFangSC-Regular;
    font-size: 28px;
    color: #000000;
    border-radius: 4px;
    border-color: #e5e5e8;
    border-width: 1px;
    /* height: 72px; */
    padding-top: 16px;
    padding-left: 22px;
    padding-right: 50px;
    padding-bottom: 16px;
    margin-bottom: 16px;
    background-color: #fafafa;
}

.btn-wrapper {
  margin-bottom: 20px;
  width: 750px;
  align-items: center;
}
</style>

<script>
import { DofMinibar, DofButton} from 'dolphin-weex-ui'
export default {
  components: {DofMinibar, DofButton },
  data: () => ({
    isShow: true,
    intervalHandler: null,
    step: 5,
    chartData: {
        "completedColor": "#eeffffff", //环形进度条未完成后的颜色默认#267AFF
        "incompletedColor": "#eef5d5d5", //环形进度条未完成后的颜色,默认透明
        "thickness": 6, //环形进度条宽度,默认4
        "cornerRadius": 240,  //环形的半径,默认是width/2
        "totalCounter": 360, //环形进度条的最大值,默认是360
        "progressCounter": 0, //设置进度值,默认是从0-360, 默认为0
        "autoProgress": false, //设置是否需要自动执行环形进度,默认false, 如果设置为true,则每秒进度值+1操作
        "clockwise": true, //环形自动执行进度的方向,默认是true,即顺时针方向,false为逆时针方向
        "startingSlice": 180, //环形进度开始的起始位置,当totalCounter为360的时候,0: 0点钟位置起点,90:3点钟位置起点 180:6点钟位置起点
        "pointShow": true, //环形进度中的进度球是否需要显示,默认不显示
        "pointRadius": 8, //默认是环形进度宽度的一半
        "pointColor": "#FFFFFF", //环形进度中的进度球颜色
        "pointImageBase64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAAERklEQVRYR82Yf2jUdRjHX5875137cbcfOF1Omfij1DDC3BKEWeCPUMERy2pgkQvBQUY5EfrB6AfIlrVFG4gYJWmaxASV/AHlQKptRTRSywyHu5oudttOt+623T3x3Pe8rbntbiTdvv99P5/n83ne3/fn/Tyf5/ka4nkqxObKJd3RS1Y/FCI8JpBnDLOATASvQJuBVoSvptpoCKTQ6fPQTYUJxXJhYhlkV8t0PxRjWIeQH3Ya6zF0As0IJ51wtOMlc2O8JWOD2CtJbj9FCK8KLACcsXyPMu83cBnDOz1O6tlqBkbbY1QQGXvFHQpQJiHeABy6cKodpiXD/AxYPxcezIbcVEh3QrcfPLfgpw448Tv81gV/9UF/MOoyYGy8aXNQ27XV9IwEcgcI13syDzsVwDMI4fn7MmHT/ZbzBZlYg2M8Alz2WmCO/AK/eiOGBp06RJAK38vmyvDl/9pPGQj6qUV4CrAbA88uhp0FMD0ZptjiP5DBENzog8pG+OQCiEKAIIbDdidlwxkZAqEaCFAuwtvKQHISlD0EryyDe6ZYznsH4JoPzrbC6Va42gNdfshwwhw3rMmDVXkw2wUpSdaavwdhTzPU/gh9qgiDGMNrPQ6qbmskCsJdI0+KcEA1oAzsWDYEICjw/XU4cAGOX4GewNiMuB2wYR5sXgwPz1A6h4C82xxlJGAMm3u2m891pzAIDcMAnBFYou/PPQC7C4cY+PIqlJ8Dz83oJuOei35EbhpUrYTH5wwxsqsBPv7ZejfQ4oDVGr4GTUSZbCNElYahirC+CGamgjJwphVKTkAwZsq5E5fdBgfXw+o8i5E/bkLRsahY/dgo93mpM2kfSpYJ8inCWg3DXQWwfaklwsZ22HIK2nzxC3Kk5SwX7F8LBTkwEIIPfoDdjZHwNZwiSImZViPzA8J3mglnpkH9RiskVYQ7G+DgxfiOYCyYejQli6Cy0BKrhqyyoawAXofhEeOukVIR9unIytlwrMgSyqVOWHN0fBHGy4+K9XQxLMwinCw21sO5axFtCC8Yd7UcEnhah/Y8CqVhaVq0vX4+Xjex7d5aAS8utez2tcCOr6MC/cy4quUbYLkOnd0E+TOsyXVfwHlP7M3jtViRCyefsKybrsOqI9GV3+pxtImQq0OXtsC9qdbkoo+i5xavn3HtVG8Xn7dM/rwFC/dHmDB4FESvCMk61F4GyZHsmFMXyXB3BQJoBm7fZm3WNwg5tVEQfaqJNiGBTIBnkmhiMkSH+30pFZPgPJHQjGnodMDyyXF3hG/RdDR4/v9bFMp93dRNknoikowSXlmFcUyGGlNxjFlt50N2CiRNoNrWAqajFyqbJlJtR44l4X3H7bsqVge2YS4siXRgWu5r2a8dWEsHHL8bHVj00kx0Lzr89g535TaKkQl05eDF0PTfu/LhSDShuUh32MnqD1GIGfF/ArwiI/5PBOn0+eL7P/EPYtpkF4ik2AkAAAAASUVORK5CYII=", //环形进度中的进度球的图片base64
    }
  }),

  methods: {
    dofButtonClicked() {
      let tempObj = JSON.parse(JSON.stringify(this.chartData))
      if (this.intervalHandler) {
          clearInterval(this.intervalHandler)
          this.intervalHandler = null
      } else {
          this.intervalHandler = setInterval(() => {
              tempObj.progressCounter += (this.step || 1)
              if (tempObj.progressCounter >= tempObj.totalCounter) {
                  tempObj.progressCounter = tempObj.totalCounter
                  clearInterval(this.intervalHandler)
                  this.intervalHandler = null
              }
              this.chartData = JSON.parse(JSON.stringify(tempObj))
          }, 1000);
      }
    },

    dofButtonClicked1() {
        let tempObj = JSON.parse(JSON.stringify(this.chartData))
        tempObj.progressCounter += (this.step || 1)
        if (tempObj.progressCounter <= tempObj.totalCounter) {
            if (tempObj.progressCounter >= tempObj.totalCounter) {
                tempObj.progressCounter = tempObj.totalCounter
                clearInterval(this.intervalHandler)
                this.intervalHandler = null
            }
            this.chartData = JSON.parse(JSON.stringify(tempObj))
        }
    },

    dofButtonClicked2() {
        this.isShow = false
        this.$nextTick(() => {
            this.isShow = true
        })
    },

    dofButtonClicked3() {
        let tempObj = JSON.parse(JSON.stringify(this.chartData))
        tempObj.progressCounter = 0
        this.chartData = JSON.parse(JSON.stringify(tempObj))
    }
  }
}
</script>

#Attributes

Prop Type Required Default Description
data Object N 注1 环形进度条参数
  • 注1
{
    "completedColor": "#00ffff", //环形进度条未完成后的颜色默认#267AFF
    "incompletedColor": "#eef5d5d5", //环形进度条未完成后的颜色,默认透明
    "thickness": 4, //环形进度条宽度,默认4
    "cornerRadius": 40, //环形的半径,默认是width/2
    "totalCounter": 360, //环形进度条的最大值,默认是360
    "progressCounter": 100, //设置进度值,默认是从0-360, 默认为0
    "autoProgress": false, //设置是否需要自动执行环形进度,默认false, 如果设置为true,则每秒进度值+1操作
    "clockwise": true, //环形自动执行进度的方向,默认是true,即顺时针方向,false为逆时针方向
    "startingSlice": 180, //环形进度开始的起始位置,当totalCounter为360的时候,0: 0点钟位置起点,90:3点钟位置起点 180:6点钟位置起点
    "pointShow": false, //环形进度中的进度球是否需要显示,默认不显示
    "pointRadius": 8, //默认是环形进度宽度的一半
    "pointColor": "#FFFFFF", //环形进度中的进度球颜色
    "backgroundColor":"#FF3B30",//环形背景色默认透明
    "backgroundRadius" : 48, //环形背景半径,默认和cornerRadius 持平
    "text":"PCB", //中间字体
    "textSize":18, //字体大小 默认14
    "textColor":"#FFFFFF", //字体颜色
    "pointImageBase64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAAERklEQVRYR82Yf2jUdRjHX5875137cbcfOF1Omfij1DDC3BKEWeCPUMERy2pgkQvBQUY5EfrB6AfIlrVFG4gYJWmaxASV/AHlQKptRTRSywyHu5oudttOt+623T3x3Pe8rbntbiTdvv99P5/n83ne3/fn/Tyf5/ka4nkqxObKJd3RS1Y/FCI8JpBnDLOATASvQJuBVoSvptpoCKTQ6fPQTYUJxXJhYhlkV8t0PxRjWIeQH3Ya6zF0As0IJ51wtOMlc2O8JWOD2CtJbj9FCK8KLACcsXyPMu83cBnDOz1O6tlqBkbbY1QQGXvFHQpQJiHeABy6cKodpiXD/AxYPxcezIbcVEh3QrcfPLfgpw448Tv81gV/9UF/MOoyYGy8aXNQ27XV9IwEcgcI13syDzsVwDMI4fn7MmHT/ZbzBZlYg2M8Alz2WmCO/AK/eiOGBp06RJAK38vmyvDl/9pPGQj6qUV4CrAbA88uhp0FMD0ZptjiP5DBENzog8pG+OQCiEKAIIbDdidlwxkZAqEaCFAuwtvKQHISlD0EryyDe6ZYznsH4JoPzrbC6Va42gNdfshwwhw3rMmDVXkw2wUpSdaavwdhTzPU/gh9qgiDGMNrPQ6qbmskCsJdI0+KcEA1oAzsWDYEICjw/XU4cAGOX4GewNiMuB2wYR5sXgwPz1A6h4C82xxlJGAMm3u2m891pzAIDcMAnBFYou/PPQC7C4cY+PIqlJ8Dz83oJuOei35EbhpUrYTH5wwxsqsBPv7ZejfQ4oDVGr4GTUSZbCNElYahirC+CGamgjJwphVKTkAwZsq5E5fdBgfXw+o8i5E/bkLRsahY/dgo93mpM2kfSpYJ8inCWg3DXQWwfaklwsZ22HIK2nzxC3Kk5SwX7F8LBTkwEIIPfoDdjZHwNZwiSImZViPzA8J3mglnpkH9RiskVYQ7G+DgxfiOYCyYejQli6Cy0BKrhqyyoawAXofhEeOukVIR9unIytlwrMgSyqVOWHN0fBHGy4+K9XQxLMwinCw21sO5axFtCC8Yd7UcEnhah/Y8CqVhaVq0vX4+Xjex7d5aAS8utez2tcCOr6MC/cy4quUbYLkOnd0E+TOsyXVfwHlP7M3jtViRCyefsKybrsOqI9GV3+pxtImQq0OXtsC9qdbkoo+i5xavn3HtVG8Xn7dM/rwFC/dHmDB4FESvCMk61F4GyZHsmFMXyXB3BQJoBm7fZm3WNwg5tVEQfaqJNiGBTIBnkmhiMkSH+30pFZPgPJHQjGnodMDyyXF3hG/RdDR4/v9bFMp93dRNknoikowSXlmFcUyGGlNxjFlt50N2CiRNoNrWAqajFyqbJlJtR44l4X3H7bsqVge2YS4siXRgWu5r2a8dWEsHHL8bHVj00kx0Lzr89g535TaKkQl05eDF0PTfu/LhSDShuUh32MnqD1GIGfF/ArwiI/5PBOn0+eL7P/EPYtpkF4ik2AkAAAAASUVORK5CYII=", //环形进度中的进度球的图片base64
}

#Events

事件名称 说明 回调参数
progresscycleTap 点击组件是触发事件 event
posted on 2024-12-13 09:18  AtlasLapetos  阅读(41)  评论(0)    收藏  举报