From 29fc6f5b1981775be5d2f0f9f8e61fec2f550252 Mon Sep 17 00:00:00 2001
From: lrj <owen.stl@gmail.com>
Date: 星期一, 29 九月 2025 19:29:11 +0800
Subject: [PATCH] 删除所有test开头的测试文件
---
web/src/views/carousel/index.vue | 97 +++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 91 insertions(+), 6 deletions(-)
diff --git a/web/src/views/carousel/index.vue b/web/src/views/carousel/index.vue
index 9c417aa..89c5deb 100644
--- a/web/src/views/carousel/index.vue
+++ b/web/src/views/carousel/index.vue
@@ -156,7 +156,7 @@
<!-- 宸蹭笂浼犵殑濯掍綋鍒楄〃 -->
<div v-if="mediaList.length > 0">
<h5>宸蹭笂浼犲獟浣擄細</h5>
- <el-table :data="mediaList" size="small" style="width: 100%;">
+ <el-table :data="mediaList" size="small" style="width: 100%;" v-loading="uploadingMedia">
<el-table-column prop="name" label="鏂囦欢鍚�" min-width="200" />
<el-table-column prop="mediaType" label="绫诲瀷" width="100">
<template #default="{ row }">
@@ -168,8 +168,19 @@
<div v-if="row.mediaType === 1" class="media-preview" @click="openMediaInNewTab(row.fullUrl)">
<img :src="row.fullUrl" class="preview-image clickable" />
</div>
- <div v-else-if="row.mediaType === 2" class="media-preview" @click="openMediaInNewTab(row.fullUrl)">
- <video :src="row.fullUrl" class="preview-video clickable" muted></video>
+ <div v-else-if="row.mediaType === 2" class="video-thumbnail-container" @click="openMediaInNewTab(row.fullUrl)">
+ <img v-if="row.thumbUrl || row.fullThumbUrl"
+ :src="row.thumbUrl || row.fullThumbUrl"
+ class="video-thumbnail" />
+ <div v-else class="video-placeholder">
+ <i class="el-icon-video-camera"></i>
+ <span>瑙嗛缂╃暐鍥�</span>
+ </div>
+ <div class="video-play-overlay">
+ <div class="video-play-button">
+ <i class="el-icon-video-play"></i>
+ </div>
+ </div>
</div>
</template>
</el-table-column>
@@ -196,6 +207,7 @@
import { Plus } from '@element-plus/icons-vue'
import { CarouselApi } from '@/api/carousel'
import { uploadFile, getMediasByTarget, saveMedia, deleteMedia } from '@/api/media'
+import { MediaTargetType } from '@/constants/mediaTargetType'
// 鍝嶅簲寮忔暟鎹�
const loading = ref(false)
@@ -395,7 +407,7 @@
})
// 鍔犺浇濯掍綋鍒楄〃锛圱argetType 绾﹀畾锛歝arousel锛�
-const CAROUSEL_TARGET_TYPE = 4 // 鍚庣浠g爜涓娇鐢ㄧ殑鏄� targetType=4
+const CAROUSEL_TARGET_TYPE = MediaTargetType.CAROUSEL // 杞挱鍥剧被鍨�
const loadMedias = async () => {
if (!formData.id) return
try {
@@ -418,8 +430,8 @@
ElMessage.error('鍙兘涓婁紶鍥剧墖鎴栬棰戞枃浠�!')
continue
}
- if (file.size / 1024 / 1024 > 50) {
- ElMessage.error('鏂囦欢澶у皬涓嶈兘瓒呰繃 50MB!')
+ if (file.size / 1024 / 1024 > 300) {
+ ElMessage.error('鏂囦欢澶у皬涓嶈兘瓒呰繃 300MB!')
continue
}
@@ -691,6 +703,79 @@
border-radius: 4px;
}
+.video-thumbnail-container {
+ position: relative;
+ width: 80px;
+ height: 60px;
+ cursor: pointer;
+ border-radius: 4px;
+ overflow: hidden;
+}
+
+.video-thumbnail {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ border-radius: 4px;
+}
+
+.video-placeholder {
+ width: 100%;
+ height: 100%;
+ background: #f0f0f0;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ border-radius: 4px;
+ color: #999;
+ font-size: 10px;
+}
+
+.video-placeholder i {
+ font-size: 16px;
+ margin-bottom: 2px;
+}
+
+.video-play-overlay {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: rgba(0, 0, 0, 0.3);
+ opacity: 0;
+ transition: opacity 0.3s ease;
+}
+
+.video-thumbnail-container:hover .video-play-overlay {
+ opacity: 1;
+}
+
+.video-play-button {
+ width: 24px;
+ height: 24px;
+ background: rgba(255, 255, 255, 0.9);
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: #333;
+ transition: all 0.3s ease;
+}
+
+.video-play-button:hover {
+ background: rgba(255, 255, 255, 1);
+ transform: scale(1.1);
+}
+
+.video-play-button i {
+ font-size: 12px;
+}
+
.clickable {
cursor: pointer;
transition: opacity 0.3s;
--
Gitblit v1.8.0