index.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <template>
  2. <div class="progress-message">
  3. <slot />
  4. <div
  5. v-if="props.messageItem.status === 'unSend' && props.messageItem.progress < 1"
  6. class="progress-container"
  7. >
  8. <progress
  9. v-if="!isUniFrameWork"
  10. class="progress"
  11. :value="props.messageItem.progress"
  12. max="1"
  13. />
  14. <progress
  15. v-else
  16. activeColor="#006EFF"
  17. class="progress-common"
  18. :percent="Math.round(props.messageItem.progress*100)"
  19. />
  20. </div>
  21. </div>
  22. </template>
  23. <script lang="ts" setup>
  24. import type { IMessageModel } from '@tencentcloud/chat-uikit-engine';
  25. import { withDefaults } from '../../../adapter-vue';
  26. import { isUniFrameWork } from '../../../utils/env';
  27. import type { IImageMessageContent } from '../../../interface';
  28. const props = withDefaults(
  29. defineProps<{
  30. content: IImageMessageContent;
  31. messageItem: IMessageModel;
  32. }>(),
  33. {
  34. content: () => ({}),
  35. messageItem: () => ({} as IMessageModel),
  36. },
  37. );
  38. </script>
  39. <style lang="scss" scoped>
  40. $primary-progress-color: #006eff;
  41. $primary-progress-bg-color: #fff;
  42. .progress-message {
  43. overflow: hidden;
  44. .progress-container {
  45. position: absolute;
  46. box-sizing: border-box;
  47. width: 100%;
  48. height: 100%;
  49. padding: 0 15%;
  50. left: 0;
  51. top: 0;
  52. background: rgba(#000, 0.5);
  53. display: flex;
  54. align-items: center;
  55. .progress-common {
  56. appearance: none;
  57. width: 100%;
  58. height: 0.5rem;
  59. }
  60. .progress {
  61. @extend .progress-common;
  62. color: $primary-progress-color;
  63. border-radius: 0.25rem;
  64. background: $primary-progress-bg-color;
  65. &::-webkit-progress-value {
  66. background-color: $primary-progress-color;
  67. border-radius: 0.25rem;
  68. }
  69. &::-webkit-progress-bar {
  70. border-radius: 0.25rem;
  71. background: $primary-progress-bg-color;
  72. }
  73. &::-moz-progress-bar {
  74. color: $primary-progress-color;
  75. background: $primary-progress-color;
  76. border-radius: 0.25rem;
  77. }
  78. }
  79. }
  80. }
  81. </style>