fix: fix issue #81

This commit is contained in:
zyronon
2025-08-22 00:40:37 +08:00
parent 611527ea1e
commit 361d6e645c
38 changed files with 67 additions and 71 deletions

View File

@@ -30,13 +30,13 @@ const studyProgress = $computed(() => {
<div class="book relative overflow-hidden">
<template v-if="!isAdd">
<div>
<div>{{ item?.name }}</div>
<div class="text-base">{{ item?.name }}</div>
<div class="text-sm line-clamp-3" v-opacity="item.name !== item.description">{{ item?.description }}</div>
</div>
<div class="absolute bottom-4 right-4">
<div class="absolute bottom-3 right-3">
<div>{{ studyProgress }}{{ item?.length }}{{ quantifier }}</div>
</div>
<div class="absolute bottom-2 left-4 right-4">
<div class="absolute bottom-2 left-3 right-3">
<Progress v-if="item?.lastLearnIndex || item.complete" class="mt-1"
:percentage="progress"
:show-text="false"></Progress>
@@ -44,7 +44,7 @@ const studyProgress = $computed(() => {
<Checkbox v-if="showCheckbox"
:model-value="checked"
@change="$emit('check')"
class="absolute left-4 bottom-4"/>
class="absolute left-3 bottom-3"/>
<div class="custom" v-if="item.custom">自定义</div>
</template>
<div v-else class="center h-full">

View File

@@ -267,22 +267,11 @@ function importOldData() {
</SettingItem>
</div>
<div v-if="tabIndex === 1">
<SettingItem title="单词循环设置" class="gap-0!">
<RadioGroup v-model="settingStore.repeatCount">
<Radio :value="1" size="default">1</Radio>
<Radio :value="2" size="default">2</Radio>
<Radio :value="3" size="default">3</Radio>
<Radio :value="5" size="default">5</Radio>
<Radio :value="100" size="default">自定义</Radio>
<SettingItem title="单词练习模式">
<RadioGroup v-model="settingStore.wordPracticeMode" class="flex-col gap-0!">
<Radio :value="0" label="智能模式,系统自动计算复习单词与默写单词"/>
<Radio :value="1" label="自由模式,系统不强制复习与默写"/>
</RadioGroup>
<div class="ml-2 center gap-space" v-if="settingStore.repeatCount === 100">
<span>循环次数</span>
<InputNumber v-model="settingStore.repeatCustomCount"
:min="6"
:max="15"
type="number"
/>
</div>
</SettingItem>
<SettingItem title="显示上一个/下一个单词"
@@ -303,21 +292,20 @@ function importOldData() {
<Switch v-model="settingStore.allowWordTip"/>
</SettingItem>
<SettingItem title="单词练习模式">
<RadioGroup v-model="settingStore.wordPracticeMode" class="flex-col gap-0!">
<Radio :value="0" label="智能模式,系统自动计算复习单词与默写单词"/>
<Radio :value="1" label="自由模式,系统不强制复习与默写"/>
</RadioGroup>
</SettingItem>
<SettingItem title="不默认显示练习设置弹框"
desc="在词典详情页面,点击学习按钮后,是否显示练习设置弹框"
>
<Switch v-model="settingStore.disableShowPracticeSettingDialog"/>
</SettingItem>
<div class="line" v-if="settingStore.autoNextWord"></div>
<SettingItem title="自动切换下一个单词">
<Switch v-model="settingStore.autoNextWord"/>
</SettingItem>
<SettingItem title="自动切换下一个单词时间"
desc="正确输入单词后,自动跳转下一个单词的时间"
v-if="settingStore.autoNextWord"
>
<InputNumber v-model="settingStore.waitTimeForChangeWord"
:min="10"
@@ -327,8 +315,30 @@ function importOldData() {
<span class="ml-4">毫秒</span>
</SettingItem>
<div class="line" v-if="settingStore.autoNextWord"></div>
<SettingItem title="单词循环设置" class="gap-0!">
<RadioGroup v-model="settingStore.repeatCount">
<Radio :value="1" size="default">1</Radio>
<Radio :value="2" size="default">2</Radio>
<Radio :value="3" size="default">3</Radio>
<Radio :value="5" size="default">5</Radio>
<Radio :value="100" size="default">自定义</Radio>
</RadioGroup>
<div class="ml-2 center gap-space" v-if="settingStore.repeatCount === 100">
<span>循环次数</span>
<InputNumber v-model="settingStore.repeatCustomCount"
:min="6"
:max="15"
type="number"
/>
</div>
</SettingItem>
<div class="line"></div>
<SettingItem title="字体设置(仅可调整单词练习)"/>
<SettingItem title="字体设置(仅单词练习界面生效)"/>
<SettingItem title="外语字体">
<Slider
:min="10"
@@ -353,6 +363,7 @@ function importOldData() {
<SettingItem title="简单词列表"
class="items-start!"
v-if="settingStore.ignoreSimpleWord"
>
<Textarea
placeholder="多个单词用英文逗号隔号"
@@ -370,7 +381,7 @@ function importOldData() {
<div class="wrapper" @click="editShortcutKey = item[0]">
<div class="set-key" v-if="editShortcutKey === item[0]">
<input :value="item[1]?item[1]:'未设置快捷键'" readonly type="text" @blur="editShortcutKey = ''">
<span @click.stop="editShortcutKey = ''">直接按键盘进行设置</span>
<span @click.stop="editShortcutKey = ''">按键盘进行设置<span class="text-red!">设置完成点击这里</span></span>
</div>
<div v-else>
<div v-if="item[1]">{{ item[1] }}</div>

View File

@@ -79,7 +79,7 @@ function repeat() {
async function onTyping(e: KeyboardEvent) {
if (inputLock) return
console.log('onTyping')
console.log('onTyping', inputLock)
inputLock = true
let letter = e.key
let isTypingRight = false
@@ -104,17 +104,20 @@ async function onTyping(e: KeyboardEvent) {
if (input.toLowerCase() === props.word.word.toLowerCase()) {
playCorrect()
if (settingStore.repeatCount == 100) {
if (settingStore.repeatCustomCount <= wordRepeatCount + 1) {
setTimeout(() => emit('complete'), settingStore.waitTimeForChangeWord)
//不需要把inputLock设为false输入完成不能再输入了只能删除删除会打开锁
if (settingStore.autoNextWord) {
if (settingStore.repeatCount == 100) {
if (settingStore.repeatCustomCount <= wordRepeatCount + 1) {
setTimeout(() => emit('complete'), settingStore.waitTimeForChangeWord)
} else {
repeat()
}
} else {
repeat()
}
} else {
if (settingStore.repeatCount <= wordRepeatCount + 1) {
setTimeout(() => emit('complete'), settingStore.waitTimeForChangeWord)
} else {
repeat()
if (settingStore.repeatCount <= wordRepeatCount + 1) {
setTimeout(() => emit('complete'), settingStore.waitTimeForChangeWord)
} else {
repeat()
}
}
}
} else {
@@ -124,6 +127,7 @@ async function onTyping(e: KeyboardEvent) {
function del() {
playKeyboardAudio()
inputLock = false
if (wrong) {
wrong = ''