progress-bar.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template>
  2. <div class="progress-bar">
  3. <div class="progress-bar-header">
  4. <div class="progress-bar-title gray-l font-md">{{ title }}</div>
  5. <div class="progress-bar-state" :class="'bg-' + color"></div>
  6. </div>
  7. <div class="progress-bar-body">
  8. <div class="progress-bar-name">
  9. <div class="progress-bar-text gray font-sm">{{ name }}</div>
  10. <div class="progress-bar-progress font-md" :class="color">{{progress}}%</div>
  11. </div>
  12. <div class="progress-bar-box">
  13. <div class="progress-bar-bar" :class="'bg-' + color" :style="'width: ' + progress + '%;'"></div>
  14. </div>
  15. </div>
  16. </div>
  17. </template>
  18. <script>
  19. export default {
  20. name: "progress-bar",
  21. componentName: "progress-bar",
  22. props: {
  23. progress: {
  24. type: Number,
  25. default: 80,
  26. },
  27. color: {
  28. type: String,
  29. default: "green",
  30. },
  31. title: {
  32. type: String,
  33. default: "风机",
  34. },
  35. name: {
  36. type: String,
  37. default: "风机健康度",
  38. },
  39. },
  40. data() {},
  41. methods: {},
  42. };
  43. </script>
  44. <style lang="less">
  45. .progress-bar {
  46. width: 100%;
  47. .progress-bar-header {
  48. width: 100%;
  49. height: 3.148vh;
  50. background: #53626833;
  51. display: flex;
  52. align-items: center;
  53. padding: 0 1.852vh;
  54. .progress-bar-state {
  55. width: 1.111vh;
  56. height: 1.111vh;
  57. border-radius: 50%;
  58. margin-left: auto;
  59. position: relative;
  60. &::after {
  61. content: "";
  62. width: 1.667vh;
  63. height: 1.667vh;
  64. border-radius: 50%;
  65. background: #53626833;
  66. position: absolute;
  67. top: -0.278vh;
  68. left: -0.278vh;
  69. }
  70. }
  71. }
  72. .progress-bar-body {
  73. padding: 11px 20px;
  74. .progress-bar-name {
  75. display: flex;
  76. .progress-bar-progress {
  77. margin-left: auto;
  78. }
  79. }
  80. .progress-bar-box {
  81. width: 100%;
  82. height: 0.741vh;
  83. background: #53626833;
  84. margin-top: 0.741vh;
  85. position: relative;
  86. .progress-bar-bar {
  87. position: absolute;
  88. width: 100%;
  89. height: 100%;
  90. top: 0;
  91. left: 0;
  92. }
  93. }
  94. }
  95. }
  96. </style>