import { defineComponent, onMounted, reactive, watch, ref, PropType, onUnmounted } from 'vue'; import styles from './index.module.less'; import { NButton, NInput, NModal, NScrollbar, NSelect, NSpace, NSpin, useDialog, useMessage } from 'naive-ui'; import { usePrepareStore } from '/src/store/modules/prepareLessons'; import { useCatchStore } from '/src/store/modules/catchData'; import TrainType from '/src/views/attend-class/model/train-type'; import TheEmpty from '/src/components/TheEmpty'; import Draggable from 'vuedraggable'; import { lessonPreTrainingBatchSave, lessonPreTrainingPage, lessonPreTrainingDelete, lessonPreTrainingV2Detail, lessonPreTrainingV2Save } from '../../../api'; import { evaluateDifficult } from '/src/utils/contants'; import TrainUpdate from '/src/views/attend-class/model/train-update'; import AssignHomework from './assign-homework'; import Trainguide from '@/custom-plugins/guide-page/train-guide'; import { eventGlobal } from '/src/utils'; import iconTips from '../../../images/icon-tips.png'; import { typeFormat } from '../../resource-main/components/select-music'; import TheMessageDialog from '/src/components/TheMessageDialog'; import { useResizeObserver } from '@vueuse/core'; export default defineComponent({ name: 'courseware-modal', props: { lessonPreTraining: { type: Object, default: () => ({}) }, cardType: { type: String as PropType<'' | 'homeworkRecord' | 'prepare'>, default: '' }, /** 编辑编号 - 目前从上传传 */ classGroupId: { type: String, default: '' }, /** 编辑编号 - 目前从上传传 */ coursewareKnowledgeDetailId: { type: String, default: '' }, /** 编辑编号 - 目前从上传传 */ courseScheduleId: { type: String, default: '' } }, emits: ['change'], setup(props, { emit }) { console.log(props.courseScheduleId, 'courseScheduleId'); const catchStore = useCatchStore(); const prepareStore = usePrepareStore(); const dialog = useDialog(); const message = useMessage(); const forms = reactive({ title: props.lessonPreTraining?.title, preBtnLoading: false, showAttendClass: false, list: [] as any, drag: true, loadingStatus: false, trainList: [] as any, assignHomeworkStatus: false, editStatus: false, editItem: {} as any, removeIds: [] as any, // 临时删除的编号 removeVisiable1: false, preSaveVisiable: false }); // const showGuide = ref(false); // 获取列表 const getList = async () => { forms.loadingStatus = true; try { // 判断是否有选择对应的课件 // console.log(props.lessonPreTraining, 'props.lessonPreTraining'); if (!props.lessonPreTraining?.id) return (forms.loadingStatus = false); const { data } = await lessonPreTrainingV2Detail({ id: props.lessonPreTraining?.id }); const tempRows = data.lessonPreTrainingDetails || []; const temp: any = []; forms.title = data.title; tempRows.forEach((row: any) => { let tList: string[] = []; const configJson = row.trainingConfigJson; if (row.trainingType === 'EVALUATION') { tList = [ `${evaluateDifficult[configJson.evaluateDifficult]}`, configJson.practiceChapterBegin || configJson.practiceChapterEnd ? `${configJson.practiceChapterBegin}-${configJson.practiceChapterEnd}小节` : '全部小节', // `速度${configJson.evaluateSpeed}`, `${configJson.trainingTimes}分合格` ]; } else { tList = [ `${configJson.practiceChapterBegin}-${configJson.practiceChapterEnd}小节`, `速度${configJson.practiceSpeed}`, `${configJson.trainingTimes}分钟` ]; } temp.push({ typeList: tList || [], ...row }); }); prepareStore.setTrainList(temp || []); const tempCourse: any = []; temp.forEach((item: any) => { if (!forms.removeIds.includes(item.id)) { tempCourse.push(item); } }); forms.trainList = tempCourse || []; } catch { // } forms.loadingStatus = false; }; // 监听选择的key 左侧选择了其它的课 watch( () => prepareStore.getSelectKey, () => { eventGlobal.emit('teacher-slideshow', false); emit('change', { status: false }); forms.trainList = []; getList(); } ); // 删除 const onDelete = (item: any) => { forms.removeIds.push(item.id); const index = forms.trainList.findIndex((c: any) => c.id === item.id); forms.trainList.splice(index, 1); }; // 单个删除 const onRemove = async (item: any) => { try { dialog.warning({ title: '提示', content: '该训练已下架,是否删除?', positiveText: '确定', negativeText: '取消', onPositiveClick: async () => { forms.removeIds.push(item.id); await lessonPreTrainingDelete({ ids: item.id }); message.success('删除成功'); getList(); } }); } catch { // } }; /** 保存预设 */ const onPreSave = async () => { forms.preBtnLoading = true; try { const lessonPreTrainingDetails: any = []; forms.trainList.forEach((item: any) => { lessonPreTrainingDetails.push({ trainingType: item.trainingType, musicId: item.musicId, trainingConfigJson: item.trainingConfigJson, musicName: item.musicName }); }); await lessonPreTrainingV2Save({ title: forms.title, id: props.lessonPreTraining?.id, coursewareKnowledgeDetailId: props.coursewareKnowledgeDetailId || prepareStore.getSelectKey, lessonPreTrainingDetails, chapterLessonCoursewareId: props.lessonPreTraining?.chapterId }); message.success('保存成功'); prepareStore.setIsEditTrain(false); forms.removeIds = []; // getList(); emit('change', { status: false }); } catch { // } forms.preBtnLoading = false; }; const getModalHeight = () => { const dom: any = document.querySelector('#model-homework-height'); if (dom) { useResizeObserver(dom as HTMLElement, (entries: any) => { const entry = entries[0]; const { height } = entry.contentRect; dom.style.setProperty('--window-page-lesson-height', height + 'px'); }); } }; onMounted(async () => { getModalHeight(); await getList(); // 动态添加数据 eventGlobal.on('onTrainAddItem', (item: any) => { forms.drag = true; // 临时储存编号 item.id = item.id || new Date().getTime() + '__tmp'; forms.trainList.push(item); prepareStore.setTrainList(forms.trainList); }); }); onUnmounted(() => { forms.trainList = []; prepareStore.setTrainList([]); }); return () => (
请确认是否要清空作业? {/* 点击确认后所有的作业内容 将被清空掉。 */}