diff --git a/src/components/HomeworkEditDialog.vue b/src/components/HomeworkEditDialog.vue new file mode 100644 index 0000000..99d1ffb --- /dev/null +++ b/src/components/HomeworkEditDialog.vue @@ -0,0 +1,541 @@ +# 创建新的作业编辑对话框组件 + + + + + \ No newline at end of file diff --git a/src/components/settings/cards/HomeworkTemplateCard.vue b/src/components/settings/cards/HomeworkTemplateCard.vue new file mode 100644 index 0000000..3c40238 --- /dev/null +++ b/src/components/settings/cards/HomeworkTemplateCard.vue @@ -0,0 +1,690 @@ + + + + + \ No newline at end of file diff --git a/src/pages/index.vue b/src/pages/index.vue index 8cd1a75..343f71b 100644 --- a/src/pages/index.vue +++ b/src/pages/index.vue @@ -241,27 +241,13 @@ - - - {{ state.dialogTitle }} - - {{ autoSave ? "喵?喵呜!" : "写完后点击上传谢谢喵" }} - - - - - - + :title="state.dialogTitle" + :initial-content="state.textarea" + :auto-save="autoSave" + @save="handleHomeworkSave" + /> {{ state.snackbarText }} @@ -622,6 +608,7 @@ import RandomPicker from "@/components/RandomPicker.vue"; import NamespaceAccess from "@/components/NamespaceAccess.vue"; import FloatingToolbar from "@/components/FloatingToolbar.vue"; import FloatingICP from "@/components/FloatingICP.vue"; +import HomeworkEditDialog from "@/components/HomeworkEditDialog.vue"; import dataProvider from "@/utils/dataProvider"; import { getSetting, @@ -645,6 +632,7 @@ export default { NamespaceAccess, FloatingToolbar, FloatingICP, + HomeworkEditDialog, }, data() { return { @@ -1241,11 +1229,20 @@ export default { subject; this.state.textarea = this.state.boardData.homework[subject].content; this.state.dialogVisible = true; - this.$nextTick(() => { - if (this.$refs.inputRef) { - this.$refs.inputRef.focus(); - } - }); + }, + + async handleHomeworkSave(content) { + if (!this.currentEditSubject) return; + + this.state.boardData.homework[this.currentEditSubject] = { + content: content, + }; + + this.state.synced = false; + + if (this.autoSave) { + await this.trySave(true); + } }, splitPoint(content) { diff --git a/src/pages/settings.vue b/src/pages/settings.vue index 1cce10c..2ec7b88 100644 --- a/src/pages/settings.vue +++ b/src/pages/settings.vue @@ -156,6 +156,9 @@ + + + @@ -234,6 +237,7 @@ import SettingsExplorer from "@/components/settings/SettingsExplorer.vue"; import SettingsLinkGenerator from "@/components/SettingsLinkGenerator.vue"; import NamespaceSettingsCard from "@/components/settings/cards/NamespaceSettingsCard.vue"; import RandomPickerCard from "@/components/settings/cards/RandomPickerCard.vue"; +import HomeworkTemplateCard from '@/components/settings/cards/HomeworkTemplateCard.vue'; export default { name: "Settings", components: { @@ -252,6 +256,7 @@ export default { SettingsLinkGenerator, NamespaceSettingsCard, RandomPickerCard, + HomeworkTemplateCard, }, setup() { const { mobile } = useDisplay(); @@ -389,6 +394,11 @@ export default { icon: "mdi-dice-multiple", value: "randomPicker", }, + { + title: "作业模板", + icon: "mdi-book-edit", + value: "homework", + }, { title: "开发者", icon: "mdi-developer-board", diff --git a/src/utils/providers/kvServerProvider.js b/src/utils/providers/kvServerProvider.js index d4f8e27..8fcec6c 100644 --- a/src/utils/providers/kvServerProvider.js +++ b/src/utils/providers/kvServerProvider.js @@ -133,7 +133,7 @@ export const kvServerProvider = { if (error.response?.status === 404) { return formatError("数据不存在", "NOT_FOUND"); } - + console.log(error); return formatError( error.response?.data?.message || "服务器连接失败", "NETWORK_ERROR" @@ -150,6 +150,7 @@ export const kvServerProvider = { }); return formatResponse(true); } catch (error) { + console.log(error); return formatError( error.response?.data?.message || "保存失败", "SAVE_ERROR"