upload_video.vue
2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<template>
<div class="upload-video-container">
<div class="button-container">
<van-button type="primary" @click="showUploadPopup = true">上传视频</van-button>
<van-button type="default" @click="onSubmit">提交上传</van-button>
</div>
<div class="video-list">
<div v-for="video in videos" :key="video.id" class="video-preview">
<VideoPlayer :video-url="video.url" :autoplay="false" />
<div class="video-info">
<span class="video-name">{{ video.name }}</span>
<van-button icon="delete" type="danger" size="small" class="delete-btn" @click="deleteVideo(video.id)">删除</van-button>
</div>
</div>
</div>
<UploadVideoPopup
v-model="showUploadPopup"
@submit="onVideoUploaded"
@cancel="showUploadPopup = false"
/>
</div>
</template>
<script setup>
import { ref } from 'vue';
import VideoPlayer from '@/components/ui/VideoPlayer.vue';
import UploadVideoPopup from '@/components/ui/UploadVideoPopup.vue';
const showUploadPopup = ref(false);
const videos = ref([]);
const onVideoUploaded = (videoInfo) => {
videos.value.push(videoInfo);
};
const deleteVideo = (id) => {
const index = videos.value.findIndex(video => video.id === id);
if (index !== -1) {
const newVideos = [...videos.value];
newVideos.splice(index, 1);
videos.value = newVideos;
}
};
const onSubmit = () => {
// 提交上传的视频信息
console.log('提交上传的视频信息:', videos.value);
};
</script>
<style scoped>
.upload-video-container {
padding: 16px;
}
.button-container {
display: flex;
justify-content: space-between;
width: 100%;
margin-bottom: 16px;
}
.video-list {
margin-top: 16px;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 16px;
}
.video-preview {
position: relative;
width: 100%;
min-height: 300px;
display: flex;
flex-direction: column;
}
.video-info {
padding: 8px;
background-color: #fff;
}
.video-name {
display: block;
margin-bottom: 8px;
font-size: 14px;
color: #333;
}
.delete-btn {
position: absolute;
top: 8px;
right: 8px;
z-index: 1;
}
</style>