Browse Source

修改问题

lex 1 year ago
parent
commit
8ec81ab526
20 changed files with 153 additions and 57 deletions
  1. 14 1
      src/views/attend-class/component/rhythm-modal/index.tsx
  2. BIN
      src/views/attend-class/image/icon-class-name.png
  3. 2 2
      src/views/attend-class/index.module.less
  4. 9 3
      src/views/attend-class/index.tsx
  5. 27 1
      src/views/attend-class/model/source-list/index.module.less
  6. 11 0
      src/views/attend-class/model/source-list/index.tsx
  7. 4 1
      src/views/content-information/content-instrument/components/list/index.tsx
  8. 4 1
      src/views/prepare-lessons/components/directory-main/select-lessonware/index.tsx
  9. 7 4
      src/views/prepare-lessons/components/lesson-main/courseware-presets/index.tsx
  10. 54 26
      src/views/prepare-lessons/components/lesson-main/courseware/addCourseware.tsx
  11. 1 2
      src/views/prepare-lessons/components/lesson-main/index.tsx
  12. 2 3
      src/views/prepare-lessons/components/resource-main/components/resource-item/index.tsx
  13. 1 1
      src/views/prepare-lessons/index.tsx
  14. 6 3
      src/views/prepare-lessons/model/add-other-source/index.tsx
  15. 1 1
      src/views/prepare-lessons/model/select-resources/select-item/index.tsx
  16. 4 4
      src/views/prepare-lessons/model/select-resources/select-item/resource-search-group/index.tsx
  17. 4 1
      src/views/prepare-lessons/model/source-instrument/components/list/index.tsx
  18. 0 2
      src/views/prepare-lessons/model/source-instrument/detail.module.less
  19. 1 1
      src/views/prepare-lessons/model/source-knowledge/index.module.less
  20. 1 0
      src/views/prepare-lessons/model/source-music/components/list/index.tsx

+ 14 - 1
src/views/attend-class/component/rhythm-modal/index.tsx

@@ -1,4 +1,4 @@
-import { defineComponent, ref } from 'vue';
+import { defineComponent, ref, watch } from 'vue';
 import styles from './index.module.less';
 import { useUserStore } from '/src/store/modules/users';
 import { vaildMusicScoreUrl } from '/src/utils/urlUtils';
