soundRecorder.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <view class="sound-recorder">
  3. <view class="top-text">{{ topText }}</view>
  4. <view class="file-name">{{ dataInner.fileName }}</view>
  5. <view class="call-history">{{ callHistory }}</view>
  6. <audio :src="dataInner.fileUrl" controls></audio>
  7. <view @click="handleDelete">
  8. <u-icon class="delectIcon" name="trash" size="22"></u-icon>
  9. </view>
  10. </view>
  11. </template>
  12. <script>
  13. export default {
  14. props: {
  15. data: {
  16. type: Object,
  17. default: () => ({})
  18. }
  19. },
  20. data() {
  21. return {
  22. dataInner: {}
  23. }
  24. },
  25. watch: {
  26. data: {
  27. deep: true,
  28. immediate: true,
  29. handler(newVal) {
  30. this.dataInner = { ...newVal }
  31. }
  32. }
  33. },
  34. computed: {
  35. topText() {
  36. return `${this.dataInner.createTime}号码(${this.dataInner.caller})上传录音`
  37. },
  38. callHistory() {
  39. return `${this.dataInner.caller} 打给 ${this.dataInner.callee}`
  40. }
  41. },
  42. methods: {
  43. handleDelete() {
  44. this.$emit('handleDelectThisSoundRecord', this.dataInner)
  45. }
  46. }
  47. }
  48. </script>
  49. <style lang="scss" scoped>
  50. .sound-recorder {
  51. background: #ffffff;
  52. border-radius: 20rpx;
  53. box-shadow: 0 4rpx 24rpx rgba(0, 0, 0, 0.08);
  54. padding: 32rpx;
  55. font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  56. border: 2rpx solid #f0f0f0;
  57. position: relative;
  58. margin-bottom: 10rpx;
  59. .top-text {
  60. font-size: 20rpx;
  61. color: #888;
  62. line-height: 1.4;
  63. }
  64. .call-history {
  65. font-size: 30rpx;
  66. color: #333;
  67. font-weight: 500;
  68. margin-bottom: 20rpx;
  69. line-height: 1.5;
  70. }
  71. .file-name {
  72. font-size: 20rpx;
  73. color: #666;
  74. line-height: 1.4;
  75. word-break: break-all;
  76. }
  77. .delectIcon {
  78. position: absolute;
  79. right: 32rpx;
  80. top: 32rpx;
  81. z-index: 1;
  82. }
  83. }
  84. </style>