This commit is contained in:
zyronon
2023-11-22 09:20:44 +08:00
parent 5be2401537
commit fcc42f1dd3
17 changed files with 87 additions and 35 deletions

22
components.d.ts vendored
View File

@@ -43,29 +43,31 @@ declare module 'vue' {
Empty: typeof import('./src/components/Empty.vue')['default']
FeedbackModal: typeof import('./src/components/toolbar/FeedbackModal.vue')['default']
Fireworks: typeof import('./src/components/Fireworks.vue')['default']
Footer: typeof import('./src/components/Practice/Footer.vue')['default']
Footer: typeof import('./src/pages/practice/Footer.vue')['default']
IconWrapper: typeof import('./src/components/IconWrapper.vue')['default']
Input: typeof import('./src/components/Input.vue')['default']
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']
Options: typeof import('./src/components/Practice/Options.vue')['default']
Panel: typeof import('./src/components/Practice/Panel.vue')['default']
Options: typeof import('./src/pages/practice/Options.vue')['default']
Panel: typeof import('./src/pages/practice/Panel.vue')['default']
PopConfirm: typeof import('./src/components/PopConfirm.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']
Practice: typeof import('./src/pages/practice/index.vue')['default']
PracticeArticle: typeof import('./src/pages/practice/practice-article/index.vue')['default']
PracticeWord: typeof import('./src/pages/practice/practice-word/index.vue')['default']
RepeatSetting: typeof import('./src/components/toolbar/RepeatSetting.vue')['default']
Ring: typeof import('./src/components/Ring.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SettingDialog: typeof import('./src/components/dialog/SettingDialog.vue')['default']
Slide: typeof import('./src/components/Slide.vue')['default']
Statistics: typeof import('./src/components/Practice/Statistics.vue')['default']
Statistics: typeof import('./src/pages/practice/Statistics.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/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']
Typing: typeof import('./src/pages/practice/practice-word/Typing.vue')['default']
TypingArticle: typeof import('./src/pages/practice/practice-article/TypingArticle.vue')['default']
TypingWord: typeof import('./src/pages/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']

View File

@@ -36,6 +36,7 @@
"vue": "^3.3.4",
"vue-activity-calendar": "^1.2.2",
"vue-i18n": "9",
"vue-router": "4",
"vue-virtual-list-v3": "^1.5.1"
},
"devDependencies": {
@@ -47,6 +48,8 @@
"@vue/compiler-sfc": "^3.3.4",
"commitizen": "^4.3.0",
"cz-conventional-changelog": "^3.3.0",
"esm": "^3.2.25",
"gulp": "^4.0.2",
"husky": "^8.0.3",
"push-dir": "^0.4.1",
"rollup-plugin-visualizer": "^5.9.2",
@@ -57,8 +60,6 @@
"unplugin-vue-components": "^0.25.2",
"vite": "^4.4.5",
"vue-tsc": "^1.8.5",
"esm": "^3.2.25",
"gulp": "^4.0.2",
"xlsx": "^0.18.5"
},
"config": {

12
pnpm-lock.yaml generated
View File

@@ -65,6 +65,9 @@ dependencies:
vue-i18n:
specifier: '9'
version: 9.6.5(vue@3.3.4)
vue-router:
specifier: '4'
version: 4.2.5(vue@3.3.4)
vue-virtual-list-v3:
specifier: ^1.5.1
version: 1.5.1
@@ -5077,6 +5080,15 @@ packages:
vue: 3.3.4
dev: false
/vue-router@4.2.5(vue@3.3.4):
resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==}
peerDependencies:
vue: ^3.2.0
dependencies:
'@vue/devtools-api': 6.5.0
vue: 3.3.4
dev: false
/vue-template-compiler@2.7.14:
resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==}
dependencies:

View File

