123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <template>
- <view :class="'audio-message ' + (isMine ? 'my-audio' : '')">
- <image :src="`${assetsUrl}talk-voice-msg${isPlaying?'-playing':''}.png`" mode="aspectFit" class="audio-icon"></image>
- <view class="audio " @click="handlePlayAudioMessage" :style="'width: ' + 120 + 'rpx'">{{ '" ' + message.payload.second }}</view>
- </view>
- </template>
- <script>
- export default {
- data() {
- return {
- audio: {},
- assetsUrl:this.$util.assetsUrl,
- isPlaying:false
- };
- },
- components: {},
- props: {
- message: {
- type: Object,
- default: () => {}
- },
- isMine: {
- type: Boolean,
- default: true
- }
- },
- watch: {
- message: {
- handler: function(newVal) {
- this.message=newVal;
- // this.setData({
- // message: newVal
- // });
- },
- immediate: true,
- deep: true
- }
- },
- beforeMount() {
- this.audio = uni.createInnerAudioContext();
- this.audio.onPlay(() => {});
- this.audio.onEnded(() => {
- this.isPlaying=false;
- });
- this.audio.onError(e => {
- console.error(e, 'onError');
- // ios 音频播放无声,可能是因为系统开启了静音模式
- uni.showToast({
- icon: 'none',
- title: '该音频暂不支持播放'
- });
- });
- },
- methods: {
- handlePlayAudioMessage() {
- this.audio.src = this.message.payload.url;
- this.isPlaying=true;
- this.audio.play();
- }
- }
- };
- </script>
- <style>
- @import './index.css';
- </style>
|