|
@@ -10,6 +10,12 @@
|
|
ref="audio"
|
|
ref="audio"
|
|
:src="common.changeUrl(audioInfo[0].src)"
|
|
:src="common.changeUrl(audioInfo[0].src)"
|
|
/> -->
|
|
/> -->
|
|
|
|
+ <kk-audio
|
|
|
|
+ v-if="tag.type == 'audio' && audioInfo.length > 0"
|
|
|
|
+ class="audio"
|
|
|
|
+ ref="audio"
|
|
|
|
+ :src="changeUrl(audioInfo[0].src)"
|
|
|
|
+ />
|
|
</h2>
|
|
</h2>
|
|
</div>
|
|
</div>
|
|
<div class="desc" v-if="tag.content != ''">
|
|
<div class="desc" v-if="tag.content != ''">
|
|
@@ -23,6 +29,7 @@
|
|
>
|
|
>
|
|
<metasImage :data="tag" v-if="tag.type == 'image'" />
|
|
<metasImage :data="tag" v-if="tag.type == 'image'" />
|
|
<metasWeb :data="tag" v-if="tag.type == 'link'" />
|
|
<metasWeb :data="tag" v-if="tag.type == 'link'" />
|
|
|
|
+ <metasVideo :data="tag" v-if="tag.type == 'video'" />
|
|
<!-- <metasImage v-if="tag.type == 'image'" />
|
|
<!-- <metasImage v-if="tag.type == 'image'" />
|
|
<metasVideo v-if="tag.type == 'video'" />
|
|
<metasVideo v-if="tag.type == 'video'" />
|
|
<metasWeb v-if="tag.type == 'link'" /> -->
|
|
<metasWeb v-if="tag.type == 'link'" /> -->
|
|
@@ -33,19 +40,48 @@
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
import metasImage from './metas/metas-image.vue';
|
|
import metasImage from './metas/metas-image.vue';
|
|
import metasWeb from './metas/metas-web.vue';
|
|
import metasWeb from './metas/metas-web.vue';
|
|
- import { onMounted } from 'vue';
|
|
|
|
|
|
+ import metasVideo from './metas/metas-video.vue';
|
|
|
|
+ import { ref, onMounted, computed } from 'vue';
|
|
import { tagType } from '/@/store/modules/scene';
|
|
import { tagType } from '/@/store/modules/scene';
|
|
- defineProps({
|
|
|
|
|
|
+ import { changeUrl } from './common';
|
|
|
|
+ import { KkAudio } from 'kankan-components';
|
|
|
|
+ import { watchEffect } from 'vue';
|
|
|
|
+ import { unref } from 'vue';
|
|
|
|
+
|
|
|
|
+ const audio = ref(null);
|
|
|
|
+ const props = defineProps({
|
|
|
|
+ show: {
|
|
|
|
+ type: Boolean,
|
|
|
|
+ default: false,
|
|
|
|
+ },
|
|
tag: {
|
|
tag: {
|
|
type: Object,
|
|
type: Object,
|
|
default: {} as any as tagType,
|
|
default: {} as any as tagType,
|
|
},
|
|
},
|
|
});
|
|
});
|
|
|
|
+ const audioInfo = computed(() => {
|
|
|
|
+ return props.tag.media.audio;
|
|
|
|
+ });
|
|
const emits = defineEmits(['open']);
|
|
const emits = defineEmits(['open']);
|
|
const open = () => {
|
|
const open = () => {
|
|
emits('open');
|
|
emits('open');
|
|
};
|
|
};
|
|
- onMounted(() => {});
|
|
|
|
|
|
+ onMounted(() => {
|
|
|
|
+ watchEffect(() => {
|
|
|
|
+ if (props.show) {
|
|
|
|
+ if (unref(audioInfo)?.length && unref(audio)) {
|
|
|
|
+ console.log('audio-play');
|
|
|
|
+ // @ts-ignore
|
|
|
|
+ audio.value?.play();
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (unref(audioInfo)?.length && unref(audio)) {
|
|
|
|
+ // @ts-ignore
|
|
|
|
+ audio.value?.pause();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ });
|
|
</script>
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
.show-tag {
|
|
.show-tag {
|
|
@@ -110,6 +146,10 @@
|
|
color: #ffffff;
|
|
color: #ffffff;
|
|
position: relative;
|
|
position: relative;
|
|
|
|
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: flex-start;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+
|
|
.ui-audio {
|
|
.ui-audio {
|
|
float: right;
|
|
float: right;
|
|
|
|
|