diff --git a/components.d.ts b/components.d.ts index aa9c2333..1099c57f 100644 --- a/components.d.ts +++ b/components.d.ts @@ -8,7 +8,8 @@ export {} declare module 'vue' { export interface GlobalComponents { Add: typeof import('./src/components/Toolbar/Add.vue')['default'] - ArticleList: typeof import('./src/components/Article/ArticleList.vue')['default'] + ArticleList2: typeof import('./src/components/list/ArticleList2.vue')['default'] + ArticleListFQ: typeof import('./src/components/article/ArticleList-FQ.vue')['default'] Backgorund: typeof import('./src/components/Backgorund.vue')['default'] BaseButton: typeof import('./src/components/BaseButton.vue')['default'] BaseIcon: typeof import('./src/components/BaseIcon.vue')['default'] @@ -17,12 +18,10 @@ declare module 'vue' { Close: typeof import('./src/components/icon/Close.vue')['default'] CommonWordList: typeof import('./src/components/list/CommonWordList.vue')['default'] Dialog: typeof import('./src/components/dialog/Dialog.vue')['default'] - DictDialog: typeof import('./src/components/Modal/DictDialog/index.vue')['default'] DictDiglog: typeof import('./src/components/dialog/DictDiglog.vue')['default'] DictGroup: typeof import('./src/components/Toolbar/DictGroup.vue')['default'] DictItem: typeof import('./src/components/list/DictItem.vue')['default'] DictList: typeof import('./src/components/list/DictList.vue')['default'] - DictModal2: typeof import('./src/components/Modal/DictModal2.vue')['default'] EditAbleText: typeof import('./src/components/EditAbleText.vue')['default'] EditArticle: typeof import('./src/components/Article/EditArticle.vue')['default'] EditBatchArticleModal: typeof import('./src/components/Article/EditBatchArticleModal.vue')['default'] @@ -49,31 +48,26 @@ declare module 'vue' { List: typeof import('./src/components/list/List.vue')['default'] ListItem: typeof import('./src/components/list/ListItem.vue')['default'] MiniDialog: typeof import('./src/components/dialog/MiniDialog.vue')['default'] - MiniModal: typeof import('./src/components/Modal/MiniModal.vue')['default'] - Modal: typeof import('./src/components/dialog/Modal.vue')['default'] Options: typeof import('./src/components/Practice/Options.vue')['default'] Panel: typeof import('./src/components/Practice/Panel.vue')['default'] PopConfirm: typeof import('./src/components/PopConfirm.vue')['default'] - Practice: typeof import('./src/components/Practice/Practice.vue')['default'] - PracticeArticle: typeof import('./src/components/Practice/PracticeArticle/PracticeArticle.vue')['default'] - PracticeWord: typeof import('./src/components/Practice/PracticeWord/PracticeWord.vue')['default'] + Practice: typeof import('./src/components/Practice/index.vue')['default'] + PracticeArticle: typeof import('./src/components/Practice/practice-article/index.vue')['default'] + PracticeWord: typeof import('./src/components/Practice/practice-word/index.vue')['default'] RepeatSetting: typeof import('./src/components/Toolbar/RepeatSetting.vue')['default'] Ring: typeof import('./src/components/Ring.vue')['default'] SettingDialog: typeof import('./src/components/dialog/SettingDialog.vue')['default'] - SettingModal: typeof import('./src/components/dialog/SettingModal.vue')['default'] Slide: typeof import('./src/components/Slide.vue')['default'] Statistics: typeof import('./src/components/Practice/Statistics.vue')['default'] - Toolbar: typeof import('./src/components/Toolbar/Toolbar.vue')['default'] + Toolbar: typeof import('./src/components/toolbar/index.vue')['default'] Tooltip: typeof import('./src/components/Tooltip.vue')['default'] TranslateSetting: typeof import('./src/components/Toolbar/TranslateSetting.vue')['default'] - Typing: typeof import('./src/components/Practice/PracticeWord/Typing.vue')['default'] - TypingArticle: typeof import('./src/components/Practice/PracticeArticle/TypingArticle.vue')['default'] - TypingWord: typeof import('./src/components/Practice/PracticeWord/TypingWord.vue')['default'] + Typing: typeof import('./src/components/Practice/practice-word/Typing.vue')['default'] + TypingArticle: typeof import('./src/components/Practice/practice-article/TypingArticle.vue')['default'] + TypingWord: typeof import('./src/components/Practice/practice-word/TypingWord.vue')['default'] VirtualWordList: typeof import('./src/components/list/VirtualWordList.vue')['default'] VolumeIcon: typeof import('./src/components/icon/VolumeIcon.vue')['default'] VolumeSetting: typeof import('./src/components/Toolbar/VolumeSetting.vue')['default'] - WordItem: typeof import('./src/components/list/WordItem.vue')['default'] - WordList: typeof import('./src/components/list/WordList.vue')['default'] WordListDialog: typeof import('./src/components/dialog/WordListDialog.vue')['default'] } export interface ComponentCustomProperties { diff --git a/src/App.vue b/src/App.vue index c3636898..6517b875 100644 --- a/src/App.vue +++ b/src/App.vue @@ -3,7 +3,7 @@ import {onMounted, watch} from "vue"; import {BaseState, useBaseStore} from "@/stores/base.ts"; import {DictType, SaveConfig, SaveDict} from "@/types.ts" -import Practice from "@/components/Practice/Practice.vue" +import Practice from "@/components/Practice/index.vue" import {useRuntimeStore} from "@/stores/runtime.ts"; import {useSettingStore} from "@/stores/setting.ts"; import {cloneDeep} from "lodash-es"; diff --git a/src/components/EditAbleText.vue b/src/components/EditAbleText.vue index 0951fed9..72f74436 100644 --- a/src/components/EditAbleText.vue +++ b/src/components/EditAbleText.vue @@ -73,7 +73,7 @@ function toggle() { } .text { - color: black; + color: var(--color-font-1); min-height: 18rem; } \ No newline at end of file diff --git a/src/components/Practice/Footer.vue b/src/components/Practice/Footer.vue index 964bc27b..c26b42e6 100644 --- a/src/components/Practice/Footer.vue +++ b/src/components/Practice/Footer.vue @@ -134,8 +134,6 @@ onUnmounted(() => { box-sizing: border-box; position: absolute; bottom: 0; - - } :deep(.el-progress-bar__inner) { diff --git a/src/components/Practice/Panel.vue b/src/components/Practice/Panel.vue index e05efb9c..4b120dce 100644 --- a/src/components/Practice/Panel.vue +++ b/src/components/Practice/Panel.vue @@ -1,6 +1,5 @@ @@ -123,11 +127,19 @@ const { - + :show-translate="true" + v-model:list="store.collect.articles"> + + + + + diff --git a/src/components/Practice/Practice.vue b/src/components/Practice/index.vue similarity index 96% rename from src/components/Practice/Practice.vue rename to src/components/Practice/index.vue index b5f11043..7af1d5a5 100644 --- a/src/components/Practice/Practice.vue +++ b/src/components/Practice/index.vue @@ -1,6 +1,6 @@ @@ -386,15 +392,15 @@ function toggleCollect() { @click="emit('edit',props.article)" /> @@ -279,11 +286,25 @@ const settingStore = useSettingStore() {{ store.currentDict.articles.length }}篇文章 - + v-model:list="store.currentDict.articles"> + + + + + diff --git a/src/components/Practice/PracticeWord/Typing.vue b/src/components/Practice/practice-word/Typing.vue similarity index 100% rename from src/components/Practice/PracticeWord/Typing.vue rename to src/components/Practice/practice-word/Typing.vue diff --git a/src/components/Practice/PracticeWord/TypingWord.vue b/src/components/Practice/practice-word/TypingWord.vue similarity index 97% rename from src/components/Practice/PracticeWord/TypingWord.vue rename to src/components/Practice/practice-word/TypingWord.vue index d5f0806d..f8f185bd 100644 --- a/src/components/Practice/PracticeWord/TypingWord.vue +++ b/src/components/Practice/practice-word/TypingWord.vue @@ -2,15 +2,7 @@ import {onMounted, onUnmounted, watch} from "vue" import {$computed, $ref} from "vue/macros" import {useBaseStore} from "@/stores/base.ts" -import { - DefaultDisplayStatistics, - DefaultShortcutKeyMap, - DictType, - DisplayStatistics, - ShortcutKey, - ShortcutKeyMap, - Word -} from "../../../types"; +import {DefaultDisplayStatistics, DictType, ShortcutKey, Word} from "../../../types"; import {emitter, EventKey} from "@/utils/eventBus.ts" import {cloneDeep} from "lodash-es" import {usePracticeStore} from "@/stores/practice.ts" @@ -19,13 +11,11 @@ import {useOnKeyboardEventListener} from "@/hooks/event.ts"; import {Icon} from "@iconify/vue"; import Tooltip from "@/components/Tooltip.vue"; import Options from "@/components/Practice/Options.vue"; -import Typing from "@/components/Practice/PracticeWord/Typing.vue"; +import Typing from "@/components/Practice/practice-word/Typing.vue"; import Panel from "@/components/Practice/Panel.vue"; import IconWrapper from "@/components/IconWrapper.vue"; -import WordList from "@/components/list/WordList.vue"; import {useRuntimeStore} from "@/stores/runtime.ts"; import {useWordOptions} from "@/hooks/dict.ts"; -import {usePlayWordAudio} from "@/hooks/sound.ts"; import BaseIcon from "@/components/BaseIcon.vue"; import CommonWordList from "@/components/list/CommonWordList.vue"; diff --git a/src/components/Practice/PracticeWord/PracticeWord.vue b/src/components/Practice/practice-word/index.vue similarity index 94% rename from src/components/Practice/PracticeWord/PracticeWord.vue rename to src/components/Practice/practice-word/index.vue index a1d31d65..25252887 100644 --- a/src/components/Practice/PracticeWord/PracticeWord.vue +++ b/src/components/Practice/practice-word/index.vue @@ -1,6 +1,6 @@ + + + + + + + + + + {{ `${index + 1}. ${source.title}` }} + + + {{ ` ${source.titleTranslate}` }} + + + + + + + + + + \ No newline at end of file diff --git a/src/components/list/VirtualWordList.vue b/src/components/list/VirtualWordList.vue index 5579ff92..528fb907 100644 --- a/src/components/list/VirtualWordList.vue +++ b/src/components/list/VirtualWordList.vue @@ -1,7 +1,6 @@ - - - - - - {{ word.name }} - {{ word.usphone }} - - - - {{ item }} - - - - - - - - - \ No newline at end of file diff --git a/src/components/list/WordList.vue b/src/components/list/WordList.vue deleted file mode 100644 index d08a566e..00000000 --- a/src/components/list/WordList.vue +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - {{ word.name }} - {{ word.usphone }} - - - - {{ item }} - - - - - - - diff --git a/src/components/toolbar/Toolbar.vue b/src/components/toolbar/index.vue similarity index 100% rename from src/components/toolbar/Toolbar.vue rename to src/components/toolbar/index.vue diff --git a/src/hooks/dict.ts b/src/hooks/dict.ts index e94c0b58..33b92102 100644 --- a/src/hooks/dict.ts +++ b/src/hooks/dict.ts @@ -1,4 +1,4 @@ -import {Dict, DictType, Word} from "@/types.ts"; +import {Article, Dict, DictType, Word} from "@/types.ts"; import {useBaseStore} from "@/stores/base.ts"; import {useRuntimeStore} from "@/stores/runtime.ts"; import {chunk, cloneDeep} from "lodash-es"; @@ -66,6 +66,29 @@ export function useWordOptions() { } } +export function useArticleOptions() { + const store = useBaseStore() + + function isArticleCollect(val: Article) { + return !!store.collect.articles.find(v => v.title.toLowerCase() === val.title.toLowerCase()) + } + + function toggleArticleCollect(val: Article) { + let rIndex = store.collect.articles.findIndex(v => v.title.toLowerCase() === val.title.toLowerCase()) + if (rIndex > -1) { + store.collect.articles.splice(rIndex, 1) + } else { + store.collect.articles.push(val) + } + } + + return { + isArticleCollect, + toggleArticleCollect, + } +} + + export async function checkDictHasTranslate(dict: Dict) { let dictResourceUrl = `./dicts/${dict.language}/${dict.type}/${dict.translateLanguage}/${dict.url}`; if ([