From 183e9dfb72712bc0af7992f00c999cbef0ed68d0 Mon Sep 17 00:00:00 2001 From: zyronon Date: Wed, 23 Jul 2025 00:38:18 +0800 Subject: [PATCH] feat:save --- src/hooks/event.ts | 3 +- src/pages/pc/word/StudyWord.vue | 72 ++++++++++++++++----------------- 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/src/hooks/event.ts b/src/hooks/event.ts index 2ac81fd9..0510cc6b 100644 --- a/src/hooks/event.ts +++ b/src/hooks/event.ts @@ -1,4 +1,4 @@ -import {onMounted, onUnmounted, watch,onDeactivated} from "vue"; +import {onMounted, onUnmounted, watch, onDeactivated} from "vue"; import {emitter, EventKey} from "@/utils/eventBus.ts"; import {useRuntimeStore} from "@/stores/runtime.ts"; import {useSettingStore} from "@/stores/setting.ts"; @@ -52,7 +52,6 @@ export function useStartKeyboardEventListener() { const settingStore = useSettingStore() useEventListener('keydown', (e: KeyboardEvent) => { - // console.log('e',e.keyCode,e.code) if (!runtimeStore.disableEventListener) { e.preventDefault() let shortcutKey = getShortcutKey(e) diff --git a/src/pages/pc/word/StudyWord.vue b/src/pages/pc/word/StudyWord.vue index d1404cf8..b83be8ab 100644 --- a/src/pages/pc/word/StudyWord.vue +++ b/src/pages/pc/word/StudyWord.vue @@ -9,7 +9,7 @@ import {useRuntimeStore} from "@/stores/runtime.ts"; import {getDefaultWord, ShortcutKey, StudyData, Word} from "@/types.ts"; import {useOnKeyboardEventListener, useStartKeyboardEventListener} from "@/hooks/event.ts"; import useTheme from "@/hooks/theme.ts"; -import {getCurrentStudyWord, useWordOptions} from "@/hooks/dict.ts"; +import {useWordOptions} from "@/hooks/dict.ts"; import {cloneDeep, shuffle} from "lodash-es"; import {useRouter} from "vue-router"; import {Icon} from "@iconify/vue"; @@ -23,56 +23,33 @@ import Empty from "@/components/Empty.vue"; import {useBaseStore} from "@/stores/base.ts"; import {usePracticeStore} from "@/stores/practice.ts"; -const settingStore = useSettingStore() -const runtimeStore = useRuntimeStore() -const {toggleTheme} = useTheme() -const router = useRouter() - interface IProps { new: Word[], review: Word[], write: Word[], } -let studyData = $ref({ - new: [], - review: [], - write: [] -}) - -//TODO 需要判断是否已忽略 -function repeat() { - // console.log('repeat') - settingStore.dictation = false - emitter.emit(EventKey.resetWord) - studyData = cloneDeep(studyData) -} - - -onMounted(() => { - if (runtimeStore.routeData) { - studyData = runtimeStore.routeData - } else { - router.push('/word') - } -}) - - -useStartKeyboardEventListener() - -const typingRef: any = $ref() -const store = useBaseStore() -const statStore = usePracticeStore() - const { isWordCollect, toggleWordCollect, isWordSimple, toggleWordSimple } = useWordOptions() - +const settingStore = useSettingStore() +const runtimeStore = useRuntimeStore() +const {toggleTheme} = useTheme() +const router = useRouter() +const store = useBaseStore() +const statStore = usePracticeStore() +const typingRef: any = $ref() let allWrongWords = new Set() +let studyData = $ref({ + new: [], + review: [], + write: [] +}) + let data = $ref({ index: 0, words: [], @@ -81,6 +58,14 @@ let data = $ref({ provide('studyData', data) +onMounted(() => { + if (runtimeStore.routeData) { + studyData = runtimeStore.routeData + } else { + router.push('/word') + } +}) + watch(() => studyData, () => { data.words = studyData.new data.index = 0 @@ -175,11 +160,12 @@ function onTypeWrong() { } function onKeyUp(e: KeyboardEvent) { + // console.log('onKeyUp', e) typingRef.hideWord() } async function onKeyDown(e: KeyboardEvent) { - // console.log('e', e) + // console.log('onKeyDown', e) switch (e.key) { case 'Backspace': typingRef.del() @@ -187,8 +173,18 @@ async function onKeyDown(e: KeyboardEvent) { } } +useStartKeyboardEventListener() + useOnKeyboardEventListener(onKeyDown, onKeyUp) +//TODO 需要判断是否已忽略 +function repeat() { + // console.log('repeat') + settingStore.dictation = false + emitter.emit(EventKey.resetWord) + studyData = cloneDeep(studyData) +} + //TODO 略过忽略的单词上 function prev() { if (data.index === 0) {