feat(note): 实现笔记创建时后端生成ID功能

- 在CreateNoteDialog组件中导入updateMarkdown API并修改创建逻辑
- 创建笔记时传递null ID让后端生成唯一标识符
- 修改HomePage组件中的笔记创建和更新处理逻辑
- 在NoteEditor组件中获取后端返回的完整笔记数据包括新生成的ID
- 新创建的笔记将添加到列表开头并正确更新显示
This commit is contained in:
ikmkj
2026-01-06 18:31:23 +08:00
parent 701a621552
commit 49646658ce
5 changed files with 15 additions and 5 deletions

View File

@@ -264,6 +264,7 @@ const handleGroupDeleted = async () => {
const handleCreateNote = (payload) => {
resetEdit();
// 直接设置编辑数据ID将在第一次保存时由后端生成
editData.value = payload;
showEditor.value = true;
selectedFile.value = null; // Ensure preview is hidden
@@ -283,6 +284,7 @@ const handleSaveSuccess = (updatedFile) => {
if (index !== -1) {
groupMarkdownFiles.value[index] = updatedFile;
} else {
// 如果是新创建的笔记之前ID为null添加到列表开头
groupMarkdownFiles.value.unshift(updatedFile);
}
@@ -567,4 +569,4 @@ watch([selectedFile, showEditor], ([newFile, newShowEditor]) => {
height: 56px;
box-shadow: 0 4px 12px rgba(0,0,0,.15);
}
</style>
</style>

View File

@@ -84,7 +84,7 @@ const save = async (value) => {
try {
saveStatus.value = '正在保存...';
// 发送完整的笔记对象,确保包含所有必要字段
await updateMarkdown({
const response = await updateMarkdown({
id: props.editData.id,
content: content,
title: props.editData.title,
@@ -92,9 +92,13 @@ const save = async (value) => {
fileName: props.editData.fileName,
isPrivate: props.editData.isPrivate
});
// 确保获取到后端返回的数据包括可能的新ID
const updatedNote = response.data;
// 保存成功,更新状态
saveStatus.value = '已保存';
emit('update:editData', { ...props.editData, content: content });
// 发送更新后的笔记数据包含可能的新ID
emit('update:editData', { ...props.editData, ...updatedNote, content: content });
} catch (error) {
// 保存失败,更新状态并显示错误消息
saveStatus.value = '保存失败';

View File

@@ -41,6 +41,7 @@
<script setup>
import { ref, watch } from 'vue';
import { ElMessage } from 'element-plus';
import { updateMarkdown } from '@/api/CommonApi.js';
const props = defineProps({
visible: {
@@ -82,6 +83,7 @@ const handleSubmit = async () => {
if (!formRef.value) return;
await formRef.value.validate((valid) => {
if (valid) {
// 创建一个临时笔记对象不包含ID让后端生成
const payload = {
id: null,
title: form.value.title,
@@ -90,6 +92,8 @@ const handleSubmit = async () => {
content: '',
isPrivate: form.value.isPrivate,
};
// 立即触发创建但不传递ID让后端生成
emit('create-note', payload);
handleClose();
} else {
@@ -106,4 +110,4 @@ const handleSubmit = async () => {
margin-top: 4px;
line-height: 1.5;
}
</style>
</style>