uploadTask.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <template>
  2. <view>
  3. <block v-for="(fileTask, index) in uploadTasks" :key="index">
  4. <view class="upload-task-body">
  5. <view class="upload-task-item">
  6. <text class="upload-task-item-name">{{fileTask.name}}</text>
  7. <progress v-if="showProgress" class="upload-task-item-progress" :activeColor="fileTask.state !== -1 ? '#42b983' : '#ff5a5f'" :percent="fileTask.progress * 100" active :duration="5" />
  8. <view class="flex" style="justify-content: space-between;">
  9. <text class="upload-task-item-size">{{fileTask.size}}</text>
  10. <text class="upload-task-item-size">{{fileTask.state !== -1 ? '' : '失败'}}</text>
  11. </view>
  12. </view>
  13. </view>
  14. </block>
  15. </view>
  16. </template>
  17. <script>
  18. export default {
  19. props: {
  20. uploadTasks: {
  21. type: Array,
  22. default: function() {
  23. return []
  24. }
  25. },
  26. showProgress: {
  27. type: Boolean,
  28. default: true
  29. }
  30. }
  31. }
  32. </script>
  33. <style>
  34. .upload-task-body {
  35. background-color: #fff;
  36. padding: 0 25rpx;
  37. transition: background-color .4s;
  38. }
  39. .upload-task-body:hover {
  40. background-color: #f5f5f5;
  41. }
  42. .upload-task-item {
  43. padding: 20rpx 0;
  44. }
  45. .upload-task-item-progress {
  46. padding: 20rpx 0;
  47. }
  48. .upload-task-item-size {
  49. font-size: 12px;
  50. color: #999;
  51. }
  52. .upload-task-item-name {
  53. font-size: 14px;
  54. }
  55. </style>