diff --git a/components.d.ts b/components.d.ts index 5386fd68..f1a2abe5 100644 --- a/components.d.ts +++ b/components.d.ts @@ -9,6 +9,7 @@ export {} declare module 'vue' { export interface GlobalComponents { About: typeof import('./src/components/About.vue')['default'] + ArticleAudio: typeof import('./src/components/article/components/ArticleAudio.vue')['default'] ArticleList: typeof import('./src/components/list/ArticleList.vue')['default'] ArticleSetting: typeof import('./src/components/setting/ArticleSetting.vue')['default'] Audio: typeof import('./src/components/base/Audio.vue')['default'] @@ -20,9 +21,11 @@ declare module 'vue' { BasePage: typeof import('./src/components/BasePage.vue')['default'] BaseTable: typeof import('./src/components/BaseTable.vue')['default'] Book: typeof import('./src/components/Book.vue')['default'] + ChangeLastPracticeIndexDialog: typeof import('./src/components/word/components/ChangeLastPracticeIndexDialog.vue')['default'] 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'] + Code: typeof import('./src/components/user/Code.vue')['default'] Collapse: typeof import('./src/components/base/Collapse.vue')['default'] CommonSetting: typeof import('./src/components/setting/CommonSetting.vue')['default'] ConflictNotice: typeof import('./src/components/ConflictNotice.vue')['default'] @@ -32,10 +35,15 @@ declare module 'vue' { DictGroup: typeof import('./src/components/list/DictGroup.vue')['default'] DictList: typeof import('./src/components/list/DictList.vue')['default'] EditAbleText: typeof import('./src/components/EditAbleText.vue')['default'] + EditArticle: typeof import('./src/components/article/components/EditArticle.vue')['default'] + EditBook: typeof import('./src/components/article/components/EditBook.vue')['default'] + EditSingleArticleModal: typeof import('./src/components/article/components/EditSingleArticleModal.vue')['default'] Empty: typeof import('./src/components/Empty.vue')['default'] + Footer: typeof import('./src/components/word/components/Footer.vue')['default'] Form: typeof import('./src/components/base/form/Form.vue')['default'] FormItem: typeof import('./src/components/base/form/FormItem.vue')['default'] Github: typeof import('./src/components/ChannelIcons/Github.vue')['default'] + GroupList: typeof import('./src/components/word/components/GroupList.vue')['default'] Header: typeof import('./src/components/Header.vue')['default'] IconBxVolume: typeof import('~icons/bx/volume')['default'] IconBxVolumeFull: typeof import('~icons/bx/volume-full')['default'] @@ -52,7 +60,6 @@ declare module 'vue' { IconFluentArrowClockwise20Regular: typeof import('~icons/fluent/arrow-clockwise20-regular')['default'] IconFluentArrowDownload20Regular: typeof import('~icons/fluent/arrow-download20-regular')['default'] IconFluentArrowLeft16Regular: typeof import('~icons/fluent/arrow-left16-regular')['default'] - IconFluentArrowMove20Regular: typeof import('~icons/fluent/arrow-move20-regular')['default'] IconFluentArrowRepeatAll20Regular: typeof import('~icons/fluent/arrow-repeat-all20-regular')['default'] IconFluentArrowRight16Regular: typeof import('~icons/fluent/arrow-right16-regular')['default'] IconFluentArrowShuffle16Regular: typeof import('~icons/fluent/arrow-shuffle16-regular')['default'] @@ -138,34 +145,49 @@ declare module 'vue' { IconUiwQq: typeof import('~icons/uiw/qq')['default'] InputNumber: typeof import('./src/components/base/InputNumber.vue')['default'] List: typeof import('./src/components/list/List.vue')['default'] + Log: typeof import('./src/components/setting/Log.vue')['default'] Logo: typeof import('./src/components/Logo.vue')['default'] MigrateDialog: typeof import('./src/components/MigrateDialog.vue')['default'] MiniDialog: typeof import('./src/components/dialog/MiniDialog.vue')['default'] + Notice: typeof import('./src/components/user/Notice.vue')['default'] Option: typeof import('./src/components/base/select/Option.vue')['default'] OptionButton: typeof import('./src/components/base/OptionButton.vue')['default'] Pagination: typeof import('./src/components/base/Pagination.vue')['default'] Panel: typeof import('./src/components/Panel.vue')['default'] PopConfirm: typeof import('./src/components/PopConfirm.vue')['default'] PracticeLayout: typeof import('./src/components/PracticeLayout.vue')['default'] + PracticeSettingDialog: typeof import('./src/components/word/components/PracticeSettingDialog.vue')['default'] + PracticeWordListDialog: typeof import('./src/components/word/components/PracticeWordListDialog.vue')['default'] Progress: typeof import('./src/components/base/Progress.vue')['default'] + QuestionForm: typeof import('./src/components/article/components/QuestionForm.vue')['default'] + QuestionItem: typeof import('./src/components/article/components/QuestionItem.vue')['default'] Radio: typeof import('./src/components/base/radio/Radio.vue')['default'] RadioGroup: typeof import('./src/components/base/radio/RadioGroup.vue')['default'] ResourceCard: typeof import('./src/components/ResourceCard.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] Select: typeof import('./src/components/base/select/Select.vue')['default'] + SentenceHightLightWord: typeof import('./src/components/word/components/SentenceHightLightWord.vue')['default'] SettingDialog: typeof import('./src/components/setting/SettingDialog.vue')['default'] + SettingItem: typeof import('./src/components/setting/SettingItem.vue')['default'] ShareIcon: typeof import('./src/components/ChannelIcons/ShareIcon.vue')['default'] + ShufflePracticeSettingDialog: typeof import('./src/components/word/components/ShufflePracticeSettingDialog.vue')['default'] Slide: typeof import('./src/components/Slide.vue')['default'] SlideHorizontal: typeof import('./src/components/slide/SlideHorizontal.vue')['default'] SlideItem: typeof import('./src/components/slide/SlideItem.vue')['default'] Slider: typeof import('./src/components/base/Slider.vue')['default'] + Space: typeof import('./src/components/article/components/Space.vue')['default'] StageProgress: typeof import('./src/components/StageProgress.vue')['default'] + Statistics: typeof import('./src/components/word/components/Statistics.vue')['default'] Switch: typeof import('./src/components/base/Switch.vue')['default'] Textarea: typeof import('./src/components/base/Textarea.vue')['default'] Toast: typeof import('./src/components/base/toast/Toast.vue')['default'] Tooltip: typeof import('./src/components/base/Tooltip.vue')['default'] + TypeWord: typeof import('./src/components/word/components/TypeWord.vue')['default'] + TypingArticle: typeof import('./src/components/article/components/TypingArticle.vue')['default'] + TypingWord: typeof import('./src/components/article/components/TypingWord.vue')['default'] VolumeIcon: typeof import('./src/components/icon/VolumeIcon.vue')['default'] + VolumeSettingMiniDialog: typeof import('./src/components/word/components/VolumeSettingMiniDialog.vue')['default'] 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'] diff --git a/src/pages/article/components/ArticleAudio.vue b/src/components/article/components/ArticleAudio.vue similarity index 100% rename from src/pages/article/components/ArticleAudio.vue rename to src/components/article/components/ArticleAudio.vue diff --git a/src/pages/article/components/EditArticle.vue b/src/components/article/components/EditArticle.vue similarity index 99% rename from src/pages/article/components/EditArticle.vue rename to src/components/article/components/EditArticle.vue index 5785aa0d..abc7744d 100644 --- a/src/pages/article/components/EditArticle.vue +++ b/src/components/article/components/EditArticle.vue @@ -17,7 +17,7 @@ import Tooltip from '@/components/base/Tooltip.vue' import InputNumber from '@/components/base/InputNumber.vue' import { nanoid } from 'nanoid' import { update } from 'idb-keyval' -import ArticleAudio from '@/pages/article/components/ArticleAudio.vue' +import ArticleAudio from '@/components/article/components/ArticleAudio.vue' import BaseInput from '@/components/base/BaseInput.vue' import Textarea from '@/components/base/Textarea.vue' import { LOCAL_FILE_KEY } from '@/config/env.ts' diff --git a/src/pages/article/components/EditBook.vue b/src/components/article/components/EditBook.vue similarity index 100% rename from src/pages/article/components/EditBook.vue rename to src/components/article/components/EditBook.vue diff --git a/src/pages/article/components/EditSingleArticleModal.vue b/src/components/article/components/EditSingleArticleModal.vue similarity index 93% rename from src/pages/article/components/EditSingleArticleModal.vue rename to src/components/article/components/EditSingleArticleModal.vue index fa044f7f..7493f3ac 100644 --- a/src/pages/article/components/EditSingleArticleModal.vue +++ b/src/components/article/components/EditSingleArticleModal.vue @@ -2,7 +2,7 @@ import type {Article} from "@/types/types.ts"; import {useDisableEventListener} from "@/hooks/event.ts"; -import EditArticle from "@/pages/article/components/EditArticle.vue"; +import EditArticle from "@/components/article/components/EditArticle.vue"; import {getDefaultArticle} from "@/types/func.ts"; import {defineAsyncComponent} from "vue"; diff --git a/src/pages/article/components/QuestionForm.vue b/src/components/article/components/QuestionForm.vue similarity index 100% rename from src/pages/article/components/QuestionForm.vue rename to src/components/article/components/QuestionForm.vue diff --git a/src/pages/article/components/QuestionItem.vue b/src/components/article/components/QuestionItem.vue similarity index 100% rename from src/pages/article/components/QuestionItem.vue rename to src/components/article/components/QuestionItem.vue diff --git a/src/pages/article/components/Space.vue b/src/components/article/components/Space.vue similarity index 100% rename from src/pages/article/components/Space.vue rename to src/components/article/components/Space.vue diff --git a/src/pages/article/components/TypingArticle.vue b/src/components/article/components/TypingArticle.vue similarity index 99% rename from src/pages/article/components/TypingArticle.vue rename to src/components/article/components/TypingArticle.vue index a7a1f010..40678b04 100644 --- a/src/pages/article/components/TypingArticle.vue +++ b/src/components/article/components/TypingArticle.vue @@ -3,9 +3,9 @@ import Toast from '@/components/base/toast/Toast.ts' import BaseButton from '@/components/BaseButton.vue' import { useWordOptions } from '@/hooks/dict.ts' import { usePlayBeep, usePlayKeyboardAudio, usePlayWordAudio } from '@/hooks/sound.ts' -import QuestionForm from '@/pages/article/components/QuestionForm.vue' -import Space from '@/pages/article/components/Space.vue' -import TypingWord from '@/pages/article/components/TypingWord.vue' +import QuestionForm from '@/components/article/components/QuestionForm.vue' +import Space from '@/components/article/components/Space.vue' +import TypingWord from '@/components/article/components/TypingWord.vue' import { useBaseStore } from '@/stores/base.ts' import { usePracticeStore } from '@/stores/practice.ts' import { useSettingStore } from '@/stores/setting.ts' diff --git a/src/pages/article/components/TypingWord.vue b/src/components/article/components/TypingWord.vue similarity index 97% rename from src/pages/article/components/TypingWord.vue rename to src/components/article/components/TypingWord.vue index 08916d93..e9c92fed 100644 --- a/src/pages/article/components/TypingWord.vue +++ b/src/components/article/components/TypingWord.vue @@ -1,6 +1,6 @@ + + diff --git a/src/pages/(articles)/batch-edit-article.vue b/src/pages/(articles)/batch-edit-article.vue index 18722e23..f3580614 100644 --- a/src/pages/(articles)/batch-edit-article.vue +++ b/src/pages/(articles)/batch-edit-article.vue @@ -9,7 +9,7 @@ import { useWindowClick } from '@/hooks/event.ts' import { MessageBox } from '@/utils/MessageBox.tsx' import { useRuntimeStore } from '@/stores/runtime.ts' import { nanoid } from 'nanoid' -import EditArticle from '@/pages/article/components/EditArticle.vue' +import EditArticle from '@/components/article/components/EditArticle.vue' import Toast from '@/components/base/toast/Toast.ts' import { getDefaultArticle } from '@/types/func.ts' import BackIcon from '@/components/BackIcon.vue' diff --git a/src/pages/(articles)/book-detail.vue b/src/pages/(articles)/book-detail.vue index 272db150..2a9b2f13 100644 --- a/src/pages/(articles)/book-detail.vue +++ b/src/pages/(articles)/book-detail.vue @@ -7,12 +7,12 @@ import type { Article, Dict } from '@/types/types' import { useRuntimeStore } from '@/stores/runtime.ts' import BaseButton from '@/components/BaseButton.vue' import { useRoute, useRouter } from 'vue-router' -import EditBook from '@/pages/article/components/EditBook.vue' +import EditBook from '@/components/article/components/EditBook.vue' import { computed, onMounted, onUnmounted, watch } from 'vue' import { _dateFormat, _getDictDataByUrl, _nextTick, msToHourMinute, resourceWrap, total, useNav } from '@/utils' import { getDefaultArticle, getDefaultDict } from '@/types/func.ts' import Toast from '@/components/base/toast/Toast.ts' -import ArticleAudio from '@/pages/article/components/ArticleAudio.vue' +import ArticleAudio from '@/components/article/components/ArticleAudio.vue' import { MessageBox } from '@/utils/MessageBox.tsx' import { useSettingStore } from '@/stores/setting.ts' import { useFetch } from '@vueuse/core' diff --git a/src/pages/(articles)/practice-articles/[id].vue b/src/pages/(articles)/practice-articles/[id].vue index 4819e1e1..5a1d82a0 100644 --- a/src/pages/(articles)/practice-articles/[id].vue +++ b/src/pages/(articles)/practice-articles/[id].vue @@ -13,9 +13,9 @@ import { genArticleSectionData, usePlaySentenceAudio } from '@/hooks/article.ts' import { useArticleOptions } from '@/hooks/dict.ts' import { useDisableEventListener, useOnKeyboardEventListener, useStartKeyboardEventListener } from '@/hooks/event.ts' import useTheme from '@/hooks/theme.ts' -import ArticleAudio from '@/pages/article/components/ArticleAudio.vue' -import EditSingleArticleModal from '@/pages/article/components/EditSingleArticleModal.vue' -import TypingArticle from '@/pages/article/components/TypingArticle.vue' +import ArticleAudio from '@/components/article/components/ArticleAudio.vue' +import EditSingleArticleModal from '@/components/article/components/EditSingleArticleModal.vue' +import TypingArticle from '@/components/article/components/TypingArticle.vue' import { useBaseStore } from '@/stores/base.ts' import { usePracticeStore } from '@/stores/practice.ts' import { useRuntimeStore } from '@/stores/runtime.ts' diff --git a/src/pages/(words)/dict-detail.vue b/src/pages/(words)/dict-detail.vue index 7ec9f56f..6aa1b947 100644 --- a/src/pages/(words)/dict-detail.vue +++ b/src/pages/(words)/dict-detail.vue @@ -15,8 +15,8 @@ import Toast from '@/components/base/toast/Toast.ts' import DeleteIcon from '@/components/icon/DeleteIcon.vue' import { AppEnv, DictId, LIB_JS_URL, TourConfig } from '@/config/env.ts' import { getCurrentStudyWord } from '@/hooks/dict.ts' -import EditBook from '@/pages/article/components/EditBook.vue' -import PracticeSettingDialog from '@/pages/word/components/PracticeSettingDialog.vue' +import EditBook from '@/components/article/components/EditBook.vue' +import PracticeSettingDialog from '@/components/word/components/PracticeSettingDialog.vue' import { useBaseStore } from '@/stores/base.ts' import { useRuntimeStore } from '@/stores/runtime.ts' import { useSettingStore } from '@/stores/setting.ts' diff --git a/src/pages/(words)/practice-words/[id].vue b/src/pages/(words)/practice-words/[id].vue index 9ec23afc..c7eb0d3a 100644 --- a/src/pages/(words)/practice-words/[id].vue +++ b/src/pages/(words)/practice-words/[id].vue @@ -1,7 +1,7 @@ - - - - diff --git a/src/pages/user/Code.vue b/src/pages/user/Code.vue deleted file mode 100644 index bfef15d3..00000000 --- a/src/pages/user/Code.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - - - diff --git a/src/pages/user/Notice.vue b/src/pages/user/Notice.vue deleted file mode 100644 index 6364751e..00000000 --- a/src/pages/user/Notice.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/src/router.ts b/src/router.ts index db332c97..f2cf3362 100644 --- a/src/router.ts +++ b/src/router.ts @@ -1,6 +1,6 @@ import * as VueRouter from 'vue-router' import {RouteRecordRaw} from 'vue-router' -import Layout from "@/pages/layout.vue"; +import Layout from "@/layout/default.vue"; import words from "@/pages/(words)/words.vue"; import DictDetail from "@/pages/(words)/dict-detail.vue"; import DictList from "@/pages/(words)/dict-list.vue"; @@ -12,7 +12,7 @@ import BookDetail from "@/pages/(articles)/book-detail.vue"; import BookList from "@/pages/(articles)/book-list.vue"; import PracticeArticles from "@/pages/(articles)/practice-articles/[id].vue"; -import setting from "@/pages/setting/Setting.vue"; +import setting from "@/pages/setting.vue"; import login from "@/pages/(user)/login.vue"; import user from "@/pages/(user)/user.vue"; import vip from "@/pages/(user)/vip.vue"; @@ -53,7 +53,6 @@ export const routes: RouteRecordRaw[] = [ ] }, {path: '/batch-edit-article', component: () => import("@/pages/(articles)/batch-edit-article.vue")}, - {path: '/test', component: () => import("@/pages/test/test.vue")}, {path: '/:pathMatch(.*)*', redirect: '/words'}, ]