From a89ee82be42a190a878a240142d640abe2e27da1 Mon Sep 17 00:00:00 2001 From: Yuhang Wu Date: Wed, 19 Aug 2026 17:39:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E5=B9=BD=E7=81=B5?= =?UTF-8?q?=E9=98=85=E8=AF=BB=E5=99=A8MVP=E7=89=88=E6=9C=AC=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E6=90=AD=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现了: 1. Tauri后端框架搭建与数据库初始化 2. 前端路由与设置页面重构 3. 外观、快捷键、关于三个设置子页面 4. 书架主页UI重构 5. 新增项目文档与依赖配置 --- README.md | 100 ++++- src-tauri/Cargo.lock | 741 ++++++++++++++++++++++++++++++- src-tauri/Cargo.toml | 14 +- src-tauri/build.rs | 1 + src-tauri/src/commands/book.rs | 7 + src-tauri/src/commands/mod.rs | 1 + src-tauri/src/lib.rs | 23 +- src-tauri/src/models.rs | 47 ++ src-tauri/src/services/db.rs | 10 + src-tauri/src/services/mod.rs | 1 + src-tauri/tauri.conf.json | 2 +- src/router/index.ts | 19 + src/types/components.d.ts | 6 + src/views/Home.vue | 162 ++++++- src/views/Setting.vue | 183 +++++++- src/views/setting/About.vue | 79 ++++ src/views/setting/Appearance.vue | 107 ++++- src/views/setting/Shortcut.vue | 95 ++++ 18 files changed, 1541 insertions(+), 57 deletions(-) create mode 100644 src-tauri/src/commands/book.rs create mode 100644 src-tauri/src/commands/mod.rs create mode 100644 src-tauri/src/models.rs create mode 100644 src-tauri/src/services/db.rs create mode 100644 src-tauri/src/services/mod.rs create mode 100644 src/views/setting/About.vue create mode 100644 src/views/setting/Shortcut.vue diff --git a/README.md b/README.md index 12920b6..1b6d4c4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,99 @@ -# Tauri + Vue + TypeScript +# 幽灵阅读器 · Stealth Reader -This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` + +pt> + diff --git a/src/views/Setting.vue b/src/views/Setting.vue index 0ad8b8a..31359f4 100644 --- a/src/views/Setting.vue +++ b/src/views/Setting.vue @@ -1,18 +1,187 @@ - + diff --git a/src/views/setting/About.vue b/src/views/setting/About.vue new file mode 100644 index 0000000..246603c --- /dev/null +++ b/src/views/setting/About.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/src/views/setting/Appearance.vue b/src/views/setting/Appearance.vue index 8859196..32237f5 100644 --- a/src/views/setting/Appearance.vue +++ b/src/views/setting/Appearance.vue @@ -1,13 +1,108 @@ - \ No newline at end of file +.page-title { + margin: 0 0 4px; + font-size: 20px; + font-weight: 600; + color: var(--color-text-primary); +} + +.page-desc { + margin: 0 0 20px; + font-size: 13px; + color: var(--color-text-secondary); +} + +.setting-group { + margin-bottom: 24px; +} + +.group-title { + margin-bottom: 8px; + font-size: 13px; + font-weight: 600; + color: var(--color-text-secondary); +} + +.setting-item { + display: flex; + align-items: center; + justify-content: space-between; + background-color: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: var(--radius-sm); + box-shadow: var(--shadow-card); + margin-bottom: 0; + transition: box-shadow 0.2s ease, border-color 0.2s ease; + + &:hover { + border-color: var(--color-border-hover); + box-shadow: var(--shadow-card-hover); + } +} + +.item-info { + display: flex; + flex-direction: column; + margin: 12px 16px; +} + +.item-label { + font-size: 14px; + font-weight: 500; + color: var(--color-text-primary); +} + +.item-desc { + font-size: 12px; + color: var(--color-text-secondary); + margin-top: 2px; +} + +:deep(.n-radio-group), +:deep(.n-switch) { + margin: 0 16px; +} + diff --git a/src/views/setting/Shortcut.vue b/src/views/setting/Shortcut.vue new file mode 100644 index 0000000..41c179e --- /dev/null +++ b/src/views/setting/Shortcut.vue @@ -0,0 +1,95 @@ + + + + +