feat: 作业页面单元分类导航和样式优化
- 为复合能力课和垂直能力课添加单元分组结构 - 实现单元导航栏和课程筛选功能 - 优化导航栏样式,采用胶囊式设计 - 调整页面布局和间距,提升视觉体验 - 修复营销能力课日历事件显示问题 - 修复1v1规划时间为14:00-16:00 - 修复作业页面iframe返回后滚动失效问题 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -22,3 +22,6 @@ dist-ssr
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
# YoYo AI version control directory
|
||||
.yoyo/
|
||||
|
||||
@@ -6,7 +6,7 @@ const teacherData = {
|
||||
name: "刘杰",
|
||||
introduction: "15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓展,同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动'民宿管家'入选国家新职业目录,建立首个国家级职业技能评定体系。",
|
||||
specialties: ["一听就懂", "思路很清晰", "课堂不枯燥", "学习氛围爆棚"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg",
|
||||
type: "复合课导师",
|
||||
courses: []
|
||||
},
|
||||
|
||||
@@ -117,10 +117,25 @@
|
||||
/* 刘杰导师头像特殊调整 */
|
||||
.teacher-avatar.teacher-liujie {
|
||||
img {
|
||||
width: 400%; /* 大幅放大 */
|
||||
height: 400%;
|
||||
width: 200%; /* 大幅放大 */
|
||||
height: 200%;
|
||||
object-position: center 30%; /* 调整位置 */
|
||||
top: -100%; /* 继续大幅上移 */
|
||||
top: -50%; /* 继续大幅上移 */
|
||||
}
|
||||
}
|
||||
|
||||
/* 李奇导师头像特殊调整 - 居中显示 */
|
||||
.teacher-avatar.teacher-liqi {
|
||||
overflow: hidden !important;
|
||||
img {
|
||||
width: 140% !important;
|
||||
height: 140% !important;
|
||||
object-fit: cover !important;
|
||||
object-position: center 35% !important;
|
||||
position: absolute !important;
|
||||
top: 55% !important;
|
||||
left: 50% !important;
|
||||
transform: translate(-50%, -50%) !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Avatar, Tooltip } from "@arco-design/web-react";
|
||||
import Locked from "@/components/Locked";
|
||||
import "./index.css";
|
||||
|
||||
export default ({ className = "", isLock = false, selectedCourse, teacherData, unitPosters }) => {
|
||||
export default ({ className = "", isLock = false, selectedCourse, teacherData, unitPosters, isPublicCourse = false }) => {
|
||||
const handleClickBtn = (item) => {
|
||||
console.log(item);
|
||||
};
|
||||
@@ -101,7 +101,7 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
||||
/* 选中课程时显示模糊的海报图和锁定状态 */
|
||||
<div style={{ position: 'relative', width: '100%', height: '100%' }}>
|
||||
<img
|
||||
src={unitPosters?.[unitName] || unitPosters?.["岗位体系认知"]}
|
||||
src={unitPosters?.[unitName] || unitPosters?.["终生学习系统课"]}
|
||||
alt={unitName}
|
||||
style={{
|
||||
width: '100%',
|
||||
@@ -167,7 +167,7 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
||||
<div className="courses-video-player-audience-info">
|
||||
<div className="avatar-wrapper">
|
||||
<Avatar
|
||||
className={`teacher-avatar ${needsAdjustment ? 'avatar-adjust' : ''} ${currentTeacher?.name === '刘杰' ? 'teacher-liujie' : ''} ${currentTeacher?.name === '孙应战' ? 'teacher-sunyingzhan' : ''} ${isLock ? 'teacher-strategy' : ''}`}
|
||||
className={`teacher-avatar ${needsAdjustment ? 'avatar-adjust' : ''} ${currentTeacher?.name === '刘杰' ? 'teacher-liujie' : ''} ${currentTeacher?.name === '李奇' ? 'teacher-liqi' : ''} ${currentTeacher?.name === '孙应战' ? 'teacher-sunyingzhan' : ''} ${isLock ? 'teacher-strategy' : ''}`}
|
||||
style={{ backgroundColor: getAvatarBackground(currentTeacher?.name) }}
|
||||
>
|
||||
<img
|
||||
@@ -182,7 +182,12 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
||||
<div className="living-data">
|
||||
<div className="living-data-item">
|
||||
<span>开始</span>
|
||||
<span>{formatDateTime(displayCourse?.date || courseDate)} - 14:00</span>
|
||||
<span>{formatDateTime(displayCourse?.date || courseDate)} - {
|
||||
isLock ? '14:00' : // 定制求职策略页面:14:00
|
||||
isPublicCourse && (displayCourse?.unitName === '营销能力课' || unitName === '营销能力课') ? '20:00' : // 营销能力课:20:00
|
||||
isPublicCourse ? '15:00' : // 其他公共课:15:00
|
||||
'20:00' // 课程直播间:20:00
|
||||
}</span>
|
||||
</div>
|
||||
<div className="living-data-item">
|
||||
<span>时长</span>
|
||||
@@ -190,11 +195,13 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
||||
</div>
|
||||
<div className="living-data-item">
|
||||
<span>观看</span>
|
||||
<span>{isLock ? '1人' : `${
|
||||
<span>{
|
||||
isLock ? '1人' : // 定制求职策略页面:1人
|
||||
isPublicCourse ? `${1900 + Math.floor(Math.random() * 101)}人` : // 公共课:1900-2000人
|
||||
selectedCourse?.courseType === 'vertical'
|
||||
? 50 + Math.floor(Math.random() * 11) // 垂直课:50-60人
|
||||
: 180 + Math.floor(Math.random() * 21) // 复合课:180-200人
|
||||
}人`}</span>
|
||||
? `${50 + Math.floor(Math.random() * 11)}人` // 垂直课:50-60人
|
||||
: `${180 + Math.floor(Math.random() * 21)}人` // 复合课:180-200人
|
||||
}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -64,6 +64,24 @@
|
||||
font-size: 12px;
|
||||
color: #86909c;
|
||||
}
|
||||
.graduate-badge {
|
||||
display: inline-block;
|
||||
padding: 3px 10px;
|
||||
background: transparent;
|
||||
color: #667eea;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
border-radius: 14px;
|
||||
margin-top: 4px;
|
||||
border: 2px solid #667eea;
|
||||
letter-spacing: 0.5px;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.graduate-badge:hover {
|
||||
background: rgba(102, 126, 234, 0.08);
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 2px 8px rgba(102, 126, 234, 0.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
.visitor-count {
|
||||
|
||||
@@ -41,7 +41,7 @@ const Sidebar = ({ isCollapsed, setIsCollapsed }) => {
|
||||
{isCollapsed && (
|
||||
<div className="user-info">
|
||||
<span className="user-name">{studentInfo?.realName}</span>
|
||||
<span className="user-id">学号:{studentInfo?.id}</span>
|
||||
<span className="graduate-badge">毕业生</span>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -119,21 +119,6 @@
|
||||
"❌导师姓名查询": "郭建辉",
|
||||
"❌查询单元名称": "产业认知课"
|
||||
},
|
||||
{
|
||||
"日期": "2024/3/9",
|
||||
"星期": "星期六",
|
||||
"复合技能阶段": "",
|
||||
"公开课": "企业文化与职场适应",
|
||||
"垂直方向阶段(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战",
|
||||
"❌查询单元名称": ""
|
||||
},
|
||||
{
|
||||
"日期": "2024/3/10",
|
||||
"星期": "星期日",
|
||||
@@ -959,21 +944,6 @@
|
||||
"❌导师姓名查询": "刘杰",
|
||||
"❌查询单元名称": "AIGC人工智能生成内容"
|
||||
},
|
||||
{
|
||||
"日期": "2024/5/4",
|
||||
"星期": "星期六",
|
||||
"复合技能阶段": "",
|
||||
"公开课": "情商管理与压力应对",
|
||||
"垂直方向阶段(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战",
|
||||
"❌查询单元名称": ""
|
||||
},
|
||||
{
|
||||
"日期": "2024/5/5",
|
||||
"星期": "星期日",
|
||||
@@ -1589,21 +1559,6 @@
|
||||
"❌导师姓名查询": "郭建辉",
|
||||
"❌查询单元名称": " 全栈新媒体运营赋能文旅营销"
|
||||
},
|
||||
{
|
||||
"日期": "2024/6/15",
|
||||
"星期": "星期六",
|
||||
"复合技能阶段": "",
|
||||
"公开课": "目标管理与绩效提升的系统方法",
|
||||
"垂直方向阶段(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战",
|
||||
"❌查询单元名称": ""
|
||||
},
|
||||
{
|
||||
"日期": "2024/6/16",
|
||||
"星期": "星期日",
|
||||
|
||||
7757
src/data/calendarCourses.json.backup_20250908_024133
Normal file
7757
src/data/calendarCourses.json.backup_20250908_024133
Normal file
File diff suppressed because it is too large
Load Diff
104
src/data/marketingCourses.json
Normal file
104
src/data/marketingCourses.json
Normal file
@@ -0,0 +1,104 @@
|
||||
[
|
||||
{
|
||||
"日期": "2024/7/15",
|
||||
"星期": "星期一",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "PM产品经理思维",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
},
|
||||
{
|
||||
"日期": "2024/7/16",
|
||||
"星期": "星期二",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "了解你的客户群体",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
},
|
||||
{
|
||||
"日期": "2024/7/17",
|
||||
"星期": "星期三",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "营销与沟通",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
},
|
||||
{
|
||||
"日期": "2024/7/18",
|
||||
"星期": "星期四",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "营销的模式",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
},
|
||||
{
|
||||
"日期": "2024/7/19",
|
||||
"星期": "星期五",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "自我营销第一步:面试",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
},
|
||||
{
|
||||
"日期": "2024/7/20",
|
||||
"星期": "星期六",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "如何在职场中包装自己",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
}
|
||||
]
|
||||
@@ -2,6 +2,7 @@
|
||||
import companyJobsData from './companyJobs.json';
|
||||
import calendarCoursesData from './calendarCourses.json';
|
||||
import aiCoursesData from '../../网页未导入数据/ai课程表.json';
|
||||
import marketingCoursesData from './marketingCourses.json';
|
||||
|
||||
// 转换函数:将JSON数据转换为页面所需格式
|
||||
const transformCompanyJobs = (jobsData) => {
|
||||
@@ -58,18 +59,24 @@ const transformCalendarCourses = (coursesData) => {
|
||||
let startTime = "20:00";
|
||||
let endTime = "21:00";
|
||||
|
||||
// 处理时间格式,确保有效
|
||||
if (timeStr && timeStr.includes('-')) {
|
||||
const timeParts = timeStr.split('-').map(t => t ? t.trim() : '');
|
||||
if (timeParts[0]) startTime = timeParts[0];
|
||||
if (timeParts[1]) endTime = timeParts[1];
|
||||
} else if (timeStr) {
|
||||
// 如果没有'-',假设是开始时间
|
||||
startTime = timeStr.trim();
|
||||
// 自动计算结束时间(加1小时)
|
||||
const [hour, minute] = startTime.split(':');
|
||||
const endHour = parseInt(hour) + 1;
|
||||
endTime = `${endHour.toString().padStart(2, '0')}:${minute || '00'}`;
|
||||
// 特殊处理1V1规划课程的时间
|
||||
if (course["1V1 规划阶段"]) {
|
||||
startTime = "14:00";
|
||||
endTime = "16:00";
|
||||
} else {
|
||||
// 处理时间格式,确保有效
|
||||
if (timeStr && timeStr.includes('-')) {
|
||||
const timeParts = timeStr.split('-').map(t => t ? t.trim() : '');
|
||||
if (timeParts[0]) startTime = timeParts[0];
|
||||
if (timeParts[1]) endTime = timeParts[1];
|
||||
} else if (timeStr) {
|
||||
// 如果没有'-',假设是开始时间
|
||||
startTime = timeStr.trim();
|
||||
// 自动计算结束时间(加1小时)
|
||||
const [hour, minute] = startTime.split(':');
|
||||
const endHour = parseInt(hour) + 1;
|
||||
endTime = `${endHour.toString().padStart(2, '0')}:${minute || '00'}`;
|
||||
}
|
||||
}
|
||||
|
||||
// 构建完整的时间戳
|
||||
@@ -126,6 +133,28 @@ const transformCalendarCourses = (coursesData) => {
|
||||
});
|
||||
};
|
||||
|
||||
// 转换营销课程数据为日历事件格式
|
||||
const transformMarketingCourses = (marketingCourses) => {
|
||||
return marketingCourses.map(course => {
|
||||
if (!course["营销课"] || course["营销课"] === "") return null;
|
||||
|
||||
// 转换日期格式 2024/7/15 -> 2024-07-15
|
||||
const dateParts = course["日期"].split('/');
|
||||
const formattedDate = `${dateParts[0]}-${dateParts[1].padStart(2, '0')}-${dateParts[2].padStart(2, '0')}`;
|
||||
|
||||
return {
|
||||
id: `marketing-${course["日期"]}`,
|
||||
title: course["营销课"],
|
||||
startTime: `${formattedDate} ${course["上课时间"].split('~')[0]}`,
|
||||
endTime: `${formattedDate} ${course["上课时间"].split('~')[1]}`,
|
||||
type: 'marketing-course',
|
||||
teacher: '孙应战', // 营销课的默认讲师
|
||||
status: course["课程状态"] || "已完成",
|
||||
location: course["上课地点"] || "线上"
|
||||
};
|
||||
}).filter(event => event !== null);
|
||||
};
|
||||
|
||||
// 转换AI课程数据为日历事件格式
|
||||
const transformAICourses = (aiData) => {
|
||||
return aiData
|
||||
@@ -298,13 +327,13 @@ const generatePublicCourseLiveList = (calendarEvents) => {
|
||||
"李毅峰": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVPz0WRmxCK.jpeg",
|
||||
"周伏波": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7Gi9YxSN.jpeg",
|
||||
"范雪娇": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7JsHHDNZ.jpeg",
|
||||
"李奇": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7LDWK6iG.jpg"
|
||||
"李奇": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW8gePZvRn6.jpg"
|
||||
};
|
||||
|
||||
// 遍历日历事件,找出公开课和AI课程
|
||||
calendarEvents.forEach(event => {
|
||||
// 处理type为'public-course'的课程或AI课程
|
||||
if ((event.type === 'public-course' || event.type === 'ai-course') && event.title) {
|
||||
if ((event.type === 'public-course' || event.type === 'ai-course' || event.type === 'marketing-course') && event.title) {
|
||||
const courseDate = new Date(event.startTime.split(' ')[0]);
|
||||
const now = new Date();
|
||||
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
||||
@@ -329,7 +358,7 @@ const generatePublicCourseLiveList = (calendarEvents) => {
|
||||
// 根据课程类型和讲师分类
|
||||
if (event.type === 'ai-course') {
|
||||
publicUnits["终生学习系统课"].courses.push(courseData);
|
||||
} else if (event.teacher === "孙应战") {
|
||||
} else if (event.type === 'marketing-course' || event.teacher === "孙应战") {
|
||||
publicUnits["营销能力课"].courses.push(courseData);
|
||||
} else {
|
||||
publicUnits["企业高管公开课"].courses.push(courseData);
|
||||
@@ -473,7 +502,8 @@ const generateTasksFromCalendarEvents = (calendarEvents) => {
|
||||
// 合并普通课程和AI课程(需要在mockData之前定义,避免引用错误)
|
||||
const allCalendarEvents = [
|
||||
...transformCalendarCourses(calendarCoursesData),
|
||||
...transformAICourses(aiCoursesData)
|
||||
...transformAICourses(aiCoursesData),
|
||||
...transformMarketingCourses(marketingCoursesData)
|
||||
];
|
||||
|
||||
export const mockData = {
|
||||
@@ -603,7 +633,7 @@ export const mockData = {
|
||||
name: "李奇",
|
||||
introduction: "毕业于南洋理工学院,拥有硕士学位,具备扎实的人工智能理论基础与产业实践经验。近年来,专注于大模型工程化与AI应用课程体系建设,主持完成《AIGC实战:从模型调用到产品落地》《AI在视觉设计与内容生成中的应用》等多个应用型教学项目。曾主导开发'AI技能地图导航系统',实现课程内容与岗位技能的精准对齐,在2024年全国高校AI课程创新大赛中荣获一等奖。擅长将复杂的算法模型转化为通俗易懂的教学内容,致力于打造'人人可用AI'的实训课程体系,是众多高校与职业培训机构特聘的AI技术与课程体系顾问。",
|
||||
specialties: ["人工智能技术顾问", "大模型工程化研究者", "AI应用课程体系建设者", "教学内容转化能力强", "技巧随手教", "幽默又有料", "讲解有节奏"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7LDWK6iG.jpg",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW8gePZvRn6.jpg",
|
||||
type: "AI课导师",
|
||||
courses: []
|
||||
},
|
||||
@@ -1549,11 +1579,134 @@ export const mockData = {
|
||||
],
|
||||
},
|
||||
// 课后作业数据
|
||||
|
||||
homework: [
|
||||
{
|
||||
name: "复合能力课",
|
||||
id: 1,
|
||||
units: [
|
||||
{
|
||||
name: "岗位体系认知",
|
||||
courses: [
|
||||
{ id: 1, name: "教育体系认知", level: "completed" },
|
||||
{ id: 2, name: "现代文旅类企业的管理体系", level: "completed" },
|
||||
{ id: 3, name: "专科生的职业规划", level: "completed" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "产业认知课",
|
||||
courses: [
|
||||
{ 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" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "旅游产业全景与文旅基础知识",
|
||||
courses: [
|
||||
{ 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" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "文旅服务:形象、沟通与体验的融合艺术",
|
||||
courses: [
|
||||
{ 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" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "文旅与供应链基础",
|
||||
courses: [
|
||||
{ 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" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "商业设计基础",
|
||||
courses: [
|
||||
{ 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" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "AIGC人工智能生成内容",
|
||||
courses: [
|
||||
{ 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" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "全栈新媒体运营赋能文旅营销",
|
||||
courses: [
|
||||
{ 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" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "活动策划基础",
|
||||
courses: [
|
||||
{ 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" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "智慧文旅应用",
|
||||
courses: [
|
||||
{ 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" },
|
||||
]
|
||||
}
|
||||
],
|
||||
// 保留原始list用于兼容
|
||||
list: [
|
||||
// 岗位体系认知
|
||||
{ id: 1, name: "教育体系认知", level: "completed" },
|
||||
@@ -1636,13 +1789,70 @@ export const mockData = {
|
||||
{ id: 69, name: "景区智能导览系统", level: "completed" },
|
||||
{ id: 70, name: "智能导览设备运用", level: "completed" },
|
||||
{ id: 71, name: "智慧酒店/智慧景区体验场景模拟", level: "completed" },
|
||||
// 展会策划教学放在这里(按顺序)
|
||||
{ id: 72, name: "展会策划教学", level: "completed" },
|
||||
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "垂直能力课",
|
||||
id: 2,
|
||||
units: [
|
||||
{
|
||||
name: "职业规划课",
|
||||
courses: [
|
||||
{ id: 1, name: "活动策划行业讲解", level: "completed" },
|
||||
{ id: 2, name: "活动策划行业岗位职业发展认知", level: "completed" },
|
||||
{ id: 3, name: "个人职业目标与发展路径规划", level: "completed" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "商业活动策略设计与创意策划",
|
||||
courses: [
|
||||
{ id: 4, name: "文旅商业活动概论", level: "completed" },
|
||||
{ id: 5, name: "受众洞察与市场分析", level: "completed" },
|
||||
{ id: 6, name: "活动定位与价值主张", level: "completed" },
|
||||
{ id: 7, name: "创意主题与故事化设计", level: "completed" },
|
||||
{ id: 8, name: "品牌 IP 与形象塑造", 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: "AI 辅助创意与洞察", level: "completed" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "商业活动全程策划执行与运营优化",
|
||||
courses: [
|
||||
{ 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: "关键绩效指标与ROI评估", level: "completed" },
|
||||
{ id: 24, name: "运营优化策略与流程改进", level: "completed" },
|
||||
{ id: 25, name: "AI 驱动运营优化", level: "completed" },
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "消费电子展品牌策划与执行",
|
||||
courses: [
|
||||
{ id: 26, name: "展会主题与品牌定位", level: "completed", isShowCase: true },
|
||||
{ id: 27, name: "展区规划与动线设计", level: "completed" },
|
||||
{ id: 28, name: "新品发布会策划", level: "completed" },
|
||||
{ id: 29, name: "高层对接与 B2B 洽谈", level: "completed" },
|
||||
{ id: 30, name: "观众体验与互动区运营", level: "completed" },
|
||||
{ id: 31, name: "媒体公关与国际报道", level: "completed" },
|
||||
{ id: 32, name: "数据采集与商机管理", level: "completed" },
|
||||
{ id: 33, name: "展后商机跟进与 CRM 管理", level: "completed" },
|
||||
{ id: 34, name: "效果评估与改进计划", level: "completed" },
|
||||
{ id: 35, name: "AI 数字导览与多语种客服", level: "completed" },
|
||||
]
|
||||
}
|
||||
],
|
||||
// 保留原始list用于兼容
|
||||
list: [
|
||||
{ id: 1, name: "品牌运营实训", level: "completed" },
|
||||
{ id: 2, name: "内容运营实训", level: "completed" },
|
||||
@@ -4566,6 +4776,45 @@ mockData.publicCourseLiveList = generatePublicCourseLiveList(allCalendarEvents);
|
||||
// 生成垂直能力课列表(传入unitPosters以包含海报数据)
|
||||
mockData.verticalCourseLiveList = generateVerticalCourseLiveList(allCalendarEvents, mockData.unitPosters);
|
||||
|
||||
// 动态更新垂直能力课作业列表
|
||||
if (mockData.homework && mockData.homework[1]) {
|
||||
const verticalHomeworkList = [];
|
||||
let homeworkId = 1;
|
||||
|
||||
// 遍历所有垂直能力课单元
|
||||
mockData.verticalCourseLiveList.forEach(unit => {
|
||||
unit.courses.forEach(course => {
|
||||
// 判断课程状态
|
||||
let level = "locked";
|
||||
if (course.completed) {
|
||||
level = "completed";
|
||||
} else if (course.current) {
|
||||
level = "in-progress";
|
||||
}
|
||||
|
||||
const homeworkItem = {
|
||||
id: homeworkId++,
|
||||
name: course.courseName,
|
||||
level: level,
|
||||
unitName: unit.unitName,
|
||||
teacherName: course.teacherName,
|
||||
date: course.date
|
||||
};
|
||||
|
||||
// 为展会主题与品牌定位课程添加特殊标记(使其可点击)
|
||||
if (course.courseName === "展会主题与品牌定位" && unit.unitName === "消费电子展品牌策划与执行") {
|
||||
homeworkItem.isShowCase = true;
|
||||
homeworkItem.previewUrl = "https://du9uay.github.io/zhanhui/";
|
||||
}
|
||||
|
||||
verticalHomeworkList.push(homeworkItem);
|
||||
});
|
||||
});
|
||||
|
||||
// 更新垂直能力课作业列表
|
||||
mockData.homework[1].list = verticalHomeworkList;
|
||||
}
|
||||
|
||||
// 在courseLiveList定义后,更新dashboardStatistics的课程和任务数据
|
||||
const dashboardCourseData = generateDashboardCourses(mockData.courseLiveList);
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ export const mockData = {
|
||||
name: "刘杰",
|
||||
introduction: "15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓展,同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动'民宿管家'入选国家新职业目录,建立首个国家级职业技能评定体系。",
|
||||
specialties: ["一听就懂", "思路很清晰", "课堂不枯燥", "学习氛围爆棚"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg",
|
||||
type: "复合课导师",
|
||||
courses: []
|
||||
},
|
||||
@@ -6067,7 +6067,7 @@ mockData.profileOverview = {
|
||||
name: "刘杰",
|
||||
introduction: "15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓展,同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动'民宿管家'入选国家新职业目录,建立首个国家级职业技能评定体系。",
|
||||
specialties: ["一听就懂", "思路很清晰", "课堂不枯燥", "学习氛围爆棚"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg",
|
||||
type: "复合课导师",
|
||||
courses: []
|
||||
},
|
||||
|
||||
@@ -394,7 +394,7 @@ export const mockData = {
|
||||
name: "刘杰",
|
||||
introduction: "15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓展,同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动'民宿管家'入选国家新职业目录,建立首个国家级职业技能评定体系。",
|
||||
specialties: ["一听就懂", "思路很清晰", "课堂不枯燥", "学习氛围爆棚", "民宿产业化专家"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg",
|
||||
type: "复合课导师",
|
||||
verticalDirection: "项目经营管理",
|
||||
courses: []
|
||||
@@ -453,7 +453,7 @@ export const mockData = {
|
||||
name: "李奇",
|
||||
introduction: "毕业于南洋理工学院,拥有硕士学位,具备扎实的人工智能理论基础与产业实践经验。近年来,专注于大模型工程化与AI应用课程体系建设,主持完成《AIGC实战:从模型调用到产品落地》《AI在视觉设计与内容生成中的应用》等多个应用型教学项目。曾主导开发'AI技能地图导航系统',实现课程内容与岗位技能的精准对齐,在2024年全国高校AI课程创新大赛中荣获一等奖。擅长将复杂的算法模型转化为通俗易懂的教学内容,致力于打造'人人可用AI'的实训课程体系,是众多高校与职业培训机构特聘的AI技术与课程体系顾问。",
|
||||
specialties: ["老师超懂学生", "技巧随手教", "幽默又有料", "讲解有节奏", "人工智能技术顾问", "大模型工程化研究者", "AI应用课程体系建设者", "全国高校AI课程创新大赛一等奖获得者", "教学内容转化能力强", "AI教育与应用场景落地推动者"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7LDWK6iG.jpg",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW8gePZvRn6.jpg",
|
||||
type: "AI课导师",
|
||||
courses: []
|
||||
},
|
||||
|
||||
@@ -471,7 +471,7 @@ export const mockData = {
|
||||
name: "刘杰",
|
||||
introduction: "15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓展,同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动'民宿管家'入选国家新职业目录,建立首个国家级职业技能评定体系。",
|
||||
specialties: ["一听就懂", "思路很清晰", "课堂不枯燥", "学习氛围爆棚", "民宿产业化专家"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg",
|
||||
type: "复合课导师",
|
||||
verticalDirection: "项目经营管理",
|
||||
courses: []
|
||||
@@ -530,7 +530,7 @@ export const mockData = {
|
||||
name: "李奇",
|
||||
introduction: "毕业于南洋理工学院,拥有硕士学位,具备扎实的人工智能理论基础与产业实践经验。近年来,专注于大模型工程化与AI应用课程体系建设,主持完成《AIGC实战:从模型调用到产品落地》《AI在视觉设计与内容生成中的应用》等多个应用型教学项目。曾主导开发'AI技能地图导航系统',实现课程内容与岗位技能的精准对齐,在2024年全国高校AI课程创新大赛中荣获一等奖。擅长将复杂的算法模型转化为通俗易懂的教学内容,致力于打造'人人可用AI'的实训课程体系,是众多高校与职业培训机构特聘的AI技术与课程体系顾问。",
|
||||
specialties: ["老师超懂学生", "技巧随手教", "幽默又有料", "讲解有节奏", "人工智能技术顾问", "大模型工程化研究者", "AI应用课程体系建设者", "全国高校AI课程创新大赛一等奖获得者", "教学内容转化能力强", "AI教育与应用场景落地推动者"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7LDWK6iG.jpg",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW8gePZvRn6.jpg",
|
||||
type: "AI课导师",
|
||||
courses: []
|
||||
},
|
||||
|
||||
@@ -322,7 +322,7 @@ export const mockData = {
|
||||
name: "刘杰",
|
||||
introduction: "15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓展,同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动'民宿管家'入选国家新职业目录,建立首个国家级职业技能评定体系。",
|
||||
specialties: ["一听就懂", "思路很清晰", "课堂不枯燥", "学习氛围爆棚"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg",
|
||||
type: "复合课导师",
|
||||
courses: []
|
||||
},
|
||||
|
||||
@@ -310,7 +310,7 @@ export const mockData = {
|
||||
name: "刘杰",
|
||||
introduction: "15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓展,同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动'民宿管家'入选国家新职业目录,建立首个国家级职业技能评定体系。",
|
||||
specialties: ["一听就懂", "思路很清晰", "课堂不枯燥", "学习氛围爆棚"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg",
|
||||
type: "复合课导师",
|
||||
courses: []
|
||||
},
|
||||
|
||||
@@ -365,7 +365,7 @@ export const mockData = {
|
||||
name: "刘杰",
|
||||
introduction: "15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓展,同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动'民宿管家'入选国家新职业目录,建立首个国家级职业技能评定体系。",
|
||||
specialties: ["一听就懂", "思路很清晰", "课堂不枯燥", "学习氛围爆棚"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg",
|
||||
type: "复合课导师",
|
||||
courses: []
|
||||
},
|
||||
|
||||
4712
src/data/mockData.js.backup_20250907_232208
Normal file
4712
src/data/mockData.js.backup_20250907_232208
Normal file
File diff suppressed because it is too large
Load Diff
3118
src/data/mockData.js.backup_with_homework_changes
Normal file
3118
src/data/mockData.js.backup_with_homework_changes
Normal file
File diff suppressed because it is too large
Load Diff
@@ -54,7 +54,7 @@ export const mockData = {
|
||||
name: "刘杰",
|
||||
introduction: "15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓展,同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动'民宿管家'入选国家新职业目录,建立首个国家级职业技能评定体系。",
|
||||
specialties: ["一听就懂", "思路很清晰", "课堂不枯燥", "学习氛围爆棚"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg",
|
||||
type: "复合课导师",
|
||||
courses: []
|
||||
},
|
||||
|
||||
@@ -177,6 +177,28 @@ const EventDetailModal = ({ isOpen, event, onClose }) => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 企业高管公开课添加线下参与标签 */}
|
||||
{eventItem.type === 'public-course' && (
|
||||
<div className="event-info-row" style={{ marginTop: '8px' }}>
|
||||
<div style={{
|
||||
padding: '4px 12px',
|
||||
backgroundColor: '#f0f9ff',
|
||||
color: '#0ea5e9',
|
||||
borderRadius: '4px',
|
||||
fontSize: '12px',
|
||||
fontWeight: '500',
|
||||
display: 'inline-flex',
|
||||
alignItems: 'center',
|
||||
gap: '4px'
|
||||
}}>
|
||||
<svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/>
|
||||
</svg>
|
||||
可报名线下参与
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{eventItem.description && (
|
||||
<div className="event-description">
|
||||
{eventItem.description}
|
||||
|
||||
@@ -242,44 +242,37 @@
|
||||
|
||||
/* 复合技能课 */
|
||||
.event-item.compound-skill {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
background: #5AC6FF;
|
||||
}
|
||||
|
||||
/* 垂直技能课 */
|
||||
.event-item.vertical-skill {
|
||||
background: linear-gradient(135deg, #4ade80 0%, #22c55e 100%);
|
||||
background: #CB78E0;
|
||||
}
|
||||
|
||||
/* 公开课 */
|
||||
/* 企业高管公开课 */
|
||||
.event-item.public-course {
|
||||
background: linear-gradient(135deg, #f59e0b 0%, #fbbf24 100%);
|
||||
background: #D0A474;
|
||||
}
|
||||
|
||||
/* AI课程 */
|
||||
.event-item.ai-course {
|
||||
background: #F7A133;
|
||||
}
|
||||
|
||||
/* 营销课 */
|
||||
.event-item.marketing-course {
|
||||
background: #FF4277;
|
||||
}
|
||||
|
||||
/* 1v1规划 */
|
||||
.event-item.one-on-one {
|
||||
background: linear-gradient(135deg, #ec4899 0%, #f472b6 100%);
|
||||
background: #FFCC3F;
|
||||
}
|
||||
|
||||
/* 线下面试模拟 */
|
||||
.event-item.interview {
|
||||
background: linear-gradient(135deg, #06b6d4 0%, #3b82f6 100%);
|
||||
}
|
||||
|
||||
/* 默认类型保留 */
|
||||
.event-item.class {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
}
|
||||
|
||||
.event-item.meeting {
|
||||
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
|
||||
}
|
||||
|
||||
.event-item.lab {
|
||||
background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);
|
||||
}
|
||||
|
||||
.event-item.exam {
|
||||
background: linear-gradient(135deg, #ff6b6b 0%, #ff8e53 100%);
|
||||
background: #0743DA;
|
||||
}
|
||||
|
||||
.event-more {
|
||||
|
||||
@@ -16,26 +16,68 @@
|
||||
.homework-page-content-list {
|
||||
width: 1120px;
|
||||
min-height: 360px;
|
||||
border-radius: 8px;
|
||||
border-radius: 12px;
|
||||
background-color: #fff;
|
||||
margin-bottom: 20px;
|
||||
margin-bottom: 24px;
|
||||
box-sizing: border-box;
|
||||
padding: 20px 15px;
|
||||
padding: 24px 20px 20px;
|
||||
position: relative;
|
||||
overflow: hidden; /* 重要:隐藏溢出内容 */
|
||||
overflow: hidden;
|
||||
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
|
||||
|
||||
.homework-page-content-list-title {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
color: #000;
|
||||
.homework-page-content-list-header {
|
||||
margin-bottom: 16px;
|
||||
|
||||
.homework-page-content-list-title {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #1d2129;
|
||||
margin: 0;
|
||||
line-height: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.homework-page-unit-nav {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 20px;
|
||||
padding-bottom: 16px;
|
||||
border-bottom: 1px solid #f2f3f5;
|
||||
|
||||
.unit-nav-item {
|
||||
padding: 5px 14px;
|
||||
font-size: 13px;
|
||||
color: #4e5969;
|
||||
background: #f7f8fa;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 14px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
white-space: nowrap;
|
||||
font-weight: 400;
|
||||
|
||||
&:hover {
|
||||
background: #e8f3ff;
|
||||
color: #2c7aff;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background: #2c7aff;
|
||||
color: #fff;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.homework-page-content-list-class {
|
||||
width: calc(100% + 30px); /* 扩展到padding外 */
|
||||
height: 300px;
|
||||
margin-top: 20px;
|
||||
margin-left: -15px;
|
||||
margin-right: -15px;
|
||||
padding: 0 15px;
|
||||
width: calc(100% + 40px); /* 扩展到padding外 */
|
||||
height: 280px;
|
||||
margin-top: 0;
|
||||
margin-left: -20px;
|
||||
margin-right: -20px;
|
||||
padding: 0 20px;
|
||||
padding-bottom: 10px;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
|
||||
@@ -9,7 +9,12 @@ import "./index.css";
|
||||
const HomeworkPage = () => {
|
||||
const { homework } = mockData;
|
||||
const scrollContainerRef = useRef(null);
|
||||
const verticalScrollContainerRef = useRef(null);
|
||||
const [showIframe, setShowIframe] = useState(false);
|
||||
const [selectedUnits, setSelectedUnits] = useState({
|
||||
1: "全部", // 复合能力课的选中单元
|
||||
2: "全部" // 垂直能力课的选中单元
|
||||
});
|
||||
|
||||
// 调试:打印课程数量
|
||||
console.log('作业数据:', homework);
|
||||
@@ -19,67 +24,90 @@ const HomeworkPage = () => {
|
||||
|
||||
// 添加鼠标滚轮横向滚动支持(更丝滑的滚动)
|
||||
useEffect(() => {
|
||||
const container = scrollContainerRef.current;
|
||||
if (!container) return;
|
||||
// 如果显示iframe,不初始化滚动
|
||||
if (showIframe) return;
|
||||
|
||||
const containers = [scrollContainerRef.current, verticalScrollContainerRef.current].filter(Boolean);
|
||||
if (containers.length === 0) return;
|
||||
|
||||
let animationId = null;
|
||||
let targetScrollLeft = container.scrollLeft;
|
||||
const animationIds = new Map();
|
||||
const targetScrollLefts = new Map();
|
||||
const handlers = new Map();
|
||||
|
||||
// 平滑滚动动画
|
||||
const smoothScroll = () => {
|
||||
const currentScrollLeft = container.scrollLeft;
|
||||
const diff = targetScrollLeft - currentScrollLeft;
|
||||
containers.forEach(container => {
|
||||
targetScrollLefts.set(container, container.scrollLeft);
|
||||
|
||||
if (Math.abs(diff) > 0.5) {
|
||||
container.scrollLeft = currentScrollLeft + diff * 0.15; // 缓动系数
|
||||
animationId = requestAnimationFrame(smoothScroll);
|
||||
} else {
|
||||
container.scrollLeft = targetScrollLeft;
|
||||
if (animationId) {
|
||||
cancelAnimationFrame(animationId);
|
||||
animationId = null;
|
||||
// 平滑滚动动画
|
||||
const smoothScroll = () => {
|
||||
const currentScrollLeft = container.scrollLeft;
|
||||
const targetScrollLeft = targetScrollLefts.get(container);
|
||||
const diff = targetScrollLeft - currentScrollLeft;
|
||||
|
||||
if (Math.abs(diff) > 0.5) {
|
||||
container.scrollLeft = currentScrollLeft + diff * 0.15; // 缓动系数
|
||||
const animId = requestAnimationFrame(smoothScroll);
|
||||
animationIds.set(container, animId);
|
||||
} else {
|
||||
container.scrollLeft = targetScrollLeft;
|
||||
const animId = animationIds.get(container);
|
||||
if (animId) {
|
||||
cancelAnimationFrame(animId);
|
||||
animationIds.delete(container);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
// 鼠标滚轮横向滚动
|
||||
const handleWheel = (e) => {
|
||||
e.preventDefault();
|
||||
// 鼠标滚轮横向滚动
|
||||
const handleWheel = (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
// 计算滚动距离,使用较小的值让滚动更平滑
|
||||
const scrollAmount = e.deltaY * 0.8;
|
||||
let newTargetScrollLeft = targetScrollLefts.get(container) + scrollAmount;
|
||||
|
||||
// 限制滚动范围
|
||||
newTargetScrollLeft = Math.max(0, Math.min(newTargetScrollLeft, container.scrollWidth - container.clientWidth));
|
||||
targetScrollLefts.set(container, newTargetScrollLeft);
|
||||
|
||||
// 如果没有正在进行的动画,启动平滑滚动
|
||||
if (!animationIds.has(container)) {
|
||||
const animId = requestAnimationFrame(smoothScroll);
|
||||
animationIds.set(container, animId);
|
||||
}
|
||||
};
|
||||
|
||||
// 计算滚动距离,使用较小的值让滚动更平滑
|
||||
const scrollAmount = e.deltaY * 0.8;
|
||||
targetScrollLeft = container.scrollLeft + scrollAmount;
|
||||
|
||||
// 限制滚动范围
|
||||
targetScrollLeft = Math.max(0, Math.min(targetScrollLeft, container.scrollWidth - container.clientWidth));
|
||||
|
||||
// 如果没有正在进行的动画,启动平滑滚动
|
||||
if (!animationId) {
|
||||
animationId = requestAnimationFrame(smoothScroll);
|
||||
}
|
||||
};
|
||||
|
||||
container.addEventListener('wheel', handleWheel, { passive: false });
|
||||
handlers.set(container, handleWheel);
|
||||
container.addEventListener('wheel', handleWheel, { passive: false });
|
||||
});
|
||||
|
||||
return () => {
|
||||
container.removeEventListener('wheel', handleWheel);
|
||||
if (animationId) {
|
||||
cancelAnimationFrame(animationId);
|
||||
}
|
||||
containers.forEach(container => {
|
||||
const handleWheel = handlers.get(container);
|
||||
if (handleWheel) {
|
||||
container.removeEventListener('wheel', handleWheel);
|
||||
}
|
||||
const animId = animationIds.get(container);
|
||||
if (animId) {
|
||||
cancelAnimationFrame(animId);
|
||||
}
|
||||
});
|
||||
};
|
||||
}, []);
|
||||
}, [showIframe]);
|
||||
|
||||
const handleClickBtn = (sectionId, itemId) => {
|
||||
// 只有复合能力培养的第72个项目(展会策划教学)可以点击
|
||||
if (sectionId === 1 && itemId === 72) {
|
||||
const handleClickBtn = (sectionId, item) => {
|
||||
// 垂直能力课中标记为isShowCase的课程可以点击
|
||||
if (sectionId === 2 && item.isShowCase) {
|
||||
setShowIframe(true);
|
||||
}
|
||||
};
|
||||
|
||||
// 判断是否应该显示灰色图片和禁用按钮
|
||||
const isDisabled = (sectionId, itemId) => {
|
||||
// 只有复合能力培养的展会策划教学(第72个)是启用状态
|
||||
return !(sectionId === 1 && itemId === 72);
|
||||
const isDisabled = (sectionId, item) => {
|
||||
// 垂直能力课中标记为isShowCase的课程是启用状态
|
||||
if (sectionId === 2 && item.isShowCase) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
// 如果显示iframe,渲染全页面的iframe
|
||||
@@ -105,18 +133,62 @@ const HomeworkPage = () => {
|
||||
);
|
||||
}
|
||||
|
||||
// 获取筛选后的课程列表
|
||||
const getFilteredCourses = (sectionId) => {
|
||||
const section = homework.find(h => h.id === sectionId);
|
||||
if (!section) return [];
|
||||
|
||||
const selectedUnit = selectedUnits[sectionId];
|
||||
|
||||
// 如果有units结构,使用新结构
|
||||
if (section.units) {
|
||||
if (selectedUnit === "全部") {
|
||||
// 将所有单元的课程合并
|
||||
return section.units.flatMap(unit => unit.courses);
|
||||
} else {
|
||||
// 返回选中单元的课程
|
||||
const unit = section.units.find(u => u.name === selectedUnit);
|
||||
return unit ? unit.courses : [];
|
||||
}
|
||||
}
|
||||
|
||||
// 兼容旧结构
|
||||
return section.list || [];
|
||||
};
|
||||
|
||||
// 正常渲染作业列表
|
||||
return (
|
||||
<div className="homework-page-wrapper">
|
||||
<ul className="homework-page-content">
|
||||
{homework.map((item) => (
|
||||
<li key={item.id} className="homework-page-content-list">
|
||||
<p className="homework-page-content-list-title">{item.name}</p>
|
||||
<div className="homework-page-content-list-header">
|
||||
<p className="homework-page-content-list-title">{item.name}</p>
|
||||
</div>
|
||||
{item.units && (
|
||||
<div className="homework-page-unit-nav">
|
||||
<span
|
||||
className={`unit-nav-item ${selectedUnits[item.id] === "全部" ? "active" : ""}`}
|
||||
onClick={() => setSelectedUnits({...selectedUnits, [item.id]: "全部"})}
|
||||
>
|
||||
全部
|
||||
</span>
|
||||
{item.units.map((unit, index) => (
|
||||
<span
|
||||
key={index}
|
||||
className={`unit-nav-item ${selectedUnits[item.id] === unit.name ? "active" : ""}`}
|
||||
onClick={() => setSelectedUnits({...selectedUnits, [item.id]: unit.name})}
|
||||
>
|
||||
{unit.name}
|
||||
</span>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
<ul
|
||||
className="homework-page-content-list-class"
|
||||
ref={item.id === 1 ? scrollContainerRef : null}
|
||||
ref={item.id === 1 ? scrollContainerRef : item.id === 2 ? verticalScrollContainerRef : null}
|
||||
>
|
||||
{item.list.map((contentItem) => (
|
||||
{getFilteredCourses(item.id).map((contentItem) => (
|
||||
<li
|
||||
key={contentItem.id}
|
||||
className="homework-page-content-list-content-item"
|
||||
@@ -133,9 +205,9 @@ const HomeworkPage = () => {
|
||||
</Tooltip>
|
||||
<div
|
||||
className={`homework-page-content-list-content-item-btn ${
|
||||
isDisabled(item.id, contentItem.id) ? "disabled" : "completed"
|
||||
isDisabled(item.id, contentItem) ? "disabled" : "completed"
|
||||
}`}
|
||||
onClick={() => !isDisabled(item.id, contentItem.id) && handleClickBtn(item.id, contentItem.id)}
|
||||
onClick={() => !isDisabled(item.id, contentItem) && handleClickBtn(item.id, contentItem)}
|
||||
>
|
||||
已完成
|
||||
</div>
|
||||
|
||||
@@ -11,7 +11,7 @@ export default ({ selectedItem = "求职面试初体验" }) => {
|
||||
case "求职面试初体验":
|
||||
return "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/video/teach_sys/interview_simulation/3years_ago.mov";
|
||||
case "未来的自己":
|
||||
return "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/video/teach_sys/interview_offline_vedio/recuUpJT02CMM5.mp4";
|
||||
return "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/video/teach_sys/interview_simulation/3years_later.mov";
|
||||
case "第一次线下面试模拟":
|
||||
return "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/video/teach_sys/interview_offline_vedio/recuUpJSOKoqAm.mov"; // 使用相同视频作为示例
|
||||
case "第二次线下面试模拟":
|
||||
|
||||
@@ -18,7 +18,8 @@ const PublicCourses = () => {
|
||||
<CoursesVideoPlayer
|
||||
selectedCourse={selectedCourse}
|
||||
teacherData={mockData.teacherData}
|
||||
unitPosters={mockData.unitPosters}
|
||||
unitPosters={mockData.publicCourseBackgrounds}
|
||||
isPublicCourse={true}
|
||||
/>
|
||||
<PublicCourseList onCourseClick={handleCourseClick} />
|
||||
</div>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"课堂不枯燥",
|
||||
"学习氛围爆棚"
|
||||
],
|
||||
"avatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||||
"avatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg",
|
||||
"type": "复合课导师",
|
||||
"courses": []
|
||||
},
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
❌查询导师名称,导师介绍,导师专长,导师头像url链接,导师类型
|
||||
❌查询导师名称,导师介绍,导师专长,导师头像url链接,导师类型
|
||||
刘杰,"15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。
|
||||
木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。
|
||||
曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动“民宿管家”入选国家新职业目录,建立首个国家级职业技能评定体系。","# <20> 一听就懂
|
||||
# <20> 思路很清晰
|
||||
# <20> 课堂不枯燥
|
||||
# <20> 学习氛围爆棚",https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png,复合课导师
|
||||
# <20> 学习氛围爆棚",https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg,复合课导师
|
||||
郭建辉,拥有18年文化旅游规划与产业运营经验,专注景区产品创新设计、文旅人才培养体系构建及城市文化更新模式研究,主导多项省部级文旅项目及行业标准实践落地。山行文旅研究院创始人兼院长,全面负责文旅规划研发、运营标准制定与全国学术交流,同时兼任中国文化旅游协会文创专委会副主任委员、华东师范大学旅游与会展专业硕士生导师。,"# <20> 经验传授权威
|
||||
# <20> 实用可落地
|
||||
# <20> 表达沟通提升
|
||||
# <20> 跨界经验丰富",https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBMNLZL5.png,复合课导师
|
||||
# <20> 跨界经验丰富",https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBMNLZL5.png,复合课导师
|
||||
赵志强,"深耕乡村旅游与民宿产业12年,从一线管家服务到国家级标准制定,全程参与中国民宿职业化与产业化进程。
|
||||
曾作为首席讲师为苏浙沪皖四地文旅部门提供“乡村振兴十大模式”培训,设计桑蚕文化园、谢家路村等沉浸式研学路线,促成区域人才协作机制,获江苏省人社厅列为省级高级研修示范项目。
|
||||
曾担任标准起草专家组核心成员,牵头《德清县地方民宿管理办法》试点,联合政府申报“民宿管理师”新职业,制定长三角区域民宿评级体系,推动了紫蓬山民宿学校(安徽)、吴江农文旅融合示范区落地,形成可复制的“民宿+”乡村振兴模式。","# <20> 讲解有节奏
|
||||
# <20> 讲解通俗
|
||||
# ✨ 幽默又有料
|
||||
# <20> 善于启发",https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJC2oLPpC.png,复合课导师
|
||||
# <20> 善于启发",https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJC2oLPpC.png,复合课导师
|
||||
孙应战,拥有18年制造业与产品营销经验,曾在上市公司与世界500强外企任职,参与大众MEB平台、奥迪EA888发动机及新能源汽车项目开发。作为德企内训讲师、国际演讲学会资深会员和中国心理卫生协会会员,善于将实践经验转化为通俗讲解,课堂氛围轻松易懂。,"# <20> 经验传授权威
|
||||
# <20> 实用可落地
|
||||
# <20> 表达沟通提升
|
||||
# <20> 跨界经验丰富",https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJCc6qecx.jpg,公共课导师
|
||||
# <20> 跨界经验丰富",https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJCc6qecx.jpg,公共课导师
|
||||
魏立慧,企业资深一线HR主讲,专注于为求职者提供一对一的个性化指导。通过真实招聘视角,深入剖析个人优势与短板、传授面试技巧、规划职业定位与发展路径,帮助学生快速提升求职竞争力。求职策略以实用落地为核心,注重互动交流与角色定位,让学员在轻松氛围中获得直击痛点的求职策略。,"# <20> 点评直击要害
|
||||
# <20> 擅长挖掘优势
|
||||
# <20> 职业规划达人
|
||||
# <20> 深谙用人逻辑",https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpSO4gUtJz.png,企业资深HR
|
||||
# <20> 深谙用人逻辑",https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpSO4gUtJz.png,企业资深HR
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
"垂直方向倾向": "项目经营管理",
|
||||
"导师介绍": "15年民宿产业化研发与标准设计经验,专注民宿产品创新、职业化培训体系搭建及乡村文旅业态升级,主导多项国家级行业标准制定与落地实践。\n木亚文旅创始人兼董事长,全面负责民宿产业研发、标准制定及全国业务拓同时也是莫干山民宿行业协会执行会长兼秘书长以及浙江大学城市学院旅游管理专业校外导师。\n曾作为核心起草人,主持《乡村民宿服务质量规范》《民宿管家职业技能等级评定规范》等国标编制,推动民宿行业标准化发展;申报并推动“民宿管家”入选国家新职业目录,建立首个国家级职业技能评定体系。",
|
||||
"导师专长": "# <20> 一听就懂\n# <20> 思路很清晰\n# <20> 课堂不枯燥\n# <20> 学习氛围爆棚\n# <20> 民宿产业化专家",
|
||||
"导师头像url链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.png",
|
||||
"导师头像url链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBE4VCCx.jpg",
|
||||
"导师类型": "复合课导师"
|
||||
},
|
||||
{
|
||||
@@ -68,7 +68,7 @@
|
||||
"垂直方向倾向": "",
|
||||
"导师介绍": "毕业于南洋理工学院,拥有硕士学位,具备扎实的人工智能理论基础与产业实践经验。近年来,专注于大模型工程化与AI应用课程体系建设,主持完成《AIGC实战:从模型调用到产品落地》《AI在视觉设计与内容生成中的应用》等多个应用型教学项目。曾主导开发“AI技能地图导航系统”,实现课程内容与岗位技能的精准对齐,在2024年全国高校AI课程创新大赛中荣获一等奖。擅长将复杂的算法模型转化为通俗易懂的教学内容,致力于打造“人人可用AI”的实训课程体系,是众多高校与职业培训机构特聘的AI技术与课程体系顾问。",
|
||||
"导师专长": "# <20> 老师超懂学生\n# <20>️ 技巧随手教\n# ✨ 幽默又有料\n# <20> 讲解有节奏\n# <20> 人工智能技术顾问\n# <20> 大模型工程化研究者\n# <20> AI应用课程体系建设者\n# <20> 全国高校AI课程创新大赛一等奖获得者\n# <20>️ 教学内容转化能力强\n# <20> AI教育与应用场景落地推动者",
|
||||
"导师头像url链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7LDWK6iG.jpg",
|
||||
"导师头像url链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW8gePZvRn6.jpg",
|
||||
"导师类型": "AI课导师"
|
||||
}
|
||||
]
|
||||
104
网页未导入数据/营销能力课.json
Normal file
104
网页未导入数据/营销能力课.json
Normal file
@@ -0,0 +1,104 @@
|
||||
[
|
||||
{
|
||||
"日期": "2024/7/15",
|
||||
"星期": "星期一",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "PM产品经理思维",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
},
|
||||
{
|
||||
"日期": "2024/7/16",
|
||||
"星期": "星期二",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "了解你的客户群体",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
},
|
||||
{
|
||||
"日期": "2024/7/17",
|
||||
"星期": "星期三",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "营销与沟通",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
},
|
||||
{
|
||||
"日期": "2024/7/18",
|
||||
"星期": "星期四",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "营销的模式",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
},
|
||||
{
|
||||
"日期": "2024/7/19",
|
||||
"星期": "星期五",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "自我营销第一步:面试",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
},
|
||||
{
|
||||
"日期": "2024/7/20",
|
||||
"星期": "星期六",
|
||||
"AI课": "",
|
||||
"复合技能课": "",
|
||||
"营销课": "如何在职场中包装自己",
|
||||
"公开课": "",
|
||||
"垂直课(方向二:商业活动策划)": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习": "",
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"就业管家": "文旅",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "孙应战"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user