|  | @@ -15,7 +15,7 @@ import './jquery.min.1.7.js';
 | 
	
		
			
				|  |  |  import './turn.js';
 | 
	
		
			
				|  |  |  import MEmpty from '@/components/m-empty';
 | 
	
		
			
				|  |  |  import deepClone from '@/helpers/deep-clone';
 | 
	
		
			
				|  |  | -import { browser, chunkArray } from '@/helpers/utils';
 | 
	
		
			
				|  |  | +import { browser, chunkArray, getRandomKey } from '@/helpers/utils';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export const BOOK_DATA = {
 | 
	
		
			
				|  |  |    grades: [
 | 
	
	
		
			
				|  | @@ -65,6 +65,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        details: [] as any[],
 | 
	
		
			
				|  |  |        bookData: {} as any,
 | 
	
		
			
				|  |  |        bookLessonId: '',
 | 
	
		
			
				|  |  | +      showBookLock: false, // 打开书本锁
 | 
	
		
			
				|  |  |        showBook: false,
 | 
	
		
			
				|  |  |        book: {} as DOMRect
 | 
	
		
			
				|  |  |      });
 | 
	
	
		
			
				|  | @@ -113,17 +114,20 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        const res = await api_lessonCoursewareStudentPage({
 | 
	
		
			
				|  |  |          ...more,
 | 
	
		
			
				|  |  |          bookVersionId: bookVersionId == -1 ? null : bookVersionId,
 | 
	
		
			
				|  |  | +        customFlag: bookVersionId == -1 ? true : null,
 | 
	
		
			
				|  |  |          currentGradeNum: currentGradeNum ? currentGradeNum : ''
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |        if (res?.code === 200 && Array.isArray(res?.data?.rows)) {
 | 
	
		
			
				|  |  |          // 只有在第一页的时候才会赋值上次上课记录
 | 
	
		
			
				|  |  |          if (res?.data?.current == 1) {
 | 
	
		
			
				|  |  |            data.courseRecord = res?.data?.extra;
 | 
	
		
			
				|  |  | +          data.courseRecord.id &&
 | 
	
		
			
				|  |  | +            (data.courseRecord.key = getRandomKey() + data.courseRecord.id);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          const result = res.data.rows.map((item: any) => {
 | 
	
		
			
				|  |  |            item.load = false;
 | 
	
		
			
				|  |  | -          item.key = Date.now() + item.id;
 | 
	
		
			
				|  |  | +          item.key = getRandomKey() + item.id;
 | 
	
		
			
				|  |  |            return item;
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -165,15 +169,16 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          data.bookLessonId = item.id;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      handleCreateContainer(item.id);
 | 
	
		
			
				|  |  | +      handleCreateContainer(item.key);
 | 
	
		
			
				|  |  |        handleRender(() => {
 | 
	
		
			
				|  |  |          data.showBook = true;
 | 
	
		
			
				|  |  | +        data.showBookLock = false;
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const handleCreateContainer = (id: string) => {
 | 
	
		
			
				|  |  |        const box = document.querySelector(
 | 
	
		
			
				|  |  | -        `[data-id="${id}"]`
 | 
	
		
			
				|  |  | +        `[data-key="${id}"]`
 | 
	
		
			
				|  |  |        ) as unknown as HTMLElement;
 | 
	
		
			
				|  |  |        if (!box) return;
 | 
	
		
			
				|  |  |        const rect = box.getBoundingClientRect();
 | 
	
	
		
			
				|  | @@ -187,6 +192,8 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |      const handleOpen = async (item: any) => {
 | 
	
		
			
				|  |  | +      if (data.showBookLock) return;
 | 
	
		
			
				|  |  | +      data.showBookLock = true;
 | 
	
		
			
				|  |  |        await getDetail(item);
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -195,6 +202,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          <div class={styles.head} style={{ opacity: data.showBook ? 0 : '' }}>
 | 
	
		
			
				|  |  |            <div class={styles.back} onClick={goback}>
 | 
	
		
			
				|  |  |              <img src={icon_back} />
 | 
	
		
			
				|  |  | +            <span>全部教材</span>
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  |            <Button
 | 
	
		
			
				|  |  |              class={[
 | 
	
	
		
			
				|  | @@ -263,6 +271,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                    <img src={useTime} class={styles.useTime} />
 | 
	
		
			
				|  |  |                    <Image
 | 
	
		
			
				|  |  |                      data-id={data.courseRecord.id}
 | 
	
		
			
				|  |  | +                    data-key={data.courseRecord.key}
 | 
	
		
			
				|  |  |                      class={[
 | 
	
		
			
				|  |  |                        styles.cover,
 | 
	
		
			
				|  |  |                        data.courseRecord.load ? styles.loaded : ''
 | 
	
	
		
			
				|  | @@ -315,6 +324,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                              <div class={styles.item}>
 | 
	
		
			
				|  |  |                                <Image
 | 
	
		
			
				|  |  |                                  data-id={item.id}
 | 
	
		
			
				|  |  | +                                data-key={item.key}
 | 
	
		
			
				|  |  |                                  class={[
 | 
	
		
			
				|  |  |                                    styles.cover,
 | 
	
		
			
				|  |  |                                    item.load ? styles.loaded : ''
 |