import { PropType, defineComponent, onMounted, reactive, ref, toRef } from 'vue'; import styles from './index.module.less'; import { NButton, NDatePicker, NForm, NFormItem, NInput, NModal, NScrollbar, NSelect, NSpace, useMessage } from 'naive-ui'; import { BOOK_DATA } from '/src/views/natural-resources/model/add-teaching'; import { classGroupPage, lessonTrainingAdd } from '../../../api'; import dayjs from 'dayjs'; import { classGroupList } from '/src/views/home/api'; import { gradeToCN } from '/src/utils/contants'; import { usePrepareStore } from '/src/store/modules/prepareLessons'; import AssignStudent from './assign-student'; import { state } from '/src/state'; import { nextTick } from 'process'; import useDrag from '@/hooks/useDrag'; import Dragbom from '@/hooks/useDrag/dragbom'; import { useUserStore } from '@/store/modules/users'; import { api_getCurrentGradeYear } from '/src/views/studentList/api'; export default defineComponent({ name: 'assign-homework', props: { classGroupId: { type: String, default: '' }, courseScheduleId: { type: String, default: '' }, /** 课件编号 */ chapterLessonCoursewareId: { type: String, default: '' }, item: { type: Object, default: () => ({}) }, /** 初始数据 */ trainList: { type: Array, default: () => [] }, homeworkType: { type: String as PropType<'CLASSWORK' | 'HOMEWORK'>, default: 'CLASSWORK' }, from: { // 来自哪里 type: String, default: '' } }, emits: ['close', 'confirm'], setup(props, { emit }) { const message = useMessage(); const prepareStore = usePrepareStore(); const forms = reactive({ gradeYear: '' as any, currentTime: dayjs(dayjs().format('YYYY-MM-DD')).valueOf(), homeworkObj: 'CLASS' as 'PERSON' | 'CLASS', homeworkType: props.homeworkType, workVisiable: false, id: null as any, uploading: false, title: props.item.title, courseScheduleId: props.courseScheduleId || null, chapterLessonCoursewareId: props.chapterLessonCoursewareId || null, gradeList: [] as any, classList: [] as any, currentGradeNum: null, expireDate: dayjs().add(7, 'day').format('YYYY-MM-DD HH:mm') as any, // 默认7天 classGroupId: null as any, studentList: [] as any, selectIds: [] as any }); const formsRef = ref(); // 获取年级班级 const getClassGroupList = async () => { try { const defaultSelectClassGroupId = props.classGroupId || prepareStore.getClassGroupId; const { data } = await classGroupList({ upgradeFlag: true, gradeYear: forms.gradeYear }); const cList = data || []; const gradeList: any = []; cList.forEach((item: any) => { const classList: any = []; item.classGroupList.forEach((i: any) => { classList.push({ label: i.currentClass + '班', value: i.id, lastStudy: i.lastStudy, preStudentNum: i.preStudentNum }); if (i.id === defaultSelectClassGroupId) { forms.currentGradeNum = i.currentGradeNum; forms.classGroupId = [i.id]; } }); gradeList.push({ label: gradeToCN[item.currentGradeNum], value: item.currentGradeNum, childrens: classList }); }); forms.gradeList = gradeList; if (forms.currentGradeNum) { getClassList(); } } catch { // } }; const getClassList = async () => { try { forms.gradeList.forEach((item: any) => { if (item.value === forms.currentGradeNum) { forms.classList = item.childrens; } }); } catch { // } }; const onSubmit = async () => { formsRef.value?.validate(async (err: any) => { if (err) { return; } forms.uploading = true; try { const trainList: any = props.item.lessonPreTrainingDetails || []; const details: any[] = []; trainList.forEach((item: any) => { details.push({ trainingType: item.trainingType, musicId: item.musicId, trainingConfigJsonObject: item.trainingConfigJson }); }); const params = { name: forms.title, homeworkObj: forms.homeworkObj, homeworkType: forms.homeworkType, lessonTrainingDetails: details, expireDate: dayjs(forms.expireDate).format('YYYY-MM-DD HH:mm:ss'), classGroupId: forms.classGroupId ? forms.classGroupId.join(',') : null, studentIds: null as any, courseScheduleId: forms.courseScheduleId, chapterLessonCoursewareId: forms.chapterLessonCoursewareId // 课件编号 }; if (forms.homeworkObj === 'PERSON') { params.classGroupId = ''; const ids: any[] = []; forms.studentList.forEach((item: any) => { ids.push(item.id); }); params.studentIds = ids.join(','); } await lessonTrainingAdd(params); message.success('布置成功'); emit('close'); emit('confirm'); } catch { // } forms.uploading = false; }); }; const getCurrentGradeYear = async () => { try { const { data } = await api_getCurrentGradeYear({}); console.log(data); forms.gradeYear = data; } catch { // } }; onMounted(async () => { await getCurrentGradeYear(); await getClassGroupList(); }); // 选择学生 let assignHomeworkStuBoxDragData: any; let assignHomeworkStuBoxClass: string; if (props.from === 'class') { const users = useUserStore(); assignHomeworkStuBoxClass = 'assignHomeworkStuBoxClass_drag'; assignHomeworkStuBoxDragData = useDrag( [ `${assignHomeworkStuBoxClass}>.n-card-header`, `${assignHomeworkStuBoxClass} .bom_drag` ], assignHomeworkStuBoxClass, toRef(forms, 'workVisiable'), users.info.id ); } return () => (