feat: 优化教务系统多项功能

主要更新:
1. 项目库功能优化
   - 添加项目效果图点击预览功能,支持图片放大查看和切换
   - 新增ImagePreviewModal组件,提供完整的图片预览体验

2. 企业内推岗位页面改进
   - 右侧岗位面试状态卡片支持点击查看岗位详情
   - 从企业内推岗位库直接导入岗位数据
   - 面试状态查看的岗位详情隐藏投递按钮
   - 岗位要求显示优化,添加数字编号格式

3. 课堂作业板块完善
   - 修复垂直能力课只显示4个单元的问题,现可显示全部12个单元
   - 为"展会主题与品牌定位"课程添加"可试看"标签
   - 调整"可试看"标签位置,避免遮挡课程名称
   - 在全部视图中将"展会主题与品牌定位"课程置顶

4. 课程直播间页面优化
   - 为复合能力课添加文字虚线分割线,与垂直能力课保持一致
   - 删除页面顶部的进度条,简化界面

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
KQL
2025-09-08 11:00:54 +08:00
parent 9a14678a12
commit 9198c67caf
13 changed files with 1753 additions and 35 deletions

View File

@@ -109,6 +109,89 @@ const ProjectLibrary = () => {
};
const myProjects = processMyProjects();
// 三个可点击查看的特殊项目
const clickableProjects = [
{
id: "clickable-1",
name: "宝可梦品牌青春治愈系全场景视觉与周边设计策划方案",
unitName: "商业空间与文创产品设计",
isClickable: true,
content: {
title: "宝可梦品牌青春治愈系全场景视觉与周边设计策划方案",
description: "本套设计围绕让品牌成为可触摸的生活伙伴核心理念,打造视觉统一+场景沉浸的全链路品牌表达系统。",
images: [
{ url: "/images/project-library/29aab970-92d1-4a79-84d3-5a29d9e299eb.jpeg", title: "奶茶杯设计" },
{ url: "/images/project-library/20250824-121446.jpg", title: "品牌海报设计" },
{ url: "/images/project-library/outputs_20250824_3k4iaqnnbt.jpeg", title: "线下空间设计" },
{ url: "/images/project-library/img_v3_02pf_f256578f-91f0-43f6-9e25-37fe423fd23g.jpg", title: "帽子周边设计" }
],
sections: [
{
title: "一、设计说明",
content: "本套设计围绕让品牌成为可触摸的生活伙伴核心理念,打造视觉统一+场景沉浸的全链路品牌表达系统。整体风格融合清新潮酷与温暖治愈,以马卡龙渐变色系+软萌IP符号为核心视觉语言串联周边产品奶茶杯、帽子、线下空间、视觉海报三大场景核心方向聚焦从视觉符号到情感连接——通过产品的实用性、空间的体验感、海报的传播力将品牌年轻、治愈、有温度的认知转化为用户可感知、可参与、可分享的生活场景强化品牌=青春治愈伙伴的心智联想。"
},
{
title: "二、设计亮点",
content: `1. 全场景视觉闭环从周边产品的细节图案如奶茶杯的渐变花纹、帽子的IP刺绣到空间设计的元素延续如墙面装饰呼应杯子造型再到海报的色彩体系所有设计均源于同一IP视觉库实现看海报→逛空间→买周边的认知连贯让品牌记忆点在不同场景中反复强化。
2. 情感化仪式感植入奶茶杯内置温度感应隐藏图案倒入热饮后浮现IP符号将喝奶茶变成解锁小惊喜的仪式空间设计预留奶茶杯打卡墙与周边杯子1:10比例的巨型装置满足用户拍美照、晒社交的需求帽子采用可拆卸IP徽章让用户通过DIY搭配将品牌元素融入个人风格增加互动感。
3. 年轻群体精准共鸣色彩选择浅粉、淡蓝、奶黄契合Z世代治愈系审美图案设计用简笔奶茶泡、软萌云朵等拟态符号降低认知门槛所有产品均兼顾潮流性与实用性如帽子的软顶版型适配日常穿搭、杯子的防烫材质适合高频使用让设计不仅好看更好用。`
}
]
}
},
{
id: "clickable-2",
name: "四川大熊猫扇子文创产品设计",
unitName: "文旅衍生文创产品设计",
isClickable: true,
content: {
title: "四川大熊猫扇子文创产品设计",
description: "以\"熊猫·蜀韵\"为核心主题,聚焦\"四川文化的当代表达\",将\"大熊猫、蜀绣、传统折扇\"三大符号融合为兼具文化意味与日常实用的文创产品。",
images: [
{ url: "/images/project-library/四川大熊猫扇子设计图.jpeg", title: "熊猫扇子效果图" }
],
sections: [
{
title: "一、项目介绍",
content: "本方案以\"熊猫·蜀韵\"为核心主题,聚焦\"四川文化的当代表达\",旨在将\"大熊猫、蜀绣、传统折扇\"三大符号,融合为兼具文化意味与日常实用的文创产品。整体风格定位为「熊猫蜀绣·新雅致」——既保留四川非遗的文化内核(如蜀绣的精细针法、大熊猫的国宝形象、川地传统折扇),又摒弃单纯\"符号拼贴\"的套路,转而用简洁的线条、精细的工艺和舒适的材质,让熊猫与蜀韵真正走进日常场景。"
},
{
title: "二、设计策划案",
content: "以 \"新中式非遗美学\" 为核心风格,融合四川 \"自然生态\" 与 \"非遗技艺\" 双重属性 —— 扇面以柔和雅致的 \"竹绿 + 浅金 + 淡青\" 为基调,搭配双宫绸的温润光泽与蜀绣的细腻针脚,营造 \"雅致不张扬、精致不堆砌\" 的视觉质感;扇骨采用四川楠竹碳化工艺,浅褐色自然纹理与浅青色棉麻流苏呼应,整体呈现 \"自然材质承载非遗文化\" 的和谐氛围。"
}
]
}
},
{
id: "clickable-3",
name: "戴森吹风机:科技护发新风尚品牌运营策划案",
unitName: "短视频与自媒体运营",
isClickable: true,
content: {
title: "《戴森吹风机:科技护发新风尚》品牌运营策划案",
description: "通过整合营销文案、宣传方案、活动策划及私域运营方案,全面提升戴森吹风机在目标消费群体中的品牌影响力与市场转化率。",
images: [
{ url: "/images/project-library/1.png", title: "品牌视觉设计" },
{ url: "/images/project-library/2.png", title: "产品展示设计" },
{ url: "/images/project-library/3.png", title: "营销物料设计" },
{ url: "/images/project-library/4.png", title: "活动策划方案" }
],
sections: [
{
title: "一、项目介绍",
content: "本项目旨在通过整合营销文案、宣传方案、活动策划及私域运营方案,全面提升戴森吹风机在目标消费群体中的品牌影响力与市场转化率。项目以\"高端科技+精致生活\"为核心定位,既关注产品性能优势的突出,也注重用户体验的细腻塑造。通过线上线下结合的多渠道传播,项目将实现从品牌认知、兴趣激发、消费决策到复购沉淀的闭环路径。"
},
{
title: "二、品牌运营策略",
content: "以\"高端科技美学\"为核心风格,融合\"科技感\"与\"人性化\"双重属性——文案以简洁、专业、富有科技感的语言为基础,搭配生动、贴近生活的案例和情感化表达,营造\"科技不冰冷、高端亦亲和\"的语言质感;视觉设计上,以戴森标志性的蓝色为主色调,搭配简洁的线条和现代感的排版,整体呈现\"科技与人文融合\"的和谐氛围。"
}
]
}
}
];
const [modalData, setModalData] = useState(undefined);
const [projectList, setProjectList] = useState([]);
const [projectCasesModalVisible, setProjectCasesModalVisible] =
@@ -119,8 +202,15 @@ const ProjectLibrary = () => {
const handleProjectClick = async (item) => {
// 如果是我的项目,不允许点击
if (item?.isMyProject) {
// 如果是我的普通项目,不允许点击
if (item?.isMyProject && !item?.isClickable) {
return;
}
// 如果是可点击的特殊项目,直接显示内容
if (item?.isClickable && item?.content) {
setModalData(item.content);
setProjectCasesModalVisible(true);
return;
}
@@ -190,6 +280,22 @@ const ProjectLibrary = () => {
<div className="project-library-wrapper my-project-library">
<p className="project-library-title">我完成的项目库</p>
<div className="project-library-list">
{/* 可点击的特殊项目 */}
{clickableProjects.map((item) => (
<li
key={item.id}
className="project-library-item clickable-project-item"
onClick={() => handleProjectClick(item)}
>
<p className="project-library-item-title">{item.unitName}</p>
<div>
<p>{item.name}</p>
<span>详情 &gt;</span>
</div>
</li>
))}
{/* 普通的灰色项目 */}
{myProjects.map((item) => (
<Tooltip
key={item.id}