From 2228783e67df4dd0de55d9f6abdb6936fcd2b7d7 Mon Sep 17 00:00:00 2001 From: zyronon Date: Thu, 21 Aug 2025 02:15:22 +0800 Subject: [PATCH] fix:a new free learning mode has been added --- src/hooks/dict.ts | 8 + src/pages/pc/components/BaseTable.vue | 165 +++++++++--------- .../pc/components/base/checkbox/Checkbox.vue | 2 +- .../pc/components/base/radio/RadioGroup.vue | 2 +- src/pages/pc/components/dialog/Dialog.vue | 7 +- src/pages/pc/setting/Setting.vue | 38 ++-- src/pages/pc/setting/SettingItem.vue | 2 +- src/pages/pc/word/DictDetail.vue | 46 ++++- src/pages/pc/word/Statistics.vue | 16 +- src/pages/pc/word/StudyWord.vue | 30 +++- src/pages/pc/word/WordHomePage.vue | 124 ++++++------- .../ChangeLastPracticeIndexDialog.vue | 44 +++++ .../word/components/PracticeSettingDialog.vue | 127 ++++++++++++++ src/stores/base.ts | 11 +- src/stores/setting.ts | 6 +- src/utils/const.ts | 2 +- 16 files changed, 435 insertions(+), 195 deletions(-) create mode 100644 src/pages/pc/word/components/ChangeLastPracticeIndexDialog.vue create mode 100644 src/pages/pc/word/components/PracticeSettingDialog.vue diff --git a/src/hooks/dict.ts b/src/hooks/dict.ts index 2a5b71dc..b390db37 100644 --- a/src/hooks/dict.ts +++ b/src/hooks/dict.ts @@ -120,6 +120,7 @@ export function getCurrentStudyWord() { } end++ } + } else { //从start往后取perDay个单词,作为当前练习单词 for (let item of list) { @@ -130,6 +131,7 @@ export function getCurrentStudyWord() { } end++ } + //从start往前取perDay个单词,作为当前复习单词,取到0为止 list = dict.words.slice(0, start).toReversed() for (let item of list) { @@ -142,6 +144,12 @@ export function getCurrentStudyWord() { } } + //如果是自由模式,那么统统设置到new字段里面去 + if (settingStore.wordPracticeMode === 1) { + data.new = data.new.length ? data.new : data.review + data.review = [] + return data + } // 上上次更早的单词 //默认只取start之前的单词 diff --git a/src/pages/pc/components/BaseTable.vue b/src/pages/pc/components/BaseTable.vue index 8dc565bc..bb511abc 100644 --- a/src/pages/pc/components/BaseTable.vue +++ b/src/pages/pc/components/BaseTable.vue @@ -17,14 +17,14 @@ import DeleteIcon from "@/components/icon/DeleteIcon.vue"; let list = defineModel('list') const props = withDefaults(defineProps<{ - showBorder?: boolean loading?: boolean + showToolbar?: boolean del?: Function batchDel?: Function add?: Function }>(), { - showBorder: false, loading: true, + showToolbar: true, del: () => void 0, add: () => void 0, batchDel: () => void 0 @@ -127,102 +127,101 @@ defineRender( return (
-
- { - showSearchInput ? ( -
- searchKey = e)} - class="flex-1"/> - (showSearchInput = false, searchKey = '')}>取消 -
- ) : ( -
-
- toggleSelectAll()} - modelValue={selectAll} - size="large"/> - {selectIds.length} / {list.value.length} -
- - -
- { - selectIds.length ? - - - - - - : null - } - - - - showSortDialog = !showSortDialog} + { + props.showToolbar &&
+ { + showSearchInput ? ( +
- - - showSearchInput = !showSearchInput} - title="搜索"> - - - showSortDialog = e} - style="width: 8rem;" - > -
- 列表顺序设置 + searchKey = e)} + class="flex-1"/> + (showSearchInput = false, searchKey = '')}>取消 +
+ ) : ( +
+
+ toggleSelectAll()} + modelValue={selectAll} + size="large"/> + {selectIds.length} / {list.value.length}
-
- sort(Sort.reverse)}>翻转 - - sort(Sort.random)}>随机 + +
+ { + selectIds.length ? + + + + + + : null + } + + + + showSortDialog = !showSortDialog} + > + + + showSearchInput = !showSearchInput} + title="搜索"> + + + showSortDialog = e} + style="width: 8rem;" + > +
+ 列表顺序设置 +
+
+ sort(Sort.reverse)}>翻转 + + sort(Sort.random)}>随机 +
+
- -
-
- ) - } -
+
+ ) + } +
+ } { props.loading ?
- +
: currentList.length ? ( <>
listRef = e}> - {currentList.map((item) => { + {currentList.map((item, index) => { return (
- {s.default({checkbox: d, item})} + {s.default({checkbox: d, item, index: (pageSize * (pageNo - 1)) + index + 1})}
) })} diff --git a/src/pages/pc/components/base/checkbox/Checkbox.vue b/src/pages/pc/components/base/checkbox/Checkbox.vue index 9bee520e..7e820481 100644 --- a/src/pages/pc/components/base/checkbox/Checkbox.vue +++ b/src/pages/pc/components/base/checkbox/Checkbox.vue @@ -17,7 +17,7 @@ defineProps({ modelValue: Boolean }) -const emit = defineEmits(['update:modelValue', 'click']) +const emit = defineEmits(['update:modelValue', 'click', 'onChange']) function change($event) { emit('update:modelValue', $event.target.checked) diff --git a/src/pages/pc/components/base/radio/RadioGroup.vue b/src/pages/pc/components/base/radio/RadioGroup.vue index 15c75729..da7e4942 100644 --- a/src/pages/pc/components/base/radio/RadioGroup.vue +++ b/src/pages/pc/components/base/radio/RadioGroup.vue @@ -1,5 +1,5 @@ diff --git a/src/pages/pc/components/dialog/Dialog.vue b/src/pages/pc/components/dialog/Dialog.vue index 24a24325..c5b7b2a3 100644 --- a/src/pages/pc/components/dialog/Dialog.vue +++ b/src/pages/pc/components/dialog/Dialog.vue @@ -92,7 +92,6 @@ watch(() => props.modelValue, n => { runtimeStore.modalList.push({id, close}) zIndex = 999 + runtimeStore.modalList.length visible = true - console.log(12) } else { close() } @@ -170,6 +169,7 @@ async function cancel() {
{{ content }}