浏览代码

添加视频播放页面

lex 10 月之前
父节点
当前提交
355c08491c
共有 34 个文件被更改,包括 96 次插入18 次删除
  1. 6 6
      src/router/index.ts
  2. 0 0
      src/views/choose-homework/classify/index.module.less
  3. 0 0
      src/views/choose-homework/classify/index.tsx
  4. 15 3
      src/views/choose-homework/classroom-detail/child-node.tsx
  5. 0 0
      src/views/choose-homework/classroom-detail/image/icon-arrow-down.png
  6. 0 0
      src/views/choose-homework/classroom-detail/image/icon-arrow.png
  7. 0 0
      src/views/choose-homework/classroom-detail/image/icon-cache-point.png
  8. 0 0
      src/views/choose-homework/classroom-detail/image/icon-check-disabled.png
  9. 0 0
      src/views/choose-homework/classroom-detail/image/icon-check.png
  10. 0 0
      src/views/choose-homework/classroom-detail/image/icon-close.png
  11. 0 0
      src/views/choose-homework/classroom-detail/image/icon-course-lock.png
  12. 0 0
      src/views/choose-homework/classroom-detail/image/icon-course.png
  13. 0 0
      src/views/choose-homework/classroom-detail/image/icon-imm.png
  14. 0 0
      src/views/choose-homework/classroom-detail/image/icon-list.png
  15. 0 0
      src/views/choose-homework/classroom-detail/image/icon-nocheck.png
  16. 0 0
      src/views/choose-homework/classroom-detail/image/icon-question.png
  17. 0 0
      src/views/choose-homework/classroom-detail/image/iconTip.png
  18. 0 0
      src/views/choose-homework/classroom-detail/image/look.svg
  19. 0 0
      src/views/choose-homework/classroom-detail/index.module.less
  20. 64 6
      src/views/choose-homework/classroom-detail/index.tsx
  21. 0 0
      src/views/choose-homework/images/banner-bg.png
  22. 8 1
      src/views/choose-homework/index.module.less
  23. 2 1
      src/views/choose-homework/index.tsx
  24. 0 0
      src/views/choose-homework/music-list/icons/icon_search.png
  25. 0 0
      src/views/choose-homework/music-list/icons/music.png
  26. 0 0
      src/views/choose-homework/music-list/icons/recording.svg
  27. 0 0
      src/views/choose-homework/music-list/icons/tips.png
  28. 0 0
      src/views/choose-homework/music-list/icons/vip.png
  29. 0 0
      src/views/choose-homework/music-list/index.module.less
  30. 0 0
      src/views/choose-homework/music-list/index.tsx
  31. 0 0
      src/views/choose-homework/music-list/modals/choosePartName/index-rem.module.less
  32. 0 0
      src/views/choose-homework/music-list/modals/choosePartName/index.module.less
  33. 1 1
      src/views/choose-homework/music-list/modals/choosePartName/index.tsx
  34. 0 0
      src/views/choose-homework/pageState.tsx

+ 6 - 6
src/router/index.ts

