feat: update residence learning flows

Commit non-media application and asset changes while leaving audio, video, and environment files out of version control.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
zhongyidianandClaude Opus 4.7 committed 2026-05-13 10:15:26 +08:00
1 parent 68ba22a33f
commit 6d40e19346
184 files changed
+7663 -2203

No files matched your search

+1 -1
View File
@@ -79,7 +79,7 @@ const Huangyanpei = () => {
className="absolute right-37 top-22"
src={getStaticImage('components/革命先驱故居-返回')}
button
onClick={() => navigate(`/entrance/${moduleName}`)}
onClick={() => navigate(`/${moduleName}`)}
/>
<div className="absolute right-20 top-75 flex flex-col space-y-10">
+7 -4
View File
@@ -141,7 +141,7 @@ const QUIZ_ANCHORS: QuizAnchor[] = [
},
{
value: 'D',
label: '在川沙小学堂采取"半天读书、半天做手工"的学习模式',
label: '在川沙小学堂采取“半天读书、半天做手工”的学习模式',
isCorrect: true,
},
],
@@ -152,7 +152,7 @@ const QUIZ_ANCHORS: QuizAnchor[] = [
time: 369, // 6:09
title: '',
prompt:
'【拖拽】当年黄炎培先生有推广国货的爱国情怀,如今我们的"国货"已经自强自立,请将其中的国产企业/品牌放置到空格处',
'【拖拽】当年黄炎培先生有推广国货的爱国情怀,如今我们的“国货”已经自强自立,请将其中的国产企业/品牌放置到空格处',
type: 'drag',
options: [
{ value: '特斯拉', label: '特斯拉' },
@@ -488,11 +488,14 @@ const HuangyanpeiInternalization = () => {
>
<GuideStepsItem
speaker="student"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_28.mp3')}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_28_1.mp3')}
>
小沪,刚刚结束的“小职成长记”太有意思了!我变成百年前的川沙少年选课程、做手工、设计国货推销方案,好像真的走进了黄炎培先生的职教世界。
</GuideStepsItem>
<GuideStepsItem speaker="student">
<GuideStepsItem
speaker="student"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_28_2.mp3')}
>
但我还有一个疑问:先生当年倡导的“手脑并用、工学结合”,放在我们现在的中职学习中,到底有什么样的意义呢?
</GuideStepsItem>
<GuideStepsItem
+18 -23
View File
@@ -31,10 +31,9 @@ const HuangyanpeiPlace1 = () => {
// 学习引导弹窗
const [showGuideModal, setShowGuideModal] = useState(true)
// 对话结束后的学习引导弹窗
// 温馨提示弹窗
const [showAfterDialogGuide, setShowAfterDialogGuide] = useState(false)
const [afterDialogGuideShown, setAfterDialogGuideShown] = useState(false)
// 引导对话显示状态
// 温馨提示关闭后的引导对话显示状态
const [visible, setVisible] = useState(false)
// 当前激活的展品 ID(只存 ID,不直接存路径,便于作为唯一标识)
const [activeExhibitId, setActiveExhibitId] = useState<1 | null>(null)
@@ -123,12 +122,12 @@ const HuangyanpeiPlace1 = () => {
}}
/>
{/* 学习引导词 */}
{/* 学习引导 */}
<StudyGuideModal
visible={showGuideModal}
onContinue={() => {
setShowGuideModal(false)
setVisible(true)
setShowAfterDialogGuide(true)
}}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_02.mp3')}
ailgn="left"
@@ -140,44 +139,40 @@ const HuangyanpeiPlace1 = () => {
3.所有动态光点的展品全部学习后才能进入下一个场景学习。
</StudyGuideModal>
{/* 引导 */}
<GuideSteps
visible={visible}
onVisibleChange={(nextVisible) => {
setVisible(nextVisible)
if (!nextVisible && !afterDialogGuideShown) {
setAfterDialogGuideShown(true)
setShowAfterDialogGuide(true)
}
}}
showMask={false}
>
{/* 温馨提示关闭后的引导对话 */}
<GuideSteps visible={visible} onVisibleChange={setVisible} showMask={false}>
<GuideStepsItem
speaker="student"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_03.mp3')}
>
小沪,这栋古色古香的江南大院,就是黄炎培先生从小生活、读书的地方吗
小沪,这栋古色古香的江南大院,就是黄炎培先生从小生活、读书的地方吗?
</GuideStepsItem>
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_04.mp3')}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_04_1.mp3')}
>
没错,1878年10月1日,黄炎培先生就出生在当时江苏省川沙县城关镇(现上海市浦东新区川沙镇)的这处“内史第”,宅子原是他外祖父沈树镛家,也是他后来所说的“生于斯、读于斯、长于斯”之地。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_04_2.mp3')}
>
1890年,川沙创办“观澜书院”,12岁的黄炎培以第一名的成绩考入,每天提着母亲亲手缝制的布书包,往返十里路求学,一点都不叫苦。1893年他去上海应县考,松江府复试名列前茅;1899年,在松江府试中更是以第一名的成绩中了秀才。
</GuideStepsItem>
</GuideSteps>
{/* 对话结束后的学习引导 */}
{/* 温馨提示 */}
<StudyGuideModal
visible={showAfterDialogGuide}
onContinue={() => setShowAfterDialogGuide(false)}
onContinue={() => {
setShowAfterDialogGuide(false)
setVisible(true)
}}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_01.mp3')}
firstLineIndent="2em"
>
同学你好,欢迎来到“走进故居·对话”学习模块!{'\n'}
此刻你正站在黄炎培先生故居门前,接下来就跟着时光的脉络,拆解黄先生人生里五段滚烫的旅程:思想启蒙、教育实践、创立职教、延安对话、职教传薪。准备好一起走进这段炽热的岁月了吗?
此刻你正站在黄炎培先生故居门前,接下来就跟着时光的脉络,拆解黄先生人生里5段滚烫的旅程:思想启蒙、教育实践、创立职教、延安对话、职教传薪。准备好一起走进这段炽热的岁月了吗?
</StudyGuideModal>
</div>
)
+9 -3
View File
@@ -152,14 +152,20 @@ const HuangyanpeiPlace2 = () => {
</GuideStepsItem>
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_06.mp3')}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_06_1.mp3')}
>
你说得特别对!1901年,黄炎培先生考入南洋公学(今上海交通大学)特班,当时的老师正是蔡元培先生。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_06_2.mp3')}
>
蔡先生一句“中国教育之病,在于学与术分离”,让他瞬间醍醐灌顶,明白了教育不能只谈书本、脱离实际。1902年,黄炎培去南京参加江南乡试,成功中了举人;
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_06_3.mp3')}
>
可就在这一年,南洋公学发生了著名的“墨水瓶风潮”,他毅然跟着蔡元培先生退学,转入蔡先生创办的中国教育会,正式开启了自己“教育救国”的实践。
</GuideStepsItem>
</GuideSteps>
+44 -37
View File
@@ -27,7 +27,7 @@ const exhibitSrcMap: Record<1 | 2 | 3, string> = {
// 常量定义
const FIRST_QUIZ_SUCCESS_CONTENT =
'1903年,黄炎培将"观澜书院"改制为"川沙小学堂",自任校长,率先打破传统经学模式,在课程表中首次列入算术、格致(近代自然科学)、体操和乡土调查四门新学科,并实行"半日授课、半日实习"的教学方式,开创了近代中国小学融入科学、体育与实践教育的新风。'
'1903年,黄炎培将“观澜书院”改制为“川沙小学堂”,自任校长,率先打破传统经学模式,在课程表中首次列入算术、格致(近代自然科学)、体操和乡土调查四门新学科,并实行“半日授课、半日实习”的教学方式,开创了近代中国小学融入科学、体育与实践教育的新风。'
const DRAG_QUIZ_SUCCESS_CONTENT = '恭喜你,选择正确!'
@@ -349,14 +349,20 @@ const HuangyanpeiPlace3 = () => {
</GuideStepsItem>
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_08.mp3')}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_08_1.mp3')}
>
太有共鸣啦!1903年,24岁的黄炎培先生和好友张志鹤等人一起,把原来的“观澜书院”改成了“川沙小学堂”,他自己当校长。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_08_2.mp3')}
>
这所学校的课程表可太有突破性了——破天荒出现了算术、格致(也就是咱们现在说的自然科学)、体操、乡土调查这些新学科,还实行“半天读书、半天做手工”的模式,特别注重实践。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_08_3.mp3')}
>
当时办学经费特别紧张,没钱买课本,他就带头刻蜡版油印;缺体育器材,就带着学生用毛竹做单杠,完全是凭着一腔热血办学呢!这也是中国最早的“半日授课、半日实习”雏形。
</GuideStepsItem>
</GuideSteps>
@@ -364,7 +370,7 @@ const HuangyanpeiPlace3 = () => {
{/* 光标3的题目 */}
<SingleChoiceQuizPanel
visible={showQuiz3}
title='【单选】黄炎培1903年把川沙"观澜书院"改成"川沙小学堂"后,课程表首次出现下列哪组学科?'
title="【单选】黄炎培1903年把川沙“观澜书院”改成“川沙小学堂”后,课程表首次出现下列哪组学科?"
options={[
{ value: 'A', label: 'A. 经学、策论、八股文' },
{
@@ -375,17 +381,16 @@ const HuangyanpeiPlace3 = () => {
{ value: 'D', label: 'D. 绘画、声乐、舞蹈、戏剧' },
]}
correctAnswer="B"
errorMessage='1903年,黄炎培将"观澜书院"改制为"川沙小学堂",自任校长,率先打破传统经学模式,在课程表中首次列入算术、格致(近代自然科学)、体操和乡土调查四门新学科,并实行"半日授课、半日实习"的教学方式,开创了近代中国小学融入科学、体育与实践教育的新风。'
onWrongSelect={(value) => {
switch (value) {
case 'A':
return '经学、策论、八股文是传统书院的旧式课程,而川沙小学堂正是要打破这种传统模式。请你再想想吧!'
return '经学、策论、八股文是传统书院的旧式课程,而川沙小学堂正是要打破这种传统模式。请你再想想吧!'
case 'C':
return '外语、逻辑、演讲、社交这些科目虽然也很重要,但不是川沙小学堂首次引入的突破性学科。请你再想想吧!'
return '外语、逻辑、演讲、社交这些科目虽然也很重要,但不是川沙小学堂首次引入的突破性学科。请你再想想吧!'
case 'D':
return '绘画、声乐、舞蹈、戏剧属于艺术类课程,不是川沙小学堂在1903年首次开设的突破性学科。请你再想想吧!'
return '绘画、声乐、舞蹈、戏剧属于艺术类课程,不是川沙小学堂在1903年首次开设的突破性学科。请你再想想吧!'
default:
return '这不是川沙小学堂开设的具有突破性的学科。请你再想想吧!'
return '这不是川沙小学堂开设的具有突破性的学科。请你再想想吧!'
}
}}
onSubmit={handleQuiz3Submit}
@@ -395,7 +400,6 @@ const HuangyanpeiPlace3 = () => {
<SuccessAlert
visible={showSuccessAlert && !showDragQuiz && !successAlertContent}
content={FIRST_QUIZ_SUCCESS_CONTENT}
onContinue={handleFirstQuizSuccessContinue}
onClose={handleFirstQuizSuccessContinue}
/>
@@ -404,8 +408,8 @@ const HuangyanpeiPlace3 = () => {
visible={showDragQuiz}
zIndex={10000}
title=""
questionPrefix='【拖拽】黄炎培在"川沙小学堂"实行"半天'
questionSuffix="的模式,特别注重实践。"
questionPrefix="【拖拽】黄炎培在川沙小学堂实行半天"
questionSuffix="的模式,特别注重实践。"
options={DRAG_QUIZ_OPTIONS}
blanks={DRAG_QUIZ_BLANKS}
blankSeparators={['、']}
@@ -418,14 +422,13 @@ const HuangyanpeiPlace3 = () => {
<SuccessAlert
visible={showSuccessAlert && !showDragQuiz && !!successAlertContent}
// content={successAlertContent}
onContinue={handleDragQuizSuccessContinue}
onClose={handleDragQuizSuccessContinue}
/>
{/* 题目3(开群女学) */}
<SingleChoiceQuizPanel
visible={showQuiz3_12}
title="【单选】黄炎培和堂兄黄洪培、堂嫂陆开群一起,策划创建的开创了浦东地区女子教育的先河的学校为:"
title="【单选】黄炎培和堂兄黄洪培、堂嫂陆开群一起,策划创建的开创了浦东地区女子教育的先河的学校为:"
options={[
{ value: 'A', label: 'A. 开群女学' },
{ value: 'B', label: 'B. 上海女子师范学校' },
@@ -435,22 +438,18 @@ const HuangyanpeiPlace3 = () => {
onWrongSelect={(value) => {
switch (value) {
case 'B':
return '上海女子师范学校是上海市区的女子教育机构,并非由黄炎培等人在浦东地区创办。请你再想想吧!'
return '上海女子师范学校是上海市区的女子教育机构,并非由黄炎培等人在浦东地区创办。请你再想想吧!'
case 'C':
return '浦东中学是一所面向男女学生的综合性中学,并非专门的女子学校。请你再想想吧!'
return '浦东中学是一所面向男女学生的综合性中学,并非专门的女子学校。请你再想想吧!'
default:
return '请你再想想吧!'
return '请你再想想吧!'
}
}}
onSubmit={handleQuiz3_12Submit}
/>
{/* 题目3成功提示 */}
<SuccessAlert
visible={showQuiz3Success}
onContinue={handleQuiz3SuccessContinue}
onClose={handleQuiz3SuccessContinue}
/>
<SuccessAlert visible={showQuiz3Success} onClose={handleQuiz3SuccessContinue} />
{/* 题目4(浦东中学) */}
<SingleChoiceQuizPanel
@@ -465,22 +464,18 @@ const HuangyanpeiPlace3 = () => {
onWrongSelect={(value) => {
switch (value) {
case 'A':
return '浦东中学是一所男女同校的综合性中学,并非女子中学。请你再想想吧!'
return '浦东中学是一所男女同校的综合性中学,并非女子中学。请你再想想吧!'
case 'B':
return '浦东中学以普通中学教育为主,其定位是培养全面发展的人才,并非职业技术学校。请你再想想吧!'
return '浦东中学以普通中学教育为主,其定位是培养全面发展的人才,并非职业技术学校。请你再想想吧!'
default:
return '请你再想想吧!'
return '请你再想想吧!'
}
}}
onSubmit={handleQuiz4Submit}
/>
{/* 题目4成功提示 */}
<SuccessAlert
visible={showQuiz4Success}
onContinue={handleQuiz4SuccessContinue}
onClose={handleQuiz4SuccessContinue}
/>
<SuccessAlert visible={showQuiz4Success} onClose={handleQuiz4SuccessContinue} />
{/* 光标1、2的引导对话 */}
<GuideSteps
@@ -493,24 +488,36 @@ const HuangyanpeiPlace3 = () => {
speaker="student"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_09.mp3')}
>
原来当年还有专门的女子学校呀?在那个年代,女孩子能上学是不是特别不容易?后来的浦东中学也是黄炎培先生办的吗?
原来当年还有专门的女子学校呀?在那个年代,女孩子能上学是不是特别不容易?后来的浦东中学也是黄炎培先生办的吗?
</GuideStepsItem>
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_10.mp3')}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_10_1.mp3')}
>
你观察得特别仔细!川沙小学堂开学没多久,黄炎培就和堂兄黄洪培、堂嫂陆开群一起,策划创建了“开群女学”——这所学校专门面向社会招收女学生,还用全力支持办学、腾出自家住房的陆开群名字命名。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_10_2.mp3')}
>
这所学校直接开创了浦东地区女子教育的先河,让很多女孩子有了读书的机会。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_10_3.mp3')}
>
到了1906年,上海营造业宗师杨斯盛捐资30万两白银,在浦东六里桥购地40多亩创办浦东中学,特意邀请黄炎培担任首任校长。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_10_4.mp3')}
>
校舍是黄炎培亲自设计的,杨斯盛先生亲自监工,建成后有能容纳千人的大礼堂和两座教学楼,是近代上海第一所完全中学呢!
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_10_5.mp3')}
>
1912年,黄炎培担任江苏省署教育司司长,任职期间一直倡导实用主义教育,强调教育要和生产劳动结合起来,这也为后来的职业教育打下了坚实基础。
</GuideStepsItem>
</GuideSteps>
+24 -12
View File
@@ -240,17 +240,26 @@ const HuangyanpeiPlace4 = () => {
</GuideStepsItem>
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_14.mp3')}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_14_1.mp3')}
>
没错!黄炎培先生一直怀揣着“教育救国”的理想,职业教育从来都和国家命运紧紧连在一起。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_14_2.mp3')}
>
1932年“一・二八”事变爆发,黄炎培立刻组织了抗日救国研究会,一边支援前线输送军需,一边维持地方秩序、稳定金融市场,还创办了“一・二八”残废院,专门收容受伤战士和无家可归的难民。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_14_3.mp3')}
>
“八・一三”抗战爆发后,他担任上海抗战后援会主席,组织民众设难民所、医疗队和后方医院,还成立了青年战地服务团,冒着枪林弹雨为前线军队服务。他自己不顾日机轰炸的危险,九次往返南京与上海之间,协助政府募集救国公债。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_14_4.mp3')}
>
正是这样的全民抗敌,粉碎了日军“一个月灭亡中国”的狂妄企图。
</GuideStepsItem>
</GuideSteps>
@@ -273,18 +282,24 @@ const HuangyanpeiPlace4 = () => {
speaker="student"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_11.mp3')}
>
职业教育这个词是黄炎培先生创造的吗?
那职业教育这个词是黄炎培先生创造的吗?
</GuideStepsItem>
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_12.mp3')}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_12_1.mp3')}
>
这个词不是他创造的,但体系是他建立的。1917年5月6日,黄炎培联合蔡元培、张謇等48位有识之士,在上海成立了“中华职业教育社”,并发表了《中华职业教育社宣言》。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_12_2.mp3')}
>
1918年,他在上海陆家浜创办中华职业学校,开设铁工、木工、珐琅、纽扣四科,招生广告明确写着“免学费、包分配”。首批招收78人,还推出了响亮的口号“双手万能、手脑并用”。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_12_3.mp3')}
>
这所学校特别厉害,教室和车间连在一起,学生可以一边学理论,一边练技能。学校铁工厂制作的台钳,后来还成了“国货精品”,甚至在巴拿马万国博览会上拿过金奖呢!
</GuideStepsItem>
</GuideSteps>
@@ -327,7 +342,7 @@ const HuangyanpeiPlace4 = () => {
{/* 题目 */}
<SingleChoiceQuizPanel
visible={showQuiz}
title={`【单选】中华职业学校首批招生78人,凭借(\xa0\xa0\xa0\xa0)口号和“免学费、包分配”的优待,开创了中国近代职业教育的先河。`}
title={`【单选】中华职业学校首批招生78人,凭借____口号和“免学费、包分配”的优待,开创了中国近代职业教育的先河。`}
options={[
{ value: 'A', label: 'A. 学而优则仕' },
{ value: 'B', label: 'B. 双手万能、手脑并用' },
@@ -343,9 +358,6 @@ const HuangyanpeiPlace4 = () => {
{/* 成功提示 */}
<SuccessAlert
visible={showSuccessAlert}
onContinue={() => {
setShowSuccessAlert(false)
}}
onClose={() => {
setShowSuccessAlert(false)
}}
+31 -24
View File
@@ -212,17 +212,26 @@ const HuangyanpeiPlace5 = () => {
</GuideStepsItem>
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_17.mp3')}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_17_1.mp3')}
>
这和当时的历史背景分不开。1940年,国民党政府还坚持“攘外必先安内”的政策,让国共两党的关系越来越紧张。黄炎培等有识之士看到这种严峻形势,觉得中间派应该联合起来,为国家寻求一条和平发展的道路。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_17_2.mp3')}
>
于是他联系了张君劢、梁漱溟等爱国同仁,后来又联合了第三党和无党派人士,准备成立统一的同盟。刚好这时发生了震惊中外的“皖南事变”,国共矛盾进一步激化,黄炎培心里特别着急,就加紧了筹备工作。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_17_3.mp3')}
>
1941年3月19日,中国民主政团同盟正式成立,参加成立会的有13人,选出了5位常委,黄炎培当选为第一任主席。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_17_4.mp3')}
>
1945年,他还创立了民主建国会并担任第一任主委,带领大家积极投入“反内战、保和平”的民主斗争,为国家的和平稳定奔走呼号。
</GuideStepsItem>
</GuideSteps>
@@ -230,21 +239,21 @@ const HuangyanpeiPlace5 = () => {
{/* 题目1(光标1对话后) */}
<SingleChoiceQuizPanel
visible={showQuiz1}
title="【单选】黄炎培先生创建民主政团同盟等组织是为了:"
title="【单选】黄炎培先生创建民主政团同盟等组织是为了:"
options={[
{ value: 'A', label: 'A. 为国家寻求一条和平发展的道路' },
{ value: 'B', label: 'B. 支持国民党"攘外必先安内"的政策' },
{ value: 'C', label: 'C. 扩大个人政治影响力,争夺权力' },
{ value: 'B', label: 'B. 支持国民党“攘外必先安内”的政策' },
{ value: 'C', label: 'C. 扩大个人政治影响力,争夺权力' },
]}
correctAnswer="A"
onWrongSelect={(value) => {
switch (value) {
case 'B':
return '国民党政府坚持"攘外必先安内"的政策导致国共关系紧张,黄炎培正是因为反对这种政策、希望推动和平,才发起组建了民主政团同盟。请你再想想吧!'
return '国民党政府坚持“攘外必先安内”的政策导致国共关系紧张,黄炎培正是因为反对这种政策、希望推动和平,才发起组建了民主政团同盟。请你再想想吧!'
case 'C':
return '黄炎培创建民主政团同盟的出发点是民族大义与国家前途,并非为了个人政治利益。请你再想想吧!'
return '黄炎培创建民主政团同盟的出发点是民族大义与国家前途,并非为了个人政治利益。请你再想想吧!'
default:
return '请你再想想吧!'
return '请你再想想吧!'
}
}}
onSubmit={(value, isCorrect) => {
@@ -259,11 +268,6 @@ const HuangyanpeiPlace5 = () => {
{/* 题目1成功提示 */}
<SuccessAlert
visible={showQuiz1Success}
onContinue={() => {
setShowQuiz1Success(false)
// 标记展品1为已访问,修改cursor状态
markExhibitVisited(place, 1)
}}
onClose={() => {
setShowQuiz1Success(false)
// 标记展品1为已访问,修改cursor状态
@@ -295,14 +299,20 @@ const HuangyanpeiPlace5 = () => {
</GuideStepsItem>
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_19.mp3')}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_19_1.mp3')}
>
完全正确!1945年7月1日,黄炎培以国民参政员的身份,带着考察团一行六人赴延安考察,中共中央领导人毛泽东、朱德、周恩来等都亲自到机场迎接。7月4日,他和毛泽东主席长谈了十几个小时,这场对话能和诸葛亮的“隆中对”相媲美。
完全正确!1945年7月1日,黄炎培以国民参政员的身份,带着考察团一行六人赴延安考察,中共中央领导人毛泽东、朱德、周恩来等都亲自到机场迎接。7月4日,他和毛泽东主席长谈了一个下午,这场对话能和诸葛亮的“隆中对”相媲美。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_19_2.mp3')}
>
谈话中,黄炎培提出了一个深刻的问题:“其兴也勃焉,其亡也忽焉”,也就是历代王朝逃不开的“历史周期率”。毛泽东主席当场回答:“我们已经找到新路,我们能跳出这周期律,这条新路就是民主。”
</GuideStepsItem>
<GuideStepsItem speaker="guide">
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_19_3.mp3')}
>
后来,黄炎培把这段对话写进了《延安归来》这本书,一夜之间就畅销十万册,成为当时最热门的书籍,而“实行民主”也被大家称为破解历史周期率的“初版答案”。
</GuideStepsItem>
</GuideSteps>
@@ -310,7 +320,7 @@ const HuangyanpeiPlace5 = () => {
{/* 题目 */}
<SingleChoiceQuizPanel
visible={showQuiz}
title={`【单选】《延安归来》中"破解历史周期率"的"初版答案"一夜畅销十万册,其提出的核心对策是:`}
title={`【单选】《延安归来》中“破解历史周期率”的“初版答案”一夜畅销十万册,其提出的核心对策是:`}
options={[
{ value: 'A', label: 'A. 实行民主' },
{ value: 'B', label: 'B. 发展经济' },
@@ -332,14 +342,11 @@ const HuangyanpeiPlace5 = () => {
{/* 成功提示 */}
<SuccessAlert
visible={showSuccessAlert}
onContinue={() => {
onClose={() => {
setShowSuccessAlert(false)
markExhibitVisited(place, 2)
triggerPuzzleAnimation(12)
}}
onClose={() => {
setShowSuccessAlert(false)
}}
/>
</div>
)
+16 -10
View File
@@ -94,12 +94,14 @@ const HuangyanpeiPlace6 = () => {
read={visited.has(1)}
/>
{Leave && (
{completed && (
<Image
className="absolute bottom-0 right-4"
src={getStaticImage('components/place/离开场景')}
button
onClick={() => {
saveHuangyanpeiStore()
setCourseTimeProgress(10)
navigate(`/${moduleName}/${starName}/home`)
}}
/>
@@ -136,19 +138,25 @@ const HuangyanpeiPlace6 = () => {
speaker="student"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_20.mp3')}
>
新中国成立后,黄炎培先生还继续从事教育工作吗?我们现在的中职教育体系,是不是也有他当年的理念呀?
新中国成立后,黄炎培先生还继续从事教育工作吗?我们现在的中职教育体系,是不是也有他当年的理念呀?
</GuideStepsItem>
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_21.mp3')}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_21_1.mp3')}
>
当然啦!1949年10月19日,71岁的黄炎培出任政务院副总理兼轻工业部部长,依然没有放下他毕生追求的职业教育事业。他把中华职教社的骨干力量全部调到北京,亲自起草《关于改革学制的决定》。
当然啦!1949年10月19日,71岁的黄炎培出任政务院副总理兼轻工业部部长,依然没有放下他毕生追求的职业教育事业。他把中华职教社的骨干力量全部调到北京,亲自起草《关于改革学制的决定》。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
第一次把“中等专业学校”正式纳入国家学制,让职业教育有了明确的国家定位。1952年,他又推动建立了上海机械学校、南京航空学校等五所中专,这些学校为国家"一五"计划输送了6.3万名技术工人,为工业发展提供了坚实的人才支撑。
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_21_2.mp3')}
>
第一次把”中等专业学校”正式纳入国家学制,让职业教育有了明确的国家定位。1952年,他又推动建立了上海机械学校、南京航空学校等五所中专,这些学校为国家”一五”计划输送了6.3万名技术工人,为工业发展提供了坚实的人才支撑。
</GuideStepsItem>
<GuideStepsItem speaker="guide">
黄炎培先生曾说过:“我要把最后一滴血,滴在职业教育的讲台上。”他用一生践行了这句话,而我们现在中职教育强调的“工学结合、德技并修”,正是对他“手脑并用、注重实践”理念的传承和发展。
<GuideStepsItem
speaker="guide"
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_21_3.mp3')}
>
黄炎培先生曾说过:”我要把最后一滴血,滴在职业教育的讲台上。”他用一生践行了这句话,而我们现在中职教育强调的”工学结合、德技并修”,正是对他”手脑并用、注重实践”理念的传承和发展。
</GuideStepsItem>
</GuideSteps>
@@ -161,8 +169,6 @@ const HuangyanpeiPlace6 = () => {
// 标记为已显示过,防止再次弹出
setHasShownEnding(true)
setLeave(true)
setCourseTimeProgress(10)
saveHuangyanpeiStore()
}}
animationSpeed={200}
audioSrc={getPublicPath('audio/huangyanpei/mp3_huangyanpei_22.mp3')}
@@ -49,15 +49,15 @@ const QuizDialog = ({ visible = true, onClose, onComplete }: QuizDialogProps) =>
() => [
{
value: 'option1',
label: '加入义勇军(军事训练)',
label: 'A. 加入义勇军(军事训练)',
},
{
value: 'option2',
label: '制作军需物资',
label: 'B. 制作军需物资',
},
{
value: 'option3',
label: '宣传抗日募捐',
label: 'C. 宣传抗日募捐',
},
],
[]
@@ -121,7 +121,7 @@ const QuizDialog = ({ visible = true, onClose, onComplete }: QuizDialogProps) =>
<div className="flex-1">
<div className="text-5xl font-bold mb-6 -ml-[26px]">【单选】</div>
<div className="text-4xl leading-relaxed">
国难当头,黄先生说“职教救国”,中华职校的师生都行动起来了!你要加入哪支爱国队伍?
国难当头,黄先生说“职教救国”,中华职校的师生都行动起来了!你要加入哪支爱国队伍?
</div>
</div>
@@ -148,7 +148,7 @@ const QuizDialog = ({ visible = true, onClose, onComplete }: QuizDialogProps) =>
setSuccessVisible(true)
}}
>
{index + 1}. {option.label}
{option.label}
</div>
))}
</div>
@@ -105,9 +105,9 @@ export const QuestionModal = ({
{/* 游戏内容 */}
<div className="relative z-10 w-full h-full flex flex-col ">
{/* 标题 */}
<div className="mt-28 mb-4 text-center px-80">
<p className="text-5xl text-white mt-10 leading-tight">
黄先生说:“中国教育之病,在于学与术分离”!你看,这里有两套课程表,选一套开启学习吧。
<div className="mt-28 mb-4 text-center px-35">
<p className="text-5xl text-white mt-10 leading-18">
为打破中国教育学与术分离之病,黄先生在川沙小学堂开始了他的教育实践。你看,这里有两套课程表,选一套开启学习吧。
</p>
</div>
@@ -128,16 +128,15 @@ export const QuestionModal = ({
{/* 成功提示弹窗 */}
<SuccessAlert
visible={showSuccessAlert}
title="选对啦!"
content="这就是黄先生打破旧教育的创新,学这些实用知识,才能真正帮到家乡。"
onContinue={handleSuccessAlertClose}
title="选对啦!"
content="这就是黄先生打破旧教育的创新,学这些实用知识,才能真正帮到家乡。"
onClose={handleSuccessAlertClose}
/>
{/* 错误提示弹窗 */}
<ErrorAlert
visible={showErrorAlert}
text="哎呀选错啦!黄先生最反对只啃书本脱离实际的教育,旧课程学不到真本事,快试试另一边的新式课程吧。"
text="哎呀选错啦!黄先生最反对只啃书本脱离实际的教育,旧课程学不到真本事,快试试另一边的新式课程吧。"
onClose={handleErrorAlertClose}
/>
</div>
+28 -3
View File
@@ -1,5 +1,5 @@
import { useState, useCallback, useMemo } from 'react'
import { Title, Image, Cursor, StudyGuideModal } from '@/components'
import { Title, Image, Cursor, StudyGuideModal, Video } from '@/components'
import { BambooPuzzleGame, QuestionModal } from './components'
import { getBackgroundImage, getPublicPath, getStaticImage } from '@/lib/utils'
import { useNavigate, useParams } from 'react-router-dom'
@@ -14,7 +14,8 @@ const HuangyanpeiReflectionScene1 = () => {
moduleName: string
}>()
const [showGuideModal, setShowGuideModal] = useState(true)
const [showOpeningVideo, setShowOpeningVideo] = useState(true)
const [showGuideModal, setShowGuideModal] = useState(false)
const [showQuestionModal, setShowQuestionModal] = useState(false)
const [showGame, setShowGame] = useState(false)
const [showNextGuide, setShowNextGuide] = useState(false)
@@ -60,8 +61,32 @@ const HuangyanpeiReflectionScene1 = () => {
backgroundImage: getBackgroundImage(`huangyanpei/reflection/scene1/9_001`),
}}
>
{showOpeningVideo && (
<div className="fixed inset-0 z-10000 w-full h-full bg-black">
<Video
src={getPublicPath('video/reflection/huangyanpei_tiwu_00.mp4')}
autoPlay
playsInline
showSkipButton
skipText="跳过"
onEnded={() => {
setShowOpeningVideo(false)
setShowGuideModal(true)
}}
onSkip={() => {
setShowOpeningVideo(false)
setShowGuideModal(true)
}}
onError={() => {
setShowOpeningVideo(false)
setShowGuideModal(true)
}}
/>
</div>
)}
<Title
title="跨越时空"
title="川沙小学堂"
subtitle={subtitle}
subtitleClassName={subtitleClassName}
className="absolute top-10 left-1/2 -translate-x-1/2"
+1 -4
View File
@@ -135,7 +135,7 @@ const HuangyanpeiReflectionScene2 = () => {
}}
>
<Title
title="跨越时空"
title="川沙小学堂"
subtitle={subtitle}
subtitleClassName={subtitleClassName}
className="absolute top-10 left-1/2 -translate-x-1/2"
@@ -235,9 +235,6 @@ const HuangyanpeiReflectionScene2 = () => {
visible={showQuizSuccess}
title=""
content="恭喜你!选择正确。不愧是从川沙小学堂走出来!"
onContinue={() => {
setShowQuizSuccess(false)
}}
onClose={() => {
setShowQuizSuccess(false)
}}
@@ -201,10 +201,6 @@ const ChoiceDialog1 = ({ visible = true, onClose, onSelect }: ChoiceDialog1Props
visible={showSuccessAlert}
title="任务1 正确反馈"
content="答对啦!黄先生说“教育要为国家培养实干人才”,浦东中学就是要教大家学真本事,不是只为当官。"
onContinue={() => {
setShowSuccessAlert(false)
onClose?.()
}}
onClose={() => {
setShowSuccessAlert(false)
onClose?.()
@@ -220,10 +216,6 @@ const ChoiceDialog1 = ({ visible = true, onClose, onSelect }: ChoiceDialog1Props
<SuccessAlert
visible={showSuccessAlert}
content="答对啦!黄先生说“教育要为国家培养实干人才”,浦东中学就是要教大家学真本事,不是只为当官。"
onContinue={() => {
setShowSuccessAlert(false)
onClose?.()
}}
onClose={() => {
setShowSuccessAlert(false)
onClose?.()
@@ -108,8 +108,9 @@ const ChoiceDialog2 = ({ visible = true, onClose, onSelect }: ChoiceDialog2Props
visible={showGuide}
onContinue={() => setShowGuide(false)}
verticalAlign="center"
firstLineIndent="2em"
>
在浦东中学,你可以选未来的方向啦!不管选哪个,黄先生都会支持,因为“三百六十行,行行出状元”!
在浦东中学,你可以选未来的方向啦!不管选哪个,黄先生都会支持,因为“三百六十行,行行出状元”!
</StudyGuideModal>
{/* 返回按钮 */}
@@ -175,7 +176,6 @@ const ChoiceDialog2 = ({ visible = true, onClose, onSelect }: ChoiceDialog2Props
visible={showSuccessAlert}
title="选得好!"
content="不管是做工匠还是做买卖,学好本事就能报效国家,这个选择会影响你在中华职业学校的专业哦!"
onContinue={handleSuccessAlertContinue}
onClose={handleSuccessAlertContinue}
/>
</div>
@@ -114,7 +114,7 @@ const Scene2QuizDialog = ({ visible = true, onClose, onComplete }: Scene2QuizDia
<div className="flex-1">
<div className="text-5xl font-bold mb-6 -ml-[26px]">【单选】</div>
<div className="text-4xl leading-relaxed">
杨斯盛先生近期监工浦东中学建设,有一份上月的工人工钱支出表需要核对,你来告诉我答案吧?
杨斯盛先生近期监工浦东中学建设,有一份上月的工人工钱支出表需要核对,你来告诉我答案吧?
</div>
</div>
+29 -16
View File
@@ -10,6 +10,7 @@ import { QuizDialog } from './components'
import { useHuangyanpeiStore } from '@/store/huangyanpeiStore'
import { setCourseTimeProgress } from '@/lib/utils/api-common'
import { useCursorController } from '@/hooks/useCursorController'
import { saveHuangyanpeiStore } from '@/store/huangyanpeiStore'
const starName = 'huangyanpei'
@@ -66,7 +67,7 @@ const HuangyanpeiReflectionScene3 = () => {
}}
>
<Title
title="跨越时空"
title="川沙小学堂"
subtitle={subtitle}
subtitleClassName={subtitleClassName}
className="absolute top-10 left-1/2 -translate-x-1/2"
@@ -84,15 +85,15 @@ const HuangyanpeiReflectionScene3 = () => {
<Image
className="absolute left-5 top-5"
src={getStaticImage('huangyanpei/reflection/components/喇叭1')}
button
onClick={() => {
if (isEnabled(3)) {
setShowQuizDialog(true)
} else {
setShowErrorAlertForQuiz(true)
}
}}
aria-disabled={!isEnabled(3)}
// button
// onClick={() => {
// if (isEnabled(3)) {
// setShowQuizDialog(true)
// } else {
// setShowErrorAlertForQuiz(true)
// }
// }}
// aria-disabled={!isEnabled(3)}
/>
{/* 第一段引导 */}
@@ -129,6 +130,20 @@ const HuangyanpeiReflectionScene3 = () => {
disabled={!isEnabled(2)}
/>
{/* 喇叭光标 */}
<Cursor
className="absolute left-31 top-9"
onClick={() => {
if (isEnabled(3)) {
setShowQuizDialog(true)
} else {
setShowErrorAlertForQuiz(true)
}
}}
read={visited.has(3)}
disabled={!isEnabled(3)}
/>
{/* 组装台钳互动弹窗 */}
<ViseAssemblyDialog
visible={showDialog}
@@ -143,7 +158,7 @@ const HuangyanpeiReflectionScene3 = () => {
{/* 多选题答题框 */}
<MultipleChoiceQuizPanel
visible={showQuiz}
title="【多选】 制作台钳需要哪些工具?"
title="【多选】制作台钳需要哪些工具?"
options={[
{ value: 'A', label: 'A. 锯子' },
{ value: 'B', label: 'B. 毛笔' },
@@ -173,13 +188,10 @@ const HuangyanpeiReflectionScene3 = () => {
<SuccessAlert
visible={showSuccessAlert}
title="满分!"
content="黄先生说“手脑并用”,懂了理论,也要动手实践。"
onContinue={() => {
setShowSuccessAlert(false)
markReflectionCursorVisited(scene, 2)
}}
content="黄先生说“手脑并用”,懂了理论,也要动手实践。"
onClose={() => {
setShowSuccessAlert(false)
markReflectionCursorVisited(scene, 2)
}}
/>
@@ -227,6 +239,7 @@ const HuangyanpeiReflectionScene3 = () => {
showSkipButton
onEnded={() => {
setShowVideo(false)
saveHuangyanpeiStore()
setCourseTimeProgress(11)
navigate(`/${moduleName}/${starName}/home`)
}}
+22 -26
View File
@@ -11,6 +11,7 @@ import { usePuzzleAnimation } from '@/contexts/PuzzleAnimationContext'
import { useHuangyanpeiStore } from '@/store/huangyanpeiStore'
import { setCourseTimeProgress } from '@/lib/utils/api-common'
import { useCursorController } from '@/hooks/useCursorController'
import { saveHuangyanpeiStore } from '@/store/huangyanpeiStore'
const starName = 'huangyanpei'
@@ -30,7 +31,6 @@ const HuangyanpeiReflectionScene4 = () => {
const videoRef = useRef<VideoRef>(null)
const [showGuide1, setShowGuide1] = useState(true)
const [showErrorAlertForQuiz, setShowErrorAlertForQuiz] = useState(false)
const [showSpeakerGuide, setShowSpeakerGuide] = useState(false)
// 使用持久化的reflection cursor状态
const scene = 'scene4'
@@ -49,16 +49,8 @@ const HuangyanpeiReflectionScene4 = () => {
//喇叭考题弹窗
const [showQuizDialog, setShowQuizDialog] = useState(false)
// 处理成功提示的继续和关闭
const handleSuccessAlertContinue = useCallback(() => {
setShowSuccessAlert(false)
// 更新visited状态
markReflectionCursorVisited(scene, 1)
}, [markReflectionCursorVisited, scene])
const handleSuccessAlertClose = useCallback(() => {
setShowSuccessAlert(false)
// 更新visited状态
markReflectionCursorVisited(scene, 1)
}, [markReflectionCursorVisited, scene])
@@ -82,7 +74,7 @@ const HuangyanpeiReflectionScene4 = () => {
}}
>
<Title
title="跨越时空"
title="川沙小学堂"
subtitle={subtitle}
subtitleClassName={subtitleClassName}
className="absolute top-10 left-1/2 -translate-x-1/2"
@@ -91,7 +83,20 @@ const HuangyanpeiReflectionScene4 = () => {
<Image
className="absolute left-5 top-5"
src={getStaticImage('huangyanpei/reflection/components/喇叭2')}
button
// button
// onClick={() => {
// if (isEnabled(3)) {
// setShowQuizDialog(true)
// } else {
// setShowErrorAlertForQuiz(true)
// }
// }}
// aria-disabled={!isEnabled(3)}
/>
{/* 喇叭光标 */}
<Cursor
className="absolute left-31 top-9"
onClick={() => {
if (isEnabled(3)) {
setShowQuizDialog(true)
@@ -99,7 +104,8 @@ const HuangyanpeiReflectionScene4 = () => {
setShowErrorAlertForQuiz(true)
}
}}
aria-disabled={!isEnabled(3)}
read={visited.has(3)}
disabled={!isEnabled(3)}
/>
<Image
@@ -134,7 +140,7 @@ const HuangyanpeiReflectionScene4 = () => {
{/* 选择题1:中华职校商科的核心教学目标 */}
<MultipleChoiceQuizPanel
visible={showQuiz1}
title={`【多选】中华职校商科的核心教学目标是什么? `}
title={`【多选】中华职校商科的核心教学目标是什么?`}
options={[
{
value: 'A',
@@ -169,8 +175,7 @@ const HuangyanpeiReflectionScene4 = () => {
<SuccessAlert
visible={showSuccessAlert}
title="满分!"
content="诚信是经商之本, 推广国货是商科学生的责任, 这正是黄先生的办学初衷。"
onContinue={handleSuccessAlertContinue}
content="诚信是经商之本,推广国货是商科学生的责任,这正是黄先生的办学初衷。"
onClose={handleSuccessAlertClose}
/>
@@ -181,8 +186,6 @@ const HuangyanpeiReflectionScene4 = () => {
onComplete={() => {
// 完成拖拽后更新visited状态
markReflectionCursorVisited(scene, 2)
setShowSpeakerGuide(true)
triggerPuzzleAnimation(15)
}}
/>
@@ -209,7 +212,7 @@ const HuangyanpeiReflectionScene4 = () => {
>
终于到中华职业学校啦!这里是中国近代职教的摇篮,“免学费、包分配”,还能学真手艺,快来练就一技之长。
{'\n'}
现在要完成你的第一个任务:推销中华职校生产的“国货精品”——手工纽扣和纯棉毛巾!当年学生们就是带着这些国货,走街串巷做推销呢!
现在要完成你的第一个任务:推销中华职校生产的“国货精品”——纯棉毛巾!当年学生们就是带着这些国货,走街串巷做推销呢!
</StudyGuideModal>
{showVideo && (
@@ -222,6 +225,7 @@ const HuangyanpeiReflectionScene4 = () => {
playsInline
onEnded={() => {
setShowVideo(false)
saveHuangyanpeiStore()
setCourseTimeProgress(11)
navigate(`/${moduleName}/${starName}/home`)
}}
@@ -237,14 +241,6 @@ const HuangyanpeiReflectionScene4 = () => {
}}
/>
<StudyGuideModal
visible={showSpeakerGuide}
onContinue={() => setShowSpeakerGuide(false)}
verticalAlign="center"
>
请点击左上角的喇叭。
</StudyGuideModal>
{/* 错误提示:请先完成前两个任务 */}
<ErrorAlert
visible={showErrorAlertForQuiz}
@@ -91,19 +91,19 @@ const TowelSalesDialog = ({ visible = true, onClose, onComplete }: TowelSalesDia
() => [
{
value: 'option1',
label: '这是中华职校生产的国货,质量比洋货还好!',
label: 'A.这是中华职校生产的国货,质量比洋货还好!',
},
{
value: 'option2',
label: '价格便宜,量大从优,诚信经营绝不掺假',
label: 'B.价格便宜,量大从优,诚信经营绝不掺假',
},
{
value: 'option3',
label: '买国货就是支持实业救国,为国家出一份力!',
label: 'C.买国货就是支持实业救国,为国家出一份力!',
},
{
value: 'option4',
label: '我只管赚钱,东西好不好不管哦',
label: 'D.我只管赚钱,东西好不好不管哦',
},
],
[]
@@ -290,7 +290,7 @@ const TowelSalesDialog = ({ visible = true, onClose, onComplete }: TowelSalesDia
showSubmitButton={false}
className="w-full"
renderOption={(option, isUsed) => {
const index = options.findIndex((opt) => opt.value === option.value)
// const index = options.findIndex((opt) => opt.value === option.value)
return (
<div
className={cn(
@@ -300,7 +300,7 @@ const TowelSalesDialog = ({ visible = true, onClose, onComplete }: TowelSalesDia
: 'border-[#79471f] bg-black/20 text-white cursor-move hover:border-[#f0be75] hover:shadow-[0_12px_40px_rgba(240,190,117,0.7)]'
)}
>
{index + 1}. {option.label}
{option.label}
</div>
)
}}
@@ -331,8 +331,8 @@ const TowelSalesDialog = ({ visible = true, onClose, onComplete }: TowelSalesDia
{/* 成功提示 */}
<SuccessAlert
title="恭喜你, 推销语设计成功!"
content="既突出了国货优势,又传递了爱国情怀,当年的商科学生也是这么做的"
title="恭喜你, 推销语设计成功!"
content="既突出了国货优势,又传递了爱国情怀,当年的商科学生也是这么做的。"
visible={successVisible}
onContinue={handleSuccessContinue}
/>