|  | @@ -8,7 +8,7 @@
 | 
	
		
			
				|  |  |              <span class="name">{{ item.name }}</span>
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  |            <div v-for="li in item.nodes" :key="li.id">
 | 
	
		
			
				|  |  | -            <div :class="['catalogue-item', 'children']">
 | 
	
		
			
				|  |  | +            <div :class="['catalogue-item', 'children', curChapterId === li.id ? 'active' : '']">
 | 
	
		
			
				|  |  |                <span class="name">{{ li?.name }}</span>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |            </div>
 | 
	
	
		
			
				|  | @@ -17,7 +17,7 @@
 | 
	
		
			
				|  |  |      </div>
 | 
	
		
			
				|  |  |      <div class="content-area">
 | 
	
		
			
				|  |  |        <div class="content-top">
 | 
	
		
			
				|  |  | -        <el-button><SvgIcon icon-class="quit" /> 退出预览</el-button>
 | 
	
		
			
				|  |  | +        <el-button @click="goBack"><SvgIcon icon-class="quit" size="14" /> 退出预览</el-button>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |        <div
 | 
	
		
			
				|  |  |          class="content"
 | 
	
	
		
			
				|  | @@ -33,14 +33,21 @@
 | 
	
		
			
				|  |  |            },
 | 
	
		
			
				|  |  |          ]"
 | 
	
		
			
				|  |  |        >
 | 
	
		
			
				|  |  | -        <div></div>
 | 
	
		
			
				|  |  | +        <div class="navigation">
 | 
	
		
			
				|  |  | +          <span class="navigation-label"> <SvgIcon icon-class="navigation" size="14" />{{ getCatalogueName() }} </span>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |      </div>
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  | -import { GetCoursewareContent, GetBookChapterStruct, GetCoursewareList_Chapter } from '@/api/book';
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  GetCoursewareContent,
 | 
	
		
			
				|  |  | +  GetBookChapterStruct,
 | 
	
		
			
				|  |  | +  GetCoursewareList_Chapter,
 | 
	
		
			
				|  |  | +  GetCoursewareComponentContent_View,
 | 
	
		
			
				|  |  | +} from '@/api/book';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |    name: 'PreviewPage',
 | 
	
	
		
			
				|  | @@ -49,7 +56,7 @@ export default {
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        book_id: this.$route.params.book_id,
 | 
	
		
			
				|  |  |        chapter_id,
 | 
	
		
			
				|  |  | -      curChaterId: chapter_id,
 | 
	
		
			
				|  |  | +      curChapterId: chapter_id,
 | 
	
		
			
				|  |  |        data: {
 | 
	
		
			
				|  |  |          background_image_url: '',
 | 
	
		
			
				|  |  |          background_position: {
 | 
	
	
		
			
				|  | @@ -72,8 +79,18 @@ export default {
 | 
	
		
			
				|  |  |        this.setCurPosition(this.chapter_id);
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |      this.getCoursewareList_Chapter(this.chapter_id);
 | 
	
		
			
				|  |  | +    this.GetCoursewareComponentContent_View();
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    methods: {
 | 
	
		
			
				|  |  | +    // 获取课件数据
 | 
	
		
			
				|  |  | +    getCoursewareComponentContent_View() {
 | 
	
		
			
				|  |  | +      GetCoursewareComponentContent_View({ courseware_id: this.coursewareId, component_id: this.componentId }).then(
 | 
	
		
			
				|  |  | +        ({ content }) => {
 | 
	
		
			
				|  |  | +          // if (content) this.file_list = JSON.parse(content).file_list;
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      goBack() {
 | 
	
		
			
				|  |  |        this.$router.push(`/chapter?chapter_id=${this.chapter_id}&book_id=${this.book_id}`);
 | 
	
		
			
				|  |  |      },
 | 
	
	
		
			
				|  | @@ -112,6 +129,16 @@ export default {
 | 
	
		
			
				|  |  |          if (content) this.data = JSON.parse(content);
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    getNodeName(index) {
 | 
	
		
			
				|  |  | +      let node = this.nodes;
 | 
	
		
			
				|  |  | +      for (let i = 0; i <= index; i++) {
 | 
	
		
			
				|  |  | +        node = i === 0 ? node[this.curPosition[i]] : node.nodes[this.curPosition[i]];
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      return node?.name;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    getCatalogueName() {
 | 
	
		
			
				|  |  | +      return this.curPosition.map((item, index) => this.getNodeName(index)).join(' / ');
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  </script>
 | 
	
	
		
			
				|  | @@ -125,7 +152,6 @@ export default {
 | 
	
		
			
				|  |  |    .catalogue {
 | 
	
		
			
				|  |  |      display: flex;
 | 
	
		
			
				|  |  |      flex-direction: column;
 | 
	
		
			
				|  |  | -    row-gap: 8px;
 | 
	
		
			
				|  |  |      height: 100%;
 | 
	
		
			
				|  |  |      padding: 24px;
 | 
	
		
			
				|  |  |      background-color: #fff;
 | 
	
	
		
			
				|  | @@ -139,7 +165,7 @@ export default {
 | 
	
		
			
				|  |  |      &-item {
 | 
	
		
			
				|  |  |        display: flex;
 | 
	
		
			
				|  |  |        column-gap: 8px;
 | 
	
		
			
				|  |  | -      padding: 8px 52px 8px 16px;
 | 
	
		
			
				|  |  | +      padding: 8px 32px 8px 16px;
 | 
	
		
			
				|  |  |        font-size: 14px;
 | 
	
		
			
				|  |  |        border-bottom: 1px solid #ebebeb;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -147,6 +173,10 @@ export default {
 | 
	
		
			
				|  |  |          background-color: #f3f3f3;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +      &.active {
 | 
	
		
			
				|  |  | +        background-color: #f3f3f3;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        &.subdirectory {
 | 
	
		
			
				|  |  |          .name {
 | 
	
		
			
				|  |  |            font-weight: bold;
 | 
	
	
		
			
				|  | @@ -183,18 +213,20 @@ export default {
 | 
	
		
			
				|  |  |        justify-content: end;
 | 
	
		
			
				|  |  |        width: 100%;
 | 
	
		
			
				|  |  |        margin-bottom: 18px;
 | 
	
		
			
				|  |  | +      font-size: 16px;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      .content {
 | 
	
		
			
				|  |  |        display: flex;
 | 
	
		
			
				|  |  |        flex-direction: column;
 | 
	
		
			
				|  |  |        row-gap: 6px;
 | 
	
		
			
				|  |  | -      width: 100%;
 | 
	
		
			
				|  |  | +      width: 94%;
 | 
	
		
			
				|  |  |        min-height: calc(100% - 56px);
 | 
	
		
			
				|  |  |        padding: 24px;
 | 
	
		
			
				|  |  |        background-color: #fff;
 | 
	
		
			
				|  |  |        background-repeat: no-repeat;
 | 
	
		
			
				|  |  | -      border-radius: 4px;
 | 
	
		
			
				|  |  | +      border: 3px solid #f44444;
 | 
	
		
			
				|  |  | +      border-radius: 16px;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        .row {
 | 
	
		
			
				|  |  |          display: grid;
 | 
	
	
		
			
				|  | @@ -205,6 +237,21 @@ export default {
 | 
	
		
			
				|  |  |            display: grid;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      .navigation {
 | 
	
		
			
				|  |  | +        margin: -10px 0 0 -24px;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        &-label {
 | 
	
		
			
				|  |  | +          padding: 18px 24px;
 | 
	
		
			
				|  |  | +          color: #fff;
 | 
	
		
			
				|  |  | +          background-color: #f44444;
 | 
	
		
			
				|  |  | +          border-radius: 16px 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          .svg-icon {
 | 
	
		
			
				|  |  | +            margin: 0 22px 0 1px;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 |