@@ -32,9 +32,9 @@ const router: Router = createRouter({
           }
         },
         {
-          path: '/chooise-homework',
-          name: 'chooise-homework',
-          component: () => import('@/views/chooise-homework'),
+          path: '/choose-homework',
+          name: 'choose-homework',
+          component: () => import('@/views/choose-homework'),
           meta: {
             title: '选择练习内容'
           }
@@ -42,21 +42,21 @@ const router: Router = createRouter({
         {
           path: '/classify',
           name: 'classify',
-          component: () => import('@/views/chooise-homework/classify'),
+          component: () => import('@/views/choose-homework/classify'),
           meta: {
             title: '声部云练'
           }
         },
         {
           path: '/music-list/:id',
-          component: () => import('@/views/chooise-homework/music-list'),
+          component: () => import('@/views/choose-homework/music-list'),
           meta: {
             title: '声部云练'
           }
         },
         {
           path: '/classroom-detail',
-          component: () => import('@/views/chooise-homework/classroom-detail'),
+          component: () => import('@/views/choose-homework/classroom-detail'),
           meta: {
             title: '教材详情'
           }

+ 0 - 0
src/views/chooise-homework/classify/index.module.less → src/views/choose-homework/classify/index.module.less


+ 0 - 0
src/views/chooise-homework/classify/index.tsx → src/views/choose-homework/classify/index.tsx


+ 15 - 3
src/views/chooise-homework/classroom-detail/child-node.tsx → src/views/choose-homework/classroom-detail/child-node.tsx

@@ -44,13 +44,18 @@ export const onMenuChange = (item: any, status?: string) => {
 };
 
 export const onParentChangeStatus = (parent: any, childName = 'children') => {
-  let arrLength = 0;
-  let checkedLength = 0;
-  let indeterminateLength = 0;
+  let allArrLength = 0; // 所有子元素包含禁用的
+  let arrLength = 0; // 所有子元素不包含禁用的
+  let disabledLength = 0; // 禁用数量
+  let checkedLength = 0; // 所有选中的数量
+  let indeterminateLength = 0; // 所有半选数量
   if (parent.materialList && parent.materialList.length > 0) {
     parent.materialList.forEach((item: any) => {
+      allArrLength += 1;
       if (item.status !== 'disabled') {
         arrLength += 1;
+      } else {
+        disabledLength += 1;
       }
 
       if (item.status === 'checked') {
@@ -60,8 +65,11 @@ export const onParentChangeStatus = (parent: any, childName = 'children') => {
   }
   if (Array.isArray(parent[childName])) {
     parent[childName].forEach((item: any) => {
+      allArrLength += 1;
       if (item.status !== 'disabled') {
         arrLength += 1;
+      } else {
+        disabledLength += 1;
       }
 
       if (item.status === 'checked') {
@@ -85,6 +93,10 @@ export const onParentChangeStatus = (parent: any, childName = 'children') => {
   if (indeterminateLength > 0) {
     parent.status = 'indeterminate';
   }
+  // 判断是在所有子元素都禁用了
+  if (allArrLength === disabledLength) {
+    parent.status = 'disabled';
+  }
 };
 
 const ChildNode = defineComponent({

+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-arrow-down.png → src/views/choose-homework/classroom-detail/image/icon-arrow-down.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-arrow.png → src/views/choose-homework/classroom-detail/image/icon-arrow.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-cache-point.png → src/views/choose-homework/classroom-detail/image/icon-cache-point.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-check-disabled.png → src/views/choose-homework/classroom-detail/image/icon-check-disabled.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-check.png → src/views/choose-homework/classroom-detail/image/icon-check.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-close.png → src/views/choose-homework/classroom-detail/image/icon-close.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-course-lock.png → src/views/choose-homework/classroom-detail/image/icon-course-lock.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-course.png → src/views/choose-homework/classroom-detail/image/icon-course.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-imm.png → src/views/choose-homework/classroom-detail/image/icon-imm.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-list.png → src/views/choose-homework/classroom-detail/image/icon-list.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-nocheck.png → src/views/choose-homework/classroom-detail/image/icon-nocheck.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/icon-question.png → src/views/choose-homework/classroom-detail/image/icon-question.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/iconTip.png → src/views/choose-homework/classroom-detail/image/iconTip.png


+ 0 - 0
src/views/chooise-homework/classroom-detail/image/look.svg → src/views/choose-homework/classroom-detail/image/look.svg


+ 0 - 0
src/views/chooise-homework/classroom-detail/index.module.less → src/views/choose-homework/classroom-detail/index.module.less


+ 64 - 6
src/views/chooise-homework/classroom-detail/index.tsx → src/views/choose-homework/classroom-detail/index.tsx

@@ -3,7 +3,7 @@ import { state } from '@/state';
 import { Button, Cell, Collapse, CollapseItem, Popup, showToast } from 'vant';
 import { defineComponent, onMounted, reactive, TransitionGroup } from 'vue';
 import styles from './index.module.less';
-import { useRoute, useRouter } from 'vue-router';
+import { useRoute } from 'vue-router';
 import { postMessage } from '@/helpers/native-message';
 import iconQuestion from './image/icon-question.png';
 import iconNoCheck from './image/icon-nocheck.png';
@@ -11,7 +11,6 @@ import iconImm from './image/icon-imm.png';
 import iconCheck from './image/icon-check.png';
 import iconCheckDisabled from './image/icon-check-disabled.png';
 
-import { browser } from '@/helpers/utils';
 import OEmpty from '@/components/o-empty';
 import iconList from './image/icon-list.png';
 import OHeader from '@/components/o-header';
@@ -39,7 +38,8 @@ export default defineComponent({
       ruleStatus: false,
       isDownloading: false, // 是否在下载资源
       parentCollapse: '' as any,
-      childrenCollapse: '' as any
+      childrenCollapse: '' as any,
+      disabledIds: [] as any
     });
 
     /** 获取课件详情 */
@@ -62,17 +62,32 @@ export default defineComponent({
             route.query.id
         );
         if (Array.isArray(res?.data)) {
+          // data.disabledIds = [1082460, 1082461, 1082462, 1082463];
           res.data.forEach((item: any) => {
             item.status = 'nochecked';
             item.children = item.knowledgePointList || [];
             item.id = item.coursewareDetailId;
             item.name = item.coursewareDetailName;
-            // const tempK = item.knowledgePointList || [];
             formatDataList(item.children);
           });
 
           data.list = res.data;
-          console.log(data.list, 'data.list');
+          console.log(data.list, 'data.list', data.disabledIds);
+
+          const allIds = {} as any;
+          data.disabledIds.forEach((item: any) => {
+            allIds[item] = formatGetIds(item, data.list);
+          });
+          console.log(allIds, 'allIds');
+
+          for (const item in allIds) {
+            const ids = allIds[item];
+            for (let i = ids.length - 2; i >= 0; i--) {
+              // console.log(ids[i], 'ids', getFormatIdList(ids[i], data.list));
+              const listItem = getFormatIdList(ids[i], data.list);
+              onParentChangeStatus(listItem);
+            }
+          }
         }
       } catch (error) {
         //
@@ -87,8 +102,12 @@ export default defineComponent({
         item.collapse = '';
         if (Array.isArray(item.materialList)) {
           item.materialList.forEach((item: any) => {
-            if (state.vIds.includes(item.id + '')) {
+            if (
+              state.vIds.includes(item.id + '') ||
+              item.typeCode !== 'VIDEO'
+            ) {
               item.status = 'disabled';
+              data.disabledIds.push(item.id);
             } else {
               item.status = 'nochecked';
             }
@@ -106,6 +125,45 @@ export default defineComponent({
       return tempList;
     };
 
+    // 获取数据的编号
+    const formatGetIds = (id: any, list: any[], ids = [] as any) => {
+      for (const item of list) {
+        if (item.id === id) {
+          return [...ids, id];
+        } else {
+          if (Array.isArray(item.materialList)) {
+            for (const material of item.materialList) {
+              if (material.id === id) {
+                return [...ids, item.id, id];
+              }
+            }
+          }
+        }
+        if (item.children && item.children.length > 0) {
+          const cIds: any = formatGetIds(id, item.children, [...ids, item.id]);
+          if (cIds.includes(id)) {
+            return cIds;
+          }
+        }
+      }
+      return ids;
+    };
+
+    // 获取编号对应的数组
+    const getFormatIdList = (id: any, list: any[]) => {
+      let tempI: any = {};
+      for (const item of list) {
+        if (item.id === id) {
+          console.log(item, id);
+          tempI = item;
+        }
+        if (item.children && item.children.length > 0 && !tempI.id) {
+          tempI = getFormatIdList(id, item.children);
+        }
+      }
+      return tempI;
+    };
+
     const getKnowledgeMaterialIds = (list: any = []) => {
       const tempList: any = [];
       list.forEach((item: any) => {

+ 0 - 0
src/views/chooise-homework/images/banner-bg.png → src/views/choose-homework/images/banner-bg.png


+ 8 - 1
src/views/chooise-homework/index.module.less → src/views/choose-homework/index.module.less

@@ -42,7 +42,7 @@
 
 .topTabs {
   background-color: #fff;
-  margin: 0 12px;
+  margin: 12px 12px 0;
   border-radius: 12px 12px 0 0;
 
   :global {
@@ -114,6 +114,13 @@
       }
     }
   }
+
+  &.containerClassOnly {
+    min-height: calc(100vh - var(--header-height) - 12px);
+    border-radius: 12px 12px 0 0;
+    padding-top: 14px;
+    margin-top: 12px;
+  }
 }
 
 .items {

+ 2 - 1
src/views/chooise-homework/index.tsx → src/views/choose-homework/index.tsx

@@ -253,7 +253,8 @@ export default defineComponent({
         <div
           class={[
             styles.container,
-            state.topKey === 'courseware' ? styles.containerClass : ''
+            state.topKey === 'courseware' ? styles.containerClass : '',
+            pageType === 'onlymusic' ? styles.containerClassOnly : ''
           ]}>
           {state.topKey === 'music' ? (
             <Transition name="van-fade">

+ 0 - 0
src/views/chooise-homework/music-list/icons/icon_search.png → src/views/choose-homework/music-list/icons/icon_search.png


+ 0 - 0
src/views/chooise-homework/music-list/icons/music.png → src/views/choose-homework/music-list/icons/music.png


+ 0 - 0
src/views/chooise-homework/music-list/icons/recording.svg → src/views/choose-homework/music-list/icons/recording.svg


+ 0 - 0
src/views/chooise-homework/music-list/icons/tips.png → src/views/choose-homework/music-list/icons/tips.png


+ 0 - 0
src/views/chooise-homework/music-list/icons/vip.png → src/views/choose-homework/music-list/icons/vip.png


+ 0 - 0
src/views/chooise-homework/music-list/index.module.less → src/views/choose-homework/music-list/index.module.less


+ 0 - 0
src/views/chooise-homework/music-list/index.tsx → src/views/choose-homework/music-list/index.tsx


+ 0 - 0
src/views/chooise-homework/music-list/modals/choosePartName/index-rem.module.less → src/views/choose-homework/music-list/modals/choosePartName/index-rem.module.less


+ 0 - 0
src/views/chooise-homework/music-list/modals/choosePartName/index.module.less → src/views/choose-homework/music-list/modals/choosePartName/index.module.less


+ 1 - 1
src/views/chooise-homework/music-list/modals/choosePartName/index.tsx → src/views/choose-homework/music-list/modals/choosePartName/index.tsx

@@ -2,7 +2,7 @@ import { defineComponent } from 'vue';
 import { Picker, Button } from 'vant';
 import styles from './index.module.less';
 import stylesRem from './index-rem.module.less';
-import { getVoiceChinesName } from '@/views/chooise-homework/pageState';
+import { getVoiceChinesName } from '@/views/choose-homework/pageState';
 
 export default defineComponent({
   name: 'choosePartName',

+ 0 - 0
src/views/chooise-homework/pageState.tsx → src/views/choose-homework/pageState.tsx