chore: update project files

This commit is contained in:
AIGC Developer
2025-11-13 17:01:39 +08:00
parent 83bf064bb2
commit 2961d2b0d0
344 changed files with 11549 additions and 15941 deletions

View File

@@ -52,15 +52,14 @@
<header class="top-header">
<div class="header-right">
<div class="points">
<el-icon><Star /></el-icon>
<span>{{ userInfo.points - (userInfo.frozenPoints || 0) }} | 首购优惠</span>
</div>
<div class="notifications">
<el-icon><Bell /></el-icon>
<div class="notification-dot"></div>
<div class="points-icon">
<el-icon><Star /></el-icon>
</div>
<span class="points-number">{{ userStore.availablePoints }}</span>
</div>
<LanguageSwitcher />
<div class="user-status" @click="showUserMenu = !showUserMenu" ref="userStatusRef">
<div class="status-icon"></div>
<img src="/images/backgrounds/avatar-default.svg" alt="用户头像" class="status-icon" />
</div>
</div>
</header>
@@ -155,7 +154,7 @@
<div class="detail-header">
<div class="user-info">
<div class="avatar">
<el-icon><User /></el-icon>
<img src="/images/backgrounds/avatar-default.svg" alt="用户头像" class="avatar-image" />
</div>
<div class="username">{{ (selectedItem && selectedItem.username) || '匿名用户' }}</div>
</div>
@@ -273,11 +272,10 @@ import { ref, onMounted, onUnmounted, computed, nextTick } from 'vue'
import { useRouter } from 'vue-router'
import { useUserStore } from '@/stores/user'
import { ElMessage } from 'element-plus'
import {
User,
Document,
Star,
Bell,
import {
User,
Document,
Star,
Setting,
Compass,
VideoPlay,
@@ -285,6 +283,7 @@ import {
Film
} from '@element-plus/icons-vue'
import { getMyWorks } from '@/api/userWorks'
import LanguageSwitcher from '@/components/LanguageSwitcher.vue'
import { getCurrentUser } from '@/api/auth'
import { getWorkDetail } from '@/api/userWorks'
@@ -499,7 +498,7 @@ const transformWorkData = (work) => {
cover: thumbnailUrl || resultUrl || '/images/backgrounds/welcome.jpg',
resultUrl: resultUrl || '',
type: work.workType === 'TEXT_TO_VIDEO' || work.workType === 'IMAGE_TO_VIDEO' || work.workType === 'STORYBOARD_VIDEO' ? 'video' : 'image',
category: work.workType === 'TEXT_TO_VIDEO' ? '文生视频' : work.workType === 'IMAGE_TO_VIDEO' ? '图生视频' : work.workType === 'STORYBOARD_VIDEO' ? '分镜视频' : '未知',
category: work.workType === 'TEXT_TO_VIDEO' ? '文生视频' : work.workType === 'IMAGE_TO_VIDEO' ? '图生视频' : work.workType === 'STORYBOARD_VIDEO' ? '分镜视频' : work.workType === 'STORYBOARD_IMAGE' ? '分镜图' : '未知',
sizeText: work.fileSize || '未知大小',
createTime: work.createdAt ? new Date(work.createdAt).toLocaleString('zh-CN') : '',
date: work.createdAt ? new Date(work.createdAt).toLocaleDateString('zh-CN') : '',
@@ -733,12 +732,15 @@ onUnmounted(() => {
/* 顶部栏 */
.top-header {
padding: 20px 30px;
height: 80px;
padding: 0 30px;
border-bottom: 1px solid #333;
display: flex;
align-items: center;
justify-content: flex-end;
position: relative;
z-index: 99999;
background: #0a0a0a;
}
.header-right {
@@ -751,30 +753,33 @@ onUnmounted(() => {
display: flex;
align-items: center;
gap: 8px;
padding: 6px 12px;
background: rgba(64, 158, 255, 0.1);
border-radius: 20px;
border: 1px solid rgba(64, 158, 255, 0.3);
}
.points-icon {
width: 20px;
height: 20px;
background: #409EFF;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 12px;
}
.points-number {
color: #409EFF;
font-size: 14px;
font-weight: 500;
}
.notifications {
position: relative;
cursor: pointer;
}
.notification-dot {
position: absolute;
top: -2px;
right: -2px;
width: 8px;
height: 8px;
background: #ff4757;
border-radius: 50%;
font-weight: 600;
}
.user-status {
width: 32px;
height: 32px;
border: 2px solid #409EFF;
border-radius: 50%;
display: flex;
align-items: center;
@@ -783,18 +788,18 @@ onUnmounted(() => {
position: relative;
z-index: 100000;
transition: all 0.3s ease;
overflow: hidden;
}
.user-status:hover {
border-color: #66b1ff;
transform: scale(1.05);
}
.status-icon {
width: 12px;
height: 12px;
background: white;
border-radius: 2px;
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 50%;
}
/* 用户菜单样式 */
@@ -1203,13 +1208,17 @@ onUnmounted(() => {
.detail-right .avatar {
width: 40px;
height: 40px;
background: #409eff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
font-size: 18px;
overflow: hidden;
}
.detail-right .avatar .avatar-image {
width: 100%;
height: 100%;
object-fit: cover;
}
.detail-right .username {