@@ -9,6 +9,10 @@ export default defineComponent({
     item: {
       type: Object,
       default: () => ({})
+    },
+    activeStatus: {
+      type: Boolean,
+      default: false
     }
   },
   emits: ['setIframe'],
@@ -28,6 +32,15 @@ export default defineComponent({
       }&Authorization=${userStore.getToken}&win=pc`;
     }
 
+    watch(
+      () => props.activeStatus,
+      () => {
+        if (!props.activeStatus) {
+          iframeRef.value.contentWindow?.postMessage({ api: 'resetPlay' }, '*');
+        }
+      }
+    );
+
     return () => (
       <div class={styles.musicScore}>
         <iframe

BIN
src/views/attend-class/image/icon-class-name.png


+ 2 - 2
src/views/attend-class/index.module.less

@@ -294,8 +294,8 @@
     .n-drawer-header {
       position: relative;
       justify-content: center !important;
-      padding-top: 24px !important;
-      padding-bottom: 20px !important;
+      padding-top: 20px !important;
+      padding-bottom: 17px !important;
       border-bottom: 0 !important;
 
       .n-drawer-header__main {

+ 9 - 3
src/views/attend-class/index.tsx

@@ -190,6 +190,7 @@ export default defineComponent({
       removeContent: '',
       removeCourseStatus: false, // 是否布置作业
 
+      teacherChapterName: '',
       selectResourceStatus: false,
       videoState: 'init' as 'init' | 'play',
       videoItemRef: null as any,
@@ -216,6 +217,7 @@ export default defineComponent({
           data.courseId
         );
 
+        data.teacherChapterName = res.data.name || '';
         const tempRows = res.data.chapterKnowledgeList || [];
         const temp: any = [];
         const allItem: any = [];
@@ -248,7 +250,6 @@ export default defineComponent({
           allItem.push(...childList);
         });
 
-        console.log(allItem, 'temp');
         data.knowledgePointList = temp;
         data.itemList = allItem?.map((m: any) => {
           return {
@@ -339,7 +340,7 @@ export default defineComponent({
       getDetail();
       getLessonCoursewareDetail();
       if (data.type === 'preview') {
-        rightList.splice(1, 1);
+        rightList.splice(6, 1);
       }
 
       rollCallStudentList();
@@ -1205,10 +1206,13 @@ export default defineComponent({
 
     // 右边栏操作
     const operateRightBtn = async (id: number) => {
+      if (id !== 8) {
+        handleStop();
+      }
+
       switch (id) {
         case 1:
           if (data.type === 'preview') {
-            handleStop();
             data.removeVisiable = true;
             data.removeTitle = '结束预览';
             data.removeContent = '请确认是否结束预览?';
@@ -1560,6 +1564,7 @@ export default defineComponent({
                       ) : m.type === 'RHYTHM' ? (
                         <RhythmModal
                           item={m}
+                          activeStatus={popupData.activeIndex === mIndex}
                           onSetIframe={(el: any) => {
                             m.iframeRef = el;
                           }}
@@ -1691,6 +1696,7 @@ export default defineComponent({
               ),
               default: () => (
                 <SourceList
+                  teacherChapterName={data.teacherChapterName}
                   knowledgePointList={data.knowledgePointList}
                   courseActiveIndex={popupData.courseActiveIndex}
                   activeItem={data.itemList[popupData.activeIndex]}

+ 27 - 1
src/views/attend-class/model/source-list/index.module.less

@@ -1,5 +1,31 @@
 .listSection {
-  padding: 20px;
+  padding: 17px 20px 20px;
+}
+
+.className {
+  display: flex;
+  align-items: center;
+  padding-bottom: 12px;
+
+  .classNameIcon {
+    display: inline-block;
+    flex-shrink: 0;
+    background: url('../../image/icon-class-name.png') center no-repeat;
+    background-size: contain;
+    margin-right: 5px;
+    width: 13px;
+    height: 18px;
+  }
+
+  .classNameContent {
+    font-weight: 600;
+    font-size: max(15px, 13Px);
+    color: #777777;
+    line-height: 21px;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+  }
 }
 
 .treeParent {

+ 11 - 0
src/views/attend-class/model/source-list/index.tsx

@@ -18,6 +18,10 @@ export default defineComponent({
     courseActiveIndex: {
       type: Number,
       default: 0
+    },
+    teacherChapterName: {
+      type: String,
+      default: ''
     }
   },
   emits: ['confirm'],
@@ -44,6 +48,13 @@ export default defineComponent({
     });
     return () => (
       <div class={[styles.listSection]} id="drawerCardRef">
+        {props.teacherChapterName && (
+          <div class={styles.className}>
+            <i class={styles.classNameIcon}></i>
+            <p class={styles.classNameContent}>{props.teacherChapterName}</p>
+          </div>
+        )}
+
         {props.knowledgePointList.map((item: any, index: number) => (
           <div class={styles.treeParent} key={'parent' + index}>
             <div

+ 4 - 1
src/views/content-information/content-instrument/components/list/index.tsx

@@ -108,7 +108,10 @@ export default defineComponent({
 
                     <div class={styles.itemImgSection}>
                       <NImage
-                        src={item.avatar}
+                        src={
+                          item.avatar +
+                          '?imageMogr2/strip/format/jpg/size-limit/15k!'
+                        }
                         class={styles.img}
                         objectFit="cover"
                         previewDisabled

+ 4 - 1
src/views/prepare-lessons/components/directory-main/select-lessonware/index.tsx

@@ -120,7 +120,10 @@ export default defineComponent({
                 throttledFn();
               }
             }}
-            onClear={() => throttledFn()}>
+            onClear={() => {
+              forms.keyword = null;
+              throttledFn();
+            }}>
             {{
               prefix: () => (
                 <span

+ 7 - 4
src/views/prepare-lessons/components/lesson-main/courseware-presets/index.tsx

@@ -237,9 +237,11 @@ export default defineComponent({
         }
         if (subjectId && index >= 0) {
           prepareStore.setSubjectId(subjectId);
+          // forms.subjectId = subjectId;
         } else {
           // 判断是否有缓存
           prepareStore.setSubjectId(subjectList[0].id);
+          // forms.subjectId = subjectList[0].id;
         }
 
         // 保存
@@ -252,8 +254,10 @@ export default defineComponent({
 
     onMounted(async () => {
       prepareStore.setClassGroupId(route.query.classGroupId as any);
-      // 获取教材分类列表
-      checkSubjectIds();
+      if (!prepareStore.getSubjectId) {
+        // 获取教材分类列表
+        checkSubjectIds();
+      }
 
       // useResizeObserver(
       //   document.querySelector('#coursewarePresets') as HTMLElement,
@@ -352,7 +356,6 @@ export default defineComponent({
     };
 
     const onStartClass = async (item: any, classGroupId: any) => {
-      console.log(item, classGroupId);
       if (classGroupId) {
         // 开始上课
         const res = await courseScheduleStart({
@@ -428,7 +431,7 @@ export default defineComponent({
               ]}
               labelField="name"
               valueField="id"
-              v-model:value={forms.subjectId}
+              value={prepareStore.getSubjectId}
               onUpdate:value={(val: any) => {
                 prepareStore.setSubjectId(val);
                 // 保存

+ 54 - 26
src/views/prepare-lessons/components/lesson-main/courseware/addCourseware.tsx

@@ -49,6 +49,7 @@ import { eventGlobal } from '/src/utils';
 import TheMessageDialog from '/src/components/TheMessageDialog';
 import AddItemModel from '../../../model/add-item-model';
 import AddOtherSource from '../../../model/add-other-source';
+import deepClone from '/src/helpers/deep-clone';
 export default defineComponent({
   name: 'courseware-modal',
   props: {
@@ -71,6 +72,13 @@ export default defineComponent({
       openFlagEnable: true, // 是否支持修改公开状态
       name: '',
       openFlag: false,
+      baseCoursewareList: [
+        {
+          name: '',
+          id: null,
+          list: [] as any
+        }
+      ] as any, // 基础数据
       coursewareList: [
         {
           name: '',
@@ -156,6 +164,7 @@ export default defineComponent({
           });
         });
         forms.coursewareList = temp;
+        forms.baseCoursewareList = deepClone(temp);
       } catch (e) {
         //
         console.log(e);
@@ -448,18 +457,29 @@ export default defineComponent({
 
     // 当页面离开时
     const onPageBeforeLeave = (event: any) => {
-      forms.messageCallBack = event;
-      forms.messageOperation = {
-        visiable: true,
-        type: 'pageLive',
-        loading: false,
-        contentDirection: 'center',
-        title: '保存课件',
-        content: '当前课件暂未保存,是否保存?',
-        cancelButtonText: '不保存',
-        confirmButtonText: '保存',
-        index: 0
-      };
+      const objA = JSON.stringify(forms.coursewareList);
+      const objB = JSON.stringify(forms.baseCoursewareList);
+      if (objA === objB) {
+        if (typeof event === 'function') {
+          event();
+
+          emit('change', { status: false });
+          eventGlobal.emit('teacher-slideshow', false);
+        }
+      } else {
+        forms.messageCallBack = event;
+        forms.messageOperation = {
+          visiable: true,
+          type: 'pageLive',
+          loading: false,
+          contentDirection: 'center',
+          title: '保存课件',
+          content: '当前课件暂未保存,是否保存?',
+          cancelButtonText: '不保存',
+          confirmButtonText: '保存',
+          index: 0
+        };
+      }
     };
     onMounted(async () => {
       await getList();
@@ -471,6 +491,7 @@ export default defineComponent({
 
     onUnmounted(() => {
       eventGlobal.off('onPrepareAddItem', addItem);
+      eventGlobal.off('pageBeforeLeave', onPageBeforeLeave);
     });
 
     // 当列表数据更新时同步缓存数据
@@ -564,17 +585,24 @@ export default defineComponent({
             <NButton
               type="error"
               onClick={() => {
-                forms.messageOperation = {
-                  visiable: true,
-                  type: 'save',
-                  loading: false,
-                  contentDirection: 'center',
-                  title: '保存课件',
-                  content: '当前课件暂未保存,是否保存?',
-                  cancelButtonText: '不保存',
-                  confirmButtonText: '保存',
-                  index: 0
-                };
+                const objA = JSON.stringify(forms.coursewareList);
+                const objB = JSON.stringify(forms.baseCoursewareList);
+                if (objA === objB) {
+                  emit('change', { status: false });
+                  eventGlobal.emit('teacher-slideshow', false);
+                } else {
+                  forms.messageOperation = {
+                    visiable: true,
+                    type: 'save',
+                    loading: false,
+                    contentDirection: 'center',
+                    title: '保存课件',
+                    content: '当前课件暂未保存,是否保存?',
+                    cancelButtonText: '不保存',
+                    confirmButtonText: '保存',
+                    index: 0
+                  };
+                }
               }}>
               取消
             </NButton>
@@ -809,7 +837,9 @@ export default defineComponent({
         {/* 弹窗查看 */}
         <CardPreview
           size={
-            ['INSTRUMENT', 'THEORY', 'MUSIC_WIKI'].includes(forms.item.type)
+            ['INSTRUMENT', 'THEORY', 'MUSIC_WIKI', 'MUSICIAN'].includes(
+              forms.item.type
+            )
               ? 'large'
               : ''
           }
@@ -917,8 +947,6 @@ export default defineComponent({
               } else {
                 addCoursewareItem({ ...item, index: forms.addOtherIndex });
               }
-
-              console.log(forms.coursewareList, 'courseware');
             }}
           />
         </NModal>

+ 1 - 2
src/views/prepare-lessons/components/lesson-main/index.tsx

@@ -66,9 +66,7 @@ export default defineComponent({
                   groupItem={state.editCourseware}
                   onChange={(val: any) => {
                     state.editCoursewareShow = val.status;
-                    state.coursewareType = val.type;
                     prepareStore.setIsEditResource(val.status);
-
                     if (!val.status) {
                       eventGlobal.emit('teacher-slideshow', false);
                     }
@@ -77,6 +75,7 @@ export default defineComponent({
               ) : (
                 <CoursewarePresets
                   onChange={(val: any) => {
+                    state.coursewareType = val.type;
                     state.editCoursewareShow = val.status;
                     prepareStore.setIsEditResource(val.status);
                     state.editCourseware = val.groupItem;

+ 2 - 3
src/views/prepare-lessons/components/resource-main/components/resource-item/index.tsx

@@ -6,7 +6,7 @@ import CardType from '/src/components/card-type';
 import { favorite, materialQueryPage } from '/src/views/natural-resources/api';
 import TheEmpty from '/src/components/TheEmpty';
 import { usePrepareStore } from '/src/store/modules/prepareLessons';
-import { useDebounceFn, useThrottleFn } from '@vueuse/core';
+import { useDebounceFn, useThrottleFn, useThrottle } from '@vueuse/core';
 import { saveCourseware } from '/src/views/prepare-lessons/api';
 import CardPreview from '/src/components/card-preview';
 import { eventGlobal } from '/src/utils';
@@ -184,7 +184,6 @@ export default defineComponent({
           type={props.type}
           onSearch={(item: any) => {
             state.searchGroup = Object.assign(state.searchGroup, item);
-            console.log('111');
             throttledFnSearch(item);
           }}
         />
@@ -192,7 +191,7 @@ export default defineComponent({
           class={[
             styles.listContainer,
             state.searchGroup.type !== 'MUSIC' ||
-            ['myResources', 'myCollect'].includes(props.type)
+            ['myResources', 'myCollect', 'relateResources'].includes(props.type)
               ? styles.listNoMusic
               : ''
           ]}

+ 1 - 1
src/views/prepare-lessons/index.tsx

@@ -123,7 +123,7 @@ export default defineComponent({
         </div>
         {/* 资源 */}
         <div class={[styles.resourceMain]} id="lessons-1">
-          <ResourceMain ref={resourceMainRef} />
+          {state.sidebarShow && <ResourceMain ref={resourceMainRef} />}
         </div>
         {showGuide.value ? <LessonsGuide></LessonsGuide> : null}
       </div>

+ 6 - 3
src/views/prepare-lessons/model/add-other-source/index.tsx

@@ -14,6 +14,7 @@ import SourceInstrument from '../source-instrument';
 import SourceKnowledge from '../source-knowledge';
 import SourceMusician from '../source-musician';
 import SourceMusic from '../source-music';
+import { eventGlobal } from '/src/utils';
 
 export default defineComponent({
   name: 'add-other-source',
@@ -85,9 +86,11 @@ export default defineComponent({
           state.theoryStatus = true;
           break;
         case 6:
-          // 直接跳转到制谱页面 (临时存储数据)
-          sessionStorage.setItem('notation-open-create', '1');
-          router.push('/notation');
+          eventGlobal.emit('pageBeforeLeave', () => {
+            // 直接跳转到制谱页面 (临时存储数据)
+            sessionStorage.setItem('notation-open-create', '1');
+            router.push('/notation');
+          });
           break;
         default:
           break;

+ 1 - 1
src/views/prepare-lessons/model/select-resources/select-item/index.tsx

@@ -222,7 +222,7 @@ export default defineComponent({
                     <div class={styles.itemWrap}>
                       <div class={styles.itemWrapBox}>
                         <CardType
-                          isShowAdd
+                          isShowAdd={props.from === 'class' ? false : true}
                           item={item}
                           isShowCollect={true}
                           // isShowAddDisabled={!prepareStore.getIsEditResource}

+ 4 - 4
src/views/prepare-lessons/model/select-resources/select-item/resource-search-group/index.tsx

@@ -135,10 +135,10 @@ export default defineComponent({
       // 获取声部
       await catchStore.getSubjects();
 
-      console.log(
-        catchStore.getSubjectInstruments,
-        'catchStore.getSubjectInstruments'
-      );
+      // console.log(
+      //   catchStore.getSubjectInstruments,
+      //   'catchStore.getSubjectInstruments'
+      // );
       // catchStore.getSubjectInstruments.forEach((item: any) => {
       //   if (item.id == props.subjectId && Array.isArray(item.instruments)) {
       //     if (item.instruments.length > 0) {

+ 4 - 1
src/views/prepare-lessons/model/source-instrument/components/list/index.tsx

@@ -156,7 +156,10 @@ export default defineComponent({
                           ) !== -1 && styles.itemImgSectionSelected
                         ]}>
                         <NImage
-                          src={item.avatar}
+                          src={
+                            item.avatar +
+                            '?imageMogr2/strip/format/jpg/size-limit/15k!'
+                          }
                           class={styles.img}
                           objectFit="cover"
                           previewDisabled

+ 0 - 2
src/views/prepare-lessons/model/source-instrument/detail.module.less

@@ -41,9 +41,7 @@
 
   &.wrapBottom {
     padding-bottom: 128px;
-
   }
-
 }
 
 .content {

+ 1 - 1
src/views/prepare-lessons/model/source-knowledge/index.module.less

@@ -22,7 +22,7 @@
 .containerDetail {
   display: flex;
   flex-direction: column;
-  height: 650px;
+  height: 75vh;
   // background: #F1F5FF;
   border-radius: 0 0 12Px 12Px;
   padding-left: 27px;

+ 1 - 0
src/views/prepare-lessons/model/source-music/components/list/index.tsx

@@ -67,6 +67,7 @@ export default defineComponent({
 
     const onSearch = async (item: any) => {
       state.pagination.page = 1;
+      state.tableList = [];
       const { wikiCategoryIdChild, wikiCategoryId, keyword } = item;
       state.searchGroup = Object.assign(state.searchGroup, {
         wikiCategoryId: wikiCategoryIdChild || wikiCategoryId,