progress.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <script setup lang="ts">
  2. import { useRenderIcon } from "@/components/ReIcon/src/hooks";
  3. defineOptions({
  4. name: "PureProgress"
  5. });
  6. const format = percentage => (percentage === 100 ? "Full" : `${percentage}%`);
  7. </script>
  8. <template>
  9. <el-card shadow="never">
  10. <template #header>
  11. <div class="card-header">
  12. <el-link
  13. v-tippy="{
  14. content: '点击查看详细文档'
  15. }"
  16. href="https://element-plus.org/zh-CN/component/progress.html"
  17. target="_blank"
  18. style="font-size: 16px; font-weight: 800"
  19. >
  20. 进度条
  21. </el-link>
  22. </div>
  23. <el-link
  24. class="mt-2"
  25. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/components/progress.vue"
  26. target="_blank"
  27. >
  28. 代码位置 src/views/components/progress.vue
  29. </el-link>
  30. </template>
  31. <div class="mb-4">直线进度条动画</div>
  32. <div class="w-1/4">
  33. <el-progress indeterminate :percentage="50" class="mb-4" />
  34. <el-progress
  35. indeterminate
  36. :percentage="100"
  37. :format="format"
  38. class="mb-4"
  39. />
  40. <el-progress
  41. indeterminate
  42. :percentage="100"
  43. status="success"
  44. class="mb-4"
  45. />
  46. <el-progress
  47. indeterminate
  48. :percentage="100"
  49. status="warning"
  50. class="mb-4"
  51. />
  52. <el-progress
  53. indeterminate
  54. :percentage="50"
  55. status="exception"
  56. class="mb-4"
  57. />
  58. </div>
  59. <div class="mb-4">进度条内显示百分比标识</div>
  60. <div class="w-1/4">
  61. <el-progress
  62. :text-inside="true"
  63. :stroke-width="26"
  64. :percentage="70"
  65. class="mb-4"
  66. />
  67. <el-progress
  68. :text-inside="true"
  69. :stroke-width="24"
  70. :percentage="100"
  71. status="success"
  72. striped
  73. striped-flow
  74. :duration="70"
  75. class="mb-4"
  76. />
  77. <el-progress
  78. :text-inside="true"
  79. :stroke-width="22"
  80. :percentage="80"
  81. status="warning"
  82. class="mb-4"
  83. />
  84. <el-progress
  85. :text-inside="true"
  86. :stroke-width="20"
  87. :percentage="50"
  88. status="exception"
  89. striped
  90. striped-flow
  91. class="mb-4"
  92. />
  93. </div>
  94. <div class="mb-4">自定义内容</div>
  95. <div class="w-1/4 demo-progress">
  96. <el-progress :percentage="50">
  97. <el-button text>自定义内容</el-button>
  98. </el-progress>
  99. <el-progress
  100. :text-inside="true"
  101. :stroke-width="20"
  102. :percentage="50"
  103. status="exception"
  104. >
  105. <span>自定义内容</span>
  106. </el-progress>
  107. <el-progress type="circle" :percentage="100" status="success">
  108. <el-button type="success" :icon="useRenderIcon('ep:check')" circle />
  109. </el-progress>
  110. <el-progress type="dashboard" :percentage="80">
  111. <template #default="{ percentage }">
  112. <span class="percentage-value">{{ percentage }}%</span>
  113. <span class="percentage-label">上升率</span>
  114. </template>
  115. </el-progress>
  116. </div>
  117. </el-card>
  118. </template>
  119. <style scoped>
  120. .percentage-value {
  121. display: block;
  122. margin-top: 10px;
  123. font-size: 28px;
  124. }
  125. .percentage-label {
  126. display: block;
  127. margin-top: 10px;
  128. font-size: 12px;
  129. }
  130. .demo-progress .el-progress--line {
  131. width: 350px;
  132. margin-bottom: 15px;
  133. }
  134. .demo-progress .el-progress--circle {
  135. margin-right: 15px;
  136. }
  137. </style>