+
我的
diff --git a/src/pages/mobile/practice.vue b/src/pages/mobile/practice/index-test.vue
similarity index 78%
rename from src/pages/mobile/practice.vue
rename to src/pages/mobile/practice/index-test.vue
index 91805d71..b360aec7 100644
--- a/src/pages/mobile/practice.vue
+++ b/src/pages/mobile/practice/index-test.vue
@@ -4,13 +4,13 @@ import {useBaseStore} from "@/stores/base.ts";
import {useRuntimeStore} from "@/stores/runtime.ts";
import {useSettingStore} from "@/stores/setting.ts";
import {$computed, $ref} from "vue/macros";
-import {ShortcutKey, Sort, Word} from "@/types.ts";
+import {DefaultDisplayStatistics, DictType, ShortcutKey, Sort, Word} from "@/types.ts";
import {cloneDeep} from "lodash-es";
import {emitter, EventKey} from "@/utils/eventBus.ts";
import {syncMyDictList, useWordOptions} from "@/hooks/dict.ts";
import {nextTick, onMounted, onUnmounted, watch} from "vue";
import BaseButton from "@/components/BaseButton.vue";
-import Options from "@/pages/practice/Options.vue";
+import Options from "@/pages/pc/practice/Options.vue";
import BaseIcon from "@/components/BaseIcon.vue";
import MobilePanel from "@/pages/mobile/components/MobilePanel.vue";
import MiniDialog from "@/components/dialog/MiniDialog.vue";
@@ -18,20 +18,21 @@ import WordList from "@/components/list/WordList.vue";
import Empty from "@/components/Empty.vue";
import {Icon} from "@iconify/vue";
import router from "@/router.ts";
-import Typing from "@/pages/practice/practice-word/Typing.vue";
+import Typing from "@/pages/pc/practice/practice-word/Typing.vue";
+import {usePracticeStore} from "@/stores/practice.ts";
const store = useBaseStore()
const runtimeStore = useRuntimeStore()
const settingStore = useSettingStore()
-let wordData = $ref({
+let data = $ref({
words: [],
index: -1,
wrongWords: [],
})
const word: Word = $computed(() => {
- return wordData.words[wordData.index] ?? {
+ return data.words[data.index] ?? {
trans: [],
name: '',
usphone: '',
@@ -41,8 +42,8 @@ const word: Word = $computed(() => {
function getCurrentPractice() {
if (store.chapter.length) {
- wordData.words = store.chapter
- wordData.index = 0
+ data.words = store.chapter
+ data.index = 0
store.chapter.map((w: Word) => {
if (!w.trans.length) {
@@ -51,18 +52,18 @@ function getCurrentPractice() {
}
})
- wordData.words = cloneDeep(store.chapter)
+ data.words = cloneDeep(store.chapter)
emitter.emit(EventKey.resetWord)
}
}
function sort(list: Word[]) {
- store.currentDict.chapterWords[store.currentDict.chapterIndex] = wordData.words = list
- wordData.index = 0
+ store.currentDict.chapterWords[store.currentDict.chapterIndex] = data.words = list
+ data.index = 0
syncMyDictList(store.currentDict)
}
-function next() {
+function nextChapter() {
if (store.currentDict.chapterIndex >= store.currentDict.chapterWords.length - 1) {
store.currentDict.chapterIndex = 0
} else store.currentDict.chapterIndex++
@@ -70,6 +71,61 @@ function next() {
getCurrentPractice()
}
+let stat = cloneDeep(DefaultDisplayStatistics)
+const practiceStore = usePracticeStore()
+
+function next(isTyping: boolean = true) {
+ if (data.index === data.words.length - 1) {
+
+ //复制当前错词,因为第一遍错词是最多的,后续的练习都是从错词中练习
+ if (stat.total === -1) {
+ let now = Date.now()
+ stat = {
+ startDate: practiceStore.startDate,
+ endDate: now,
+ spend: now - practiceStore.startDate,
+ total: props.words.length,
+ correctRate: -1,
+ inputWordNumber: practiceStore.inputWordNumber,
+ wrongWordNumber: data.wrongWords.length,
+ wrongWords: data.wrongWords,
+ }
+ stat.correctRate = 100 - Math.trunc(((stat.wrongWordNumber) / (stat.total)) * 100)
+ }
+
+ if (data.wrongWords.length) {
+ console.log('当前背完了,但还有错词')
+ data.words = cloneDeep(data.wrongWords)
+
+ practiceStore.total = data.words.length
+ practiceStore.index = data.index = 0
+ practiceStore.inputWordNumber = 0
+ practiceStore.wrongWordNumber = 0
+ practiceStore.repeatNumber++
+ data.wrongWords = []
+ } else {
+ console.log('这章节完了')
+ isTyping && practiceStore.inputWordNumber++
+
+ let now = Date.now()
+ stat.endDate = now
+ stat.spend = now - stat.startDate
+
+ emitter.emit(EventKey.openStatModal, stat)
+ }
+ } else {
+ data.index++
+ isTyping && practiceStore.inputWordNumber++
+ console.log('这个词完了')
+ if ([DictType.word].includes(store.currentDict.type)
+ && store.skipWordNames.includes(word.name.toLowerCase())) {
+ next()
+ }
+ }
+}
+
+
+
watch(() => store.load, n => {
getCurrentPractice()
})
@@ -87,7 +143,6 @@ const {
toggleWordCollect,
isWordSimple,
toggleWordSimple,
- toggleWordSimpleWrapper
} = useWordOptions()
let showSortOption = $ref(false)
@@ -113,7 +168,7 @@ function change(e) {
function know() {
settingStore.translate = false
setTimeout(() => {
- wordData.index++
+ data.index++
}, 300)
}
@@ -207,18 +262,18 @@ function unknow() {
v-if="store.currentDict.chapterIndex < store.currentDict.chapterWords.length - 1"/>
- {{ wordData.words.length }}个单词
+ {{ data.words.length }}个单词