1 单词增加序号 2 单词增加直接随机模式

This commit is contained in:
hamburger
2025-10-08 10:49:24 +08:00
parent ada07782eb
commit 8851e72cde
8 changed files with 50 additions and 5 deletions

1
components.d.ts vendored
View File

@@ -44,6 +44,7 @@ declare module 'vue' {
IconFluentArrowLeft16Regular: typeof import('~icons/fluent/arrow-left16-regular')['default']
IconFluentArrowMove20Regular: typeof import('~icons/fluent/arrow-move20-regular')['default']
IconFluentArrowRight16Regular: typeof import('~icons/fluent/arrow-right16-regular')['default']
IconFluentArrowShuffle16Regular: typeof import('~icons/fluent/arrow-shuffle16-regular')['default']
IconFluentArrowSort20Regular: typeof import('~icons/fluent/arrow-sort20-regular')['default']
IconFluentBookLetter20Regular: typeof import('~icons/fluent/book-letter20-regular')['default']
IconFluentCheckmark20Regular: typeof import('~icons/fluent/checkmark20-regular')['default']

View File

@@ -16,6 +16,7 @@
"i18n:write": "gulp i18nwrite",
"deploy-oss": "node scripts/deploy-oss.js"
},
"type": "module",
"dependencies": {
"@imengyu/vue3-context-menu": "^1.5.1",
"axios": "^1.10.0",

View File

@@ -47,7 +47,8 @@ defineExpose({scrollToBottom, scrollToItem})
<slot name="prefix" :item="item" :index="index"></slot>
</template>
<template v-slot="{ item, index }">
<div class="item-title">
<div class="item-title word-title">
<span class="index">{{ index + 1 }}.</span>
<span class="word" :class="!showWord && 'word-shadow'">{{ item.word }}</span>
<span class="phonetic" :class="!showWord && 'word-shadow'">{{ item.phonetic0 }}</span>
<VolumeIcon class="volume" @click="playWordAudio(item.word)"></VolumeIcon>
@@ -72,5 +73,10 @@ defineExpose({scrollToBottom, scrollToItem})
</template>
<style scoped lang="scss">
.word-title{
display: flex;
span{
flex-shrink: 0;
}
}
</style>

View File

@@ -152,7 +152,9 @@ function getShortcutKeyName(key: string): string {
'ToggleDictation': '切换默写模式',
'ToggleTheme': '切换主题',
'ToggleConciseMode': '切换简洁模式',
'TogglePanel': '切换面板'
'TogglePanel': '切换面板',
'RandomWrite': '随机默写',
'NextRandomWrite': '继续随机默写'
}
return shortcutKeyNameMap[key] || key

View File

@@ -57,6 +57,8 @@ let data = $ref<PracticeData>({
wrongWords: [],
})
let isRandomWrite = false;
async function loadDict() {
// console.log('load好了开始加载')
let dict = getDefaultDict()
@@ -229,7 +231,8 @@ function next(isTyping: boolean = true) {
//开始默写新词
if (statStore.step === 0) {
if (settingStore.wordPracticeMode === 1) {
if (settingStore.wordPracticeMode === 1 || isRandomWrite) {
isRandomWrite = false
console.log('自由模式,全完学完了')
showStatDialog = true
localStorage.removeItem(PracticeSaveWordKey.key)
@@ -380,9 +383,24 @@ function continueStudy() {
initData(getCurrentStudyWord())
}
function randomWrite() {
console.log('随机默写')
data.words = shuffle(data.words);
data.index = 0
settingStore.dictation = true
isRandomWrite = true
}
function nextRandomWrite() {
console.log('继续随机默写')
initData(getCurrentStudyWord())
randomWrite();
showStatDialog = false
}
useEvents([
[EventKey.repeatStudy, repeat],
[EventKey.continueStudy, continueStudy],
[EventKey.randomWrite, nextRandomWrite],
[EventKey.changeDict, () => {
initData(getCurrentStudyWord())
}],
@@ -401,6 +419,8 @@ useEvents([
[ShortcutKey.ToggleTheme, toggleTheme],
[ShortcutKey.ToggleConciseMode, toggleConciseMode],
[ShortcutKey.TogglePanel, togglePanel],
[ShortcutKey.RandomWrite, randomWrite],
[ShortcutKey.NextRandomWrite, nextRandomWrite],
])
</script>
@@ -453,6 +473,11 @@ useEvents([
:title="`下一组(${settingStore.shortcutKeyMap[ShortcutKey.NextChapter]})`">
<IconFluentArrowRight16Regular class="arrow" width="22"/>
</BaseIcon>
<BaseIcon
@click="randomWrite"
:title="`随机默写(${settingStore.shortcutKeyMap[ShortcutKey.RandomWrite]})`">
<IconFluentArrowShuffle16Regular class="arrow" width="22"/>
</BaseIcon>
</div>
</template>
<div class="panel-page-item pl-4">

View File

@@ -168,6 +168,11 @@ function options(emitType: string) {
@click="options(EventKey.continueStudy)">
{{ dictIsEnd ? '重新练习' : '再来一组' }}
</BaseButton>
<BaseButton
:keyboard="settingStore.shortcutKeyMap[ShortcutKey.NextRandomWrite]"
@click="options(EventKey.randomWrite)">
继续默写
</BaseButton>
<BaseButton @click="$router.back">
返回主页
</BaseButton>

View File

@@ -115,7 +115,9 @@ export enum ShortcutKey {
ToggleDictation = 'ToggleDictation',
ToggleTheme = 'ToggleTheme',
ToggleConciseMode = 'ToggleConciseMode',
TogglePanel = 'TogglePanel'
TogglePanel = 'TogglePanel',
RandomWrite = 'RandomWrite',
NextRandomWrite = 'NextRandomWrite'
}
export const DefaultShortcutKeyMap = {
@@ -135,6 +137,8 @@ export const DefaultShortcutKeyMap = {
[ShortcutKey.ToggleTheme]: 'Ctrl+Q',
[ShortcutKey.ToggleConciseMode]: 'Ctrl+M',
[ShortcutKey.TogglePanel]: 'Ctrl+L',
[ShortcutKey.RandomWrite]: 'Ctrl+R',
[ShortcutKey.NextRandomWrite]: 'Ctrl+Shift+R',
}
export enum TranslateEngine {

View File

@@ -17,6 +17,7 @@ export const EventKey = {
editDict: 'editDict',
openMyDictDialog: 'openMyDictDialog',
stateInitEnd: 'stateInitEnd',
randomWrite: 'randomWrite',
}
export function useEvent(key: string, func: any) {