From f23cc79a9807d6fedd27c2b62fd0dfccbbd220d8 Mon Sep 17 00:00:00 2001 From: Zyronon Date: Wed, 17 Dec 2025 10:29:07 +0800 Subject: [PATCH] wip --- components.d.ts | 3 + src/assets/css/style.scss | 5 +- src/components/BaseTable.vue | 125 ++++++------------ src/components/BaseTable2.vue | 125 ++++++++++++------ src/components/dialog/Dialog.vue | 13 +- src/pages/article/PracticeArticles.vue | 2 +- src/pages/setting/Setting.vue | 32 +++-- .../ChangeLastPracticeIndexDialog.vue | 9 +- src/pages/word/components/Footer.vue | 2 +- .../word/components/PracticeSettingDialog.vue | 7 +- .../components/PracticeWordListDialog.vue | 4 +- .../ShufflePracticeSettingDialog.vue | 2 +- 12 files changed, 173 insertions(+), 156 deletions(-) diff --git a/components.d.ts b/components.d.ts index 74f16838..99043100 100644 --- a/components.d.ts +++ b/components.d.ts @@ -10,6 +10,7 @@ declare module 'vue' { export interface GlobalComponents { About: typeof import('./src/components/About.vue')['default'] ArticleList: typeof import('./src/components/list/ArticleList.vue')['default'] + ArticleSettting: typeof import('./src/components/setting/ArticleSettting.vue')['default'] Audio: typeof import('./src/components/base/Audio.vue')['default'] BackIcon: typeof import('./src/components/BackIcon.vue')['default'] BaseButton: typeof import('./src/components/BaseButton.vue')['default'] @@ -23,6 +24,7 @@ declare module 'vue' { ChannelIcons: typeof import('./src/components/ChannelIcons/ChannelIcons.vue')['default'] Checkbox: typeof import('./src/components/base/checkbox/Checkbox.vue')['default'] Close: typeof import('./src/components/icon/Close.vue')['default'] + CommonSetting: typeof import('./src/components/setting/CommonSetting.vue')['default'] ConflictNotice: typeof import('./src/components/ConflictNotice.vue')['default'] DeleteIcon: typeof import('./src/components/icon/DeleteIcon.vue')['default'] Dialog: typeof import('./src/components/dialog/Dialog.vue')['default'] @@ -159,5 +161,6 @@ declare module 'vue' { WeChat: typeof import('./src/components/ChannelIcons/WeChat.vue')['default'] WordItem: typeof import('./src/components/WordItem.vue')['default'] WordList: typeof import('./src/components/list/WordList.vue')['default'] + WordSetting: typeof import('./src/components/setting/WordSetting.vue')['default'] } } diff --git a/src/assets/css/style.scss b/src/assets/css/style.scss index 67fc02a2..12c18dba 100644 --- a/src/assets/css/style.scss +++ b/src/assets/css/style.scss @@ -28,6 +28,7 @@ --toolbar-width: 50rem; --panel-width: 24rem; + --modal-padding: 1.3rem; --space: 0.9rem; --stat-gap: 1rem; --shadow: rgba(0, 0, 0, 0.08) 0px 4px 12px; @@ -245,7 +246,7 @@ body { display: flex; flex-direction: column; - &>.page-content { + & > .page-content { padding: 10rem; box-sizing: border-box; overflow: auto; @@ -532,6 +533,6 @@ a { .btn-no-margin { .base-button + .base-button { - margin-left: 0!important; + margin-left: 0 !important; } } \ No newline at end of file diff --git a/src/components/BaseTable.vue b/src/components/BaseTable.vue index 3437d2ca..c1f1a9ae 100644 --- a/src/components/BaseTable.vue +++ b/src/components/BaseTable.vue @@ -1,6 +1,6 @@ - + diff --git a/src/components/BaseTable2.vue b/src/components/BaseTable2.vue index c1f1a9ae..d37bd4e9 100644 --- a/src/components/BaseTable2.vue +++ b/src/components/BaseTable2.vue @@ -1,6 +1,6 @@ - + diff --git a/src/components/dialog/Dialog.vue b/src/components/dialog/Dialog.vue index ddab3626..3c4ee612 100644 --- a/src/components/dialog/Dialog.vue +++ b/src/components/dialog/Dialog.vue @@ -89,7 +89,7 @@ watch(() => props.modelValue, n => { // console.log('n', n) if (n) { id = Date.now() - runtimeStore.modalList.push({id, close}) + runtimeStore.modalList.push({ id, close }) zIndex = 999 + runtimeStore.modalList.length visible = true } else { @@ -101,7 +101,7 @@ onMounted(() => { if (props.modelValue === undefined) { visible = true id = Date.now() - runtimeStore.modalList.push({id, close}) + runtimeStore.modalList.push({ id, close }) zIndex = 999 + runtimeStore.modalList.length } }) @@ -175,7 +175,7 @@ async function cancel() {
{{ cancelButtonText }} {{ confirmButtonText }} @@ -292,7 +292,8 @@ $header-height: 4rem; display: flex; justify-content: space-between; align-items: center; - padding: 1.3rem 1.3rem 1rem; + padding: var(--modal-padding); + padding-bottom: 0; border-radius: $radius $radius 0 0; .title { @@ -315,7 +316,7 @@ $header-height: 4rem; display: flex; &.padding { - padding: .2rem 1.6rem 1.6rem; + padding: .2rem var(--modal-padding); } .content { @@ -327,7 +328,7 @@ $header-height: 4rem; .modal-footer { display: flex; justify-content: space-between; - padding: var(--space); + padding: var(--modal-padding); } } } diff --git a/src/pages/article/PracticeArticles.vue b/src/pages/article/PracticeArticles.vue index 4c3ab289..ed3e94b2 100644 --- a/src/pages/article/PracticeArticles.vue +++ b/src/pages/article/PracticeArticles.vue @@ -36,7 +36,7 @@ import ArticleAudio from "@/pages/article/components/ArticleAudio.vue"; import { AppEnv, DICT_LIST, LIB_JS_URL, PracticeSaveArticleKey, TourConfig } from "@/config/env.ts"; import { addStat, setUserDictProp } from "@/apis"; import { useRuntimeStore } from "@/stores/runtime.ts"; -import SettingDialog from "@/components/SettingDialog.vue"; +import SettingDialog from "@/components/setting/SettingDialog.vue"; const store = useBaseStore() const runtimeStore = useRuntimeStore() diff --git a/src/pages/setting/Setting.vue b/src/pages/setting/Setting.vue index 3da22da4..3ab8af42 100644 --- a/src/pages/setting/Setting.vue +++ b/src/pages/setting/Setting.vue @@ -43,28 +43,21 @@ import { useExport } from "@/hooks/export.ts"; import MigrateDialog from "@/components/MigrateDialog.vue"; import Log from "@/pages/setting/Log.vue"; import About from "@/components/About.vue"; +import CommonSetting from "@/components/setting/CommonSetting.vue"; +import ArticleSettting from "@/components/setting/ArticleSettting.vue"; +import WordSetting from "@/components/setting/WordSetting.vue"; const emit = defineEmits<{ toggleDisabledDialogEscKey: [val: boolean] }>() -const tabIndex = $ref(4) +const tabIndex = $ref(0) const settingStore = useSettingStore() const runtimeStore = useRuntimeStore() const store = useBaseStore() //@ts-ignore const gitLastCommitHash = ref(LATEST_COMMIT_HASH); -const simpleWords = $computed({ - get: () => store.simpleWords.join(','), - set: v => { - try { - store.simpleWords = v.split(','); - } catch (e) { - - } - } -}) let editShortcutKey = $ref('') @@ -311,6 +304,18 @@ function transferOk() {
+
+ + 通用 +
+
+ + 单词 +
+
+ + 文章 +
数据管理 @@ -339,6 +344,11 @@ function transferOk() {
+ + + + +
diff --git a/src/pages/word/components/ChangeLastPracticeIndexDialog.vue b/src/pages/word/components/ChangeLastPracticeIndexDialog.vue index 77aeb1db..a05c50a0 100644 --- a/src/pages/word/components/ChangeLastPracticeIndexDialog.vue +++ b/src/pages/word/components/ChangeLastPracticeIndexDialog.vue @@ -2,8 +2,7 @@ import BaseTable from "@/components/BaseTable.vue"; import WordItem from "@/components/WordItem.vue"; -import {useBaseStore} from "@/stores/base.ts"; -import {defineAsyncComponent} from "vue"; +import { defineAsyncComponent } from "vue"; import { useRuntimeStore } from "@/stores/runtime.ts"; const Dialog = defineAsyncComponent(() => import('@/components/dialog/Dialog.vue')) @@ -19,8 +18,10 @@ defineEmits<{