|
@@ -17,6 +17,7 @@ import queryString from 'query-string';
|
|
|
import CoursewareDetail from '@/custom-plugins/guide-page/courseware-detail';
|
|
|
import { usePageVisibility } from '@vant/use';
|
|
|
import { state } from '@/state';
|
|
|
+import TheNoticeBar from '@/components/the-noticeBar';
|
|
|
export default defineComponent({
|
|
|
name: 'the-book',
|
|
|
props: {
|
|
@@ -52,9 +53,12 @@ export default defineComponent({
|
|
|
height: 0,
|
|
|
transform: '',
|
|
|
list: [] as any[][],
|
|
|
- lastTime: localStorage.getItem(lastTimeKey)
|
|
|
+ lastTime: localStorage.getItem(lastTimeKey),
|
|
|
+ isClick: false
|
|
|
});
|
|
|
const showGuide = ref(false);
|
|
|
+ const isend = ref(false);
|
|
|
+ const isHandMove = ref(false);
|
|
|
const handleCreate = (key: string, url: string) => {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
const _s = document.head.querySelector(`script[data-key="${key}"]`);
|
|
@@ -86,6 +90,7 @@ export default defineComponent({
|
|
|
book.turn({
|
|
|
autoCenter: true,
|
|
|
duration: 1000,
|
|
|
+ disable: false,
|
|
|
acceleration: true, // 是否启动硬件加速 如果为触摸设备必须为true
|
|
|
// pages: 11, // 页码总数
|
|
|
elevation: 50, // 转换期间页面的高度
|
|
@@ -94,8 +99,54 @@ export default defineComponent({
|
|
|
gradients: true // 是否显示翻页阴影效果
|
|
|
// display: 'single', //设置单页还是双页
|
|
|
});
|
|
|
- };
|
|
|
+ book.bind('start', (event: Event, pageObject: any, corner: any) => {
|
|
|
+ // console.log(event, 'last', pageObject.next)
|
|
|
+ if (corner == 'tl' || corner == 'tr') {
|
|
|
+ event.preventDefault();
|
|
|
+ }
|
|
|
+ if (data.isClick) {
|
|
|
+ nextTick(() => {
|
|
|
+ data.isClick = false;
|
|
|
+ console.log(corner, 'corner');
|
|
|
+ if (corner == 'tl' || corner == 'tr') {
|
|
|
+ event.preventDefault();
|
|
|
+ } else {
|
|
|
+ book.turn('page', pageObject.next);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ book.bind('turned', (event: Event, page: any, corner: any) => {
|
|
|
+ setTimeout(() => {
|
|
|
+ showGuide.value = true;
|
|
|
+ }, 500);
|
|
|
|
|
|
+ // if (page + 1 === book.turn('pages')) {
|
|
|
+ // // noanimateClose()
|
|
|
+ // handleClose()
|
|
|
+ // // nextTick(() => {
|
|
|
+
|
|
|
+ // // });
|
|
|
+ // }
|
|
|
+ });
|
|
|
+
|
|
|
+ book.bind('turning', (event: Event, page: any, corner: any) => {
|
|
|
+ // console.log(page, 'page', book.turn('pages'))
|
|
|
+ if (page === book.turn('pages')) {
|
|
|
+ handleClose(false);
|
|
|
+ // handleClose()
|
|
|
+ // nextTick(() => {
|
|
|
+
|
|
|
+ // });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (page === 1) {
|
|
|
+ handleClose(false);
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ });
|
|
|
+ // book.bind('turned', (e: any, page: any) => {
|
|
|
+ };
|
|
|
const getRect = () => {
|
|
|
const bookWrap = document.querySelector(
|
|
|
'.bookWrap'
|
|
@@ -132,12 +183,19 @@ export default defineComponent({
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
- const handleClose = () => {
|
|
|
+ const handleClose = (gotoOne = true) => {
|
|
|
+ if (isend.value) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ isend.value = true;
|
|
|
clearTimeout(timer);
|
|
|
const bookWrap = document.querySelector(
|
|
|
'.bookWrap'
|
|
|
) as unknown as HTMLElement;
|
|
|
- book.turn('page', 1);
|
|
|
+ if (gotoOne) {
|
|
|
+ book.turn('page', 1);
|
|
|
+ }
|
|
|
+
|
|
|
if (bookWrap) {
|
|
|
bookWrap.style.transform = data.transform;
|
|
|
}
|
|
@@ -147,8 +205,10 @@ export default defineComponent({
|
|
|
bookWrap.style.transform = '';
|
|
|
data.show = false;
|
|
|
data.list = [];
|
|
|
+ isend.value = false;
|
|
|
}, 1000);
|
|
|
};
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
await init();
|
|
|
listenerMessage('webViewOnResume', () => {
|
|
@@ -183,6 +243,8 @@ export default defineComponent({
|
|
|
}
|
|
|
data.list = list;
|
|
|
// console.log('🚀 ~ data.list:', data.list.length);
|
|
|
+ // console.log(book.turn.pages, 'book.turn.pages')
|
|
|
+ // console.log(book.turn('pages'), 'pages')
|
|
|
};
|
|
|
watch(
|
|
|
() => props.show,
|
|
@@ -238,12 +300,29 @@ export default defineComponent({
|
|
|
// });
|
|
|
}
|
|
|
};
|
|
|
+
|
|
|
+ const isStartAnimate = (item: any) => {
|
|
|
+ // console.log(item) item.name.length > 9 ? true :
|
|
|
+
|
|
|
+ return false;
|
|
|
+ };
|
|
|
return () => (
|
|
|
- <div class={[styles.book, data.show ? '' : styles.bookHide]}>
|
|
|
- <div class={styles.back} onClick={handleClose}>
|
|
|
+ <div
|
|
|
+ class={[styles.book, data.show ? '' : styles.bookHide]}
|
|
|
+ onClick={() => handleClose()}
|
|
|
+ onTouchmove={() => {
|
|
|
+ console.log('sdfds');
|
|
|
+ data.isClick = true;
|
|
|
+ }}>
|
|
|
+ <div class={styles.back}>
|
|
|
<img src={icon_back} />
|
|
|
</div>
|
|
|
- <div class="bookWrap" style={{ width: data.width + 'px' }}>
|
|
|
+ <div
|
|
|
+ class="bookWrap"
|
|
|
+ style={{ width: data.width + 'px' }}
|
|
|
+ onClick={(e: Event) => {
|
|
|
+ e.stopPropagation();
|
|
|
+ }}>
|
|
|
{!!data.list.length && (
|
|
|
<div id="flipbook" class={[data.show && 'animated']}>
|
|
|
<div class="page">
|
|
@@ -268,6 +347,9 @@ export default defineComponent({
|
|
|
onClick={(e: Event) => {
|
|
|
e.stopPropagation();
|
|
|
handleOpenPlay(item);
|
|
|
+ }}
|
|
|
+ onTouchend={(e: TouchEvent) => {
|
|
|
+ console.log(e);
|
|
|
}}>
|
|
|
{item.id ? (
|
|
|
<img
|
|
@@ -280,6 +362,7 @@ export default defineComponent({
|
|
|
class={styles.name}
|
|
|
style={{ lineHeight: '20Px' }}>
|
|
|
{item.name}
|
|
|
+ {/* <TheNoticeBar text={item.name} isAnimation={isStartAnimate(item)}></TheNoticeBar> */}
|
|
|
{data.lastTime === item.id && (
|
|
|
<span class={styles.last}>上次观看</span>
|
|
|
)}
|
|
@@ -300,6 +383,18 @@ export default defineComponent({
|
|
|
</div>
|
|
|
</div>
|
|
|
)}
|
|
|
+ <div class="page">
|
|
|
+ <img
|
|
|
+ style="width: 100%; height: 100%; object-fit: cover;"
|
|
|
+ src={props.bookData.coverImg}
|
|
|
+ />
|
|
|
+ {/* <div class={styles.wrap}>
|
|
|
+
|
|
|
+ <div
|
|
|
+ class={styles.wrapItem}
|
|
|
+ style={{ backgroundColor: '#fff' }}></div>
|
|
|
+ </div> */}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
)}
|
|
|
</div>
|