效果图:
完整代码:
1 <template> 2 <div> 3 <div class="content-view"> 4 <div v-for="(item, index) in progressList" class="item-view"> 5 <el-progress :text-inside="true" :stroke-width="26" :percentage="setItemProgress(item)" v-if="!isNaN(parseInt((item.planNum/item.completeNum)*100))" 6 :status="setItemStatus(item)" :format="setItemText(item)"></el-progress> 7 </div> 8 </div> 9 </div> 10 11 </template> 12 13 <script> 14 export default { 15 data() { 16 return { 17 progressList: [{ 18 planNum: 150, 19 completeNum: 80 20 }, 21 { 22 planNum: 70, 23 completeNum: 70 24 }, 25 { 26 planNum: 70, 27 completeNum: 90 28 } 29 ] 30 31 } 32 }, 33 34 methods: { 35 setItemProgress(data) { 36 if (data.planNum > data.completeNum) { 37 return 100 38 } else { 39 return parseInt((data.planNum / data.completeNum).toFixed(1) * 100) 40 } 41 }, 42 43 setItemText(row) { 44 return () => { 45 return '计划: ' + row.planNum + ',完成: ' + row.completeNum 46 } 47 }, 48 49 setItemStatus(data) { 50 if (data.planNum > data.completeNum) { 51 return 'exception' 52 } else if (data.planNum === data.completeNum) { 53 return 'success' 54 } else { 55 return 'warning' 56 } 57 } 58 } 59 } 60 </script> 61 <style lang="scss" scoped> 62 .content-view { 63 height: calc(100vh - 84px); 64 background-color: #FFFFFF; 65 padding: 20px; 66 } 67 68 .item-view { 69 margin-bottom: 1rem; 70 } 71 </style>