import { defineComponent, onMounted, reactive, watch } from 'vue'; import styles from './index.module.less'; import { NButton, NModal, NScrollbar, NSelect, NSpace, NSpin, useMessage, useDialog } from 'naive-ui'; import CardType from '/src/components/card-type'; import AttendClass from '/src/views/prepare-lessons/model/attend-class'; import { usePrepareStore } from '/src/store/modules/prepareLessons'; import { useCatchStore } from '/src/store/modules/catchData'; import TheEmpty from '/src/components/TheEmpty'; import { queryCourseware, saveCourseware, teacherKnowledgeMaterialDelete } from '../../../api'; import Draggable from 'vuedraggable'; import iconDelete from '../../../images/icon-delete.png'; import { useRouter } from 'vue-router'; export default defineComponent({ name: 'courseware-modal', setup() { const catchStore = useCatchStore(); const prepareStore = usePrepareStore(); const router = useRouter(); const dialog = useDialog(); const message = useMessage(); const forms = reactive({ coursewareList: [] as any, loadingStatus: false, showAttendClass: false, drag: false }); // 获取列表 const getList = async () => { forms.loadingStatus = true; try { // 判断是否有选择对应的课件 if (!prepareStore.getSelectKey) return (forms.loadingStatus = false); const { data } = await queryCourseware({ coursewareDetailKnowledgeId: prepareStore.getSelectKey, subjectId: prepareStore.getSubjectId, page: 1, rows: 99 }); const tempRows = data.rows || []; const temp: any = []; tempRows.forEach((row: any) => { temp.push({ id: row.id, materialId: row.materialId, coverImg: row.coverImg, type: row.materialType, title: row.materialName, isCollect: !!row.favoriteFlag, isSelected: row.source === 'PLATFORM' ? true : false, content: row.content, removeFlag: row.removeFlag }); }); forms.coursewareList = temp || []; prepareStore.setCoursewareList(temp || []); } catch { // } forms.loadingStatus = false; }; // 监听选择的key 左侧选择了其它的课 watch( () => prepareStore.getSelectKey, () => { getList(); } ); watch( () => prepareStore.getIsAddResource, (val: boolean) => { if (val) { getList(); prepareStore.setIsAddResource(false); } } ); // 删除 const onDelete = (item: any) => { // const index = forms.coursewareList.findIndex( (c: any) => c.id === item.id ); forms.coursewareList.splice(index, 1); prepareStore.setCoursewareList(forms.coursewareList); }; // 完成编辑 const onOverEdit = async () => { dialog.warning({ title: '提示', content: `是否完成编辑?`, positiveText: '确定', negativeText: '取消', onPositiveClick: async () => { try { const temp: any = []; forms.coursewareList.forEach((item: any) => { temp.push({ materialName: item.title, materialType: item.type, materialId: item.materialId, id: item.id }); }); // 保存课件 await saveCourseware({ coursewareDetailKnowledgeId: prepareStore.getSelectKey, lessonCoursewareId: prepareStore.getLessonCoursewareId, lessonCoursewareDetailId: prepareStore.getLessonCoursewareDetailId, materialList: [...temp] }); forms.drag = false; message.success('编辑成功'); prepareStore.setCoursewareList(forms.coursewareList); } catch { // } } }); }; // 预览上课 const onPreviewAttend = () => { // 获取上架的数据 let count = 0; forms.coursewareList.forEach((item: any) => { if (!item.removeFlag) { count++; } }); if (count <= 0) { message.error('课件不能为空'); return; } const { href } = router.resolve({ path: '/attend-class', query: { type: 'preview', subjectId: prepareStore.getSubjectId, detailId: prepareStore.getSelectKey } }); window.open(href, +new Date() + ''); }; // 单个删除 const onRemove = async (item: any) => { try { dialog.warning({ title: '提示', content: '该资源已下架,是否删除?', positiveText: '确定', negativeText: '取消', onPositiveClick: async () => { await teacherKnowledgeMaterialDelete({ ids: item.id }); message.success('删除成功'); getList(); } }); } catch { // } }; onMounted(async () => { // 获取教材分类列表 await catchStore.getSubjects(); const subjectList = catchStore.getSubjectList; // 并且没有声部时才会更新 if (subjectList.length > 0 && !prepareStore.getSubjectId) { prepareStore.setSubjectId(subjectList[0].id); } await getList(); }); return () => (