Browse Source

更新打包

lex 1 year ago
parent
commit
c2f7e8a4b3

+ 20 - 9
src/views/attend-class/component/musicScore.module.less

@@ -4,6 +4,7 @@
   height: 100%;
   -webkit-overflow-scrolling: touch;
   overflow: scroll;
+
   .container {
     position: relative;
     display: block;
@@ -12,6 +13,7 @@
     height: 100%;
     z-index: 10;
   }
+
   .musicModel {
     position: absolute;
     left: 0;
@@ -20,6 +22,7 @@
     bottom: 0;
   }
 }
+
 .errorModel {
   position: absolute;
   left: 0;
@@ -33,23 +36,26 @@
   overflow: hidden;
 }
 
-.startBtn{
+.startBtn {
   position: absolute;
   left: 50%;
   bottom: 6vh;
   transform: translateX(-50%);
   z-index: 11;
-  &:active{
+
+  &:active {
     opacity: .8;
   }
 }
-.loading{
+
+.loading {
   position: absolute;
   left: 4%;
   top: 50%;
   margin-top: -15Px;
 }
-.skeletonWrap{
+
+.skeletonWrap {
   position: absolute;
   left: 0;
   top: 0;
@@ -63,18 +69,23 @@
   overflow: hidden;
   background: #fff;
   pointer-events: none;
+  font-size: 40px;
 }
+
 .skeleton {
   --van-skeleton-paragraph-height: 24px;
-  :global{
-    .van-skeleton__content{
-      .van-skeleton-paragraph{
+
+  :global {
+    .van-skeleton__content {
+      .van-skeleton-paragraph {
         margin: 12px auto;
         width: 80% !important;
-        &:first-child{
+
+        &:first-child {
           width: 60% !important;
         }
-        &:last-child{
+
+        &:last-child {
           width: 100% !important;
         }
       }

+ 7 - 3
src/views/attend-class/component/musicScore.tsx

@@ -92,9 +92,13 @@ export default defineComponent({
           class={[styles.container, 'musicIframe']}
           frameborder="0"
           src={src}></iframe>
-        <div class={styles.skeletonWrap}>
-          <NSkeleton text repeat={8} />
-        </div>
+        {isLoaded.value && (
+          <div class={styles.skeletonWrap}>
+            <div>
+              <NSkeleton text repeat={8} />
+            </div>
+          </div>
+        )}
       </div>
     );
   }

+ 5 - 5
src/views/attend-class/image/icon-assignHomework.svg

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<svg width="187px" height="60px" viewBox="0 0 187 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <title>切片</title>
+<svg width="189px" height="66px" viewBox="0 0 189 66" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>布置作业@3x</title>
     <defs>
         <linearGradient x1="1.51267887e-13%" y1="15.1852058%" x2="100%" y2="70.279218%" id="linearGradient-1">
             <stop stop-color="#88E1FF" offset="0%"></stop>
@@ -36,9 +36,9 @@
             </feMerge>
         </filter>
     </defs>
-    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <g id="50、上课页面" transform="translate(-40.000000, -40.000000)">
-            <g id="布置作业" transform="translate(40.000000, 40.000000)">
+    <g id="所有页面" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="50、上课页面" transform="translate(-38.000000, -40.000000)">
+            <g id="编组" transform="translate(40.000000, 40.000000)">
                 <g id="编组-11备份-2">
                     <rect id="矩形" fill="#DCEDFF" x="20" y="6" width="167" height="48" rx="24"></rect>
                     <g id="椭圆形">

+ 60 - 0
src/views/attend-class/image/icon-over-preview.svg

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="189px" height="66px" viewBox="0 0 189 66" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>编组 11备份 2@3x</title>
+    <defs>
+        <linearGradient x1="1.51267887e-13%" y1="15.1852058%" x2="100%" y2="70.279218%" id="linearGradient-1">
+            <stop stop-color="#88E1FF" offset="0%"></stop>
+            <stop stop-color="#2C8DFF" offset="100%"></stop>
+        </linearGradient>
+        <circle id="path-2" cx="30" cy="30" r="30"></circle>
+        <filter x="-8.3%" y="-5.0%" width="116.7%" height="120.0%" filterUnits="objectBoundingBox" id="filter-3">
+            <feOffset dx="0" dy="4" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+            <feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+            <feColorMatrix values="0 0 0 0 0.43649793   0 0 0 0 0.550193556   0 0 0 0 0.741508152  0 0 0 0.273082386 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+        </filter>
+        <filter x="-10.0%" y="-6.7%" width="120.0%" height="123.3%" filterUnits="objectBoundingBox" id="filter-4">
+            <feGaussianBlur stdDeviation="3" in="SourceAlpha" result="shadowBlurInner1"></feGaussianBlur>
+            <feOffset dx="0" dy="2" in="shadowBlurInner1" result="shadowOffsetInner1"></feOffset>
+            <feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
+            <feColorMatrix values="0 0 0 0 1   0 0 0 0 1   0 0 0 0 1  0 0 0 0.5 0" type="matrix" in="shadowInnerInner1" result="shadowMatrixInner1"></feColorMatrix>
+            <feGaussianBlur stdDeviation="1" in="SourceAlpha" result="shadowBlurInner2"></feGaussianBlur>
+            <feOffset dx="-2" dy="-6" in="shadowBlurInner2" result="shadowOffsetInner2"></feOffset>
+            <feComposite in="shadowOffsetInner2" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner2"></feComposite>
+            <feColorMatrix values="0 0 0 0 0.108247927   0 0 0 0 0.476908508   0 0 0 0 0.983016304  0 0 0 0.462194056 0" type="matrix" in="shadowInnerInner2" result="shadowMatrixInner2"></feColorMatrix>
+            <feMerge>
+                <feMergeNode in="shadowMatrixInner1"></feMergeNode>
+                <feMergeNode in="shadowMatrixInner2"></feMergeNode>
+            </feMerge>
+        </filter>
+        <filter x="-117.2%" y="-101.6%" width="334.5%" height="307.8%" filterUnits="objectBoundingBox" id="filter-5">
+            <feOffset dx="2" dy="5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+            <feGaussianBlur stdDeviation="4.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+            <feColorMatrix values="0 0 0 0 0.127134146   0 0 0 0 0.509284371   0 0 0 0 1  0 0 0 1 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
+            <feMerge>
+                <feMergeNode in="shadowMatrixOuter1"></feMergeNode>
+                <feMergeNode in="SourceGraphic"></feMergeNode>
+            </feMerge>
+        </filter>
+    </defs>
+    <g id="所有页面" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="50、上课页面" transform="translate(-38.000000, -127.000000)">
+            <g id="编组" transform="translate(40.000000, 127.000000)">
+                <rect id="矩形" fill="#DCEDFF" x="20" y="6" width="167" height="48" rx="24"></rect>
+                <g id="编组-11备份">
+                    <g id="椭圆形">
+                        <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+                        <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+                        <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-2"></use>
+                    </g>
+                    <g id="退出登录备份-6" filter="url(#filter-5)" transform="translate(17.571429, 15.428571)" stroke="#FFFFFF">
+                        <path d="M5.52454054,4.82083848 C2.19331263,7.03497524 0,10.8059734 0,15.0857143 C0,21.9024861 5.56446097,27.4285714 12.4285714,27.4285714 C19.2926819,27.4285714 24.8571429,21.9024861 24.8571429,15.0857143 C24.8571429,10.8064363 22.6643046,7.03579094 19.3336831,4.82155693" id="路径" stroke-width="4.28571429" stroke-linecap="round"></path>
+                        <rect id="矩形" stroke-width="0.857142857" fill="#FFFFFF" x="10.6190476" y="-0.428571429" width="3.61904762" height="17.3142857" rx="1.80952381"></rect>
+                    </g>
+                </g>
+                <text id="结束预览" font-family="STYuanti-SC-Bold, Yuanti SC" font-size="24" font-weight="bold" letter-spacing="0.857142857" fill="#0378EC">
+                    <tspan x="70" y="38">结束预览</tspan>
+                </text>
+            </g>
+        </g>
+    </g>
+</svg>

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

@@ -13,7 +13,7 @@
   top: 40px;
   left: 40px;
   width: 187px;
-  height: 60px;
+  height: 65px;
   cursor: pointer;
   transition: all 0.5s;
 

+ 83 - 119
src/views/attend-class/index.tsx

@@ -4,7 +4,6 @@ import {
   reactive,
   onUnmounted,
   ref,
-  watch,
   Transition
 } from 'vue';
 import styles from './index.module.less';
@@ -16,9 +15,9 @@ import iconDown from './image/icon-down.svg';
 import iconNote from './image/icon-note.png';
 import iconWhiteboard from './image/icon-whiteboard.png';
 import iconAssignHomework from './image/icon-assignHomework.svg';
+import iconOverPreivew from './image/icon-over-preview.svg';
 import { Vue3Lottie } from 'vue3-lottie';
 import playLoadData from './datas/data.json';
-import { usePageVisibility } from '@vant/use';
 import VideoPlay from './component/video-play';
 import {
   useMessage,
@@ -33,6 +32,8 @@ import CardType from '@/components/card-type';
 import Pen from './component/tools/pen';
 import AudioPay from './component/audio-pay';
 import TrainSettings from './model/train-settings';
+import { useRoute } from 'vue-router';
+import { queryCourseware } from '../prepare-lessons/api';
 
 export type ToolType = 'init' | 'pen' | 'whiteboard';
 export type ToolItem = {
@@ -45,6 +46,7 @@ export default defineComponent({
   name: 'CoursewarePlay',
   setup() {
     const message = useMessage();
+    const route = useRoute();
     /** 设置播放容器 16:9 */
     const parentContainer = reactive({
       width: '100vw'
@@ -70,96 +72,69 @@ export default defineComponent({
     });
 
     const data = reactive({
-      detail: null,
+      type: '' as any, // 预览类型
+      subjectId: '' as any, // 声部编号
+      detailId: '' as any, // 编号 - 章节编号
+      // detail: null,
       knowledgePointList: [] as any,
       itemList: [] as any,
-      showHead: true,
-      isCourse: false,
-      isRecordPlay: false,
+      // showHead: true,
+      // isCourse: false,
+      // isRecordPlay: false,
       videoRefs: {} as any[],
       audioRefs: {} as any[],
       modelAttendStatus: false, // 布置作业提示弹窗
       modelTrainStatus: false // 训练设置
     });
     const activeData = reactive({
-      isAutoPlay: false, // 是否自动播放
+      // isAutoPlay: false, // 是否自动播放
       nowTime: 0,
       model: true, // 遮罩
       isAnimation: true, // 是否动画
-      videoBtns: true, // 视频
-      currentTime: 0,
-      duration: 0,
+      // videoBtns: true, // 视频
+      // currentTime: 0,
+      // duration: 0,
       timer: null as any,
       item: null as any
     });
-    // const getTempList = async (materialList: any, name: any) => {
-    //   const list: any = [];
-    //   const browserInfo = browser();
-    //   for (let j = 0; j < materialList.length; j++) {
-    //     const material = materialList[j];
-
-    //     list.push({
-    //       ...material,
-    //       iframeRef: null,
-    //       videoEle: null,
-    //       tabName: name,
-    //       autoPlay: false, //加载完成是否自动播放
-    //       isprepare: false, // 视频是否加载完成
-    //       isRender: false // 是否渲染了
-    //     });
-    //   }
-    //   return list;
-    // };
     const getDetail = async () => {
-      data.knowledgePointList = [
-        {
-          id: '1',
-          name: '其多列',
-          title: '其多列',
-          type: 'VIDEO',
-          content:
-            'https://gyt.ks3-cn-beijing.ksyuncs.com/courseware/1687844560120.mp4',
-          url: 'https://gyt.ks3-cn-beijing.ksyuncs.com/courseware/1687844640957.png'
-        },
-        {
-          id: '5',
-          name: '歌曲表演 大鹿',
-          title: '歌曲表演 大鹿',
-          type: 'SONG',
-          content:
-            'https://cloud-coach.ks3-cn-beijing.ksyuncs.com/1686819360752.mp3',
-          url: 'https://gyt.ks3-cn-beijing.ksyuncs.com/courseware/1687916228530.png'
-        },
-        // https://gyt.ks3-cn-beijing.ksyuncs.com/courseware/1687915984210.png
-        {
-          id: '2',
-          name: '其多列',
-          title: '其多列',
-          type: 'IMG',
-          content:
-            'https://gyt.ks3-cn-beijing.ksyuncs.com/courseware/1688007481564.jpg',
-          url: 'https://gyt.ks3-cn-beijing.ksyuncs.com/courseware/1688007481564.jpg'
-        },
-        {
-          id: '4',
-          name: '歌曲 其多列',
-          title: '其多列',
-          type: 'MUSIC',
-          content: '43541',
-          url: 'https://cloud-coach.ks3-cn-beijing.ksyuncs.com/music-sheet-first/1687847690372-1.png'
-        }
-      ];
-      data.itemList = data.knowledgePointList.map((m: any) => {
-        return {
-          ...m,
-          iframeRef: null,
-          videoEle: null,
-          audioEle: null,
-          autoPlay: false, //加载完成是否自动播放
-          isprepare: false, // 视频是否加载完成
-          isRender: false // 是否渲染了
-        };
-      });
+      try {
+        const res = await queryCourseware({
+          coursewareDetailKnowledgeId: data.detailId,
+          subjectId: data.subjectId,
+          pag: 1,
+          rows: 99
+        });
+        const tempRows = res.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
+          });
+        });
+        console.log(temp);
+        data.knowledgePointList = temp;
+        data.itemList = data.knowledgePointList.map((m: any) => {
+          return {
+            ...m,
+            iframeRef: null,
+            videoEle: null,
+            audioEle: null,
+            autoPlay: false, //加载完成是否自动播放
+            isprepare: false, // 视频是否加载完成
+            isRender: false // 是否渲染了
+          };
+        });
+      } catch {
+        //
+      }
     };
 
     // ifram事件处理
@@ -171,28 +146,17 @@ export default defineComponent({
     };
 
     onMounted(() => {
+      const query = route.query;
+      data.type = query.type;
+      data.subjectId = query.subjectId;
+      data.detailId = query.detailId;
+      window.addEventListener('message', iframeHandle);
       getDetail();
     });
 
-    // const playRef = ref();
-    // 返回
-    // const goback = () => {
-    //   try {
-    //     playRef.value?.handleOut();
-    //   } catch {
-    //     //
-    //   }
-    //   postMessage({ api: 'goBack' });
-    // };
-
     const popupData = reactive({
       open: false,
       activeIndex: 0,
-      // tabActive: '',
-      // tabName: '',
-      // itemActive: '',
-      // itemName: ''
-      // guideOpen: false,
       toolOpen: false // 工具弹窗控制
     });
 
@@ -245,13 +209,17 @@ export default defineComponent({
       clearTimeout(activeData.timer);
       message.destroyAll();
       activeData.model = false;
-      Object.values(data.videoRefs).map((n: any) => n.toggleHideControl(false));
-      Object.values(data.audioRefs).map((n: any) => n.toggleHideControl(false));
+      Object.values(data.videoRefs).map((n: any) =>
+        n?.toggleHideControl(false)
+      );
+      Object.values(data.audioRefs).map((n: any) =>
+        n?.toggleHideControl(false)
+      );
     };
     const toggleModel = (type = true) => {
       activeData.model = type;
-      Object.values(data.videoRefs).map((n: any) => n.toggleHideControl(type));
-      Object.values(data.audioRefs).map((n: any) => n.toggleHideControl(type));
+      Object.values(data.videoRefs).map((n: any) => n?.toggleHideControl(type));
+      Object.values(data.audioRefs).map((n: any) => n?.toggleHideControl(type));
     };
 
     // 双击
@@ -271,15 +239,15 @@ export default defineComponent({
     };
 
     // 切换播放
-    const togglePlay = (m: any, isPlay: boolean) => {
-      if (isPlay) {
-        m.videoEle?.play();
-      } else {
-        m.videoEle?.pause();
-      }
-    };
+    // const togglePlay = (m: any, isPlay: boolean) => {
+    //   if (isPlay) {
+    //     m.videoEle?.play();
+    //   } else {
+    //     m.videoEle?.pause();
+    //   }
+    // };
 
-    const showIndex = ref(-4);
+    // const showIndex = ref(-4);
     const effectIndex = ref(3);
     const effects = [
       {
@@ -485,18 +453,6 @@ export default defineComponent({
       toggleModel();
     };
 
-    onMounted(() => {
-      window.addEventListener('message', iframeHandle);
-
-      // window.onbeforeunload = e => {
-      //   console.log(e, 'e');
-      //   if (e) {
-      //     e.returnValue = '关闭提示';
-      //   }
-      //   return false;
-      // };
-    });
-
     return () => (
       <div id="playContent" class={styles.playContent}>
         <div
@@ -709,8 +665,16 @@ export default defineComponent({
             styles.assignHomework,
             activeData.model ? '' : styles.sectionAnimateUp
           ]}
-          onClick={() => (data.modelAttendStatus = true)}>
-          <img src={iconAssignHomework} />
+          onClick={() => {
+            if (data.type === 'preview') {
+              window.close();
+            } else {
+              data.modelAttendStatus = true;
+            }
+          }}>
+          <img
+            src={data.type === 'preview' ? iconOverPreivew : iconAssignHomework}
+          />
         </div>
 
         {/* 白板 批注 */}

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

@@ -116,7 +116,8 @@ export default defineComponent({
               temp.push({
                 materialName: item.title,
                 materialType: item.type,
-                materialId: item.id
+                materialId: item.materialId,
+                id: item.id
               });
             });
             // 保存课件