UI优化更新:面试模拟、简历面试、项目库、求职策略等多个页面改进

主要更新:
- 面试模拟页:移除上滑查看评价,添加渐进式评分(72→81→89)
- 简历面试页:添加岗位头像、标签背景、面试题加粗等视觉优化
- 项目库页:添加"我完成的项目库"板块,增加hover效果
- 求职策略详情页:优化圆柱体和矩形对齐,添加CSV岗位数据,调整批次文字位置
- 企业岗位列表页:添加返回按钮功能
- 全局:统一岗位级别术语(普通岗/技术骨干岗/储备干部岗)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
KQL
2025-09-05 20:46:03 +08:00
parent 1703894e74
commit 4e0e96e6b8
64 changed files with 7806 additions and 2112 deletions

View File

@@ -98,7 +98,7 @@ export const mockData = {
gender: "女",
studentId: "2426030612",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
school: "苏州工艺美术职业技术学院",
school: "苏州信息职业技术学院",
major: "数字媒体艺术设计",
courses: ["复合能力培养", "文旅方向", "展会策划", "数字创意设计"],
className: "文旅",
@@ -1856,9 +1856,9 @@ export const mockData = {
],
// 学习进度
studyProgress: {
completed: 72,
completed: 100,
total: 100,
percentage: 72,
percentage: 100,
},
// 班级排名
@@ -2618,37 +2618,96 @@ export const mockData = {
homework: [
{
name: "复合能力培养",
name: "复合能力",
id: 1,
list: [
{ id: 1, name: "展会策划教学", level: "completed" },
{ id: 2, name: "文旅场景策划教学", level: "completed" },
{ id: 3, name: "文旅IP主题策划教学", level: "completed" },
{
id: 4,
name: "文旅品牌策划教学",
level: "in-progress",
},
{
id: 5,
name: "文旅用户运营教学",
level: "in-progress",
},
{
id: 6,
name: "文旅综合运营教学",
level: "in-progress",
},
{ id: 7, name: "用户运营与管理", level: "locked" },
{ id: 8, name: "会员运营与管理", level: "locked" },
{ id: 9, name: "促活运营与管理", level: "locked" },
{ id: 10, name: "裂变运营与管理", level: "locked" },
{ id: 11, name: "社群运营与管理", level: "locked" },
{ id: 12, name: "用户转化与管理", level: "locked" },
// 岗位体系认知
{ id: 1, name: "教育体系认知", level: "completed" },
{ id: 2, name: "现代文旅类企业的管理体系", level: "completed" },
{ id: 3, name: "专科生的职业规划", level: "completed" },
// 产业认知课
{ id: 4, name: "文旅产业认知课", level: "completed" },
{ id: 5, name: "行业详解:旅游行业", level: "completed" },
{ id: 6, name: "行业详解:酒店与民宿行业", level: "completed" },
{ id: 7, name: "行业详解:活动与会展行业", level: "completed" },
{ id: 8, name: "行业详解:文化服务行业", level: "completed" },
// 旅游产业全景与文旅基础知识
{ id: 9, name: "现代文旅产业生态图谱", level: "completed" },
{ id: 10, name: "文旅政策法规与风险管理", level: "completed" },
{ id: 11, name: "旅游产品与旅游资源", level: "completed" },
{ id: 12, name: "游客行为心理学基础", level: "completed" },
{ id: 13, name: "可持续旅游发展", level: "completed" },
// 文旅服务:形象、沟通与体验的融合艺术
{ id: 14, name: "文旅场景职业形象IP塑造", level: "completed" },
{ id: 15, name: "情境化服务体验设计", level: "completed" },
{ id: 16, name: "政务商务接待专项礼仪", level: "completed" },
{ id: 17, name: "文旅服务中的非语言表达", level: "completed" },
{ id: 18, name: "服务沟通技巧与表达训练", level: "completed" },
{ id: 19, name: "多元文化下的服务表达差异", level: "completed" },
// 文旅与供应链基础
{ id: 20, name: "供应链管理的内容", level: "completed" },
{ id: 21, name: "文旅资源调度", level: "completed" },
{ id: 22, name: "文旅产品全生命周期管理", level: "completed" },
{ id: 23, name: "文旅商品供应链", level: "completed" },
{ id: 24, name: "住宿业资源协同", level: "completed" },
{ id: 25, name: "小型文旅项目的供应链角色模拟", level: "completed" },
{ id: 26, name: "文旅项目供应链特征", level: "completed" },
{ id: 27, name: "文旅供应链中的B2B与B2C模式", level: "completed" },
// 商业设计基础
{ id: 28, name: "现代设计行业的发展现状", level: "completed" },
{ id: 29, name: "设计基础", level: "completed" },
{ id: 30, name: "字体设计与中文字体情绪表达", level: "completed" },
{ id: 31, name: "商业平面色彩搭配", level: "completed" },
{ id: 32, name: "平面设计构图", level: "completed" },
{ id: 33, name: "图像编辑工具Photoshop", level: "completed" },
{ id: 34, name: "矢量与标志设计Illustrator", level: "completed" },
{ id: 35, name: "快速设计工具使用Canva", level: "completed" },
{ id: 36, name: "移动端视觉原型设计Figma", level: "completed" },
{ id: 37, name: "视频剪辑入门:剪映", level: "completed" },
// AIGC人工智能生成内容
{ id: 38, name: "AIGC发展简史与基本逻辑", level: "completed" },
{ id: 39, name: "AIGC的基本概念与各领域的应用", level: "completed" },
{ id: 40, name: "AIGC语言模型chatgpt的灵活应用", level: "completed" },
{ id: 41, name: "AIGC生成内容的版权问题与合规使用", level: "completed" },
{ id: 42, name: "AIGC图像生成模型Stable Diffusion Al摄影和平面设计", level: "completed" },
{ id: 43, name: "AIGC图像生成模型Stable Diffusion的应用操作", level: "completed" },
{ id: 44, name: "AIGC视频应用音视频生成与AI自动剪辑", level: "completed" },
{ id: 45, name: "AI词曲创作suno", level: "completed" },
// 全栈新媒体运营赋能文旅营销
{ id: 46, name: "新媒体应用传播学", level: "completed" },
{ id: 47, name: "新媒体故事结构入门", level: "completed" },
{ id: 48, name: "新媒体产品策划", level: "completed" },
{ id: 49, name: "平台账号经营与内容赛道", level: "completed" },
{ id: 50, name: "各平台变现方式与具体方法", level: "completed" },
{ id: 51, name: "内容运营:短视频的制作工具", level: "completed" },
{ id: 52, name: "内容运营:短视频制作内容对标", level: "completed" },
{ id: 53, name: "直播运营:直播间的搭建", level: "completed" },
{ id: 54, name: "品牌运营当地文化IP数字化传播", level: "completed" },
{ id: 55, name: "品牌运营:跨界营销创新", level: "completed" },
{ id: 56, name: "私域运营:私域流量池的运营", level: "completed" },
// 活动策划基础
{ id: 57, name: "活动类型与功能认知", level: "completed" },
{ id: 58, name: "受众定位与主题创意方法", level: "completed" },
{ id: 59, name: "活动宣传渠道与推广方式", level: "completed" },
{ id: 60, name: "活动文案写作与表达技巧", level: "completed" },
{ id: 61, name: "活动流程设计与时间节点把控", level: "completed" },
{ id: 62, name: "活动场地选择与布置基础", level: "completed" },
{ id: 63, name: "活动预算与资源统筹", level: "completed" },
{ id: 64, name: "应急预案与活动风险管理", level: "completed" },
{ id: 65, name: "活动复盘报告撰写与数据分析方法", level: "completed" },
// 智慧文旅应用
{ id: 66, name: "智慧文旅概论", level: "completed" },
{ id: 67, name: "OTA平台运营", level: "completed" },
{ id: 68, name: "票务分销平台", level: "completed" },
{ id: 69, name: "景区智能导览系统", level: "completed" },
{ id: 70, name: "智能导览设备运用", level: "completed" },
{ id: 71, name: "智慧酒店/智慧景区体验场景模拟", level: "completed" },
// 展会策划教学放在这里(按顺序)
{ id: 72, name: "展会策划教学", level: "completed" },
],
},
{
name: "垂直能力提升",
name: "垂直能力",
id: 2,
list: [
{ id: 1, name: "品牌运营实训", level: "completed" },
@@ -4223,7 +4282,7 @@ export const mockData = {
id: "react-developer",
name: "React开发工程师",
company: "腾讯科技",
level: "中级",
level: "技术骨干岗",
salary: "12-20K",
experience: "2-4年",
resume: {
@@ -4276,7 +4335,7 @@ export const mockData = {
id: "vue-developer",
name: "Vue开发工程师",
company: "阿里巴巴",
level: "高级",
level: "储备干部岗",
salary: "15-25K",
experience: "3-5年",
resume: { personalInfo: { name: "李四" } },
@@ -4295,7 +4354,7 @@ export const mockData = {
id: "angular-developer",
name: "Angular开发工程师",
company: "华为技术",
level: "中级",
level: "技术骨干岗",
salary: "12-18K",
experience: "2-4年",
resume: { personalInfo: { name: "王五" } },
@@ -4333,7 +4392,7 @@ export const mockData = {
id: "mobile-developer",
name: "移动端开发工程师",
company: "小米科技",
level: "高级",
level: "储备干部岗",
salary: "18-28K",
experience: "3-6年",
resume: { personalInfo: { name: "钱七" } },
@@ -4352,7 +4411,7 @@ export const mockData = {
id: "ui-developer",
name: "UI开发工程师",
company: "网易",
level: "中级",
level: "技术骨干岗",
salary: "10-16K",
experience: "2-4年",
resume: { personalInfo: { name: "孙八" } },
@@ -4371,7 +4430,7 @@ export const mockData = {
id: "fullstack-developer",
name: "全栈开发工程师",
company: "京东",
level: "高级",
level: "储备干部岗",
salary: "20-30K",
experience: "4-7年",
resume: { personalInfo: { name: "周九" } },
@@ -4434,7 +4493,7 @@ export const mockData = {
id: "java-developer",
name: "Java开发工程师",
company: "阿里巴巴",
level: "高级",
level: "储备干部岗",
salary: "18-30K",
resume: { personalInfo: { name: "陈一" } },
interviews: {
@@ -4450,7 +4509,7 @@ export const mockData = {
id: "python-developer",
name: "Python开发工程师",
company: "字节跳动",
level: "中级",
level: "技术骨干岗",
salary: "12-20K",
resume: { personalInfo: { name: "林二" } },
interviews: {
@@ -4466,7 +4525,7 @@ export const mockData = {
id: "golang-developer",
name: "Go开发工程师",
company: "腾讯",
level: "高级",
level: "储备干部岗",
salary: "20-35K",
resume: { personalInfo: { name: "黄三" } },
interviews: {
@@ -4482,7 +4541,7 @@ export const mockData = {
id: "nodejs-developer",
name: "Node.js开发工程师",
company: "美团",
level: "中级",
level: "技术骨干岗",
salary: "14-22K",
resume: { personalInfo: { name: "何四" } },
interviews: {
@@ -4498,7 +4557,7 @@ export const mockData = {
id: "php-developer",
name: "PHP开发工程师",
company: "新浪",
level: "中级",
level: "技术骨干岗",
salary: "10-18K",
resume: { personalInfo: { name: "罗五" } },
interviews: {
@@ -4530,7 +4589,7 @@ export const mockData = {
id: "devops-engineer",
name: "DevOps工程师",
company: "小米",
level: "高级",
level: "储备干部岗",
salary: "18-32K",
resume: { personalInfo: { name: "梁七" } },
interviews: {
@@ -4584,7 +4643,7 @@ export const mockData = {
id: "data-analyst",
name: "数据分析师",
company: "阿里巴巴",
level: "高级",
level: "储备干部岗",
salary: "15-25K",
resume: { personalInfo: { name: "陈数据" } },
interviews: {
@@ -4616,7 +4675,7 @@ export const mockData = {
id: "ml-engineer",
name: "机器学习工程师",
company: "百度",
level: "高级",
level: "储备干部岗",
salary: "20-35K",
resume: { personalInfo: { name: "王学习" } },
interviews: {
@@ -4632,7 +4691,7 @@ export const mockData = {
id: "bi-analyst",
name: "BI分析师",
company: "美团",
level: "中级",
level: "技术骨干岗",
salary: "12-20K",
resume: { personalInfo: { name: "赵商业" } },
interviews: {
@@ -4648,7 +4707,7 @@ export const mockData = {
id: "data-engineer",
name: "数据工程师",
company: "字节跳动",
level: "高级",
level: "储备干部岗",
salary: "18-30K",
resume: { personalInfo: { name: "钱工程" } },
interviews: {
@@ -4680,7 +4739,7 @@ export const mockData = {
id: "quant-analyst",
name: "量化分析师",
company: "招商证券",
level: "高级",
level: "储备干部岗",
salary: "25-40K",
resume: { personalInfo: { name: "周量化" } },
interviews: {
@@ -4734,7 +4793,7 @@ export const mockData = {
id: "product-manager",
name: "产品经理",
company: "腾讯",
level: "高级",
level: "储备干部岗",
salary: "20-35K",
resume: { personalInfo: { name: "陈产品" } },
interviews: {
@@ -4750,7 +4809,7 @@ export const mockData = {
id: "ui-designer",
name: "UI设计师",
company: "字节跳动",
level: "中级",
level: "技术骨干岗",
salary: "12-22K",
resume: { personalInfo: { name: "李设计" } },
interviews: {
@@ -4766,7 +4825,7 @@ export const mockData = {
id: "ux-designer",
name: "UX设计师",
company: "阿里巴巴",
level: "高级",
level: "储备干部岗",
salary: "18-30K",
resume: { personalInfo: { name: "王体验" } },
interviews: {
@@ -4782,7 +4841,7 @@ export const mockData = {
id: "product-designer",
name: "产品设计师",
company: "美团",
level: "高级",
level: "储备干部岗",
salary: "16-28K",
resume: { personalInfo: { name: "赵全能" } },
interviews: {
@@ -4798,7 +4857,7 @@ export const mockData = {
id: "interaction-designer",
name: "交互设计师",
company: "网易",
level: "中级",
level: "技术骨干岗",
salary: "14-24K",
resume: { personalInfo: { name: "钱交互" } },
interviews: {
@@ -4814,7 +4873,7 @@ export const mockData = {
id: "visual-designer",
name: "视觉设计师",
company: "小米",
level: "中级",
level: "技术骨干岗",
salary: "10-18K",
resume: { personalInfo: { name: "孙视觉" } },
interviews: {
@@ -4846,7 +4905,7 @@ export const mockData = {
id: "motion-designer",
name: "动效设计师",
company: "蚂蚁金服",
level: "高级",
level: "储备干部岗",
salary: "15-26K",
resume: { personalInfo: { name: "吴动效" } },
interviews: {
@@ -4884,7 +4943,7 @@ export const mockData = {
id: "project-manager",
name: "项目经理",
company: "华为",
level: "高级",
level: "储备干部岗",
salary: "18-30K",
resume: { personalInfo: { name: "陈项目" } },
interviews: {
@@ -4900,7 +4959,7 @@ export const mockData = {
id: "scrum-master",
name: "Scrum Master",
company: "阿里巴巴",
level: "中级",
level: "技术骨干岗",
salary: "15-25K",
resume: { personalInfo: { name: "李敏捷" } },
interviews: {
@@ -4916,7 +4975,7 @@ export const mockData = {
id: "pmo",
name: "PMO专员",
company: "腾讯",
level: "中级",
level: "技术骨干岗",
salary: "12-20K",
resume: { personalInfo: { name: "王规范" } },
interviews: {
@@ -4948,7 +5007,7 @@ export const mockData = {
id: "business-analyst",
name: "业务分析师",
company: "美团",
level: "高级",
level: "储备干部岗",
salary: "16-28K",
resume: { personalInfo: { name: "钱分析" } },
interviews: {
@@ -4964,7 +5023,7 @@ export const mockData = {
id: "delivery-manager",
name: "交付经理",
company: "百度",
level: "高级",
level: "储备干部岗",
salary: "20-32K",
resume: { personalInfo: { name: "孙交付" } },
interviews: {
@@ -4980,7 +5039,7 @@ export const mockData = {
id: "change-manager",
name: "变更管理专员",
company: "IBM",
level: "中级",
level: "技术骨干岗",
salary: "14-22K",
resume: { personalInfo: { name: "周变更" } },
interviews: {
@@ -5125,7 +5184,7 @@ export const mockData = {
courseId: "job-strategy-001",
title: "1V1定制求职策略直播指导",
teacher: "企业资深HR - 魏立慧",
teacherAvatar: "/api/placeholder/48/48",
teacherAvatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpSO4gUtJz.png",
startTime: new Date().toISOString(),
viewers: 1,
description:
@@ -5140,14 +5199,14 @@ export const mockData = {
keyPoints: [
{
id: 1,
time: "10:05",
time: "5:05",
type: "strategy",
title: "个人优势挖掘与定位",
content: "通过深入分析你的专业背景、项目经验和个人特质,确定最适合的求职方向。魏老师强调要从企业用人需求角度出发,找到个人优势与市场需求的最佳匹配点,避免盲目投递简历。"
},
{
id: 2,
time: "10:18",
time: "12:18",
type: "advice",
title: "简历包装的黄金法则",
content: "简历要讲故事不是流水账。每一个项目经验都要用STAR法则情景、任务、行动、结果来描述量化成果数据。技能部分要与目标岗位高度匹配删除无关经历确保HR在30秒内抓住重点。"
@@ -5161,28 +5220,28 @@ export const mockData = {
},
{
id: 4,
time: "10:45",
time: "8:45",
type: "strategy",
title: "面试流程全解析",
content: "从企业角度解读面试环节设置的真实意图初面看基本素质、复面看专业能力、终面看文化匹配。每个环节的考核重点不同要针对性准备。特别是行为面试题要提前准备5-8个核心故事。"
},
{
id: 5,
time: "10:58",
time: "13:58",
type: "timeline",
title: "求职时间管理策略",
content: "制定3阶段求职计划第1-2周完成市场调研和简历优化第3-5周集中投递和面试准备第6-8周面试冲刺和offer选择。合理安排时间节点避免拖延症和焦虑情绪影响求职效果。"
},
{
id: 6,
time: "11:12",
time: "15:12",
type: "advice",
title: "职场新人的发展路径规划",
content: "入职后的前3年是职业发展的黄金期要主动承担挑战性工作建立个人品牌。魏老师建议制定'321职业规划'3年内成为业务骨干2年内获得晋升机会1年内建立核心竞争力。"
},
{
id: 7,
time: "11:25",
time: "20:25",
type: "qa",
title: "热门问题答疑",
content: "针对学员提出的跳槽时机、职业转型、学历不足等问题,魏老师给出针对性建议。特别强调要用成长思维面对职场挑战,每一次求职都是个人品牌的重新包装和升级。"
@@ -5737,9 +5796,9 @@ mockData.dashboardStatistics = {
// 概览数据(临时数据,稍后更新)
overview: {
totalCourses: 100,
completedCourses: 80,
completedCourses: 100,
ongoingCourses: 2,
overallProgress: 80,
overallProgress: 100,
totalCredits: 99,
currentRank: 1,
},
@@ -5769,49 +5828,94 @@ mockData.dashboardStatistics = {
topStudents: [
{
rank: 1,
studentId: "2426030612",
studentId: "2325030612",
studentName: "万圆",
name: "万圆",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/02393125baa474d558c484c0677664b1.jpg",
score: 99,
credits: 99,
isMe: true,
},
{
rank: 2,
studentId: "2426030613",
studentName: "李",
name: "李",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
studentId: "2325030601",
studentName: "李",
name: "李",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/07a0a14c8c8d5476b2c8d54de12e6a06.jpg",
score: 97,
credits: 97,
},
{
rank: 3,
studentId: "2325030599",
studentName: "何晓彤",
name: "何晓彤",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13823046201f0ef17517fb46da12bc35.jpg",
score: 96,
credits: 96,
},
{
rank: 4,
studentId: "2325030602",
studentName: "李奇",
name: "李奇",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13c5709a3993fdf353d147209f8145cb.jpg",
score: 95,
credits: 95,
},
{
rank: 3,
studentId: "2426030614",
studentName: "张华",
name: "张华",
rank: 5,
studentId: "2325030598",
studentName: "程子涵",
name: "程子涵",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/152361c6c68a193660cdbdf9074c2cf3.jpg",
score: 94,
credits: 94,
},
{
rank: 6,
studentId: "2325030603",
studentName: "马一鸣",
name: "马一鸣",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/199b35fbd6ed5e3ea6d6d064cf895a13.jpg",
score: 93,
credits: 93,
},
{
rank: 7,
studentId: "2325030604",
studentName: "唐思远",
name: "唐思远",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 92,
credits: 92,
},
{
rank: 4,
studentId: "2426030615",
studentName: "王丽",
name: "王丽",
rank: 8,
studentId: "2325030597",
studentName: "魏韬",
name: "魏韬",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 92,
credits: 92,
},
{
rank: 9,
studentId: "2325030596",
studentName: "赵子墨",
name: "赵子墨",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 90,
credits: 90,
},
{
rank: 5,
studentId: "2426030616",
studentName: "赵强",
name: "赵强",
rank: 10,
studentId: "2325030605",
studentName: "梁静怡",
name: "梁静怡",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 88,
credits: 88,
score: 89,
credits: 89,
},
],
classInfo: {
@@ -5830,12 +5934,13 @@ mockData.profileOverview = {
realName: "万圆",
studentId: "2426030612",
studentNo: "2426030612",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/02393125baa474d558c484c0677664b1.jpg",
school: "苏州工艺美术职业技术学院",
major: "数字媒体艺术设计",
className: "文旅班",
grade: "2024级",
studyPhase: "复合能力培养",
stageName: "商业活动策划",
mbti: "ENFJ",
mbtiType: "ENFJ",
enrollmentDate: "2024-09-01",
@@ -5857,7 +5962,7 @@ mockData.profileOverview = {
classAverage: 107,
},
courseCompletion: {
personalProgress: 85,
personalProgress: 100,
classAverageProgress: 63,
},
homeworkCompletion: {
@@ -5877,7 +5982,7 @@ mockData.profileOverview = {
// 学习进度
learningProgress: {
overallProgress: 85,
overallProgress: 100,
currentStage: "复合能力培养",
stageProgress: 65,
completedModules: [
@@ -5918,7 +6023,7 @@ mockData.profileOverview = {
issuer: "Adobe",
},
{
name: "展会策划师初级",
name: "展会策划师普通岗",
issueDate: "2024-11-20",
issuer: "中国会展协会",
},
@@ -5957,49 +6062,94 @@ mockData.profileOverview = {
rankings: [
{
rank: 1,
studentId: "2426030612",
studentId: "2325030612",
studentName: "万圆",
name: "万圆",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/02393125baa474d558c484c0677664b1.jpg",
score: 99,
credits: 99,
isMe: true,
},
{
rank: 2,
studentId: "2426030613",
studentName: "李",
name: "李",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
studentId: "2325030601",
studentName: "李",
name: "李",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/07a0a14c8c8d5476b2c8d54de12e6a06.jpg",
score: 97,
credits: 97,
},
{
rank: 3,
studentId: "2325030599",
studentName: "何晓彤",
name: "何晓彤",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13823046201f0ef17517fb46da12bc35.jpg",
score: 96,
credits: 96,
},
{
rank: 4,
studentId: "2325030602",
studentName: "李奇",
name: "李奇",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13c5709a3993fdf353d147209f8145cb.jpg",
score: 95,
credits: 95,
},
{
rank: 3,
studentId: "2426030614",
studentName: "张华",
name: "张华",
rank: 5,
studentId: "2325030598",
studentName: "程子涵",
name: "程子涵",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/152361c6c68a193660cdbdf9074c2cf3.jpg",
score: 94,
credits: 94,
},
{
rank: 6,
studentId: "2325030603",
studentName: "马一鸣",
name: "马一鸣",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/199b35fbd6ed5e3ea6d6d064cf895a13.jpg",
score: 93,
credits: 93,
},
{
rank: 7,
studentId: "2325030604",
studentName: "唐思远",
name: "唐思远",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 92,
credits: 92,
},
{
rank: 4,
studentId: "2426030615",
studentName: "王丽",
name: "王丽",
rank: 8,
studentId: "2325030597",
studentName: "魏韬",
name: "魏韬",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 92,
credits: 92,
},
{
rank: 9,
studentId: "2325030596",
studentName: "赵子墨",
name: "赵子墨",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 90,
credits: 90,
},
{
rank: 5,
studentId: "2426030616",
studentName: "赵强",
name: "赵强",
rank: 10,
studentId: "2325030605",
studentName: "梁静怡",
name: "梁静怡",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 88,
credits: 88,
score: 89,
credits: 89,
},
],
classInfo: {
@@ -6104,12 +6254,13 @@ mockData.profileOverview = {
realName: "万圆",
studentId: "2426030612",
studentNo: "2426030612",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
school: "苏州工艺美术职业技术学院",
major: "数字媒体艺术设计",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/02393125baa474d558c484c0677664b1.jpg",
school: "苏州信息职业技术学院",
major: "旅游管理",
className: "文旅班",
grade: "2024级",
studyPhase: "复合能力培养",
stageName: "商业活动策划班",
mbti: "ENFJ",
mbtiType: "ENFJ",
enrollmentDate: "2024-09-01",
@@ -6131,7 +6282,7 @@ mockData.profileOverview = {
classAverage: 107,
},
courseCompletion: {
personalProgress: 85,
personalProgress: 100,
classAverageProgress: 63,
},
homeworkCompletion: {
@@ -6151,7 +6302,7 @@ mockData.profileOverview = {
// 学习进度
learningProgress: {
overallProgress: 85,
overallProgress: 100,
currentStage: "复合能力培养",
stageProgress: 65,
completedModules: [
@@ -6192,7 +6343,7 @@ mockData.profileOverview = {
issuer: "Adobe",
},
{
name: "展会策划师初级",
name: "展会策划师普通岗",
issueDate: "2024-11-20",
issuer: "中国会展协会",
},
@@ -6231,49 +6382,94 @@ mockData.profileOverview = {
rankings: [
{
rank: 1,
studentId: "2426030612",
studentId: "2325030612",
studentName: "万圆",
name: "万圆",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/02393125baa474d558c484c0677664b1.jpg",
score: 99,
credits: 99,
isMe: true,
},
{
rank: 2,
studentId: "2426030613",
studentName: "李",
name: "李",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
studentId: "2325030601",
studentName: "李",
name: "李",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/07a0a14c8c8d5476b2c8d54de12e6a06.jpg",
score: 97,
credits: 97,
},
{
rank: 3,
studentId: "2325030599",
studentName: "何晓彤",
name: "何晓彤",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13823046201f0ef17517fb46da12bc35.jpg",
score: 96,
credits: 96,
},
{
rank: 4,
studentId: "2325030602",
studentName: "李奇",
name: "李奇",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13c5709a3993fdf353d147209f8145cb.jpg",
score: 95,
credits: 95,
},
{
rank: 3,
studentId: "2426030614",
studentName: "张华",
name: "张华",
rank: 5,
studentId: "2325030598",
studentName: "程子涵",
name: "程子涵",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/152361c6c68a193660cdbdf9074c2cf3.jpg",
score: 94,
credits: 94,
},
{
rank: 6,
studentId: "2325030603",
studentName: "马一鸣",
name: "马一鸣",
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/199b35fbd6ed5e3ea6d6d064cf895a13.jpg",
score: 93,
credits: 93,
},
{
rank: 7,
studentId: "2325030604",
studentName: "唐思远",
name: "唐思远",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 92,
credits: 92,
},
{
rank: 4,
studentId: "2426030615",
studentName: "王丽",
name: "王丽",
rank: 8,
studentId: "2325030597",
studentName: "魏韬",
name: "魏韬",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 92,
credits: 92,
},
{
rank: 9,
studentId: "2325030596",
studentName: "赵子墨",
name: "赵子墨",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 90,
credits: 90,
},
{
rank: 5,
studentId: "2426030616",
studentName: "赵强",
name: "赵强",
rank: 10,
studentId: "2325030605",
studentName: "梁静怡",
name: "梁静怡",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
score: 88,
credits: 88,
score: 89,
credits: 89,
},
],
classInfo: {
@@ -6761,7 +6957,7 @@ mockData.courseLiveList = [
},
{
"courseId": "c7-3",
"courseName": "AIGC语言模型chatgpt的灵活应...",
"courseName": "AIGC语言模型chatgpt的灵活应",
"teacherName": "赵志强",
"date": "2025-09-04",
"completed": false,
@@ -6779,7 +6975,7 @@ mockData.courseLiveList = [
},
{
"courseId": "c7-5",
"courseName": "AIGC图像生成模型Stable Di...",
"courseName": "AIGC图像生成模型Stable Diffusion基础与实践",
"teacherName": "刘杰",
"date": "2025-09-10",
"completed": false,
@@ -6788,7 +6984,7 @@ mockData.courseLiveList = [
},
{
"courseId": "c7-6",
"courseName": "AIGC图像生成模型Stable Di...",
"courseName": "AIGC图像生成模型Stable Diffusion基础与实践",
"teacherName": "刘杰",
"date": "2025-09-11",
"completed": false,
@@ -6797,7 +6993,7 @@ mockData.courseLiveList = [
},
{
"courseId": "c7-7",
"courseName": "AIGC图像生成模型Stable Di...",
"courseName": "AIGC图像生成模型Stable Diffusion基础与实践",
"teacherName": "刘杰",
"date": "2025-09-16",
"completed": false,
@@ -6806,7 +7002,7 @@ mockData.courseLiveList = [
},
{
"courseId": "c7-8",
"courseName": "AIGC图像生成模型Stable Di...",
"courseName": "AIGC图像生成模型Stable Diffusion基础与实践",
"teacherName": "刘杰",
"date": "2025-09-17",
"completed": false,
@@ -6815,7 +7011,7 @@ mockData.courseLiveList = [
},
{
"courseId": "c7-9",
"courseName": "AIGC视频应用音视频生成与AI自动剪...",
"courseName": "AIGC视频应用音视频生成与AI自动剪",
"teacherName": "赵志强",
"date": "2025-09-18",
"completed": false,
@@ -6824,7 +7020,7 @@ mockData.courseLiveList = [
},
{
"courseId": "c7-10",
"courseName": "AIGC视频应用音视频生成与AI自动剪...",
"courseName": "AIGC视频应用音视频生成与AI自动剪",
"teacherName": "赵志强",
"date": "2025-09-23",
"completed": false,
@@ -7367,7 +7563,7 @@ mockData.dashboardStatistics.courses = {
{
"id": 49,
"title": "完成AIGC语言模型chatgpt的灵活应...课程学习",
"courseName": "AIGC语言模型chatgpt的灵活应...",
"courseName": "AIGC语言模型chatgpt的灵活应",
"date": "2025-09-04",
"deadline": "2025-09-04 21:00",
"priority": "medium",
@@ -7957,7 +8153,7 @@ mockData.dashboardStatistics.courses = {
{
"id": 49,
"title": "完成AIGC语言模型chatgpt的灵活应...课程学习",
"courseName": "AIGC语言模型chatgpt的灵活应...",
"courseName": "AIGC语言模型chatgpt的灵活应",
"date": "2025-09-04",
"deadline": "2025-09-04 21:00",
"priority": "medium",
@@ -8094,9 +8290,9 @@ mockData.dashboardStatistics.courses = {
mockData.dashboardStatistics.overview.completedCourses = mockData.courseLiveList.reduce((acc, unit) =>
acc + unit.courses.filter(c => c.completed).length, 0);
mockData.dashboardStatistics.overview.ongoingCourses = dashboardCourseData.todaysCourses.filter(c => c.status === "直播中").length;
mockData.dashboardStatistics.overview.overallProgress = Math.round(
(mockData.dashboardStatistics.overview.completedCourses / mockData.dashboardStatistics.overview.totalCourses) * 100
);
// mockData.dashboardStatistics.overview.overallProgress = Math.round(
// (mockData.dashboardStatistics.overview.completedCourses / mockData.dashboardStatistics.overview.totalCourses) * 100
// );
// 添加日历事件到dashboardStatistics
mockData.dashboardStatistics.calendarEvents = mockData.calendarEvents;