progress-bar.vue 2.1 KB

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