@@ -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/index.vue"
import Practice from "@/pages/practice/index.vue"
import {useRuntimeStore} from "@/stores/runtime.ts";
import {useSettingStore} from "@/stores/setting.ts";
import {cloneDeep} from "lodash-es";
@@ -65,9 +65,7 @@ onMounted(() => {
<template>
<Backgorund/>
<div class="main-page anim">
<Practice/>
</div>
<router-view/>
</template>
<style scoped lang="scss">

View File

@@ -7,6 +7,7 @@ import {createPinia} from "pinia"
import VirtualList from 'vue-virtual-list-v3';
import ZH from "@/locales/zh-CN.ts";
import {createI18n} from 'vue-i18n'
import router from "@/router.ts";
const i18n = createI18n({
locale: 'zh-CN',
@@ -15,6 +16,7 @@ const i18n = createI18n({
'zh-CN': ZH
},
})
const pinia = createPinia()
// const app = createApp(Mobile)
const app = createApp(App)
@@ -23,5 +25,6 @@ const app = createApp(App)
app.use(pinia)
app.use(VirtualList);
app.use(i18n)
app.use(router)
app.mount('#app')

20
src/pages/dict/index.vue Normal file
View File

@@ -0,0 +1,20 @@
<script setup lang="ts">
</script>
<template>
<div id="page">
dict
</div>
</template>
<style scoped lang="scss">
#page {
width: 100%;
height: 100%;
color: white;
position: relative;
z-index: 2;
font-size: 14rem;
}
</style>

View File

@@ -213,7 +213,7 @@ const {
</Transition>
</template>
<style scoped lang="scss">
@import "@/assets/css/variable.scss";
@import "@/assets/css/variable";
$header-height: 50rem;

View File

@@ -126,7 +126,7 @@ const isEnd = $computed(() => {
<Fireworks v-if="statModalIsOpen"/>
</template>
<style scoped lang="scss">
@import "@/assets/css/style.scss";
@import "@/assets/css/style";
.statistics {
width: 800rem;

View File

@@ -3,16 +3,16 @@
import Toolbar from "@/components/toolbar/index.vue"
import {onMounted, onUnmounted, watch} from "vue";
import {usePracticeStore} from "@/stores/practice.ts";
import Footer from "@/components/Practice/Footer.vue";
import Footer from "@/pages/practice/Footer.vue";
import {useBaseStore} from "@/stores/base.ts";
import {$ref} from "vue/macros";
import Statistics from "@/components/Practice/Statistics.vue";
import {emitter, EventKey} from "@/utils/eventBus";
import {useSettingStore} from "@/stores/setting";
import Statistics from "@/pages/practice/Statistics.vue";
import {emitter, EventKey} from "@/utils/eventBus.ts";
import {useSettingStore} from "@/stores/setting.ts";
import {useRuntimeStore} from "@/stores/runtime.ts";
import {MessageBox} from "@/utils/MessageBox.tsx";
import PracticeArticle from "@/components/Practice/practice-article/index.vue";
import PracticeWord from "@/components/Practice/practice-word/index.vue";
import PracticeArticle from "@/pages/practice/practice-article/index.vue";
import PracticeWord from "@/pages/practice/practice-word/index.vue";
import {ShortcutKey} from "@/types.ts";
import useTheme from "@/hooks/useTheme.ts";
import SettingDialog from "@/components/dialog/SettingDialog.vue";

View File

@@ -1,15 +1,15 @@
<script setup lang="ts">
import {computed, nextTick, onMounted, onUnmounted, watch} from "vue"
import {$computed, $ref} from "vue/macros";
import {Article, ArticleWord, DefaultArticle, ShortcutKey, ShortcutKeyMap, Word} from "@/types";
import {useBaseStore} from "@/stores/base";
import {Article, ArticleWord, DefaultArticle, ShortcutKey, ShortcutKeyMap, Word} from "@/types.ts";
import {useBaseStore} from "@/stores/base.ts";
import {usePracticeStore} from "@/stores/practice.ts";
import {useSettingStore} from "@/stores/setting.ts";
import {usePlayBeep, usePlayCorrect, usePlayKeyboardAudio, usePlayWordAudio} from "@/hooks/sound.ts";
import {useOnKeyboardEventListener} from "@/hooks/event.ts";
import {cloneDeep} from "lodash-es";
import {emitter, EventKey} from "@/utils/eventBus.ts";
import Options from "@/components/Practice/Options.vue";
import Options from "@/pages/practice/Options.vue";
import {Icon} from "@iconify/vue";
import IconWrapper from "@/components/IconWrapper.vue";
import Tooltip from "@/components/Tooltip.vue";
@@ -479,7 +479,7 @@ const {
</template>
<style scoped lang="scss">
@import "@/assets/css/style.scss";
@import "@/assets/css/style";
.wrote {
//color: green;

View File

@@ -12,7 +12,7 @@ import {
Word
} from "@/types.ts";
import {cloneDeep} from "lodash-es";
import TypingWord from "@/components/Practice/practice-word/TypingWord.vue";
import TypingWord from "@/pages/practice/practice-word/TypingWord.vue";
import Panel from "../Panel.vue";
import {onMounted, watch} from "vue";
import {renewSectionTexts, renewSectionTranslates} from "@/hooks/translate.ts";
@@ -317,7 +317,7 @@ const {
</template>
<style scoped lang="scss">
@import "@/assets/css/style.scss";
@import "@/assets/css/style";
$article-width: 50vw;

View File

@@ -2,7 +2,7 @@
import {onMounted, onUnmounted, watch} from "vue"
import {$computed, $ref} from "vue/macros"
import {useBaseStore} from "@/stores/base.ts"
import {DefaultDisplayStatistics, DictType, ShortcutKey, Word} from "../../../types";
import {DefaultDisplayStatistics, DictType, ShortcutKey, Word} from "../../../types.ts";
import {emitter, EventKey} from "@/utils/eventBus.ts"
import {cloneDeep} from "lodash-es"
import {usePracticeStore} from "@/stores/practice.ts"
@@ -10,9 +10,9 @@ import {useSettingStore} from "@/stores/setting.ts";
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/practice-word/Typing.vue";
import Panel from "@/components/Practice/Panel.vue";
import Options from "@/pages/practice/Options.vue";
import Typing from "@/pages/practice/practice-word/Typing.vue";
import Panel from "@/pages/practice/Panel.vue";
import IconWrapper from "@/components/IconWrapper.vue";
import {useRuntimeStore} from "@/stores/runtime.ts";
import {useWordOptions} from "@/hooks/dict.ts";

View File

@@ -1,6 +1,6 @@
<script setup lang="ts">
import TypingWord from "@/components/Practice/practice-word/TypingWord.vue";
import TypingWord from "@/pages/practice/practice-word/TypingWord.vue";
import {$ref} from "vue/macros";
import {chunk, cloneDeep} from "lodash-es";
import {useBaseStore} from "@/stores/base.ts";

16
src/router.ts Normal file
View File

@@ -0,0 +1,16 @@
import * as VueRouter from 'vue-router'
import Practice from "@/pages/practice/index.vue";
import Dict from '@/pages/dict'
const routes = [
{path: '/practice', component: Practice},
{path: '/dict', component: Dict},
{path: '/', redirect:'/dict'},
]
const router = VueRouter.createRouter({
history: VueRouter.createWebHashHistory(),
routes,
})
export default router