export default {
							 | 
						|
									computed: {
							 | 
						|
										currentProgress () {
							 | 
						|
											return this.pages[this.current]?.progress || 0
							 | 
						|
										},
							 | 
						|
										currentTitle () {
							 | 
						|
											return this.pages[this.current]?.title || this.title
							 | 
						|
										},
							 | 
						|
										currentTotal () {
							 | 
						|
											return this.pages[this.current]?.total || 0
							 | 
						|
										},
							 | 
						|
										currentPage () {
							 | 
						|
											return this.pages[this.current]?.current || 0
							 | 
						|
										}
							 | 
						|
									},
							 | 
						|
									methods: {
							 | 
						|
										//渲染页面
							 | 
						|
										scrollRender ({chapter, current, start = 0}) {
							 | 
						|
											if ( chapter ) {//如果传入章节内容
							 | 
						|
												const index = this.chapters.findIndex(c => c.index == chapter.index)//是否已经包含相同章节
							 | 
						|
												if (index > -1) this.chapters[index] = chapter//如果包含则更新
							 | 
						|
												else this.chapters.push(chapter)//否则添加新章节
							 | 
						|
											}
							 | 
						|
											current = parseInt(current || 0)//强制转换类型为int
							 | 
						|
											start = parseInt(start)//强制转换类型为int
							 | 
						|
											this.pages = [{index: current, type: 'loading'}]//显示loading
							 | 
						|
											this.current = 0//重置current
							 | 
						|
											const cgs = this.chapters.filter(c => c.index == current || c.index == current - 1 || c.index == current + 1)//筛选出符合条件的三个章节内容
							 | 
						|
											let index = 0, arr = []
							 | 
						|
											const computedId = this.getComputedId()
							 | 
						|
											this.computeds.push(computedId)
							 | 
						|
											const computedIndex = this.computeds.indexOf(computedId)
							 | 
						|
											this.$nextTick(function () {
							 | 
						|
												setTimeout(() => {
							 | 
						|
													const handle = () => {
							 | 
						|
														this.$refs.computed[computedIndex] && this.$refs.computed[computedIndex].start({
							 | 
						|
															chapter: cgs[index],
							 | 
						|
															success: pages => {
							 | 
						|
																arr = arr.concat(pages)
							 | 
						|
																if ( index < cgs.length - 1 ) {
							 | 
						|
																	index++
							 | 
						|
																	this.$nextTick(function () { handle() })
							 | 
						|
																} else {
							 | 
						|
																	this.computeds.splice(computedIndex, 1)
							 | 
						|
																	this.pages = this.handlePages(arr)
							 | 
						|
																	const pageIndex = this.pages.findIndex(p => start >= p.start && start < p.end && p.index == current )//定位章节
							 | 
						|
																	if ( pageIndex == -1 ) this.current = this.pages.findIndex(p => start >= p.end && p.index == current )//定位章节
							 | 
						|
																	else this.current = pageIndex
							 | 
						|
																	this.$nextTick(function () {
							 | 
						|
																		this.$refs.scroll.resetRefresh()
							 | 
						|
																		this.$refs.scroll.scrollToIndex(this.current)
							 | 
						|
																		this.handleChange({current: this.current, detail: this.pages[this.current] })
							 | 
						|
																		this.$nextTick(function () {
							 | 
						|
																			this.autoplaySync = this.autoplay
							 | 
						|
																		})
							 | 
						|
																	})
							 | 
						|
																}
							 | 
						|
															}
							 | 
						|
														})
							 | 
						|
													}
							 | 
						|
													handle()
							 | 
						|
												}, 100)
							 | 
						|
											})
							 | 
						|
										},
							 | 
						|
										//翻页改变事件
							 | 
						|
										async handleScroll (e) {
							 | 
						|
											const scrollTop = e.detail.scrollTop
							 | 
						|
											const scrollHeight = e.detail.scrollHeight
							 | 
						|
											if ( !this.scrolling ) {
							 | 
						|
												try{
							 | 
						|
													this.scrolling = true
							 | 
						|
													const rate = Math.floor(scrollTop / this.contentHeight)
							 | 
						|
													let maybe = this.pages[rate] ? rate : this.pages.length-1
							 | 
						|
													let top = -1
							 | 
						|
													while ( top < 0 && maybe < this.pages.length - 1 ) {
							 | 
						|
														const itemRect = await this.$refs.scroll.getItemRect(maybe)
							 | 
						|
														top = itemRect.top
							 | 
						|
														top < 0 ? maybe++ : null
							 | 
						|
													}
							 | 
						|
													const current = top >= 0 ? maybe : this.pages.length - 1
							 | 
						|
													if ( current != this.current ) {
							 | 
						|
														this.handleChange({current: current, detail: this.pages[current]})
							 | 
						|
														this.$refs.footer && this.$refs.footer.refresh()
							 | 
						|
													}
							 | 
						|
													this.scrolling = false
							 | 
						|
												}catch(e){
							 | 
						|
													this.scrolling = false
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										//渲染下一章节
							 | 
						|
										handleScrollLoadRender (status, chapter, callback, isPrev) {
							 | 
						|
											if ( status == 'success' ) {//获取内容成功
							 | 
						|
												const nowIndex = isPrev ? this.pages[0].index : this.pages[this.pages.length-1].index
							 | 
						|
												const chapterIndex = this.chapters.findIndex(c => c.index == chapter.index)//是否已经包含相同章节
							 | 
						|
												if (chapterIndex > -1) this.chapters[chapterIndex] = chapter//如果包含则更新
							 | 
						|
												else this.chapters.push(chapter)//否则添加新章节
							 | 
						|
												const computedId = this.getComputedId()
							 | 
						|
												this.computeds.push(computedId)
							 | 
						|
												const computedIndex = this.computeds.indexOf(computedId)
							 | 
						|
												this.$nextTick(function () {
							 | 
						|
													setTimeout(() => {
							 | 
						|
														this.$refs.computed[computedIndex] && this.$refs.computed[computedIndex].start({
							 | 
						|
															chapter: chapter,
							 | 
						|
															success: p => {
							 | 
						|
																this.computeds.splice(computedIndex, 1)
							 | 
						|
																callback && callback( (chapter.isStart || chapter.isEnd) ? 'end' : status)//关闭加载动画
							 | 
						|
																const pages = isPrev ? p.concat(this.pages) : this.pages.concat(p)//添加新计算的章节内容
							 | 
						|
																this.pages = pages//渲染章节内容
							 | 
						|
																if ( isPrev ) {//如果是加载上一章节需要重新定位
							 | 
						|
																	this.$nextTick(function () {
							 | 
						|
																		this.current = pages.findIndex(page => page.index == nowIndex)//定位页面
							 | 
						|
																		this.$refs.scroll.scrollToIndex(this.current)//刷新翻页组件
							 | 
						|
																	})
							 | 
						|
																}
							 | 
						|
																this.chapterLoading = false//关闭章节加载等待
							 | 
						|
															}
							 | 
						|
														})
							 | 
						|
													}, 100)
							 | 
						|
												})
							 | 
						|
											} else {
							 | 
						|
												this.chapterLoading = false//关闭章节加载等待
							 | 
						|
												callback && callback(status)//关闭加载动画
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								}
							 |