|
|
@@ -27,23 +27,21 @@ import CatalogItem from "./CatalogItem.vue";
|
|
|
|
|
|
const store = useBookStore();
|
|
|
|
|
|
-const isNight = computed(() => theme.value == 6);
|
|
|
-const { catalog, popCataVisible, miniInterface } = storeToRefs(store);
|
|
|
+const {
|
|
|
+ catalog,
|
|
|
+ popCataVisible, miniInterface
|
|
|
+} = storeToRefs(store);
|
|
|
|
|
|
-const theme = computed(() => {
|
|
|
- return store.config.theme;
|
|
|
-});
|
|
|
+//主题
|
|
|
+const isNight = computed(() => store.theme);
|
|
|
+const theme = computed(() => store.theme);
|
|
|
const popupTheme = computed(() => {
|
|
|
return {
|
|
|
background: settings.themes[theme.value].popup,
|
|
|
};
|
|
|
});
|
|
|
|
|
|
-const currentChapterIndex = computed({
|
|
|
- get: () => store.readingBook.index,
|
|
|
- set: (value) => (store.readingBook.index = value),
|
|
|
-});
|
|
|
-
|
|
|
+//虚拟列表 数据源
|
|
|
const virtualListdata = computed(() => {
|
|
|
let catalogValue = catalog.value;
|
|
|
if (miniInterface.value) return catalogValue;
|
|
|
@@ -63,28 +61,35 @@ const virtualListdata = computed(() => {
|
|
|
return virtualListDataSource;
|
|
|
});
|
|
|
|
|
|
-const emit = defineEmits(["getContent"]);
|
|
|
-const gotoChapter = (note) => {
|
|
|
- const chapterIndex = catalog.value.indexOf(note);
|
|
|
- currentChapterIndex.value = chapterIndex;
|
|
|
- store.setPopCataVisible(false);
|
|
|
- store.setContentLoading(true);
|
|
|
- store.saveBookProgress();
|
|
|
- emit("getContent", chapterIndex);
|
|
|
-};
|
|
|
-
|
|
|
+//打开目录 计算当前章节对应的虚拟列表位置
|
|
|
const virtualListRef = ref();
|
|
|
+const currentChapterIndex = computed({
|
|
|
+ get: () => store.readingBook.index,
|
|
|
+ set: (value) => (store.readingBook.index = value),
|
|
|
+});
|
|
|
const virtualListIndex = computed(() => {
|
|
|
let index = currentChapterIndex.value;
|
|
|
if (miniInterface.value) return index;
|
|
|
+ // pc端 virtualListIitem有2个章节
|
|
|
return Math.floor(index / 2);
|
|
|
});
|
|
|
-
|
|
|
onUpdated(() => {
|
|
|
// dom更新触发ResizeObserver,更新虚拟列表内部的sizes Map
|
|
|
if (!popCataVisible.value) return;
|
|
|
virtualListRef.value.scrollToIndex(virtualListIndex.value);
|
|
|
});
|
|
|
+
|
|
|
+// 点击加载对应章节内容
|
|
|
+const emit = defineEmits(["getContent"]);
|
|
|
+const gotoChapter = (note) => {
|
|
|
+ const chapterIndex = catalog.value.indexOf(note);
|
|
|
+ currentChapterIndex.value = chapterIndex;
|
|
|
+ store.setPopCataVisible(false);
|
|
|
+ store.setContentLoading(true);
|
|
|
+ store.saveBookProgress();
|
|
|
+ emit("getContent", chapterIndex);
|
|
|
+};
|
|
|
+
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|