hookehuyr

feat(教师表单): 重构作业类型选择并添加提交频率设置

- 将硬编码的作业类型选项改为从接口获取的动态数据
- 添加每周期提交数量的设置功能
- 调整表单布局,优化用户体验
......@@ -46,15 +46,21 @@
<div v-if="$route.query.type === 'homework'" class="mb-4">
<label class="setting-label">作业类型</label>
<van-checkbox-group v-model="formData.attachment_type" direction="horizontal" checked-color="#4caf50" icon-size="15px">
<van-checkbox name="image" shape="square"><span class="text-sm">图文打卡</span></van-checkbox>
<van-checkbox name="video" shape="square"><span class="text-sm">视频打卡</span></van-checkbox>
<van-checkbox name="audio" shape="square"><span class="text-sm">音频打卡</span></van-checkbox>
<van-checkbox
v-for="option in attachmentTypeOptions"
:key="option.name"
:name="option.name"
shape="square"
>
<span class="text-sm">{{ option.text }}</span>
</van-checkbox>
</van-checkbox-group>
</div>
<van-row gutter="10">
<van-col span="12">
<label class="setting-label">{{ pageTitle === '设置作业' ? '作业' : '打卡' }}周期</label>
<!-- 作业周期 -->
<van-row gutter="10" class="mb-4">
<van-col span="24">
<label class="setting-label">{{ pageTitle === '设置作业' ? '作业' : '打卡' }}频次</label>
<van-field
v-model="formData.cycle_text"
is-link
......@@ -66,6 +72,24 @@
class="cycle-field"
/>
</van-col>
</van-row>
<!-- 每周期提交数量和目标总数 -->
<van-row gutter="10">
<van-col span="12">
<label class="setting-label">每周期提交数量</label>
<div class="target-count-container">
<van-stepper
v-model="formData.frequency"
min="1"
max="100"
integer
button-size="24px"
input-width="50%"
/>
<span class="target-unit">次</span>
</div>
</van-col>
<van-col span="12">
<label class="setting-label">目标总数</label>
<div class="target-count-container">
......@@ -358,7 +382,8 @@ const formData = ref({
class_name: '',
class_id: '',
// group_name: ''
attachment_type: [] // 作品类型数组,用于设置作业时的多选
attachment_type: [], // 作品类型数组,用于设置作业时的多选
frequency: 1 // 每周期提交数量
});
// 加载状态
......@@ -384,6 +409,9 @@ const maxDate = new Date(2035, 11, 31);
const cycleOptions = ref([]);
// 作品类型选项 - 从接口获取
const attachmentTypeOptions = ref([]);
// 搜索值
const courseSearchValue = ref('');
const chapterSearchValue = ref('');
......@@ -852,6 +880,15 @@ onMounted(async () => {
text,
value: String(value) // 确保值为字符串类型
}));
// 处理作品类型数据
if (data.task_attachment_type) {
attachmentTypeOptions.value = Object.entries(data.task_attachment_type).map(([key, value]) => ({
name: key, // 提交给后台的值
text: value // 显示的文本
}));
}
grades.value = data.grade_list.map(grade => ({
name: grade.grade_name,
id: String(grade.id)
......