Newer
Older
smartwell_front / src / views / zhangqiu / components / progressBar.vue
liuyangyingjie on 16 Aug 2022 1 KB feat(view): 新增章丘驾驶舱看板
<template>
  <div>
    <div class="title"><div> <slot>test</slot></div>  <div class="percent">{{percent}}% <img src="@/views/zhangqiu/resources/1.png" alt=""></div></div>
    <div class="progress-wrap" :style="{backgroundColor:wrapColor,borderColor:borderColor}">
    <div class="progress-dot" :style="{opacity:i / dotCount,backgroundColor:dotColor}" v-for="i in dotCount" :key="i"></div>
    <div class="progress-dot" :style="{backgroundColor:'#888'}" v-for="i in (70-dotCount)" :key="i"></div>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    percent: {
      type: Number,
      default: 0
    },
    wrapColor: {
      type: String,
      default: ''
    },
    borderColor: {
      type: String,
      default: ''
    },
    dotColor: {
      type: String,
      default: ''
    },
  },
  computed: {
    dotCount() {
      return this.percent < 0 ? 0 : (this.percent >= 100 ? 70 : ( Math.ceil(this.percent / 100 * 70)));
    //    return this.percent < 0 ? 0 : (this.percent > 100 ? 25 : (this.percent > 50 ? Math.floor(this.percent / 100 * 25) : Math.ceil(this.percent / 100 * 25)));
    },
  },
}
</script>
<style lang="scss" scoped>
.title{
    display: flex;
    justify-content: space-between;
    color: #fff;
    font-size: 12px;
    font-weight: 600;
}
.percent{
 position: relative;
 img{
    width: 100%;
    position: absolute;
    top: 0;
    height: 100%;
    left: 0;
 }
}
.progress-wrap {
  display: inline-flex;
  align-items: center;
  min-width: 10px;
  border-radius: 2px;
  padding: 1px;
  border: 1px solid transparent;
  box-sizing: border-box;
  .progress-dot {
    width: 4px;
    height: 12px;
    border-radius: 3px;
    // background-color: #1661ad;
    margin-right: 1px;
    &:last-child {
      margin-right: 0;
    }
  }
}
</style>