3.8 KiB
3.8 KiB
混剪场景编排样式更新说明
更新日期
2025-12-21
修改内容
1. 前端样式修改
场景布局调整
- 修改前:场景横向排列,类似网格布局
- 修改后:场景纵向排列,每个场景独立显示
场景展示效果
每个场景现在包含:
- 场景标题:显示"场景一"、"场景二"等,带有时长标签
- 候选列表:
- 空态:显示大的加号图标和"点击添加候选"提示
- 已填充:显示所有候选视频的缩略图和文件名
- 候选数量徽标:右上角显示"候选 X/10"
样式特点
- 候选视频以卡片形式展示,带阴影效果
- 悬停时有放大动画
- 每个候选显示缩略图和文件名
- 响应式设计,自动换行
2. 一键填充功能修复
问题诊断
- 空场景的
candidates数组未正确初始化 - 随机选择函数返回的对象格式不正确
- 数据结构转换存在问题
修复措施
修复 1:确保 candidates 数组存在
// 在 autoFillScenes 中
if (!scene.candidates) {
scene.candidates = []
}
修复 2:转换素材格式
// 在 randomlySelectMaterials 中
return selected.map(material => ({
fileId: material.id,
fileUrl: material.fileUrl
}))
修复 3:处理空场景
// 在 handleFileClick 中
if (!scenes.value[emptyIndex].candidates) {
scenes.value[emptyIndex].candidates = []
}
一键填充算法
- 收集所有可用素材
- 过滤已使用的素材(避免重复)
- 为每个场景随机分配素材
- 支持三种策略:
empty_only:仅填充空场景supplement:补充不足场景full_fill:全量重新填充
3. 用户体验优化
视觉反馈
- 场景标题更清晰,显示场景序号和时长
- 候选视频以卡片形式展示,一目了然
- 候选数量徽标帮助用户快速了解填充状态
操作便利性
- 一键填充功能正常工作
- 支持智能分配素材,避免重复
- 实时显示填充结果
技术实现
核心文件
frontend/app/web-gold/src/views/material/Mix.vue
关键修改
- 布局结构:从
flex-wrap: wrap改为flex-direction: column - 场景组件:添加场景容器、标题、候选列表等子组件
- 样式优化:新增候选卡片样式、悬停效果等
- 逻辑修复:确保数据结构正确,修复一键填充
CSS 样式要点
// 纵向布局
&__scenes {
display: flex;
flex-direction: column;
gap: 24px;
}
// 场景标题
&__scene-title {
font-size: 16px;
font-weight: 600;
color: #333;
margin: 0;
display: flex;
align-items: center;
gap: 12px;
}
// 候选列表
&__candidates-list {
display: flex;
flex-wrap: wrap;
gap: 12px;
width: 100%;
}
// 候选卡片
&__candidate-item {
width: 120px;
border-radius: 6px;
overflow: hidden;
background: #fff;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
transition: all 0.2s;
&:hover {
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}
}
验证结果
前端代码
- ✅ 语法检查通过
- ✅ 样式渲染正常
- ✅ 交互功能正常
一键填充测试
- ✅ 空场景正确填充
- ✅ 防重复机制有效
- ✅ 候选数量显示正确
- ✅ 素材分配均匀
效果展示
修改前
[场景1] [场景2] [场景3]
[视频A] [视频B] [视频C]
修改后
场景一 (3s)
[视频A] [视频B] [视频C]
场景二 (3s)
[视频D] [视频E]
场景三 (3s)
点击添加候选
总结
本次更新成功实现了:
- ✅ 场景纵向排列,显示标题和候选列表
- ✅ 修复一键填充功能,确保正常工作
- ✅ 优化用户界面,提升使用体验
- ✅ 保持数据结构和业务逻辑的完整性
所有修改已完成并通过验证,可以正常使用。