|  | @@ -36,7 +36,7 @@ import {
 | 
	
		
			
				|  |  |    saveCourseware
 | 
	
		
			
				|  |  |  } from '../../../api';
 | 
	
		
			
				|  |  |  import Draggable from 'vuedraggable';
 | 
	
		
			
				|  |  | -import iconDelete from '../../../images/icon-delete.png';
 | 
	
		
			
				|  |  | +import iconDelete from '../../../images/icon-delete-default.png';
 | 
	
		
			
				|  |  |  import iconAddMusic from '../../../images/icon-add-music.png';
 | 
	
		
			
				|  |  |  import { onBeforeRouteUpdate, useRoute, useRouter } from 'vue-router';
 | 
	
		
			
				|  |  |  // import deepClone from '/src/helpers/deep-clone';
 | 
	
	
		
			
				|  | @@ -221,7 +221,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // 操作
 | 
	
		
			
				|  |  | -    const onChangePoint = (type: string, index: number) => {
 | 
	
		
			
				|  |  | +    const onChangePoint = (type: string, index: number, item?: any) => {
 | 
	
		
			
				|  |  |        if (type === 'up') {
 | 
	
		
			
				|  |  |          // 向上移动
 | 
	
		
			
				|  |  |          if (index === 0) return;
 | 
	
	
		
			
				|  | @@ -241,8 +241,9 @@ export default defineComponent({
 | 
	
		
			
				|  |  |            contentDirection: 'left',
 | 
	
		
			
				|  |  |            title: '删除知识点',
 | 
	
		
			
				|  |  |            loading: false,
 | 
	
		
			
				|  |  | -          content:
 | 
	
		
			
				|  |  | -            '请确认是否删除该知识点,删除知识点后将同步删除知识点下的资源',
 | 
	
		
			
				|  |  | +          content: `请确认是否删除${
 | 
	
		
			
				|  |  | +            item.name ? '【' + item.name + '】' : '该知识点'
 | 
	
		
			
				|  |  | +          },删除知识点后将同步删除知识点下的资源`,
 | 
	
		
			
				|  |  |            cancelButtonText: '取消',
 | 
	
		
			
				|  |  |            confirmButtonText: '确认',
 | 
	
		
			
				|  |  |            index
 | 
	
	
		
			
				|  | @@ -260,6 +261,34 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          addCoursewareItem(forms.addCoursewareItem);
 | 
	
		
			
				|  |  |        } else if (type === 'save' || type === 'pageLive') {
 | 
	
		
			
				|  |  |          if (forms.messageOperation.loading) return;
 | 
	
		
			
				|  |  | +        if (!forms.name) {
 | 
	
		
			
				|  |  | +          message.error('请输入课件标题');
 | 
	
		
			
				|  |  | +          forms.messageOperation.visiable = false;
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (forms.subjects.length <= 0) {
 | 
	
		
			
				|  |  | +          message.error('请选择声部');
 | 
	
		
			
				|  |  | +          forms.messageOperation.visiable = false;
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        let isNotAdd = false;
 | 
	
		
			
				|  |  | +        for (const item of forms.coursewareList) {
 | 
	
		
			
				|  |  | +          if (!item.name) {
 | 
	
		
			
				|  |  | +            message.error('请输入知识点名称');
 | 
	
		
			
				|  |  | +            forms.messageOperation.visiable = false;
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          if (Array.isArray(item.list) && item.list.length <= 0) {
 | 
	
		
			
				|  |  | +            isNotAdd = true;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (isNotAdd) {
 | 
	
		
			
				|  |  | +          message.error('请至少添加一个资源');
 | 
	
		
			
				|  |  | +          forms.messageOperation.visiable = false;
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          forms.messageOperation.loading = true;
 | 
	
		
			
				|  |  |          await onSaveCourseWare();
 | 
	
		
			
				|  |  |          forms.messageOperation.loading = false;
 | 
	
	
		
			
				|  | @@ -279,9 +308,12 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      const addCoursewareItem = (item: any, point?: any) => {
 | 
	
		
			
				|  |  |        nextTick(() => {
 | 
	
		
			
				|  |  |          if (point) {
 | 
	
		
			
				|  |  | -          const dom = document.querySelectorAll('.row-nav');
 | 
	
		
			
				|  |  | +          const rowGroupDom = document.querySelectorAll('.row-group');
 | 
	
		
			
				|  |  | +          console.log(rowGroupDom, 'row');
 | 
	
		
			
				|  |  | +          const dom = rowGroupDom[item.index].querySelectorAll('.row-nav');
 | 
	
		
			
				|  |  | +          // const dom = document.querySelectorAll('.row-nav');
 | 
	
		
			
				|  |  |            let isAdd = false;
 | 
	
		
			
				|  |  | -          dom.forEach((child: any) => {
 | 
	
		
			
				|  |  | +          dom.forEach((child: any, index: number) => {
 | 
	
		
			
				|  |  |              // console.log(child);
 | 
	
		
			
				|  |  |              const status = isPointInsideElement(child, point.x, point.y);
 | 
	
		
			
				|  |  |              if (status) {
 | 
	
	
		
			
				|  | @@ -289,9 +321,9 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  forms.coursewareList[item.index || 0].list || [];
 | 
	
		
			
				|  |  |                const left = isPointOnLeft(child, point.x);
 | 
	
		
			
				|  |  |                if (!left) {
 | 
	
		
			
				|  |  | -                array.splice(item.index + 1, 0, item);
 | 
	
		
			
				|  |  | +                array.splice(index + 1, 0, item);
 | 
	
		
			
				|  |  |                } else {
 | 
	
		
			
				|  |  | -                array.splice(item.index, 0, item);
 | 
	
		
			
				|  |  | +                array.splice(index, 0, item);
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                isAdd = true;
 | 
	
		
			
				|  |  |                forms.coursewareList[item.index || 0].list = array;
 | 
	
	
		
			
				|  | @@ -334,17 +366,10 @@ export default defineComponent({
 | 
	
		
			
				|  |  |            message.error('请至少添加一个资源');
 | 
	
		
			
				|  |  |            return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        forms.messageOperation = {
 | 
	
		
			
				|  |  | -          visiable: true,
 | 
	
		
			
				|  |  | -          type: 'save',
 | 
	
		
			
				|  |  | -          loading: false,
 | 
	
		
			
				|  |  | -          contentDirection: 'center',
 | 
	
		
			
				|  |  | -          title: '保存课件',
 | 
	
		
			
				|  |  | -          content: '当前课件暂未保存,是否保存?',
 | 
	
		
			
				|  |  | -          cancelButtonText: '不保存',
 | 
	
		
			
				|  |  | -          confirmButtonText: '保存',
 | 
	
		
			
				|  |  | -          index: 0
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  | +        await onSaveCourseWare();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        emit('change', { status: false });
 | 
	
		
			
				|  |  | +        eventGlobal.emit('teacher-slideshow', false);
 | 
	
		
			
				|  |  |        } catch {
 | 
	
		
			
				|  |  |          //
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -389,7 +414,6 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              chapterKnowledgeMaterialList: tempItem
 | 
	
		
			
				|  |  |            });
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | -        console.log(params.chapterKnowledgeList);
 | 
	
		
			
				|  |  |          if (props.groupItem?.id) {
 | 
	
		
			
				|  |  |            await api_teacherChapterLessonCoursewareUpdate({
 | 
	
		
			
				|  |  |              id: props.groupItem.id,
 | 
	
	
		
			
				|  | @@ -430,7 +454,6 @@ export default defineComponent({
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // 当页面离开时
 | 
	
		
			
				|  |  |      const onPageBeforeLeave = (event: any) => {
 | 
	
		
			
				|  |  | -      console.log(event, typeof event);
 | 
	
		
			
				|  |  |        forms.messageCallBack = event;
 | 
	
		
			
				|  |  |        forms.messageOperation = {
 | 
	
		
			
				|  |  |          visiable: true,
 | 
	
	
		
			
				|  | @@ -466,6 +489,13 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          deep: true
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 全选
 | 
	
		
			
				|  |  | +    const chioseAll = (list: any) => {
 | 
	
		
			
				|  |  | +      forms.subjects = list.map((child: any) => {
 | 
	
		
			
				|  |  | +        return child.id;
 | 
	
		
			
				|  |  | +      }) as any;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |      return () => (
 | 
	
		
			
				|  |  |        <div class={styles.coursewareModal}>
 | 
	
		
			
				|  |  |          <div class={styles.btnGroup}>
 | 
	
	
		
			
				|  | @@ -496,6 +526,19 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  size="small"
 | 
	
		
			
				|  |  |                  v-model:value={forms.subjects}
 | 
	
		
			
				|  |  |                  clearable
 | 
	
		
			
				|  |  | +                v-slots={{
 | 
	
		
			
				|  |  | +                  action: () => (
 | 
	
		
			
				|  |  | +                    <>
 | 
	
		
			
				|  |  | +                      <NButton
 | 
	
		
			
				|  |  | +                        text
 | 
	
		
			
				|  |  | +                        style=" --n-width: 100% "
 | 
	
		
			
				|  |  | +                        size="small"
 | 
	
		
			
				|  |  | +                        onClick={() => chioseAll(prepareStore.getSubjectList)}>
 | 
	
		
			
				|  |  | +                        全选
 | 
	
		
			
				|  |  | +                      </NButton>
 | 
	
		
			
				|  |  | +                    </>
 | 
	
		
			
				|  |  | +                  )
 | 
	
		
			
				|  |  | +                }}
 | 
	
		
			
				|  |  |                />
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |              <div class={styles.btnItem}>
 | 
	
	
		
			
				|  | @@ -527,12 +570,24 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              <NButton
 | 
	
		
			
				|  |  |                type="error"
 | 
	
		
			
				|  |  |                onClick={() => {
 | 
	
		
			
				|  |  | -                emit('change', { status: false });
 | 
	
		
			
				|  |  | -                eventGlobal.emit('teacher-slideshow', false);
 | 
	
		
			
				|  |  | +                forms.messageOperation = {
 | 
	
		
			
				|  |  | +                  visiable: true,
 | 
	
		
			
				|  |  | +                  type: 'save',
 | 
	
		
			
				|  |  | +                  loading: false,
 | 
	
		
			
				|  |  | +                  contentDirection: 'center',
 | 
	
		
			
				|  |  | +                  title: '保存课件',
 | 
	
		
			
				|  |  | +                  content: '当前课件暂未保存,是否保存?',
 | 
	
		
			
				|  |  | +                  cancelButtonText: '不保存',
 | 
	
		
			
				|  |  | +                  confirmButtonText: '保存',
 | 
	
		
			
				|  |  | +                  index: 0
 | 
	
		
			
				|  |  | +                };
 | 
	
		
			
				|  |  |                }}>
 | 
	
		
			
				|  |  |                取消
 | 
	
		
			
				|  |  |              </NButton>
 | 
	
		
			
				|  |  | -            <NButton type="primary" onClick={onSubmit}>
 | 
	
		
			
				|  |  | +            <NButton
 | 
	
		
			
				|  |  | +              type="primary"
 | 
	
		
			
				|  |  | +              onClick={onSubmit}
 | 
	
		
			
				|  |  | +              disabled={forms.coursewareList.length <= 0}>
 | 
	
		
			
				|  |  |                保存课件
 | 
	
		
			
				|  |  |              </NButton>
 | 
	
		
			
				|  |  |              {/* <NButton
 | 
	
	
		
			
				|  | @@ -550,7 +605,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              <div class={[styles.listSection]}>
 | 
	
		
			
				|  |  |                {forms.coursewareList.map((item: any, index: number) => (
 | 
	
		
			
				|  |  |                  <div
 | 
	
		
			
				|  |  | -                  class={styles.listItems}
 | 
	
		
			
				|  |  | +                  class={[styles.listItems, 'row-group']}
 | 
	
		
			
				|  |  |                    onDragenter={(e: any) => {
 | 
	
		
			
				|  |  |                      e.preventDefault();
 | 
	
		
			
				|  |  |                    }}
 | 
	
	
		
			
				|  | @@ -603,7 +658,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                    <NSpace class={styles.operationGroup}>
 | 
	
		
			
				|  |  |                      {index > 0 && (
 | 
	
		
			
				|  |  | -                      <NTooltip>
 | 
	
		
			
				|  |  | +                      <NTooltip showArrow={false}>
 | 
	
		
			
				|  |  |                          {{
 | 
	
		
			
				|  |  |                            trigger: () => (
 | 
	
		
			
				|  |  |                              <i
 | 
	
	
		
			
				|  | @@ -615,7 +670,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                        </NTooltip>
 | 
	
		
			
				|  |  |                      )}
 | 
	
		
			
				|  |  |                      {forms.coursewareList.length > 1 && (
 | 
	
		
			
				|  |  | -                      <NTooltip>
 | 
	
		
			
				|  |  | +                      <NTooltip showArrow={false}>
 | 
	
		
			
				|  |  |                          {{
 | 
	
		
			
				|  |  |                            trigger: () => (
 | 
	
		
			
				|  |  |                              <i
 | 
	
	
		
			
				|  | @@ -626,12 +681,14 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                          }}
 | 
	
		
			
				|  |  |                        </NTooltip>
 | 
	
		
			
				|  |  |                      )}
 | 
	
		
			
				|  |  | -                    <NTooltip>
 | 
	
		
			
				|  |  | +                    <NTooltip showArrow={false}>
 | 
	
		
			
				|  |  |                        {{
 | 
	
		
			
				|  |  |                          trigger: () => (
 | 
	
		
			
				|  |  |                            <i
 | 
	
		
			
				|  |  |                              class={styles.iconCRemove}
 | 
	
		
			
				|  |  | -                            onClick={() => onChangePoint('remove', index)}></i>
 | 
	
		
			
				|  |  | +                            onClick={() =>
 | 
	
		
			
				|  |  | +                              onChangePoint('remove', index, item)
 | 
	
		
			
				|  |  | +                            }></i>
 | 
	
		
			
				|  |  |                          ),
 | 
	
		
			
				|  |  |                          default: () => '删除知识点'
 | 
	
		
			
				|  |  |                        }}
 | 
	
	
		
			
				|  | @@ -756,13 +813,19 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          </NScrollbar>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          {/* 弹窗查看 */}
 | 
	
		
			
				|  |  | -        <CardPreview v-model:show={forms.show} item={forms.item} />
 | 
	
		
			
				|  |  | +        <CardPreview
 | 
	
		
			
				|  |  | +          size={
 | 
	
		
			
				|  |  | +            ['INSTRUMENT', 'THEORY'].includes(forms.item.type) ? 'large' : ''
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          v-model:show={forms.show}
 | 
	
		
			
				|  |  | +          item={forms.item}
 | 
	
		
			
				|  |  | +        />
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          <NModal
 | 
	
		
			
				|  |  |            v-model:show={forms.addCoursewareVisiable}
 | 
	
		
			
				|  |  |            preset="card"
 | 
	
		
			
				|  |  |            class={['modalTitle', styles.addCourseware]}
 | 
	
		
			
				|  |  | -          title={'添加知识点'}>
 | 
	
		
			
				|  |  | +          title={'添加到知识点'}>
 | 
	
		
			
				|  |  |            <AddItemModel
 | 
	
		
			
				|  |  |              coursewareList={forms.coursewareList}
 | 
	
		
			
				|  |  |              onClose={() => (forms.addCoursewareVisiable = false)}
 | 
	
	
		
			
				|  | @@ -776,6 +839,8 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  forms.addCoursewareVisiable = false;
 | 
	
		
			
				|  |  | +              } else {
 | 
	
		
			
				|  |  | +                message.error('请选择需要添加的知识点');
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |              }}
 | 
	
		
			
				|  |  |            />
 | 
	
	
		
			
				|  | @@ -851,10 +916,10 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              onComfirm={item => {
 | 
	
		
			
				|  |  |                if (Array.isArray(item)) {
 | 
	
		
			
				|  |  |                  item.forEach((child: any) => {
 | 
	
		
			
				|  |  | -                  addItem({ ...child, index: forms.addOtherIndex });
 | 
	
		
			
				|  |  | +                  addCoursewareItem({ ...child, index: forms.addOtherIndex });
 | 
	
		
			
				|  |  |                  });
 | 
	
		
			
				|  |  |                } else {
 | 
	
		
			
				|  |  | -                addItem({ ...item, index: forms.addOtherIndex });
 | 
	
		
			
				|  |  | +                addCoursewareItem({ ...item, index: forms.addOtherIndex });
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |              }}
 | 
	
		
			
				|  |  |            />
 |