From 97d635fbc744be1dfe704826d2ef604f14bfabfe Mon Sep 17 00:00:00 2001 From: root Date: Wed, 7 Oct 2026 16:15:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=8C=E9=9D=A2=E4=B8=8B=E8=BD=BD=E7=AB=AF?= =?UTF-8?q?=E6=94=B9=E7=94=A8=E5=85=B1=E4=BA=AB=E6=A0=B8=E5=BF=83=E5=8C=85?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E4=BF=AE=E4=B8=A4=E5=A4=84=E5=B7=B2=E7=9F=A5?= =?UTF-8?q?=E7=BC=BA=E9=99=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - store 改由 createGalleryStore 生成:totalGalleryTask 成为唯一任务源, 收藏/下载/分类/搜索结果全部由 getter 派生,不再维护三份互相引用的数组 - 排序不再原地修改分类数组;本地搜索记住关键词,任务刷新后结果仍在 - 本地搜索结果补齐翻页入口:此前匹配 25 项却只显示 10 项,其余无法看到 - 取消收藏不再因本地找不到 gid 抛 TypeError - 删除重复的 taskSocket/progressiveImages/validate/thumbnail,改从共享包导入 - 远端搜索改用共享 fetchGalleries,关键词交给 axios 序列化,翻页按游标转发 - main.js 按需注册 Element Plus,入口 JS 由约 1.14MB 降到约 494KB - 依赖新增 file:../lionwebsite-frontend-shared 测试:14 项通过;构建成功,入口仍为 /asserts/index/index.js|css。 --- package-lock.json | 8 + package.json | 3 +- src/components/DetailPanel.vue | 2 +- src/components/OnlineReader.vue | 4 +- src/components/SearchView.vue | 59 ++-- src/components/TaskView.vue | 2 +- src/main.js | 13 +- src/store/index.js | 584 +------------------------------ src/utils/progressiveImages.js | 23 -- src/utils/taskSocket.js | 76 ---- src/utils/thumbnail.js | 27 -- src/utils/validate.js | 8 - tests/progressiveImages.test.mjs | 33 -- tests/search.test.mjs | 37 ++ tests/store.test.mjs | 186 +++++----- tests/taskSocket.test.mjs | 63 ---- tests/thumbnail.test.mjs | 33 -- 17 files changed, 208 insertions(+), 953 deletions(-) delete mode 100644 src/utils/progressiveImages.js delete mode 100644 src/utils/taskSocket.js delete mode 100644 src/utils/thumbnail.js delete mode 100644 src/utils/validate.js delete mode 100644 tests/progressiveImages.test.mjs create mode 100644 tests/search.test.mjs delete mode 100644 tests/taskSocket.test.mjs delete mode 100644 tests/thumbnail.test.mjs diff --git a/package-lock.json b/package-lock.json index 9bcc2fe..f4975c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "axios": "^1.0.0", "element-plus": "^2.2.0", + "lionwebsite-frontend-shared": "file:../lionwebsite-frontend-shared", "qs": "^6.11.0", "vue": "^3.0.4", "vuex": "^4.0.2" @@ -19,6 +20,9 @@ "vite": "8.3.0" } }, + "../lionwebsite-frontend-shared": { + "version": "1.0.0" + }, "node_modules/@babel/helper-string-parser": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", @@ -1272,6 +1276,10 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/lionwebsite-frontend-shared": { + "resolved": "../lionwebsite-frontend-shared", + "link": true + }, "node_modules/lodash": { "version": "4.18.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", diff --git a/package.json b/package.json index 364a549..275618d 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "element-plus": "^2.2.0", "qs": "^6.11.0", "vue": "^3.0.4", - "vuex": "^4.0.2" + "vuex": "^4.0.2", + "lionwebsite-frontend-shared": "file:../lionwebsite-frontend-shared" }, "devDependencies": { "@vitejs/plugin-vue": "6.0.9", diff --git a/src/components/DetailPanel.vue b/src/components/DetailPanel.vue index 8c12a91..999fb7c 100644 --- a/src/components/DetailPanel.vue +++ b/src/components/DetailPanel.vue @@ -3,7 +3,7 @@ import {computed, ref, watch} from "vue"; import {ElMessage} from "element-plus"; import store from "../store/index.js"; import AppIcon from "./AppIcon.vue"; -import {ehThumbnailUrl, pickDefaultResolution} from "../utils/thumbnail.js"; +import {ehThumbnailUrl, pickDefaultResolution} from "lionwebsite-frontend-shared"; const targetResolution = ref(""); const isRetrying = ref(false); diff --git a/src/components/OnlineReader.vue b/src/components/OnlineReader.vue index 11b0e72..fdd4b90 100644 --- a/src/components/OnlineReader.vue +++ b/src/components/OnlineReader.vue @@ -1,9 +1,9 @@