From 6131a9397b86713b0401f4098f6863b5bd04fcc2 Mon Sep 17 00:00:00 2001 From: zyronon Date: Tue, 24 Oct 2023 01:25:06 +0800 Subject: [PATCH] save --- Note.md | 6 +++- src/components/ChapterList.vue | 20 ++++++++++++-- src/components/Practice/Panel.vue | 41 +++++++++++++++++++--------- src/components/Practice/TypeWord.vue | 19 +++++++++++-- src/components/Toolbar/DictModal.vue | 33 ++++++++++------------ src/components/Toolbar/Toolbar.vue | 2 +- 6 files changed, 84 insertions(+), 37 deletions(-) diff --git a/Note.md b/Note.md index a6491f3a..056c93f3 100644 --- a/Note.md +++ b/Note.md @@ -47,4 +47,8 @@ A cold welcome 有bug http://enpuz.com/ 语法分析工具 -键盘音效应该多放几遍 \ No newline at end of file +键盘音效应该多放几遍 + +加载单词列表时需要loading + +背单词页面div,位置应该恒定,不应该随翻译内容变动而跳动 \ No newline at end of file diff --git a/src/components/ChapterList.vue b/src/components/ChapterList.vue index fcef6829..9a6ce723 100644 --- a/src/components/ChapterList.vue +++ b/src/components/ChapterList.vue @@ -1,8 +1,9 @@ diff --git a/src/components/Practice/Panel.vue b/src/components/Practice/Panel.vue index ae6bda23..cecb3bc3 100644 --- a/src/components/Practice/Panel.vue +++ b/src/components/Practice/Panel.vue @@ -8,6 +8,7 @@ import {Dict, DictType, Word} from "@/types.ts" import PopConfirm from "@/components/PopConfirm.vue" import BaseButton from "@/components/BaseButton.vue"; import {useSettingStore} from "@/stores/setting.ts"; +import Close from "@/components/Close.vue"; const props = defineProps<{ list?: Word[], @@ -42,7 +43,10 @@ const currentDict: Dict = $computed(() => { }) const currentData = $computed(() => { - if (store.current.dictType !== currentDict.type) return {list: currentDict.chapterWords[currentDict.chapterIndex] ?? [], index: -1} + if (store.current.dictType !== currentDict.type) return { + list: currentDict.chapterWords[currentDict.chapterIndex] ?? [], + index: -1 + } else return props }) @@ -76,8 +80,13 @@ function changeIndex(i: number, dict: Dict) {
+ + +
-
+
{{ currentDict.name + ` 第${currentDict.chapterIndex + 1}章` }}
{{ store.new.name }}
@@ -188,7 +197,7 @@ $header-height: 50rem; .slide { width: 100%; - height: calc(100% - $header-height); + flex: 1; overflow: hidden; .slide-list { @@ -257,38 +266,44 @@ $header-height: 50rem; z-index: 1; & > header { - height: $header-height; + min-height: 50rem; + box-sizing: border-box; position: relative; display: flex; align-items: center; + padding: 10rem 15rem; + border-bottom: 1px solid #e1e1e1; + gap: 15rem; + + .close { + cursor: pointer; + } .tabs { - padding: 10rem 20rem; justify-content: flex-end; width: 100%; display: flex; - align-items: flex-end; - border-bottom: 1px solid #e1e1e1; + align-items: center; gap: 15rem; font-size: 14rem; color: gray; .tab { cursor: pointer; + word-break: keep-all; + font-size: 16rem; &.active { - font-size: 16rem; color: rgb(36, 127, 255); font-weight: bold; } } + + .current { + word-break: break-word; + } } - .close { - cursor: pointer; - position: absolute; - right: 20rem; - } } } diff --git a/src/components/Practice/TypeWord.vue b/src/components/Practice/TypeWord.vue index ec1ba897..b3c7d6ea 100644 --- a/src/components/Practice/TypeWord.vue +++ b/src/components/Practice/TypeWord.vue @@ -203,7 +203,22 @@ function repeat() { async function onKeyDown(e: KeyboardEvent) { //TODO 还有横杠 - if ((e.keyCode >= 65 && e.keyCode <= 90) || e.code === 'Space') { + //非英文模式下,输入区域的 keyCode 均为 229时, + if ((e.keyCode >= 65 && e.keyCode <= 90) + || (e.keyCode >= 48 && e.keyCode <= 57) + || e.code === 'Space' + || e.code === 'Slash' + || e.code === 'Quote' + || e.code === 'Comma' + || e.code === 'BracketLeft' + || e.code === 'BracketRight' + || e.code === 'Period' + || e.code === 'Minus' + || e.code === 'Equal' + || e.code === 'Semicolon' + || e.code === 'Backquote' + || e.keyCode === 229 + ) { if (inputLock) return inputLock = true let letter = e.key @@ -422,7 +437,7 @@ useOnKeyboardEventListener(onKeyDown, onKeyUp) .options { margin-top: 10rem; display: flex; - gap: 15rem; + gap: 25rem; font-size: 18rem; } diff --git a/src/components/Toolbar/DictModal.vue b/src/components/Toolbar/DictModal.vue index 5586bd37..0055722f 100644 --- a/src/components/Toolbar/DictModal.vue +++ b/src/components/Toolbar/DictModal.vue @@ -2,7 +2,7 @@ import {dictionaryResources} from '@/assets/dictionary.ts' import {useBaseStore} from "@/stores/base.ts" import {watch} from "vue" -import {DefaultDict, Dict, DictResource, DictType, languageCategoryOptions, Word} from "@/types.ts" +import {DefaultDict, Dict, DictResource, DictType, languageCategoryOptions} from "@/types.ts" import {chunk, cloneDeep, groupBy} from "lodash-es"; import {$computed, $ref} from "vue/macros"; import Modal from "@/components/Modal/Modal.vue"; @@ -14,7 +14,6 @@ import {ActivityCalendar} from "vue-activity-calendar"; import "vue-activity-calendar/style.css"; import ChapterList from "@/components/ChapterList.vue"; import WordListModal from "@/components/WordListModal.vue"; -import {emitter, EventKey} from "@/utils/eventBus.ts"; import {isArticle} from "@/hooks/article.ts"; import {useRuntimeStore} from "@/stores/runtime.ts"; import {useSettingStore} from "@/stores/setting.ts"; @@ -49,12 +48,21 @@ watch(() => props.modelValue, (n: boolean) => { }) async function selectDict(item: DictResource) { - console.log('item', item) step = 1 - let find = baseStore.myDicts.find((v: Dict) => v.name === item.name) + let find: Dict = baseStore.myDicts.find((v: Dict) => v.name === item.name) if (find) { - runtimeStore.editDict = cloneDeep(find) + if (find.type === DictType.article) { + if (!find.articles.length) { + let r = await fetch(`./dicts/${find.language}/${find.type}/${find.translateLanguage}/${find.url}`) + let v = await r.json() + find.articles = v.map(s => { + s.id = uuidv4() + return s + }) + } + runtimeStore.editDict = cloneDeep(find) + } } else { let data: Dict = { ...DefaultDict, @@ -71,15 +79,6 @@ async function selectDict(item: DictResource) { })) runtimeStore.editDict = cloneDeep(data) } else { - if (data.translateLanguage === 'common') { - console.time() - v.map((w: Word) => { - let res = runtimeStore.translateWordList.find(a => a.name === w.name) - if (res) w = Object.assign(w, res) - }) - console.timeEnd() - } - data.originWords = v data.words = v data.chapterWords = chunk(v, data.chapterWordNumber) @@ -216,10 +215,8 @@ const dictIsArticle = $computed(() => { v-if="dictIsArticle" >总文章:{{ runtimeStore.editDict.articles.length }}篇
-
- 总词汇:{{ runtimeStore.editDict.length }}词 +
+ 总词汇:{{ runtimeStore.editDict.length }}词
开始日期:-
花费时间:-
diff --git a/src/components/Toolbar/Toolbar.vue b/src/components/Toolbar/Toolbar.vue index 1593bdb4..4f8d14f4 100644 --- a/src/components/Toolbar/Toolbar.vue +++ b/src/components/Toolbar/Toolbar.vue @@ -167,7 +167,7 @@ header { display: flex; gap: 10rem; align-items: center; - overflow: hidden; + //overflow: hidden; transition: all .3s; } }