soundRecorder.vue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. console.log('点击了删除录音的按钮')
  45. // this.$emit('delete', this.dataInner)
  46. }
  47. }
  48. }
  49. </script>
  50. <style lang="scss" scoped>
  51. .sound-recorder {
  52. background: #ffffff;
  53. border-radius: 20rpx;
  54. box-shadow: 0 4rpx 24rpx rgba(0, 0, 0, 0.08);
  55. padding: 32rpx;
  56. font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  57. border: 2rpx solid #f0f0f0;
  58. position: relative;
  59. margin-bottom: 10rpx;
  60. .top-text {
  61. font-size: 20rpx;
  62. color: #888;
  63. line-height: 1.4;
  64. }
  65. .call-history {
  66. font-size: 30rpx;
  67. color: #333;
  68. font-weight: 500;
  69. margin-bottom: 20rpx;
  70. line-height: 1.5;
  71. }
  72. .file-name {
  73. font-size: 20rpx;
  74. color: #666;
  75. line-height: 1.4;
  76. word-break: break-all;
  77. }
  78. .delectIcon {
  79. position: absolute;
  80. right: 32rpx;
  81. top: 32rpx;
  82. z-index: 1;
  83. }
  84. }
  85. </style>