From 7ed444eb5eb6174e00cadee636098ce3038193e9 Mon Sep 17 00:00:00 2001 From: zyronon Date: Mon, 4 Dec 2023 01:20:49 +0800 Subject: [PATCH] save --- src/components/article/EditArticle.vue | 14 ++++++++---- .../practice-article/TypingArticle.vue | 22 ++++++------------- src/stores/base.ts | 2 +- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/components/article/EditArticle.vue b/src/components/article/EditArticle.vue index fe8584ca..cd7e9436 100644 --- a/src/components/article/EditArticle.vue +++ b/src/components/article/EditArticle.vue @@ -37,6 +37,7 @@ const emit = defineEmits<{ let networkTranslateEngine = $ref('baidu') let progress = $ref(0) let failCount = $ref(0) +let textareaRef = $ref() const TranslateEngineOptions = [ {value: 'baidu', label: '百度'}, {value: 'youdao', label: '有道'}, @@ -46,6 +47,8 @@ let editArticle = $ref
(cloneDeep(DefaultArticle)) watch(() => props.article, val => { editArticle = cloneDeep(val) + progress = 0 + failCount = 0 if (editArticle.text.trim()) { if (editArticle.useTranslateType === TranslateType.custom) { if (editArticle.textCustomTranslate.trim()) { @@ -76,18 +79,19 @@ function renewSections() { if (editArticle.useTranslateType === TranslateType.network) { failCount = renewSectionTranslates(editArticle, editArticle.textNetworkTranslate) } - console.log('failCount',failCount) } else { editArticle.sections = [] } } function appendTranslate(str: string) { + let selectionStart = textareaRef.selectionStart; + let selectionEnd = textareaRef.selectionEnd; if (editArticle.useTranslateType === TranslateType.custom) { - editArticle.textCustomTranslate += str + editArticle.textCustomTranslate = editArticle.textCustomTranslate.slice(0, selectionStart) + str + editArticle.textCustomTranslate.slice(selectionEnd) } if (editArticle.useTranslateType === TranslateType.network) { - editArticle.textNetworkTranslate += str + editArticle.textNetworkTranslate = editArticle.textNetworkTranslate.slice(0, selectionStart) + str + editArticle.textNetworkTranslate.slice(selectionEnd) } } @@ -108,7 +112,7 @@ function onPaste(event: ClipboardEvent) { () => { appendTranslate(paste) renewSections() - },null, + }, null, { confirmButtonText: '需要', cancelButtonText: '关闭', @@ -314,6 +318,7 @@ defineExpose({save, getEditArticle: () => cloneDeep(editArticle)}) type="textarea" class="base-textarea" placeholder="请填写翻译正文" + ref="textareaRef" > () let isPlay = $ref(false) +let typeArticleRef = $ref(null) let articleWrapperRef = $ref(null) let sectionIndex = $ref(0) let sentenceIndex = $ref(0) @@ -58,9 +59,6 @@ let hoverIndex = $ref({ const currentIndex = computed(() => { return `${sectionIndex}${sentenceIndex}${wordIndex}` }) -const collectIndex = $computed(() => { - return store.collect.articles.findIndex((v: Article) => v.title.toLowerCase() === props.article.title.toLowerCase()) -}) const playBeep = usePlayBeep() const playCorrect = usePlayCorrect() @@ -76,6 +74,7 @@ watch(() => props.article, () => { sentenceIndex = props.sentenceIndex wordIndex = props.wordIndex stringIndex = props.stringIndex + typeArticleRef?.scrollTo({top: 0, behavior: "smooth"}) calcTranslateLocation() }, {immediate: true}) @@ -362,16 +361,6 @@ function otherWord(word: ArticleWord, i: number, i2: number, i3: number) { return str } -function toggleCollect() { - if (collectIndex === -1) { - store.collect.articles.push(props.article) - ElMessage.success('收藏成功') - } else { - store.collect.articles.splice(collectIndex, 1) - ElMessage.success('取消成功') - } -} - const { isArticleCollect, toggleArticleCollect @@ -380,7 +369,7 @@ const {