import { defineComponent, nextTick, onMounted, reactive } from 'vue'; import styles from './index.module.less'; import { NButton, NImage, NInput, NModal, NScrollbar, NSpace, NSpin, useMessage } from 'naive-ui'; import add from '@/views/studentList/images/add.png'; import WorkSection from '/src/views/prepare-lessons/model/work-section'; import { lessonPreTrainingV2Page, lessonPreTrainingV2Save } from '/src/views/prepare-lessons/api'; import { storeToRefs } from 'pinia'; import { useUserStore } from '/src/store/modules/users'; import AssignHomework from '/src/views/prepare-lessons/components/lesson-main/train/assign-homework'; import Train from '/src/views/prepare-lessons/components/lesson-main/train'; import ResourceMain from '/src/views/prepare-lessons/components/resource-main'; import dayjs from 'dayjs'; import { useResizeObserver } from '@vueuse/core'; import TheEmpty from '/src/components/TheEmpty'; export default defineComponent({ name: 'class-work', props: { /** 章节编号 */ detailId: { type: String, default: '' }, /** 声部编号 */ subjectId: { type: String, default: '' }, /** 班级编号 */ classGroupId: { type: String, default: '' }, /** 上课编号 */ courseScheduleId: { type: String, default: '' }, activeName: { type: String, default: '' } }, emits: ['close'], setup(props, { emit }) { const users = useUserStore(); const { info } = storeToRefs(users); const message = useMessage(); const forms = reactive({ loadingStatus: false, tableList: [] as any, editTitleVisiable: false, selectItem: {} as any, editTitle: '', assignHomeworkStatus: false, editBtnLoading: false, workVisiable: false }); const getList = async () => { forms.loadingStatus = true; try { // 判断是否有选择对应的课件 或声部 if (!props.detailId) return (forms.loadingStatus = false); const { data } = await lessonPreTrainingV2Page({ page: 1, coursewareKnowledgeDetailId: props.detailId }); const result = data.rows || []; const tempList: any = []; result.forEach((item: any) => { const { lessonPreTrainingDetails, ...ies } = item; const tList: any = { ...ies, pTitle: '', eTitle: '', teacherAvatar: info.value?.avatar, teacherName: info.value?.nickname, lessonPreTrainingDetails }; lessonPreTrainingDetails.forEach((child: any) => { if (child.trainingType === 'PRACTICE' && child.musicName) { tList.pTitle += tList.pTitle ? '、《' + child.musicName + '》' : '练习曲目《' + child.musicName + '》'; } if (child.trainingType === 'EVALUATION' && child.musicName) { tList.eTitle += tList.eTitle ? '、《' + child.musicName + '》' : '评测曲目《' + child.musicName + '》'; } }); tempList.push(tList); }); forms.tableList = tempList; } catch { // } forms.loadingStatus = false; }; /** 修改标题 */ const onEditTitleSubmit = async () => { if (!forms.editTitle) { message.error('请输入作业标题'); return; } forms.editBtnLoading = true; try { await lessonPreTrainingV2Save({ id: forms.selectItem.id, title: forms.editTitle }); message.success('修改成功'); forms.editTitleVisiable = false; forms.tableList.forEach((item: any) => { if (item.id === forms.selectItem.id) { item.title = forms.editTitle; } }); } catch { // } forms.editBtnLoading = false; }; const getModalHeight = () => { useResizeObserver( document.querySelector('#model-homework-height') as HTMLElement, (entries: any) => { const entry = entries[0]; const { height } = entry.contentRect; document.documentElement.style.setProperty( '--window-page-lesson-height', height + 'px' ); } ); }; onMounted(() => { getList(); }); return () => (
{ // 设置右侧栏状态 forms.workVisiable = true; forms.selectItem = {}; nextTick(() => { getModalHeight(); }); }} v-slots={{ icon: () => ( <> ) }}> 添加作业
{forms.tableList.map((item: any) => ( { forms.selectItem = item; forms.editTitle = item.title; forms.editTitleVisiable = true; }} onEdit={() => { forms.workVisiable = true; forms.selectItem = item; nextTick(() => { getModalHeight(); }); }} onConfirm={() => { if ( !item.lessonPreTrainingDetails || item.lessonPreTrainingDetails.length <= 0 ) { message.error('作业预设不能为空'); return; } forms.assignHomeworkStatus = true; forms.selectItem = item; }} /> ))} {!forms.loadingStatus && forms.tableList.length <= 0 && ( )}
{ if (e.code === 'ArrowLeft' || e.code === 'ArrowRight') { e.stopPropagation(); } }} /> (forms.editTitleVisiable = false)}> 取消 确定
{/* 添加自定义教材 */} (forms.assignHomeworkStatus = false)} />
{ forms.workVisiable = val.status; getList(); }} />
); } });