chore: 更新素材和组件优化
- 更新展品图片(鲁迅/毛泽东/孙中山/黄炎培/聂耳/张乐平故居) - 新增点击查看图标、报纸素材 - 优化视频组件、拼图组件、展品组件 - 更新陈云音频资源 - 新增输入验证文档和工具函数 - 组件布局和动画优化 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
73d02eb62d
commit
73f6df92ce
130 files changed
+2345
-759
No files matched your search
@@ -453,6 +453,9 @@ const RongdeshengInternalization = () => {
|
||||
anchors={anchors}
|
||||
playsInline
|
||||
controls
|
||||
controlsOnReplay
|
||||
skipKey="rongdesheng_internalization_video"
|
||||
showReadonlyProgress
|
||||
onCanPlay={handleVideoCanPlay}
|
||||
onEnded={() => {
|
||||
setShowVideo(false)
|
||||
|
||||
@@ -211,6 +211,8 @@ const RongdeshengPlace2 = () => {
|
||||
autoPlay
|
||||
playsInline
|
||||
showSkipButton
|
||||
skipKey="rongdesheng_place2_video1"
|
||||
showReadonlyProgress
|
||||
onEnded={handleVideoEnded}
|
||||
onSkip={handleVideoEnded}
|
||||
/>
|
||||
@@ -222,6 +224,8 @@ const RongdeshengPlace2 = () => {
|
||||
autoPlay
|
||||
playsInline
|
||||
showSkipButton
|
||||
skipKey="rongdesheng_place2_video2"
|
||||
showReadonlyProgress
|
||||
onEnded={handleVideoEnded}
|
||||
onSkip={handleVideoEnded}
|
||||
/>
|
||||
@@ -233,6 +237,8 @@ const RongdeshengPlace2 = () => {
|
||||
autoPlay
|
||||
playsInline
|
||||
showSkipButton
|
||||
skipKey="rongdesheng_place2_video3"
|
||||
showReadonlyProgress
|
||||
onEnded={handleVideoEnded}
|
||||
onSkip={handleVideoEnded}
|
||||
/>
|
||||
@@ -244,6 +250,8 @@ const RongdeshengPlace2 = () => {
|
||||
autoPlay
|
||||
playsInline
|
||||
showSkipButton
|
||||
skipKey="rongdesheng_place2_video4"
|
||||
showReadonlyProgress
|
||||
onEnded={handleVideoEnded}
|
||||
onSkip={handleVideoEnded}
|
||||
/>
|
||||
|
||||
@@ -186,6 +186,8 @@ const RongdeshengPlace3 = () => {
|
||||
autoPlay
|
||||
playsInline
|
||||
showSkipButton
|
||||
skipKey="rongdesheng_place3_video"
|
||||
showReadonlyProgress
|
||||
onEnded={handleVideoEnded}
|
||||
onSkip={handleVideoEnded}
|
||||
/>
|
||||
|
||||
@@ -206,6 +206,8 @@ const RongdeshengPlace4 = () => {
|
||||
autoPlay
|
||||
playsInline
|
||||
showSkipButton
|
||||
skipKey="rongdesheng_place4_video1"
|
||||
showReadonlyProgress
|
||||
onEnded={handleVideoEnded}
|
||||
onSkip={handleVideoEnded}
|
||||
/>
|
||||
@@ -218,6 +220,8 @@ const RongdeshengPlace4 = () => {
|
||||
autoPlay
|
||||
playsInline
|
||||
showSkipButton
|
||||
skipKey="rongdesheng_place4_video2"
|
||||
showReadonlyProgress
|
||||
onEnded={handleEndingVideoEnded}
|
||||
onSkip={handleEndingVideoEnded}
|
||||
/>
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Image, StudyGuideModal, Video } from '@/components'
|
||||
import { useState } from 'react'
|
||||
import { useNavigate, useParams } from 'react-router-dom'
|
||||
import { getBackgroundImage, getPublicPath, getStaticImage } from '@/lib/utils'
|
||||
import { useRongdeshengStore } from '@/store/rongdeshengStore'
|
||||
import { saveRongdeshengStore, useRongdeshengStore } from '@/store/rongdeshengStore'
|
||||
import { FinalScene } from './components/FinalScene'
|
||||
import { HintPanel } from './components/HintPanel'
|
||||
import { ModuleNavigation } from './components/ModuleNavigation'
|
||||
@@ -214,6 +214,7 @@ const RongdeshengReflection = () => {
|
||||
},
|
||||
}))
|
||||
markReflectionVideoViewed(currentModuleId, videoId)
|
||||
saveRongdeshengStore()
|
||||
|
||||
setVideoPlayingState({ isPlaying: false, currentVideoId: null, currentVideoSrc: null })
|
||||
}
|
||||
@@ -225,6 +226,7 @@ const RongdeshengReflection = () => {
|
||||
[currentModuleId]: { ...prev[currentModuleId], completed: true },
|
||||
}))
|
||||
markReflectionCompleted(currentModuleId)
|
||||
saveRongdeshengStore()
|
||||
if (currentModuleId === 'scene3') {
|
||||
triggerPuzzleAnimation(14)
|
||||
}
|
||||
@@ -322,6 +324,12 @@ const RongdeshengReflection = () => {
|
||||
src={videoPlayingState.currentVideoSrc}
|
||||
autoPlay
|
||||
showSkipButton
|
||||
skipKey={
|
||||
videoPlayingState.currentVideoId
|
||||
? `rongdesheng_reflection_${videoPlayingState.currentVideoId}`
|
||||
: undefined
|
||||
}
|
||||
showReadonlyProgress
|
||||
onEnded={handleVideoEnded}
|
||||
className="fixed inset-0 z-50 w-full h-full bg-black"
|
||||
/>
|
||||
@@ -378,8 +386,11 @@ const RongdeshengReflection = () => {
|
||||
setCourseTimeProgress(20)
|
||||
setFinalVideoStage('ended')
|
||||
markReflectionFinalCompleted()
|
||||
saveRongdeshengStore()
|
||||
}}
|
||||
onExit={() => {
|
||||
navigate(`/${moduleName}/${starName}/home`)
|
||||
}}
|
||||
onExit={() => navigate(`/${moduleName}/${starName}/home`)}
|
||||
/>
|
||||
|
||||
{/* 学习引导弹窗:首次进入时显示 */}
|
||||
@@ -388,6 +399,7 @@ const RongdeshengReflection = () => {
|
||||
onContinue={() => {
|
||||
setShowGuide(false)
|
||||
markReflectionGuideShown()
|
||||
saveRongdeshengStore()
|
||||
}}
|
||||
audioSrc={getPublicPath('audio/rongdesheng/mp3_rongdesheng_31.mp3')}
|
||||
firstLineIndent="2em"
|
||||
|
||||
@@ -85,8 +85,7 @@ export const MODULES: Module[] = [
|
||||
resultContent:
|
||||
'护厂抗争的胜利,是民族工业坚守爱国初心的体现,也是国人联合“反抗压迫、团结抗争”的印证!',
|
||||
resultImage: 'rongdesheng/reflection/场景2结算',
|
||||
wrongHint:
|
||||
'荣氏兄弟坚守“实业救国”初心,拒绝洋行干涉企业经营,不愿民族产业沦为外资附庸!试试其他方案吧~',
|
||||
wrongHint: '荣氏兄弟坚守“实业救国”初心,绝不会将民族产业拱手让人!试试其他方案吧~',
|
||||
audio: { wrongHint: '' },
|
||||
},
|
||||
{
|
||||
@@ -94,7 +93,7 @@ export const MODULES: Module[] = [
|
||||
title: '民生坚守',
|
||||
backgroundImage: 'rongdesheng/reflection/场景3选中',
|
||||
question:
|
||||
'时局动荡,棉花原料涨价,工厂盈利下滑,职工生活面临困难。荣德生面对既要维持生产,又要保障职工生活,该怎么做?',
|
||||
'时局动荡,棉花原料涨价,工厂盈利下滑,职工生活面临困难。既要维持生产,又要保障职工生活,该怎么做?',
|
||||
options: [
|
||||
{ id: 'opt3-1', text: 'A.削减职工工资,降低运营成本', isCorrect: false },
|
||||
{
|
||||
@@ -176,7 +175,7 @@ export const MODULES: Module[] = [
|
||||
title: '革新突围',
|
||||
backgroundImage: 'rongdesheng/reflection/场景5选中',
|
||||
question:
|
||||
'抗战胜利后,洋纱、洋布卷土重来,申新设备陈旧、技术落后,面临产品竞争力不足的困境,荣德生如何通过技术革新让民族纱厂站稳脚跟?',
|
||||
'抗战胜利后,洋纱、洋布卷土重来,申新设备陈旧、技术落后,面临产品竞争力不足的困境,如何通过技术革新让民族纱厂站稳脚跟?',
|
||||
options: [
|
||||
{
|
||||
id: 'opt5-1',
|
||||
|
||||
Reference in new issue
Block a user