feat(course): 导入课教学环节改为可选;集体课/领域课保持必填
Made-with: Cursor
This commit is contained in:
parent
55343ead0b
commit
14fd97f6a5
@ -14,7 +14,7 @@
|
|||||||
<template #description>
|
<template #description>
|
||||||
<div>导入课用于激发幼儿兴趣,引入课程主题。建议时长 5-15 分钟,重点在于吸引注意力、建立学习期待。</div>
|
<div>导入课用于激发幼儿兴趣,引入课程主题。建议时长 5-15 分钟,重点在于吸引注意力、建立学习期待。</div>
|
||||||
<div class="form-hints">
|
<div class="form-hints">
|
||||||
<strong>必填项:</strong>课程名称、教学目标、教学准备、教学环节(至少 1 个,含环节名称、内容、目标);核心资源为可选。<strong>时长:</strong>5-15 分钟。
|
<strong>必填项:</strong>课程名称、教学目标、教学准备;教学环节与核心资源均为可选。<strong>时长:</strong>5-15 分钟。
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</a-alert>
|
</a-alert>
|
||||||
|
|||||||
@ -127,10 +127,16 @@
|
|||||||
<!-- 教学环节 -->
|
<!-- 教学环节 -->
|
||||||
<a-card size="small" class="section-card">
|
<a-card size="small" class="section-card">
|
||||||
<template #title>
|
<template #title>
|
||||||
<span>教学环节 <span class="required-mark">*</span></span>
|
<span>
|
||||||
|
教学环节
|
||||||
|
<span v-if="lessonType !== 'INTRO'" class="required-mark">*</span>
|
||||||
|
</span>
|
||||||
</template>
|
</template>
|
||||||
<div class="field-hint">至少添加一个环节,每个环节需填写名称、内容、目标</div>
|
<div class="field-hint">
|
||||||
<a-form-item name="steps">
|
<span v-if="lessonType === 'INTRO'">可选配置,可添加教学环节</span>
|
||||||
|
<span v-else>至少添加一个环节,每个环节需填写名称、内容、目标</span>
|
||||||
|
</div>
|
||||||
|
<a-form-item :name="lessonType !== 'INTRO' ? 'steps' : undefined">
|
||||||
<a-form-item-rest>
|
<a-form-item-rest>
|
||||||
<LessonStepsEditor
|
<LessonStepsEditor
|
||||||
v-model="lessonData.steps"
|
v-model="lessonData.steps"
|
||||||
@ -273,6 +279,11 @@ const lessonData = reactive<LessonData>({
|
|||||||
...props.modelValue,
|
...props.modelValue,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 教学环节是否必填:集体课、领域课必填,导入课可选
|
||||||
|
const stepsRequired = computed(
|
||||||
|
() => props.lessonType !== 'INTRO'
|
||||||
|
);
|
||||||
|
|
||||||
// 教学延伸是否必填:集体课、领域课必填(结构同集体课)
|
// 教学延伸是否必填:集体课、领域课必填(结构同集体课)
|
||||||
const extensionRequired = computed(
|
const extensionRequired = computed(
|
||||||
() => props.lessonType === 'COLLECTIVE' || props.lessonType?.startsWith('DOMAIN_')
|
() => props.lessonType === 'COLLECTIVE' || props.lessonType?.startsWith('DOMAIN_')
|
||||||
@ -297,7 +308,10 @@ const formRules = computed(() => {
|
|||||||
message: `课程时长需在 ${minD}-${maxD} 分钟之间`,
|
message: `课程时长需在 ${minD}-${maxD} 分钟之间`,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
steps: [
|
};
|
||||||
|
// 教学环节:集体课/领域课必填,导入课不校验
|
||||||
|
if (stepsRequired.value) {
|
||||||
|
rules.steps = [
|
||||||
{
|
{
|
||||||
validator: (_: unknown, value: StepData[] | undefined) => {
|
validator: (_: unknown, value: StepData[] | undefined) => {
|
||||||
const steps = value || [];
|
const steps = value || [];
|
||||||
@ -319,8 +333,8 @@ const formRules = computed(() => {
|
|||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
];
|
||||||
};
|
}
|
||||||
if (extensionRequired.value) {
|
if (extensionRequired.value) {
|
||||||
rules.extension = [
|
rules.extension = [
|
||||||
{ required: true, whitespace: true, message: '请输入教学延伸活动建议' },
|
{ required: true, whitespace: true, message: '请输入教学延伸活动建议' },
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user