feat(course): 导入课教学环节改为可选;集体课/领域课保持必填

Made-with: Cursor
This commit is contained in:
zhonghua 2026-03-25 10:49:45 +08:00
parent 55343ead0b
commit 14fd97f6a5
2 changed files with 21 additions and 7 deletions

View File

@ -14,7 +14,7 @@
<template #description>
<div>导入课用于激发幼儿兴趣引入课程主题建议时长 5-15 分钟重点在于吸引注意力建立学习期待</div>
<div class="form-hints">
<strong>必填项</strong>课程名称教学目标教学准备教学环节至少 1 含环节名称内容目标核心资源为可选<strong>时长</strong>5-15 分钟
<strong>必填项</strong>课程名称教学目标教学准备教学环节与核心资源均为可选<strong>时长</strong>5-15 分钟
</div>
</template>
</a-alert>

View File

@ -127,10 +127,16 @@
<!-- 教学环节 -->
<a-card size="small" class="section-card">
<template #title>
<span>教学环节 <span class="required-mark">*</span></span>
<span>
教学环节
<span v-if="lessonType !== 'INTRO'" class="required-mark">*</span>
</span>
</template>
<div class="field-hint">至少添加一个环节每个环节需填写名称内容目标</div>
<a-form-item name="steps">
<div class="field-hint">
<span v-if="lessonType === 'INTRO'">可选配置可添加教学环节</span>
<span v-else>至少添加一个环节每个环节需填写名称内容目标</span>
</div>
<a-form-item :name="lessonType !== 'INTRO' ? 'steps' : undefined">
<a-form-item-rest>
<LessonStepsEditor
v-model="lessonData.steps"
@ -273,6 +279,11 @@ const lessonData = reactive<LessonData>({
...props.modelValue,
});
//
const stepsRequired = computed(
() => props.lessonType !== 'INTRO'
);
//
const extensionRequired = computed(
() => props.lessonType === 'COLLECTIVE' || props.lessonType?.startsWith('DOMAIN_')
@ -297,7 +308,10 @@ const formRules = computed(() => {
message: `课程时长需在 ${minD}-${maxD} 分钟之间`,
},
],
steps: [
};
// /
if (stepsRequired.value) {
rules.steps = [
{
validator: (_: unknown, value: StepData[] | undefined) => {
const steps = value || [];
@ -319,8 +333,8 @@ const formRules = computed(() => {
return Promise.resolve();
},
},
],
};
];
}
if (extensionRequired.value) {
rules.extension = [
{ required: true, whitespace: true, message: '请输入教学延伸活动建议' },