Merge remote-tracking branch 'origin/master'

This commit is contained in:
En 2026-03-26 15:07:44 +08:00
commit a003cccbeb

View File

@ -1,13 +1,7 @@
<template> <template>
<div class="lesson-config-panel"> <div class="lesson-config-panel">
<a-form <a-form ref="formRef" :model="lessonData" :rules="formRules" :label-col="{ span: 24 }" :wrapper-col="{ span: 24 }"
ref="formRef" layout="vertical">
:model="lessonData"
:rules="formRules"
:label-col="{ span: 24 }"
:wrapper-col="{ span: 24 }"
layout="vertical"
>
<!-- 基本信息 --> <!-- 基本信息 -->
<a-card size="small" title="基本信息" class="section-card"> <a-card size="small" title="基本信息" class="section-card">
<a-row :gutter="16"> <a-row :gutter="16">
@ -18,28 +12,17 @@
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="课程时长" name="duration" :extra="`建议 ${minDuration}-${maxDuration} 分钟`"> <a-form-item label="课程时长" name="duration" :extra="`建议 ${minDuration}-${maxDuration} 分钟`">
<a-input-number <div class="duration-row">
v-model:value="lessonData.duration" <a-input-number v-model:value="lessonData.duration" :min="minDuration" :max="maxDuration"
:min="minDuration" class="duration-input" @change="handleChange" />
:max="maxDuration"
style="width: 100%"
@change="handleChange"
/>
<a-form-item-rest>
<span class="duration-unit">分钟</span> <span class="duration-unit">分钟</span>
</a-form-item-rest> </div>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-form-item label="课程描述"> <a-form-item label="课程描述">
<a-textarea <a-textarea v-model:value="lessonData.description" :rows="2" :maxlength="500" show-count
v-model:value="lessonData.description" placeholder="请输入课程描述(可选)" @change="handleChange" />
:rows="2"
:maxlength="500"
show-count
placeholder="请输入课程描述(可选)"
@change="handleChange"
/>
</a-form-item> </a-form-item>
</a-card> </a-card>
@ -53,35 +36,20 @@
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="8"> <a-col :span="8">
<a-form-item label="绘本动画" :name="undefined"> <a-form-item label="绘本动画" :name="undefined">
<FileUploader <FileUploader v-model:file-path="lessonData.videoPath" v-model:file-name="lessonData.videoName"
v-model:file-path="lessonData.videoPath" file-type="video" :max-size="200" @change="handleChange" />
v-model:file-name="lessonData.videoName"
file-type="video"
:max-size="200"
@change="handleChange"
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="8"> <a-col :span="8">
<a-form-item label="教学课件" :name="undefined"> <a-form-item label="教学课件" :name="undefined">
<FileUploader <FileUploader v-model:file-path="lessonData.pptPath" v-model:file-name="lessonData.pptName"
v-model:file-path="lessonData.pptPath" file-type="ppt" :max-size="100" @change="handleChange" />
v-model:file-name="lessonData.pptName"
file-type="ppt"
:max-size="100"
@change="handleChange"
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="8"> <a-col :span="8">
<a-form-item label="电子绘本" :name="undefined"> <a-form-item label="电子绘本" :name="undefined">
<FileUploader <FileUploader v-model:file-path="lessonData.pdfPath" v-model:file-name="lessonData.pdfName"
v-model:file-path="lessonData.pdfPath" file-type="pdf" :max-size="100" @change="handleChange" />
v-model:file-name="lessonData.pdfName"
file-type="pdf"
:max-size="100"
@change="handleChange"
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@ -93,32 +61,18 @@
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="教学目标" name="objectives"> <a-form-item label="教学目标" name="objectives">
<a-textarea <a-textarea v-model:value="lessonData.objectives" :rows="4" :maxlength="1500" show-count placeholder="请输入教学目标
v-model:value="lessonData.objectives"
:rows="4"
:maxlength="1500"
show-count
placeholder="请输入教学目标
1. 理解故事主要内容 1. 理解故事主要内容
2. 认识重点词汇 2. 认识重点词汇
3. 培养阅读兴趣" 3. 培养阅读兴趣" @change="handleChange" />
@change="handleChange"
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="教学准备" name="preparation"> <a-form-item label="教学准备" name="preparation">
<a-textarea <a-textarea v-model:value="lessonData.preparation" :rows="4" :maxlength="1500" show-count placeholder="请输入教学准备
v-model:value="lessonData.preparation"
:rows="4"
:maxlength="1500"
show-count
placeholder="请输入教学准备
- 绘本PPT - 绘本PPT
- 相关图片/视频 - 相关图片/视频
- 教具材料" - 教具材料" @change="handleChange" />
@change="handleChange"
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@ -138,11 +92,7 @@
</div> </div>
<a-form-item :name="lessonType !== 'INTRO' ? 'steps' : undefined"> <a-form-item :name="lessonType !== 'INTRO' ? 'steps' : undefined">
<a-form-item-rest> <a-form-item-rest>
<LessonStepsEditor <LessonStepsEditor v-model="lessonData.steps" :show-template="showTemplate" @change="handleChange" />
v-model="lessonData.steps"
:show-template="showTemplate"
@change="handleChange"
/>
</a-form-item-rest> </a-form-item-rest>
</a-form-item> </a-form-item>
</a-card> </a-card>
@ -151,31 +101,16 @@
<a-card v-if="showExtension" size="small" class="section-card"> <a-card v-if="showExtension" size="small" class="section-card">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item <a-form-item label="教学延伸" :name="extensionRequired ? 'extension' : undefined"
label="教学延伸" :extra="extensionRequired ? '必填(集体课要求)' : '可选'">
:name="extensionRequired ? 'extension' : undefined" <a-textarea v-model:value="lessonData.extension" :rows="3" :maxlength="1500" show-count
:extra="extensionRequired ? '必填(集体课要求)' : '可选'" :placeholder="extensionRequired ? '请输入教学延伸活动建议(必填)' : '请输入教学延伸活动建议(可选)'" @change="handleChange" />
>
<a-textarea
v-model:value="lessonData.extension"
:rows="3"
:maxlength="1500"
show-count
:placeholder="extensionRequired ? '请输入教学延伸活动建议(必填)' : '请输入教学延伸活动建议(可选)'"
@change="handleChange"
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="教学反思"> <a-form-item label="教学反思">
<a-textarea <a-textarea v-model:value="lessonData.reflection" :rows="3" :maxlength="1500" show-count
v-model:value="lessonData.reflection" placeholder="请输入教学反思提示(可选)" @change="handleChange" />
:rows="3"
:maxlength="1500"
show-count
placeholder="请输入教学反思提示(可选)"
@change="handleChange"
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@ -184,14 +119,8 @@
<!-- 测评工具 --> <!-- 测评工具 -->
<a-card size="small" title="测评工具" class="section-card"> <a-card size="small" title="测评工具" class="section-card">
<a-form-item label="测评内容"> <a-form-item label="测评内容">
<a-textarea <a-textarea v-model:value="lessonData.assessmentData" :rows="3" :maxlength="1500" show-count
v-model:value="lessonData.assessmentData" placeholder="请输入测评要点或测评标准(可选)" @change="handleChange" />
:rows="3"
:maxlength="1500"
show-count
placeholder="请输入测评要点或测评标准(可选)"
@change="handleChange"
/>
</a-form-item> </a-form-item>
</a-card> </a-card>
</a-form> </a-form>
@ -409,10 +338,20 @@ defineExpose({
} }
.duration-unit { .duration-unit {
margin-left: 8px;
color: #666; color: #666;
} }
.duration-row {
display: flex;
align-items: center;
gap: 8px;
}
.duration-input {
flex: 1;
width: 100%;
}
.required-mark { .required-mark {
color: #ff4d4f; color: #ff4d4f;
margin-left: 2px; margin-left: 2px;