import { defineComponent, onMounted, reactive, watch, ref } from 'vue'; import styles from './index.module.less'; import { NButton, 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 } 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'; export default defineComponent({ name: 'courseware-modal', setup() { const catchStore = useCatchStore(); const prepareStore = usePrepareStore(); const dialog = useDialog(); const message = useMessage(); const forms = reactive({ showAttendClass: false, list: [] as any, drag: false, loadingStatus: false, trainList: [] as any, assignHomeworkStatus: false, editStatus: false, editItem: {} as any, removeIds: [] as any, // 临时删除的编号 removeVisiable: false, removeVisiable1: false }); const showGuide = ref(false); // 完成编辑 const onOverEdit = async () => { // dialog.warning({ // title: '提示', // content: `是否完成编辑?`, // positiveText: '确定', // negativeText: '取消', // onPositiveClick: async () => { try { // 保存课件 await lessonPreTrainingBatchSave({ coursewareKnowledgeDetailId: prepareStore.getSelectKey, subjectId: prepareStore.getSubjectId, lessonPreTrainingDetails: forms.trainList }); forms.drag = false; message.success('编辑成功'); forms.removeVisiable = false; prepareStore.setCoursewareList(forms.trainList); prepareStore.setIsEditTrain(false); // 重置临时删除编号 forms.removeIds = []; } catch { // } // } // }); }; // 获取列表 const getList = async () => { forms.loadingStatus = true; try { // 判断是否有选择对应的课件 if (!prepareStore.getSelectKey) return; const { data } = await lessonPreTrainingPage({ coursewareKnowledgeDetailId: prepareStore.getSelectKey, subjectId: prepareStore.getSubjectId, page: 1, rows: 99 }); const tempRows = data.rows || []; const temp: any = []; tempRows.forEach((row: any) => { let tList: string[] = []; const configJson = row.trainingConfigJson; if (row.trainingType === 'EVALUATION') { tList = [ `${evaluateDifficult[configJson.evaluateDifficult]}`, '全部小节', // `速度${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 || []; setTimeout(() => { showGuide.value = true; }, 500); } catch { // } forms.loadingStatus = false; }; // 声部变化时 watch( () => prepareStore.getSubjectId, () => { getList(); } ); // 监听选择的key 左侧选择了其它的课 watch( () => prepareStore.getSelectKey, () => { forms.trainList = []; getList(); } ); watch( () => prepareStore.getIsAddTrain, (val: boolean) => { if (val) { forms.trainList = []; getList(); prepareStore.setIsAddTrain(false); } } ); // 删除 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); // prepareStore.setCoursewareList(forms.trainList); }; // 单个删除 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 checkSubjectIds = () => { // const subjectList = prepareStore.getSubjectList; // // 并且没有声部时才会更新 // if (subjectList.length > 0) { // // 判断浏览器上面是否有 // const index = subjectList.findIndex( // (subject: any) => subject.id == forms.subjectId // ); // // 并且声部在列表中 // if (forms.subjectId && index >= 0) { // prepareStore.setSubjectId(forms.subjectId); // } else { // // 判断是否有缓存 // prepareStore.setSubjectId(subjectList[0].id); // } // } // }; onMounted(async () => { // 获取教材分类列表 // await catchStore.getSubjects(); // const subjectList = catchStore.getSubjectList; // if (subjectList.length > 0 && !prepareStore.getSubjectId) { // prepareStore.setSubjectId(subjectList[0].id); // } // 获取教材分类列表 // checkSubjectIds(); await getList(); }); return () => (
{forms.drag ? ( { forms.removeVisiable = true; }}> 完成编辑 { forms.drag = false; prepareStore.setIsEditTrain(false); forms.removeIds = []; getList(); }}> 取消编辑 { // forms.trainList = []; // prepareStore.setTrainList([]); forms.removeVisiable1 = true; }}> 清空资源 拖动可将资源进行排序 ) : ( {/* { prepareStore.setSubjectId(val); }} /> */}
声部: { prepareStore.setSubjectId(val); localStorage.setItem('prepareLessonSubjectId', val); }} />
{ forms.drag = true; prepareStore.setIsEditTrain(true); }}> 编辑
)} { let count = 0; forms.trainList.forEach((item: any) => { if (!item.removeFlag) { count++; } }); if (count <= 0) { message.error('作业内容不能为空'); return; } forms.assignHomeworkStatus = true; }}> 布置作业
{forms.trainList.length > 0 && ( <> {forms.drag ? ( {{ item: (element: any) => { const item = element.element; return (
onDelete(child)} offShelf={item.removeFlag ? true : false} onOffShelf={() => onRemove(item)} />
); } }}
) : (
{forms.trainList.map((item: any) => ( onRemove(item)} onEdit={(child: any) => { console.log('edit', child); const { trainingConfigJson, id, musicId, ...res } = child; forms.editItem = { ...res, id: musicId, trainId: id, ...trainingConfigJson }; forms.editStatus = true; }} /> ))}
)} )} {!forms.loadingStatus && prepareStore.getTrainList.length <= 0 && ( )}
{/* 编辑 */} (forms.editStatus = false)} onConfirm={() => { forms.editItem = {}; prepareStore.setIsAddTrain(true); }} /> {/* 添加自定义教材 */} (forms.assignHomeworkStatus = false)} /> {showGuide.value ? : null}

是否完成编辑?

确定 (forms.removeVisiable = false)}> 取消

请确认是否要清空作业? 点击确认后所有的作业内容 将被清空掉。

{ forms.trainList.forEach((item: any) => { forms.removeIds.push(item.id); }); forms.trainList = []; forms.removeVisiable1 = false; // prepareStore.setCoursewareList([]); console.log(prepareStore.getTrainList, 'getCourseware1'); }}> 确定 (forms.removeVisiable1 = false)}> 取消
); } });