Files
shanghai-residences/src/components/letter/LetterToHuangyanpei.tsx
T
zhongyidianandClaude Opus 4.7 49ecabbf3a fix: 修复开发/测试包模拟进度被易班同步覆盖的问题
进度模拟面板写入 puzzleStore 后,App 启动时易班同步会将其覆盖;
现在在同步完成后按 sessionStorage 中保存的模式重放模拟进度,
确保测试包的"到达某故居/全流程完成"调试入口生效。

同时纳入近期未提交的页面、组件、资源与环境变量改动。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 10:19:36 +08:00

99 lines
3.4 KiB
TypeScript

import LetterTemplate, { type LetterFieldConfig } from './LetterTemplate'
export interface LetterToHuangyanpeiProps {
visible?: boolean
onClose?: () => void
onSubmit?: (values: string[]) => void
onAnimationEnd?: () => void
audioSrc?: string
showVideo?: boolean
videoSrc?: string
replyImageSrc?: string
replyVideoSrc?: string
}
const commonSelectField: LetterFieldConfig = {
type: 'select',
placeholder: '请选择',
fitContent: false,
className: '!w-[120px] !min-w-[120px] shrink-0 px-0',
options: [
{ value: '手脑并用', label: '手脑并用' },
{ value: '有业者乐业', label: '有业者乐业' },
],
}
const letterContent = `敬爱的黄炎培先生:
您好!
今天,我循着您的足迹,走进了川沙小学堂的新式课堂,亲历了中华职业学校“手脑并用”的实训时光。那些您为破除旧教育桎梏的奔走、为推广职业教育的坚守、为支援国家危亡的热忱,不再是书本上的文字,而是可感可触的精神力量,深深烙印在我心中。
我终于明白,您喊出的“双手万能、____”,不是一句口号,而是我们的立身之本;您践行的“教育救国、实业报国”,不是一段历史,而是我们这代人接续的使命;您坚守的“因时求变”,不是一种选择,而是我们面对未来的底气。
我是____专业的学生,今后,我会在实训课堂上精益求精,像当年中华职校的学长学姐那样,把技能练到极致;我会在志愿服务中践行担当,用所学知识为身边人、为社会做实事;我更会紧跟时代步伐,努力成为____领域的技能人才,为中国制造升级、为民族产业振兴添砖加瓦!
请您放心,您播下的职教火种,我们会让它在新时代燃烧得更旺;您毕生追求的“使无业者有业,使____”的愿景,我们会用青春和汗水去实现!`
const fields: Record<number, LetterFieldConfig> = {
0: {
...commonSelectField,
correctValue: '手脑并用',
hints: {
error: '“双手万能、手脑并用”是黄炎培职业教育思想的核心理念之一。',
},
readOnlyFallback: '手脑并用',
},
1: {
type: 'input',
maxLength: 12,
widthClassName: 'w-[120px]',
readOnlyFallback: '',
},
2: {
type: 'input',
maxLength: 12,
widthClassName: 'w-[120px]',
readOnlyFallback: '',
},
3: {
...commonSelectField,
correctValue: '有业者乐业',
hints: {
error: '黄炎培把职业教育的目的概括为“使无业者有业,使有业者乐业”。',
},
readOnlyFallback: '有业者乐业',
},
}
const LetterToHuangyanpei = ({
visible = false,
onClose,
onSubmit,
onAnimationEnd,
audioSrc = 'audio/letter/4不忘初心.m4a',
showVideo = true,
videoSrc = 'video/letter/neihua_jixin.mp4',
replyImageSrc = 'components/letter/点击信详情-黄炎培',
replyVideoSrc = 'video/letter/huangyanpei_gaizhang.mp4',
}: LetterToHuangyanpeiProps) => {
return (
<LetterTemplate
visible={visible}
onClose={onClose}
onSubmit={onSubmit}
onAnimationEnd={onAnimationEnd}
title="写给黄炎培先生的信"
letterContent={letterContent}
fields={fields}
contentClassName="!text-[25px]"
audioSrc={audioSrc}
showVideo={showVideo}
videoSrc={videoSrc}
replyVideoSrc={replyVideoSrc}
replyImageSrc={replyImageSrc}
/>
)
}
export default LetterToHuangyanpei