import { computed, defineComponent, onMounted, reactive, ref } from 'vue'; import styles from './index.module.less'; import { NIcon, NSpin, NScrollbar, NModal, NImage, NTooltip } from 'naive-ui'; import { lessonCoursewareDetail, lessonCoursewarePage, tagUseCourseware } from '../../api'; import SelectLessonware from './select-lessonware'; import TheEmpty from '/src/components/TheEmpty'; import { usePrepareStore } from '/src/store/modules/prepareLessons'; import { useUserStore } from '/src/store/modules/users'; import { useRoute } from 'vue-router'; import { eventGlobal } from '/src/utils'; // import TheNoticeBar from '/src/components/TheNoticeBar'; import { getSubjectList2 } from '/src/api/user'; import LessonsGuide from '@/custom-plugins/guide-page/lessons-guide'; import { modalClickMask } from '/src/state'; export default defineComponent({ name: 'directory-main', props: { sidebarShow: { type: Boolean, default: true } }, setup(props) { const route = useRoute(); const prepareStore = usePrepareStore(); const userStore = useUserStore(); const show = ref(true); const forms = reactive({ lastUseCoursewareId: route.query.lastUseCoursewareId ? route.query.lastUseCoursewareId + '' : null, // 专辑编号 unit: route.query.unit ? route.query.unit + '' : null, // 声部 showSelectBookStatus: false, coursewareStatus: false }); const getLessonCourseware = async () => { try { const { data } = await lessonCoursewarePage({ page: 1, rows: 99, type: 'COURSEWARE', enableFlag: 1 }); const result = data.rows || []; if (result.length > 0) { // 判断是否有默认数据 const selectItem = result.find( (item: any) => item.id === (forms.lastUseCoursewareId || userStore.getUserInfo?.lastUseCoursewareId) ); let id: any = null; let instrumentIds: any = null; if (selectItem) { prepareStore.setBaseCourseware(selectItem); id = selectItem.id; instrumentIds = selectItem.instrumentIds; } else { prepareStore.setBaseCourseware(result[0]); id = result[0]?.id; instrumentIds = result[0].instrumentIds; } setLastUseCoursewareId(id); if (instrumentIds) { const { data } = await getSubjectList2({ instrumentIds }); prepareStore.setInstrumentList(data); } } forms.showSelectBookStatus = true; } catch { // } }; const getLessonCoursewareDetail = async () => { try { const baseCourseware: any = prepareStore.getBaseCourseware; if (!baseCourseware.id) return; const { data } = await lessonCoursewareDetail({ id: baseCourseware.id }); const tempList: any = data.lessonList || []; const defaultUnitIds = formatParentId(forms.unit, tempList); tempList.forEach((item: any, index: number) => { item.selected = false; // 处理从备课页面带过来的参数 if (defaultUnitIds.length > 1) { if (item.id === defaultUnitIds[0]) { item.selected = true; item.knowledgeList.forEach((know: any) => { if (know.id === defaultUnitIds[1]) { prepareStore.setSelectKey(know?.id); prepareStore.setLessonCoursewareId(know?.lessonCoursewareId); prepareStore.setLessonCoursewareDetailId( know?.lessonCoursewareDetailId ); } }); } } else { if (index === 0) { item.selected = true; const temp = item['knowledgeList'][0]; prepareStore.setSelectKey(temp?.id); prepareStore.setLessonCoursewareId(temp?.lessonCoursewareId); prepareStore.setLessonCoursewareDetailId( temp?.lessonCoursewareDetailId ); } } }); prepareStore.setTreeList(tempList); const tempInstrumentId = prepareStore.getInstrumentId; if (tempInstrumentId) { const instrumentList = prepareStore.getFormatInstrumentList; let status = false; instrumentList.forEach((item: any) => { if (item.instruments?.length > 0) { item.instruments.forEach((child: any) => { if (child.value == tempInstrumentId) { status = true; } }); } if (item.value == tempInstrumentId) { status = true; } }); if (!status) { onShowDefaultInstrument(); } } else { onShowDefaultInstrument(); } } catch { // } }; const onShowDefaultInstrument = () => { // 默认选中第一个声部 const instrumentList = prepareStore.getFormatInstrumentList; if (instrumentList.length > 0) { const tempList = instrumentList[0]; if (tempList.instruments.length > 1) { const childTempList = tempList.instruments[0]; prepareStore.setInstrumentId(childTempList.value); } else { prepareStore.setInstrumentId(tempList.value); } } }; const formatParentId = (id: any, list: any, ids = [] as any) => { for (const item of list) { if (item.knowledgeList && item.knowledgeList.length > 0) { const cIds: any = formatParentId(id, item.knowledgeList, [ ...ids, item.id ]); if (cIds.includes(id)) { return cIds; } } if (item.id === id) { return [...ids, id]; } } return ids; }; const setLastUseCoursewareId = async (id: any) => { try { await tagUseCourseware({ coursewareId: id }); userStore.getInfo(); } catch { // } }; const clickDetail = (child: any) => { prepareStore.setSelectKey(child.id); prepareStore.setLessonCoursewareId(child.lessonCoursewareId); prepareStore.setLessonCoursewareDetailId(child.lessonCoursewareDetailId); }; const onChangeClass = async (item: any) => { show.value = true; forms.lastUseCoursewareId = item.lastUseCoursewareId; forms.unit = item.unit; await getLessonCourseware(); await getLessonCoursewareDetail(); show.value = false; }; const changeCourseware = async (item: any) => { prepareStore.setBaseCourseware(item); // prepareStore.setSubjectList(item.subjectList); if (item.instrumentIds) { const { data } = await getSubjectList2({ instrumentIds: item.instrumentIds }); prepareStore.setInstrumentList(data); let status = false; let tempInstrumentId: any = null; data.forEach((item: any, index: number) => { if (Array.isArray(item.instruments)) { item.instruments.forEach((child: any, j: number) => { if (child.id === prepareStore.getInstrumentId) { status = true; } if (index === 0 && j === 0) { tempInstrumentId = child.id; } }); } }); await getLessonCoursewareDetail(); // 判断教材里面是否有当前选择的声部,如果没有则默认选择第一个 if (status) { const instrumentId = tempInstrumentId; prepareStore.setInstrumentId(instrumentId); } else { onShowDefaultInstrument(); } } setLastUseCoursewareId(item.id); }; const formatInstrumentNames = computed(() => { const names = prepareStore.getBaseCourseware.instrumentNames; if (!names) { return ''; } return names.split(',').join('、'); }); onMounted(async () => { show.value = true; await getLessonCourseware(); await getLessonCoursewareDetail(); show.value = false; // 切换班级时触发 eventGlobal.on('onChangeClass', async (item: any) => { onChangeClass(item); }); }); return () => ( <>
{forms.showSelectBookStatus && (prepareStore.getBaseCourseware.id ? (
(forms.coursewareStatus = true)}> { (e.target as any).dataset.loaded = 'true'; }} />

{/* */} {{ trigger: () => prepareStore.getBaseCourseware.name, default: () => prepareStore.getBaseCourseware.name }}

{/* */} {{ trigger: () => formatInstrumentNames.value, default: () => formatInstrumentNames.value }}
(forms.coursewareStatus = true)}> 切片 切换教材
) : (
(forms.coursewareStatus = true)}> {prepareStore.getBaseCourseware.name || '请选择教材'}
))}
{prepareStore.getTreeList.map((item: any, index: number) => (
{ prepareStore.getTreeList.forEach((child: any) => { if (item.id !== child.id) { child.selected = false; } }); item.selected = item.selected ? false : true; }}> {item.knowledgeList && item.knowledgeList.length > 0 && ( )}

{item.name}

{item.selected && item.knowledgeList && item.knowledgeList.map((child: any, j: number) => (
{ if (prepareStore.getIsEditResource) { eventGlobal.emit('pageBeforeLeave', () => clickDetail(child) ); } else { clickDetail(child); } }}>

{child.name}

))}
))}
{!show.value && prepareStore.getTreeList.length <= 0 && ( )}
{/* 选择教材 */} (forms.coursewareStatus = false)} onConfirm={(item: any) => { if (prepareStore.getIsEditResource) { eventGlobal.emit('pageBeforeLeave', () => changeCourseware(item) ); } else { changeCourseware(item); } }} />
{forms.showSelectBookStatus && !props.sidebarShow && ( )} ); } });