fix: 修复多个页面显示和数据问题
- 修复定制求职策略页面图片超出容器问题 - 修复企业内推岗位页面面试数据结构和显示 - 删除日历页面的当日事项侧边栏 - 修复主页Dashboard当日事项数据显示 - 修正9月份任务数据的teacherName字段 - 修复日期筛选的时区问题 - 删除任务列表中的课程名称显示 - 将英文"course"改为中文"课程" - 添加9月份完整的任务数据到allTasks数组 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -36,7 +36,12 @@
|
|||||||
"Bash(git push:*)",
|
"Bash(git push:*)",
|
||||||
"Read(/private/tmp/**)",
|
"Read(/private/tmp/**)",
|
||||||
"Read(/private/tmp/reference_repo/src/components/ClassRank/**)",
|
"Read(/private/tmp/reference_repo/src/components/ClassRank/**)",
|
||||||
"Bash(pnpm run dev:*)"
|
"Bash(pnpm run dev:*)",
|
||||||
|
"Read(//**)",
|
||||||
|
"Bash(for func in \"calculateStageProgress\" \"checkMilestoneBlockage\" \"generateCalendarDays\" \"getCurrentActiveStage\" \"getOverallProgress\" \"getWeekDays\" \"updateStageStatuses\")",
|
||||||
|
"Bash(do)",
|
||||||
|
"Bash(echo \"=== $func ===\")",
|
||||||
|
"Bash(done)"
|
||||||
],
|
],
|
||||||
"deny": [],
|
"deny": [],
|
||||||
"ask": []
|
"ask": []
|
||||||
|
|||||||
1
.serena/.gitignore
vendored
Normal file
1
.serena/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/cache
|
||||||
@@ -468,8 +468,8 @@
|
|||||||
"courseName": "AIGC的基本概念与各领域的应用",
|
"courseName": "AIGC的基本概念与各领域的应用",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-09-03",
|
"date": "2025-09-03",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": true,
|
||||||
"upcoming": false
|
"upcoming": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -477,99 +477,99 @@
|
|||||||
"courseName": "AIGC语言模型:chatgpt的灵活应...",
|
"courseName": "AIGC语言模型:chatgpt的灵活应...",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-09-04",
|
"date": "2025-09-04",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c7-4",
|
"courseId": "c7-4",
|
||||||
"courseName": "AIGC生成内容的版权问题与合规使用",
|
"courseName": "AIGC生成内容的版权问题与合规使用",
|
||||||
"teacherName": "刘杰",
|
"teacherName": "刘杰",
|
||||||
"date": "2025-09-09",
|
"date": "2025-09-09",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c7-5",
|
"courseId": "c7-5",
|
||||||
"courseName": "AIGC图像生成模型:Stable Di...",
|
"courseName": "AIGC图像生成模型:Stable Di...",
|
||||||
"teacherName": "刘杰",
|
"teacherName": "刘杰",
|
||||||
"date": "2025-09-10",
|
"date": "2025-09-10",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c7-6",
|
"courseId": "c7-6",
|
||||||
"courseName": "AIGC图像生成模型:Stable Di...",
|
"courseName": "AIGC图像生成模型:Stable Di...",
|
||||||
"teacherName": "刘杰",
|
"teacherName": "刘杰",
|
||||||
"date": "2025-09-11",
|
"date": "2025-09-11",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c7-7",
|
"courseId": "c7-7",
|
||||||
"courseName": "AIGC图像生成模型:Stable Di...",
|
"courseName": "AIGC图像生成模型:Stable Di...",
|
||||||
"teacherName": "刘杰",
|
"teacherName": "刘杰",
|
||||||
"date": "2025-09-16",
|
"date": "2025-09-16",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c7-8",
|
"courseId": "c7-8",
|
||||||
"courseName": "AIGC图像生成模型:Stable Di...",
|
"courseName": "AIGC图像生成模型:Stable Di...",
|
||||||
"teacherName": "刘杰",
|
"teacherName": "刘杰",
|
||||||
"date": "2025-09-17",
|
"date": "2025-09-17",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c7-9",
|
"courseId": "c7-9",
|
||||||
"courseName": "AIGC视频应用:音视频生成与AI自动剪...",
|
"courseName": "AIGC视频应用:音视频生成与AI自动剪...",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-09-18",
|
"date": "2025-09-18",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c7-10",
|
"courseId": "c7-10",
|
||||||
"courseName": "AIGC视频应用:音视频生成与AI自动剪...",
|
"courseName": "AIGC视频应用:音视频生成与AI自动剪...",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-09-23",
|
"date": "2025-09-23",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c7-11",
|
"courseId": "c7-11",
|
||||||
"courseName": "AI词曲创作:suno",
|
"courseName": "AI词曲创作:suno",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-09-24",
|
"date": "2025-09-24",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c7-12",
|
"courseId": "c7-12",
|
||||||
"courseName": "AI词曲创作:suno",
|
"courseName": "AI词曲创作:suno",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-09-25",
|
"date": "2025-09-25",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c7-13",
|
"courseId": "c7-13",
|
||||||
"courseName": "单元小结",
|
"courseName": "单元小结",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-09-30",
|
"date": "2025-09-30",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -582,117 +582,117 @@
|
|||||||
"courseName": "新媒体应用传播学",
|
"courseName": "新媒体应用传播学",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-10-01",
|
"date": "2025-10-01",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-2",
|
"courseId": "c8-2",
|
||||||
"courseName": "新媒体故事结构入门",
|
"courseName": "新媒体故事结构入门",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-10-02",
|
"date": "2025-10-02",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-3",
|
"courseId": "c8-3",
|
||||||
"courseName": "新媒体产品策划",
|
"courseName": "新媒体产品策划",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-10-07",
|
"date": "2025-10-07",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-4",
|
"courseId": "c8-4",
|
||||||
"courseName": "平台账号经营与内容赛道",
|
"courseName": "平台账号经营与内容赛道",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-10-08",
|
"date": "2025-10-08",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-5",
|
"courseId": "c8-5",
|
||||||
"courseName": "各平台变现方式与具体方法",
|
"courseName": "各平台变现方式与具体方法",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-10-09",
|
"date": "2025-10-09",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-6",
|
"courseId": "c8-6",
|
||||||
"courseName": "内容运营:短视频的制作工具",
|
"courseName": "内容运营:短视频的制作工具",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-10-14",
|
"date": "2025-10-14",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-7",
|
"courseId": "c8-7",
|
||||||
"courseName": "内容运营:短视频的制作工具",
|
"courseName": "内容运营:短视频的制作工具",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-10-15",
|
"date": "2025-10-15",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-8",
|
"courseId": "c8-8",
|
||||||
"courseName": "内容运营:短视频的制作工具",
|
"courseName": "内容运营:短视频的制作工具",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-10-16",
|
"date": "2025-10-16",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-9",
|
"courseId": "c8-9",
|
||||||
"courseName": "内容运营:短视频的制作工具",
|
"courseName": "内容运营:短视频的制作工具",
|
||||||
"teacherName": "赵志强",
|
"teacherName": "赵志强",
|
||||||
"date": "2025-10-21",
|
"date": "2025-10-21",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-10",
|
"courseId": "c8-10",
|
||||||
"courseName": "内容运营:短视频制作内容对标",
|
"courseName": "内容运营:短视频制作内容对标",
|
||||||
"teacherName": "刘杰",
|
"teacherName": "刘杰",
|
||||||
"date": "2025-10-22",
|
"date": "2025-10-22",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-11",
|
"courseId": "c8-11",
|
||||||
"courseName": "内容运营:短视频制作内容对标",
|
"courseName": "内容运营:短视频制作内容对标",
|
||||||
"teacherName": "刘杰",
|
"teacherName": "刘杰",
|
||||||
"date": "2025-10-23",
|
"date": "2025-10-23",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-12",
|
"courseId": "c8-12",
|
||||||
"courseName": "直播运营:直播间的搭建",
|
"courseName": "直播运营:直播间的搭建",
|
||||||
"teacherName": "刘杰",
|
"teacherName": "刘杰",
|
||||||
"date": "2025-10-28",
|
"date": "2025-10-28",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-13",
|
"courseId": "c8-13",
|
||||||
"courseName": "直播运营:直播间的搭建",
|
"courseName": "直播运营:直播间的搭建",
|
||||||
"teacherName": "刘杰",
|
"teacherName": "刘杰",
|
||||||
"date": "2025-10-29",
|
"date": "2025-10-29",
|
||||||
"completed": true,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-14",
|
"courseId": "c8-14",
|
||||||
@@ -701,7 +701,7 @@
|
|||||||
"date": "2025-10-30",
|
"date": "2025-10-30",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-15",
|
"courseId": "c8-15",
|
||||||
@@ -710,7 +710,7 @@
|
|||||||
"date": "2025-11-04",
|
"date": "2025-11-04",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-16",
|
"courseId": "c8-16",
|
||||||
@@ -719,7 +719,7 @@
|
|||||||
"date": "2025-11-05",
|
"date": "2025-11-05",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-17",
|
"courseId": "c8-17",
|
||||||
@@ -728,7 +728,7 @@
|
|||||||
"date": "2025-11-06",
|
"date": "2025-11-06",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-18",
|
"courseId": "c8-18",
|
||||||
@@ -737,7 +737,7 @@
|
|||||||
"date": "2025-11-11",
|
"date": "2025-11-11",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-19",
|
"courseId": "c8-19",
|
||||||
@@ -746,7 +746,7 @@
|
|||||||
"date": "2025-11-12",
|
"date": "2025-11-12",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c8-20",
|
"courseId": "c8-20",
|
||||||
@@ -755,7 +755,7 @@
|
|||||||
"date": "2025-11-13",
|
"date": "2025-11-13",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -770,7 +770,7 @@
|
|||||||
"date": "2025-11-18",
|
"date": "2025-11-18",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-2",
|
"courseId": "c9-2",
|
||||||
@@ -779,7 +779,7 @@
|
|||||||
"date": "2025-11-19",
|
"date": "2025-11-19",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-3",
|
"courseId": "c9-3",
|
||||||
@@ -788,7 +788,7 @@
|
|||||||
"date": "2025-11-20",
|
"date": "2025-11-20",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-4",
|
"courseId": "c9-4",
|
||||||
@@ -797,7 +797,7 @@
|
|||||||
"date": "2025-11-25",
|
"date": "2025-11-25",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-5",
|
"courseId": "c9-5",
|
||||||
@@ -806,7 +806,7 @@
|
|||||||
"date": "2025-11-26",
|
"date": "2025-11-26",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-6",
|
"courseId": "c9-6",
|
||||||
@@ -815,7 +815,7 @@
|
|||||||
"date": "2025-11-27",
|
"date": "2025-11-27",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-7",
|
"courseId": "c9-7",
|
||||||
@@ -824,7 +824,7 @@
|
|||||||
"date": "2025-12-02",
|
"date": "2025-12-02",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-8",
|
"courseId": "c9-8",
|
||||||
@@ -833,7 +833,7 @@
|
|||||||
"date": "2025-12-03",
|
"date": "2025-12-03",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-9",
|
"courseId": "c9-9",
|
||||||
@@ -842,7 +842,7 @@
|
|||||||
"date": "2025-12-04",
|
"date": "2025-12-04",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-10",
|
"courseId": "c9-10",
|
||||||
@@ -851,7 +851,7 @@
|
|||||||
"date": "2025-12-09",
|
"date": "2025-12-09",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-11",
|
"courseId": "c9-11",
|
||||||
@@ -860,7 +860,7 @@
|
|||||||
"date": "2025-12-10",
|
"date": "2025-12-10",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-12",
|
"courseId": "c9-12",
|
||||||
@@ -869,7 +869,7 @@
|
|||||||
"date": "2025-12-11",
|
"date": "2025-12-11",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-13",
|
"courseId": "c9-13",
|
||||||
@@ -878,7 +878,7 @@
|
|||||||
"date": "2025-12-16",
|
"date": "2025-12-16",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c9-14",
|
"courseId": "c9-14",
|
||||||
@@ -887,7 +887,7 @@
|
|||||||
"date": "2025-12-17",
|
"date": "2025-12-17",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -902,7 +902,7 @@
|
|||||||
"date": "2025-12-18",
|
"date": "2025-12-18",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c10-2",
|
"courseId": "c10-2",
|
||||||
@@ -911,7 +911,7 @@
|
|||||||
"date": "2025-12-23",
|
"date": "2025-12-23",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c10-3",
|
"courseId": "c10-3",
|
||||||
@@ -920,7 +920,7 @@
|
|||||||
"date": "2025-12-24",
|
"date": "2025-12-24",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c10-4",
|
"courseId": "c10-4",
|
||||||
@@ -929,7 +929,7 @@
|
|||||||
"date": "2025-12-25",
|
"date": "2025-12-25",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c10-5",
|
"courseId": "c10-5",
|
||||||
@@ -938,7 +938,7 @@
|
|||||||
"date": "2025-12-30",
|
"date": "2025-12-30",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c10-6",
|
"courseId": "c10-6",
|
||||||
@@ -947,7 +947,7 @@
|
|||||||
"date": "2025-12-31",
|
"date": "2025-12-31",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"courseId": "c10-7",
|
"courseId": "c10-7",
|
||||||
@@ -956,7 +956,7 @@
|
|||||||
"date": "2026-01-01",
|
"date": "2026-01-01",
|
||||||
"completed": false,
|
"completed": false,
|
||||||
"current": false,
|
"current": false,
|
||||||
"upcoming": false
|
"upcoming": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
619
dashboardTasksData.json
Normal file
619
dashboardTasksData.json
Normal file
@@ -0,0 +1,619 @@
|
|||||||
|
{
|
||||||
|
"todayTasks": [
|
||||||
|
{
|
||||||
|
"id": 48,
|
||||||
|
"title": "完成AIGC的基本概念与各领域的应用课程学习",
|
||||||
|
"courseName": "AIGC的基本概念与各领域的应用",
|
||||||
|
"date": "2025-09-03",
|
||||||
|
"deadline": "2025-09-03 21:00",
|
||||||
|
"priority": "high",
|
||||||
|
"status": "IN_PROGRESS",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "AIGC人工智能生成内容",
|
||||||
|
"type": "course"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"allTasks": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"title": "完成教育体系认知课程学习",
|
||||||
|
"courseName": "教育体系认知",
|
||||||
|
"date": "2025-03-04",
|
||||||
|
"deadline": "2025-03-04 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "岗位体系认知",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"title": "完成现代文旅类企业的管理体系课程学习",
|
||||||
|
"courseName": "现代文旅类企业的管理体系",
|
||||||
|
"date": "2025-03-05",
|
||||||
|
"deadline": "2025-03-05 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "岗位体系认知",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"title": "完成专科生的职业规划课程学习",
|
||||||
|
"courseName": "专科生的职业规划",
|
||||||
|
"date": "2025-03-06",
|
||||||
|
"deadline": "2025-03-06 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "岗位体系认知",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"title": "完成文旅产业认知课课程学习",
|
||||||
|
"courseName": "文旅产业认知课",
|
||||||
|
"date": "2025-03-11",
|
||||||
|
"deadline": "2025-03-11 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "产业认知课",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"title": "完成行业详解:旅游行业课程学习",
|
||||||
|
"courseName": "行业详解:旅游行业",
|
||||||
|
"date": "2025-03-12",
|
||||||
|
"deadline": "2025-03-12 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "产业认知课",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"title": "完成行业详解:酒店与民宿行业课程学习",
|
||||||
|
"courseName": "行业详解:酒店与民宿行业",
|
||||||
|
"date": "2025-03-13",
|
||||||
|
"deadline": "2025-03-13 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "产业认知课",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"title": "完成行业详解:活动与会展行业课程学习",
|
||||||
|
"courseName": "行业详解:活动与会展行业",
|
||||||
|
"date": "2025-03-18",
|
||||||
|
"deadline": "2025-03-18 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "产业认知课",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"title": "完成行业详解:文化服务行业课程学习",
|
||||||
|
"courseName": "行业详解:文化服务行业",
|
||||||
|
"date": "2025-03-19",
|
||||||
|
"deadline": "2025-03-19 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "产业认知课",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"title": "完成现代文旅产业生态图谱课程学习",
|
||||||
|
"courseName": "现代文旅产业生态图谱",
|
||||||
|
"date": "2025-03-20",
|
||||||
|
"deadline": "2025-03-20 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "旅游产业全景与文旅基础知识",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"title": "完成文旅政策法规与风险管理课程学习",
|
||||||
|
"courseName": "文旅政策法规与风险管理",
|
||||||
|
"date": "2025-03-25",
|
||||||
|
"deadline": "2025-03-25 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "旅游产业全景与文旅基础知识",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"title": "完成旅游产品与旅游资源课程学习",
|
||||||
|
"courseName": "旅游产品与旅游资源",
|
||||||
|
"date": "2025-03-26",
|
||||||
|
"deadline": "2025-03-26 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "旅游产业全景与文旅基础知识",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"title": "完成游客行为心理学基础课程学习",
|
||||||
|
"courseName": "游客行为心理学基础",
|
||||||
|
"date": "2025-03-27",
|
||||||
|
"deadline": "2025-03-27 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "旅游产业全景与文旅基础知识",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 13,
|
||||||
|
"title": "完成可持续旅游发展课程学习",
|
||||||
|
"courseName": "可持续旅游发展",
|
||||||
|
"date": "2025-04-01",
|
||||||
|
"deadline": "2025-04-01 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "旅游产业全景与文旅基础知识",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 14,
|
||||||
|
"title": "完成单元小结课程学习",
|
||||||
|
"courseName": "单元小结",
|
||||||
|
"date": "2025-04-02",
|
||||||
|
"deadline": "2025-04-02 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "旅游产业全景与文旅基础知识",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 15,
|
||||||
|
"title": "完成文旅场景职业形象IP塑造课程学习",
|
||||||
|
"courseName": "文旅场景职业形象IP塑造",
|
||||||
|
"date": "2025-04-03",
|
||||||
|
"deadline": "2025-04-03 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "郭建辉",
|
||||||
|
"unit": "文旅服务:形象、沟通与体验的融合艺术",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 16,
|
||||||
|
"title": "完成情境化服务体验设计课程学习",
|
||||||
|
"courseName": "情境化服务体验设计",
|
||||||
|
"date": "2025-04-08",
|
||||||
|
"deadline": "2025-04-08 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "郭建辉",
|
||||||
|
"unit": "文旅服务:形象、沟通与体验的融合艺术",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 17,
|
||||||
|
"title": "完成政务商务接待专项礼仪课程学习",
|
||||||
|
"courseName": "政务商务接待专项礼仪",
|
||||||
|
"date": "2025-04-09",
|
||||||
|
"deadline": "2025-04-09 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "郭建辉",
|
||||||
|
"unit": "文旅服务:形象、沟通与体验的融合艺术",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 18,
|
||||||
|
"title": "完成文旅服务中的非语言表达课程学习",
|
||||||
|
"courseName": "文旅服务中的非语言表达",
|
||||||
|
"date": "2025-04-10",
|
||||||
|
"deadline": "2025-04-10 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "郭建辉",
|
||||||
|
"unit": "文旅服务:形象、沟通与体验的融合艺术",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 19,
|
||||||
|
"title": "完成服务沟通技巧与表达训练课程学习",
|
||||||
|
"courseName": "服务沟通技巧与表达训练",
|
||||||
|
"date": "2025-04-15",
|
||||||
|
"deadline": "2025-04-15 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "郭建辉",
|
||||||
|
"unit": "文旅服务:形象、沟通与体验的融合艺术",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20,
|
||||||
|
"title": "完成多元文化下的服务表达差异课程学习",
|
||||||
|
"courseName": "多元文化下的服务表达差异",
|
||||||
|
"date": "2025-04-16",
|
||||||
|
"deadline": "2025-04-16 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "郭建辉",
|
||||||
|
"unit": "文旅服务:形象、沟通与体验的融合艺术",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 21,
|
||||||
|
"title": "完成单元小结课程学习",
|
||||||
|
"courseName": "单元小结",
|
||||||
|
"date": "2025-04-17",
|
||||||
|
"deadline": "2025-04-17 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "郭建辉",
|
||||||
|
"unit": "文旅服务:形象、沟通与体验的融合艺术",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 22,
|
||||||
|
"title": "完成供应链管理的内容课程学习",
|
||||||
|
"courseName": "供应链管理的内容",
|
||||||
|
"date": "2025-04-22",
|
||||||
|
"deadline": "2025-04-22 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "文旅与供应链基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 23,
|
||||||
|
"title": "完成文旅资源调度课程学习",
|
||||||
|
"courseName": "文旅资源调度",
|
||||||
|
"date": "2025-04-23",
|
||||||
|
"deadline": "2025-04-23 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "文旅与供应链基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 24,
|
||||||
|
"title": "完成文旅产品全生命周期管理课程学习",
|
||||||
|
"courseName": "文旅产品全生命周期管理",
|
||||||
|
"date": "2025-04-24",
|
||||||
|
"deadline": "2025-04-24 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "文旅与供应链基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 25,
|
||||||
|
"title": "完成文旅商品供应链课程学习",
|
||||||
|
"courseName": "文旅商品供应链",
|
||||||
|
"date": "2025-04-29",
|
||||||
|
"deadline": "2025-04-29 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "文旅与供应链基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 26,
|
||||||
|
"title": "完成住宿业资源协同课程学习",
|
||||||
|
"courseName": "住宿业资源协同",
|
||||||
|
"date": "2025-04-30",
|
||||||
|
"deadline": "2025-04-30 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "文旅与供应链基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 27,
|
||||||
|
"title": "完成小型文旅项目的供应链角色模拟课程学习",
|
||||||
|
"courseName": "小型文旅项目的供应链角色模拟",
|
||||||
|
"date": "2025-05-01",
|
||||||
|
"deadline": "2025-05-01 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "文旅与供应链基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 28,
|
||||||
|
"title": "完成文旅项目供应链特征课程学习",
|
||||||
|
"courseName": "文旅项目供应链特征",
|
||||||
|
"date": "2025-05-06",
|
||||||
|
"deadline": "2025-05-06 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "文旅与供应链基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 29,
|
||||||
|
"title": "完成文旅供应链中的B2B与B2C模式课程学习",
|
||||||
|
"courseName": "文旅供应链中的B2B与B2C模式",
|
||||||
|
"date": "2025-05-07",
|
||||||
|
"deadline": "2025-05-07 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "文旅与供应链基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 30,
|
||||||
|
"title": "完成单元小结课程学习",
|
||||||
|
"courseName": "单元小结",
|
||||||
|
"date": "2025-05-08",
|
||||||
|
"deadline": "2025-05-08 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "文旅与供应链基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 31,
|
||||||
|
"title": "完成现代设计行业的发展现状课程学习",
|
||||||
|
"courseName": "现代设计行业的发展现状",
|
||||||
|
"date": "2025-05-13",
|
||||||
|
"deadline": "2025-05-13 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 32,
|
||||||
|
"title": "完成设计基础课程学习",
|
||||||
|
"courseName": "设计基础",
|
||||||
|
"date": "2025-05-14",
|
||||||
|
"deadline": "2025-05-14 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 33,
|
||||||
|
"title": "完成字体设计与中文字体情绪表达课程学习",
|
||||||
|
"courseName": "字体设计与中文字体情绪表达",
|
||||||
|
"date": "2025-05-15",
|
||||||
|
"deadline": "2025-05-15 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 34,
|
||||||
|
"title": "完成商业平面色彩搭配课程学习",
|
||||||
|
"courseName": "商业平面色彩搭配",
|
||||||
|
"date": "2025-05-20",
|
||||||
|
"deadline": "2025-05-20 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 35,
|
||||||
|
"title": "完成平面设计构图课程学习",
|
||||||
|
"courseName": "平面设计构图",
|
||||||
|
"date": "2025-05-21",
|
||||||
|
"deadline": "2025-05-21 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 36,
|
||||||
|
"title": "完成图像编辑工具:Photoshop课程学习",
|
||||||
|
"courseName": "图像编辑工具:Photoshop",
|
||||||
|
"date": "2025-05-22",
|
||||||
|
"deadline": "2025-05-22 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 37,
|
||||||
|
"title": "完成图像编辑工具:Photoshop课程学习",
|
||||||
|
"courseName": "图像编辑工具:Photoshop",
|
||||||
|
"date": "2025-05-27",
|
||||||
|
"deadline": "2025-05-27 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 38,
|
||||||
|
"title": "完成矢量与标志设计:Illustrator课程学习",
|
||||||
|
"courseName": "矢量与标志设计:Illustrator",
|
||||||
|
"date": "2025-05-28",
|
||||||
|
"deadline": "2025-05-28 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 39,
|
||||||
|
"title": "完成矢量与标志设计:Illustrator课程学习",
|
||||||
|
"courseName": "矢量与标志设计:Illustrator",
|
||||||
|
"date": "2025-05-29",
|
||||||
|
"deadline": "2025-05-29 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 40,
|
||||||
|
"title": "完成快速设计工具使用:Canva课程学习",
|
||||||
|
"courseName": "快速设计工具使用:Canva",
|
||||||
|
"date": "2025-06-03",
|
||||||
|
"deadline": "2025-06-03 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 41,
|
||||||
|
"title": "完成快速设计工具使用:Canva课程学习",
|
||||||
|
"courseName": "快速设计工具使用:Canva",
|
||||||
|
"date": "2025-06-04",
|
||||||
|
"deadline": "2025-06-04 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 42,
|
||||||
|
"title": "完成移动端视觉原型设计:Figma课程学习",
|
||||||
|
"courseName": "移动端视觉原型设计:Figma",
|
||||||
|
"date": "2025-06-05",
|
||||||
|
"deadline": "2025-06-05 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 43,
|
||||||
|
"title": "完成移动端视觉原型设计:Figma课程学习",
|
||||||
|
"courseName": "移动端视觉原型设计:Figma",
|
||||||
|
"date": "2025-06-10",
|
||||||
|
"deadline": "2025-06-10 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 44,
|
||||||
|
"title": "完成视频剪辑入门:剪映课程学习",
|
||||||
|
"courseName": "视频剪辑入门:剪映",
|
||||||
|
"date": "2025-06-11",
|
||||||
|
"deadline": "2025-06-11 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 45,
|
||||||
|
"title": "完成视频剪辑入门:剪映课程学习",
|
||||||
|
"courseName": "视频剪辑入门:剪映",
|
||||||
|
"date": "2025-06-12",
|
||||||
|
"deadline": "2025-06-12 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 46,
|
||||||
|
"title": "完成单元小结课程学习",
|
||||||
|
"courseName": "单元小结",
|
||||||
|
"date": "2025-06-17",
|
||||||
|
"deadline": "2025-06-17 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "商业设计基础",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 47,
|
||||||
|
"title": "完成AIGC发展简史与基本逻辑课程学习",
|
||||||
|
"courseName": "AIGC发展简史与基本逻辑",
|
||||||
|
"date": "2025-09-02",
|
||||||
|
"deadline": "2025-09-02 21:00",
|
||||||
|
"priority": "low",
|
||||||
|
"status": "COMPLETED",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "AIGC人工智能生成内容",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 48,
|
||||||
|
"title": "完成AIGC的基本概念与各领域的应用课程学习",
|
||||||
|
"courseName": "AIGC的基本概念与各领域的应用",
|
||||||
|
"date": "2025-09-03",
|
||||||
|
"deadline": "2025-09-03 21:00",
|
||||||
|
"priority": "high",
|
||||||
|
"status": "IN_PROGRESS",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "AIGC人工智能生成内容",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 49,
|
||||||
|
"title": "完成AIGC语言模型:chatgpt的灵活应...课程学习",
|
||||||
|
"courseName": "AIGC语言模型:chatgpt的灵活应...",
|
||||||
|
"date": "2025-09-04",
|
||||||
|
"deadline": "2025-09-04 21:00",
|
||||||
|
"priority": "medium",
|
||||||
|
"status": "PENDING",
|
||||||
|
"teacher": "赵志强",
|
||||||
|
"unit": "AIGC人工智能生成内容",
|
||||||
|
"type": "course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 50,
|
||||||
|
"title": "完成AIGC生成内容的版权问题与合规使用课程学习",
|
||||||
|
"courseName": "AIGC生成内容的版权问题与合规使用",
|
||||||
|
"date": "2025-09-09",
|
||||||
|
"deadline": "2025-09-09 21:00",
|
||||||
|
"priority": "medium",
|
||||||
|
"status": "PENDING",
|
||||||
|
"teacher": "刘杰",
|
||||||
|
"unit": "AIGC人工智能生成内容",
|
||||||
|
"type": "course"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"todayStr": "2025-09-03"
|
||||||
|
}
|
||||||
@@ -73,12 +73,13 @@ for (let i = 1; i < lines.length; i++) {
|
|||||||
const daysDiff = Math.floor(timeDiff / (24 * 60 * 60 * 1000));
|
const daysDiff = Math.floor(timeDiff / (24 * 60 * 60 * 1000));
|
||||||
|
|
||||||
// 判断课程状态:
|
// 判断课程状态:
|
||||||
// - 已完成:状态为"已结束"或日期在今天之前
|
// - 已完成:日期在今天之前
|
||||||
// - 直播中(current):今天的课程
|
// - 直播中(current):今天的课程
|
||||||
// - 即将开始(upcoming):未来7天内的课程(在组件中会显示为"即将开始")
|
// - 即将开始(upcoming):未来的课程
|
||||||
const isCompleted = status === '已结束' || daysDiff < 0;
|
// 注意:忽略CSV中的状态,根据日期自动判断
|
||||||
|
const isCompleted = daysDiff < 0; // 只根据日期判断,过去的课程为已完成
|
||||||
const isCurrent = daysDiff === 0; // 今天的课程设为直播中
|
const isCurrent = daysDiff === 0; // 今天的课程设为直播中
|
||||||
const isUpcoming = !isCompleted && !isCurrent && daysDiff > 0 && daysDiff <= 7; // 未来7天内
|
const isUpcoming = daysDiff > 0; // 所有未来的课程都标记为即将开始
|
||||||
|
|
||||||
unitData.courses.push({
|
unitData.courses.push({
|
||||||
courseId: `c${unitData.unitId.replace('unit', '')}-${unitData.courses.length + 1}`,
|
courseId: `c${unitData.unitId.replace('unit', '')}-${unitData.courses.length + 1}`,
|
||||||
@@ -86,8 +87,8 @@ for (let i = 1; i < lines.length; i++) {
|
|||||||
teacherName: teacher || '未知老师',
|
teacherName: teacher || '未知老师',
|
||||||
date: formattedDate,
|
date: formattedDate,
|
||||||
completed: isCompleted,
|
completed: isCompleted,
|
||||||
current: isCurrent && !isCompleted,
|
current: isCurrent, // 今天的课程标记为current
|
||||||
upcoming: isUpcoming // 添加即将开始标识
|
upcoming: isUpcoming // 未来7天内的课程
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
86
regenerateDashboardTasks.js
Normal file
86
regenerateDashboardTasks.js
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
|
||||||
|
// 读取更新后的mockData
|
||||||
|
const mockDataContent = fs.readFileSync('src/data/mockData.js', 'utf-8');
|
||||||
|
|
||||||
|
// 提取courseLiveList数据
|
||||||
|
const courseLiveListMatch = mockDataContent.match(/mockData\.courseLiveList = (\[[\s\S]*?\]);/);
|
||||||
|
if (!courseLiveListMatch) {
|
||||||
|
console.error('无法找到courseLiveList数据');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const courseLiveList = eval('(' + courseLiveListMatch[1] + ')');
|
||||||
|
|
||||||
|
// 重新生成任务数据
|
||||||
|
const today = new Date();
|
||||||
|
today.setHours(0, 0, 0, 0);
|
||||||
|
const todayStr = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, '0')}-${String(today.getDate()).padStart(2, '0')}`;
|
||||||
|
|
||||||
|
console.log('今天的日期:', todayStr);
|
||||||
|
|
||||||
|
// 查找今天的课程(9月3日)
|
||||||
|
const todaysCourses = [];
|
||||||
|
courseLiveList.forEach(unit => {
|
||||||
|
unit.courses.forEach(course => {
|
||||||
|
if (course.date === todayStr) {
|
||||||
|
todaysCourses.push({
|
||||||
|
...course,
|
||||||
|
unitName: unit.unitName,
|
||||||
|
unitId: unit.unitId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('找到今天的课程:', todaysCourses.length, '门');
|
||||||
|
todaysCourses.forEach(course => {
|
||||||
|
console.log(` - ${course.courseName} (${course.teacherName})`);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 生成allTasks
|
||||||
|
const allTasks = [];
|
||||||
|
let taskId = 1;
|
||||||
|
|
||||||
|
courseLiveList.forEach(unit => {
|
||||||
|
unit.courses.forEach(course => {
|
||||||
|
const courseDate = new Date(course.date);
|
||||||
|
const status = course.completed ? 'COMPLETED' :
|
||||||
|
course.current ? 'IN_PROGRESS' :
|
||||||
|
courseDate > today ? 'PENDING' : 'COMPLETED';
|
||||||
|
|
||||||
|
allTasks.push({
|
||||||
|
id: taskId++,
|
||||||
|
title: `完成${course.courseName}课程学习`,
|
||||||
|
courseName: course.courseName,
|
||||||
|
date: course.date,
|
||||||
|
deadline: `${course.date} 21:00`,
|
||||||
|
priority: course.current ? 'high' : course.upcoming ? 'medium' : 'low',
|
||||||
|
status: status,
|
||||||
|
teacher: course.teacherName,
|
||||||
|
unit: unit.unitName,
|
||||||
|
type: 'course'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 过滤今天的任务
|
||||||
|
const todayTasks = allTasks.filter(task => task.date === todayStr);
|
||||||
|
|
||||||
|
console.log('\n生成的今日任务:', todayTasks.length, '个');
|
||||||
|
todayTasks.forEach(task => {
|
||||||
|
console.log(` - ${task.title}`);
|
||||||
|
console.log(` 状态: ${task.status}, 优先级: ${task.priority}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 输出结果到文件
|
||||||
|
const result = {
|
||||||
|
todayTasks,
|
||||||
|
allTasks: allTasks.slice(0, 50), // 限制数量
|
||||||
|
todayStr
|
||||||
|
};
|
||||||
|
|
||||||
|
fs.writeFileSync('dashboardTasksData.json', JSON.stringify(result, null, 2));
|
||||||
|
console.log('\n✅ Dashboard任务数据已生成到 dashboardTasksData.json');
|
||||||
|
console.log(`📝 今日任务: ${todayTasks.length} 个`);
|
||||||
|
console.log(`📋 总任务: ${allTasks.length} 个`);
|
||||||
69
removeDuplicates.js
Normal file
69
removeDuplicates.js
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
|
||||||
|
const content = fs.readFileSync('src/data/mockData.js', 'utf-8');
|
||||||
|
const lines = content.split('\n');
|
||||||
|
|
||||||
|
// 要删除的重复函数及其行号范围
|
||||||
|
const duplicatesToRemove = [
|
||||||
|
{ name: 'generateCalendarDays', start: 6018 },
|
||||||
|
{ name: 'getWeekDays', start: 6091 },
|
||||||
|
{ name: 'calculateStageProgress', start: 6108 },
|
||||||
|
{ name: 'getCurrentActiveStage', start: 6133 },
|
||||||
|
{ name: 'checkMilestoneBlockage', start: 6149 },
|
||||||
|
{ name: 'updateStageStatuses', start: 6182 },
|
||||||
|
{ name: 'getOverallProgress', start: 6214 }
|
||||||
|
];
|
||||||
|
|
||||||
|
// 找到每个函数的结束行
|
||||||
|
duplicatesToRemove.forEach(func => {
|
||||||
|
let braceCount = 0;
|
||||||
|
let inFunction = false;
|
||||||
|
|
||||||
|
for (let i = func.start - 1; i < lines.length; i++) {
|
||||||
|
const line = lines[i];
|
||||||
|
|
||||||
|
if (!inFunction && line.includes('export const ' + func.name)) {
|
||||||
|
inFunction = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inFunction) {
|
||||||
|
// 计算大括号
|
||||||
|
for (const char of line) {
|
||||||
|
if (char === '{') braceCount++;
|
||||||
|
if (char === '}') braceCount--;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 函数结束
|
||||||
|
if (braceCount === 0 && line.includes('};')) {
|
||||||
|
func.end = i + 1; // 行号(从1开始)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 标记要删除的行
|
||||||
|
const linesToDelete = new Set();
|
||||||
|
duplicatesToRemove.forEach(func => {
|
||||||
|
if (func.end) {
|
||||||
|
for (let i = func.start; i <= func.end; i++) {
|
||||||
|
linesToDelete.add(i);
|
||||||
|
}
|
||||||
|
console.log(`标记删除 ${func.name}: 行 ${func.start}-${func.end}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 创建新内容,跳过标记的行
|
||||||
|
const newLines = [];
|
||||||
|
lines.forEach((line, index) => {
|
||||||
|
const lineNum = index + 1;
|
||||||
|
if (!linesToDelete.has(lineNum)) {
|
||||||
|
newLines.push(line);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 写入文件
|
||||||
|
fs.writeFileSync('src/data/mockData.js', newLines.join('\n'));
|
||||||
|
|
||||||
|
console.log(`\n✅ 已删除 ${duplicatesToRemove.length} 个重复的函数`);
|
||||||
|
console.log(`📄 文件已更新`);
|
||||||
@@ -142,6 +142,27 @@
|
|||||||
border: 1px solid #c9cdd4;
|
border: 1px solid #c9cdd4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.not-started {
|
||||||
|
&::before {
|
||||||
|
content: "未开始";
|
||||||
|
position: absolute;
|
||||||
|
right: 10px;
|
||||||
|
top: 10px;
|
||||||
|
width: 48px;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 18px;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 12px;
|
||||||
|
background-color: #e8e8e8;
|
||||||
|
color: #86909c;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 1px solid #e8e8e8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.active {
|
.active {
|
||||||
border: 1px solid #0275f2;
|
border: 1px solid #0275f2;
|
||||||
|
|
||||||
@@ -156,6 +177,18 @@
|
|||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.selected {
|
||||||
|
background-color: #f2f8ff;
|
||||||
|
border: 1px solid #4080ff !important;
|
||||||
|
box-shadow: 0 2px 8px rgba(64, 128, 255, 0.15);
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: #1d2129;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.pending {
|
.pending {
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
|
|||||||
@@ -101,6 +101,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 刘杰导师头像特殊调整 */
|
||||||
|
.teacher-avatar.teacher-liujie {
|
||||||
|
img {
|
||||||
|
width: 400%; /* 大幅放大 */
|
||||||
|
height: 400%;
|
||||||
|
object-position: center 30%; /* 调整位置 */
|
||||||
|
top: -100%; /* 继续大幅上移 */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.avatar-wrapper {
|
.avatar-wrapper {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 64px;
|
width: 64px;
|
||||||
|
|||||||
@@ -33,8 +33,6 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
|||||||
return backgrounds[name] || "#E3E2E0";
|
return backgrounds[name] || "#E3E2E0";
|
||||||
};
|
};
|
||||||
|
|
||||||
console.log("当前导师:", currentTeacher.name, "需要调整:", needsAdjustment);
|
|
||||||
|
|
||||||
// 获取当前课程信息
|
// 获取当前课程信息
|
||||||
const courseName = selectedCourse?.courseName || "钢铁是怎样炼成的";
|
const courseName = selectedCourse?.courseName || "钢铁是怎样炼成的";
|
||||||
const courseDate = selectedCourse?.date || "09.01";
|
const courseDate = selectedCourse?.date || "09.01";
|
||||||
@@ -81,7 +79,8 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
|||||||
<span onClick={() => handleClickBtn(2)}>下一集 ></span>
|
<span onClick={() => handleClickBtn(2)}>下一集 ></span>
|
||||||
</div>
|
</div>
|
||||||
<div className="courses-video-player-video">
|
<div className="courses-video-player-video">
|
||||||
{selectedCourse?.current ? (
|
{/* 如果没有selectedCourse(公共课直播间)或者selectedCourse.current为true,都播放视频 */}
|
||||||
|
{!selectedCourse || selectedCourse?.current ? (
|
||||||
<video src="/live.mp4" autoPlay controls></video>
|
<video src="/live.mp4" autoPlay controls></video>
|
||||||
) : (
|
) : (
|
||||||
<img
|
<img
|
||||||
@@ -99,7 +98,7 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
|||||||
<div className="courses-video-player-audience-info">
|
<div className="courses-video-player-audience-info">
|
||||||
<div className="avatar-wrapper">
|
<div className="avatar-wrapper">
|
||||||
<Avatar
|
<Avatar
|
||||||
className={`teacher-avatar ${needsAdjustment ? 'avatar-adjust' : ''}`}
|
className={`teacher-avatar ${needsAdjustment ? 'avatar-adjust' : ''} ${currentTeacher.name === '刘杰' ? 'teacher-liujie' : ''}`}
|
||||||
style={{ backgroundColor: getAvatarBackground(currentTeacher.name) }}
|
style={{ backgroundColor: getAvatarBackground(currentTeacher.name) }}
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
width: 320px;
|
width: 320px;
|
||||||
height: 320px;
|
height: 320px;
|
||||||
background-image: url("@/assets/images/Common/lock_bg.png");
|
background-image: url("@/assets/images/Common/lock_bg.png");
|
||||||
background-size: 100% 100%;
|
background-size: contain;
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
|
||||||
> span {
|
> span {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -498,6 +498,7 @@
|
|||||||
border-top: 6px solid var(--text-primary);
|
border-top: 6px solid var(--text-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* 事件详情模态框样式 - 遵循跨国企业级后台系统设计哲学v2.0 */
|
/* 事件详情模态框样式 - 遵循跨国企业级后台系统设计哲学v2.0 */
|
||||||
|
|
||||||
/* 模态框遮罩层 */
|
/* 模态框遮罩层 */
|
||||||
|
|||||||
@@ -67,6 +67,8 @@ const CalendarPage = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="calendar-page">
|
<div className="calendar-page">
|
||||||
<div className="calendar-page-wrapper">
|
<div className="calendar-page-wrapper">
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ const CompanyJobsPage = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 设置面试数据
|
// 设置面试数据
|
||||||
if (res.data?.interviews && studentInfo?.id) {
|
if (res.data?.interviews) {
|
||||||
// Mock数据已经是前端格式,直接使用不需要映射
|
// Mock数据已经是前端格式,直接使用不需要映射
|
||||||
const interviews = res.data.interviews.list || [];
|
const interviews = res.data.interviews.list || [];
|
||||||
setInterviews(interviews);
|
setInterviews(interviews);
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ const TaskList = ({ tasks = [], loading }) => {
|
|||||||
REPORT: "报告",
|
REPORT: "报告",
|
||||||
INTERVIEW: "面试",
|
INTERVIEW: "面试",
|
||||||
OTHER: "其他",
|
OTHER: "其他",
|
||||||
|
course: "课程",
|
||||||
|
exam: "考试"
|
||||||
};
|
};
|
||||||
return typeMap[type] || type;
|
return typeMap[type] || type;
|
||||||
};
|
};
|
||||||
@@ -64,7 +66,6 @@ const TaskList = ({ tasks = [], loading }) => {
|
|||||||
{item?.title}
|
{item?.title}
|
||||||
</p>
|
</p>
|
||||||
<div>
|
<div>
|
||||||
课程名称:{item?.courseName}
|
|
||||||
<span className="module-tasks-item-content-info-duration">
|
<span className="module-tasks-item-content-info-duration">
|
||||||
{item?.duration}
|
{item?.duration}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -39,13 +39,22 @@ const Dashboard = () => {
|
|||||||
// 根据选中日期筛选任务
|
// 根据选中日期筛选任务
|
||||||
const getTasksForDate = (date) => {
|
const getTasksForDate = (date) => {
|
||||||
if (!dashboardData?.tasks?.allTasks) return [];
|
if (!dashboardData?.tasks?.allTasks) return [];
|
||||||
// Check if date is valid before calling toISOString
|
// Check if date is valid before calling getTime
|
||||||
if (!date || isNaN(date.getTime())) {
|
if (!date || isNaN(date.getTime())) {
|
||||||
console.warn("Invalid date provided to getTasksForDate:", date);
|
console.warn("Invalid date provided to getTasksForDate:", date);
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
const dateStr = date.toISOString().split("T")[0];
|
// 使用本地日期格式,避免时区问题
|
||||||
return dashboardData.tasks.allTasks.filter((task) => task.date === dateStr);
|
const year = date.getFullYear();
|
||||||
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||||
|
const day = String(date.getDate()).padStart(2, '0');
|
||||||
|
const dateStr = `${year}-${month}-${day}`;
|
||||||
|
|
||||||
|
console.log("Looking for tasks on date:", dateStr);
|
||||||
|
const tasks = dashboardData.tasks.allTasks.filter((task) => task.date === dateStr);
|
||||||
|
console.log("Found tasks:", tasks);
|
||||||
|
|
||||||
|
return tasks;
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -120,7 +120,7 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: #fff;
|
color: #1d2129;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import CoursesVideoPlayer from "@/components/CoursesVideoPlayer";
|
import CoursesVideoPlayer from "@/components/CoursesVideoPlayer";
|
||||||
import LiveSummary from "@/components/LiveSummary";
|
import LiveSummary from "@/components/LiveSummary";
|
||||||
|
import { mockData } from "@/data/mockData";
|
||||||
import "./index.css";
|
import "./index.css";
|
||||||
|
|
||||||
const PublicCourses = () => {
|
const PublicCourses = () => {
|
||||||
return (
|
return (
|
||||||
<div className="public-courses-page">
|
<div className="public-courses-page">
|
||||||
<CoursesVideoPlayer />
|
<CoursesVideoPlayer teacherData={mockData.teacherData} />
|
||||||
<LiveSummary />
|
<LiveSummary />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
77
updateCourseLiveList.js
Normal file
77
updateCourseLiveList.js
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
|
||||||
|
// 读取生成的课程数据
|
||||||
|
const courseLiveListData = JSON.parse(fs.readFileSync('courseLiveListData.json', 'utf-8'));
|
||||||
|
|
||||||
|
// 读取mockData.js文件
|
||||||
|
let mockDataContent = fs.readFileSync('src/data/mockData.js', 'utf-8');
|
||||||
|
|
||||||
|
// 找到courseLiveList的开始和结束位置
|
||||||
|
const startPattern = /mockData\.courseLiveList = \[/;
|
||||||
|
const startMatch = mockDataContent.match(startPattern);
|
||||||
|
|
||||||
|
if (startMatch) {
|
||||||
|
const startIndex = mockDataContent.indexOf(startMatch[0]);
|
||||||
|
|
||||||
|
// 找到对应的结束位置(找到配对的 ]; )
|
||||||
|
let braceCount = 0;
|
||||||
|
let endIndex = startIndex + startMatch[0].length;
|
||||||
|
let inString = false;
|
||||||
|
let stringChar = '';
|
||||||
|
|
||||||
|
for (let i = endIndex; i < mockDataContent.length; i++) {
|
||||||
|
const char = mockDataContent[i];
|
||||||
|
const prevChar = i > 0 ? mockDataContent[i - 1] : '';
|
||||||
|
|
||||||
|
// 处理字符串
|
||||||
|
if (!inString && (char === '"' || char === "'") && prevChar !== '\\') {
|
||||||
|
inString = true;
|
||||||
|
stringChar = char;
|
||||||
|
} else if (inString && char === stringChar && prevChar !== '\\') {
|
||||||
|
inString = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!inString) {
|
||||||
|
if (char === '[') braceCount++;
|
||||||
|
if (char === ']') {
|
||||||
|
if (braceCount === 0) {
|
||||||
|
// 找到了结束位置
|
||||||
|
endIndex = i + 1;
|
||||||
|
// 检查是否有分号
|
||||||
|
if (mockDataContent[i + 1] === ';') {
|
||||||
|
endIndex = i + 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
braceCount--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 替换courseLiveList部分
|
||||||
|
const newCourseLiveList = `mockData.courseLiveList = ${JSON.stringify(courseLiveListData.courseLiveList, null, 2)};`;
|
||||||
|
|
||||||
|
mockDataContent =
|
||||||
|
mockDataContent.substring(0, startIndex) +
|
||||||
|
newCourseLiveList +
|
||||||
|
mockDataContent.substring(endIndex);
|
||||||
|
|
||||||
|
// 写回文件
|
||||||
|
fs.writeFileSync('src/data/mockData.js', mockDataContent);
|
||||||
|
console.log('✅ mockData.js中的courseLiveList已更新');
|
||||||
|
|
||||||
|
// 验证9月3日的课程状态
|
||||||
|
const sept3Course = courseLiveListData.courseLiveList
|
||||||
|
.find(unit => unit.unitId === 'unit7')
|
||||||
|
?.courses.find(c => c.date === '2025-09-03');
|
||||||
|
|
||||||
|
if (sept3Course) {
|
||||||
|
console.log('\n9月3日课程状态:');
|
||||||
|
console.log(` 课程:${sept3Course.courseName}`);
|
||||||
|
console.log(` completed: ${sept3Course.completed}`);
|
||||||
|
console.log(` current: ${sept3Course.current}`);
|
||||||
|
console.log(` upcoming: ${sept3Course.upcoming}`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.error('❌ 无法找到mockData.courseLiveList的位置');
|
||||||
|
}
|
||||||
58
updateDashboardTasks.js
Normal file
58
updateDashboardTasks.js
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
|
||||||
|
// 读取生成的任务数据
|
||||||
|
const tasksData = JSON.parse(fs.readFileSync('dashboardTasksData.json', 'utf-8'));
|
||||||
|
|
||||||
|
// 读取mockData.js
|
||||||
|
let mockDataContent = fs.readFileSync('src/data/mockData.js', 'utf-8');
|
||||||
|
|
||||||
|
// 找到任务数据更新的位置
|
||||||
|
// 查找 mockData.dashboardStatistics.tasks = { 的位置
|
||||||
|
const tasksPattern = /mockData\.dashboardStatistics\.tasks = \{[\s\S]*?\};/;
|
||||||
|
const tasksMatch = mockDataContent.match(tasksPattern);
|
||||||
|
|
||||||
|
if (tasksMatch) {
|
||||||
|
// 生成weekTasks(本周任务)
|
||||||
|
const weekStart = new Date();
|
||||||
|
weekStart.setDate(weekStart.getDate() - weekStart.getDay());
|
||||||
|
weekStart.setHours(0, 0, 0, 0);
|
||||||
|
|
||||||
|
const weekEnd = new Date(weekStart);
|
||||||
|
weekEnd.setDate(weekEnd.getDate() + 6);
|
||||||
|
|
||||||
|
const weekTasks = tasksData.allTasks.filter(task => {
|
||||||
|
const taskDate = new Date(task.date);
|
||||||
|
return taskDate >= weekStart && taskDate <= weekEnd;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 构建新的tasks对象
|
||||||
|
const newTasks = `mockData.dashboardStatistics.tasks = {
|
||||||
|
todayTasks: ${JSON.stringify(tasksData.todayTasks, null, 4).split('\n').map((line, i) => i === 0 ? line : ' ' + line).join('\n')},
|
||||||
|
weekTasks: ${JSON.stringify(weekTasks.slice(0, 5), null, 4).split('\n').map((line, i) => i === 0 ? line : ' ' + line).join('\n')},
|
||||||
|
allTasks: ${JSON.stringify(tasksData.allTasks, null, 4).split('\n').map((line, i) => i === 0 ? line : ' ' + line).join('\n')}
|
||||||
|
};`;
|
||||||
|
|
||||||
|
// 替换原有的tasks数据
|
||||||
|
mockDataContent = mockDataContent.replace(tasksPattern, newTasks);
|
||||||
|
|
||||||
|
// 写回文件
|
||||||
|
fs.writeFileSync('src/data/mockData.js', mockDataContent);
|
||||||
|
|
||||||
|
console.log('✅ mockData.js中的tasks数据已更新');
|
||||||
|
console.log(`📝 今日任务: ${tasksData.todayTasks.length} 个`);
|
||||||
|
console.log(`📅 本周任务: ${weekTasks.length} 个`);
|
||||||
|
console.log(`📋 总任务: ${tasksData.allTasks.length} 个`);
|
||||||
|
|
||||||
|
// 验证今日任务
|
||||||
|
if (tasksData.todayTasks.length > 0) {
|
||||||
|
console.log('\n今日任务详情:');
|
||||||
|
tasksData.todayTasks.forEach(task => {
|
||||||
|
console.log(` - ${task.title}`);
|
||||||
|
console.log(` 课程:${task.courseName}`);
|
||||||
|
console.log(` 讲师:${task.teacher}`);
|
||||||
|
console.log(` 状态:${task.status}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.error('❌ 无法找到tasks数据的位置');
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user