From 8e9821a58a676535a0c1ab44b26bb1c773b437e1 Mon Sep 17 00:00:00 2001 From: zyronon Date: Sun, 20 Jul 2025 22:13:12 +0800 Subject: [PATCH] feat:fix dict list --- src/pages/pc/article/ArticleHomePage.vue | 12 +- src/pages/pc/article/BookDetail.vue | 27 +- src/pages/pc/article/components/EditBook.vue | 98 +++---- src/pages/pc/components/BaseTable.vue | 4 +- src/pages/pc/components/Input.vue | 2 +- src/pages/pc/components/PopConfirm.vue | 4 +- src/pages/pc/components/Ring.vue | 78 ----- src/pages/pc/components/WordItem.vue | 4 +- src/pages/pc/index.vue | 2 +- src/pages/pc/word/EditWordDict.vue | 270 ++++++++++-------- src/pages/pc/word/WordHomePage.vue | 4 +- src/pages/pc/word/{ => components}/Footer.vue | 3 +- src/pages/pc/{ => word}/components/Typing.vue | 1 + src/pages/pc/word/components/TypingWord.vue | 33 +-- src/stores/base.ts | 22 +- src/types.ts | 1 - 16 files changed, 261 insertions(+), 304 deletions(-) delete mode 100644 src/pages/pc/components/Ring.vue rename src/pages/pc/word/{ => components}/Footer.vue (98%) rename src/pages/pc/{ => word}/components/Typing.vue (99%) diff --git a/src/pages/pc/article/ArticleHomePage.vue b/src/pages/pc/article/ArticleHomePage.vue index 16eb8e8a..98231359 100644 --- a/src/pages/pc/article/ArticleHomePage.vue +++ b/src/pages/pc/article/ArticleHomePage.vue @@ -95,8 +95,10 @@ function startStudy() {
-
{{ dict.name }}
-
{{ dict.description }}
+
+
{{ dict.name }}
+
{{ dict.description }}
+
{{ dict.length }}篇
@@ -118,8 +120,10 @@ function startStudy() {
-
{{ dict.name }}
-
{{ dict.description }}
+
+
{{ dict.name }}
+
{{ dict.description }}
+
{{ dict.length }}篇
diff --git a/src/pages/pc/article/BookDetail.vue b/src/pages/pc/article/BookDetail.vue index 9e9e5c08..52eb2444 100644 --- a/src/pages/pc/article/BookDetail.vue +++ b/src/pages/pc/article/BookDetail.vue @@ -11,6 +11,7 @@ import BaseButton from "@/components/BaseButton.vue"; import {useRoute, useRouter} from "vue-router"; import EditBook from "@/pages/pc/article/components/EditBook.vue"; import {computed, onMounted} from "vue"; +import {cloneDeep} from "lodash-es"; const runtimeStore = useRuntimeStore() const base = useBaseStore() @@ -53,7 +54,12 @@ const showBookDetail = computed(() => { onMounted(() => { if (route.query?.isAdd) { isAdd = true + }else { + if (!runtimeStore.editDict.id) { + router.push("/") + } } + }) function formClose() { @@ -69,7 +75,7 @@ function formClose() {
{{ runtimeStore.editDict.name }}
- 编辑信息 + 编辑 文章管理 学习
@@ -109,11 +115,20 @@ function formClose() { -
-
- +
+ +
{{ + runtimeStore.editDict.id ? '修改' : '添加' + }}书籍 +
+
+
+
diff --git a/src/pages/pc/article/components/EditBook.vue b/src/pages/pc/article/components/EditBook.vue index dbe7abb3..97776ea3 100644 --- a/src/pages/pc/article/components/EditBook.vue +++ b/src/pages/pc/article/components/EditBook.vue @@ -10,7 +10,8 @@ import {useBaseStore} from "@/stores/base.ts"; import {syncMyDictList} from "@/hooks/dict.ts"; const props = defineProps<{ - isAdd: boolean + isAdd: boolean, + isBook: boolean }>() const emit = defineEmits<{ submit: [] @@ -44,28 +45,29 @@ async function onSubmit() { ...getDefaultDict(), ...dictForm, }) + let source = [store.article, store.word][props.isBook ? 0 : 1] //任意修改,都将其变为自定义词典 data.isCustom = true if (props.isAdd) { data.id = 'custom-dict-' + Date.now() //TODO 允许同名? - if (store.article.bookList.find(v => v.name === data.name)) { + if (source.bookList.find(v => v.name === data.name)) { return ElMessage.warning('已有相同名称书籍!') } else { - store.article.bookList.push(data) + source.bookList.push(data) runtimeStore.editDict = data emit('submit') ElMessage.success('添加成功') } } else { - let rIndex = store.article.bookList.findIndex(v => v.id === data.id) + let rIndex = source.bookList.findIndex(v => v.id === data.id) if (rIndex > -1) { - store.article.bookList[rIndex] = cloneDeep(data) + source.bookList[rIndex] = cloneDeep(data) runtimeStore.editDict = cloneDeep(data) emit('submit') ElMessage.success('修改成功') - }else { + } else { ElMessage.warning('修改失败') } } @@ -85,61 +87,43 @@ onMounted(() => { diff --git a/src/pages/pc/components/BaseTable.vue b/src/pages/pc/components/BaseTable.vue index 5a137fc1..3e9ad528 100644 --- a/src/pages/pc/components/BaseTable.vue +++ b/src/pages/pc/components/BaseTable.vue @@ -1,6 +1,5 @@ - diff --git a/src/pages/pc/components/WordItem.vue b/src/pages/pc/components/WordItem.vue index f01cf87b..f7152e94 100644 --- a/src/pages/pc/components/WordItem.vue +++ b/src/pages/pc/components/WordItem.vue @@ -8,10 +8,12 @@ const props = withDefaults(defineProps<{ item: Word, showTranslate?: boolean showWord?: boolean + showTransPop?: boolean hiddenOptionIcon?: boolean }>(), { showTranslate: true, showWord: true, + showTransPop: true, hiddenOptionIcon: false, }) @@ -34,7 +36,7 @@ const playWordAudio = usePlayWordAudio()
-
+
diff --git a/src/pages/pc/word/EditWordDict.vue b/src/pages/pc/word/EditWordDict.vue index 4a0abf0d..d309a033 100644 --- a/src/pages/pc/word/EditWordDict.vue +++ b/src/pages/pc/word/EditWordDict.vue @@ -1,19 +1,27 @@