feat(note): 实现笔记创建时后端生成ID功能
- 在CreateNoteDialog组件中导入updateMarkdown API并修改创建逻辑 - 创建笔记时传递null ID让后端生成唯一标识符 - 修改HomePage组件中的笔记创建和更新处理逻辑 - 在NoteEditor组件中获取后端返回的完整笔记数据包括新生成的ID - 新创建的笔记将添加到列表开头并正确更新显示
This commit is contained in:
@@ -175,4 +175,4 @@ public class MarkdownFileServiceImpl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -264,6 +264,7 @@ const handleGroupDeleted = async () => {
|
|||||||
|
|
||||||
const handleCreateNote = (payload) => {
|
const handleCreateNote = (payload) => {
|
||||||
resetEdit();
|
resetEdit();
|
||||||
|
// 直接设置编辑数据,ID将在第一次保存时由后端生成
|
||||||
editData.value = payload;
|
editData.value = payload;
|
||||||
showEditor.value = true;
|
showEditor.value = true;
|
||||||
selectedFile.value = null; // Ensure preview is hidden
|
selectedFile.value = null; // Ensure preview is hidden
|
||||||
@@ -283,6 +284,7 @@ const handleSaveSuccess = (updatedFile) => {
|
|||||||
if (index !== -1) {
|
if (index !== -1) {
|
||||||
groupMarkdownFiles.value[index] = updatedFile;
|
groupMarkdownFiles.value[index] = updatedFile;
|
||||||
} else {
|
} else {
|
||||||
|
// 如果是新创建的笔记(之前ID为null),添加到列表开头
|
||||||
groupMarkdownFiles.value.unshift(updatedFile);
|
groupMarkdownFiles.value.unshift(updatedFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -567,4 +569,4 @@ watch([selectedFile, showEditor], ([newFile, newShowEditor]) => {
|
|||||||
height: 56px;
|
height: 56px;
|
||||||
box-shadow: 0 4px 12px rgba(0,0,0,.15);
|
box-shadow: 0 4px 12px rgba(0,0,0,.15);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -84,7 +84,7 @@ const save = async (value) => {
|
|||||||
try {
|
try {
|
||||||
saveStatus.value = '正在保存...';
|
saveStatus.value = '正在保存...';
|
||||||
// 发送完整的笔记对象,确保包含所有必要字段
|
// 发送完整的笔记对象,确保包含所有必要字段
|
||||||
await updateMarkdown({
|
const response = await updateMarkdown({
|
||||||
id: props.editData.id,
|
id: props.editData.id,
|
||||||
content: content,
|
content: content,
|
||||||
title: props.editData.title,
|
title: props.editData.title,
|
||||||
@@ -92,9 +92,13 @@ const save = async (value) => {
|
|||||||
fileName: props.editData.fileName,
|
fileName: props.editData.fileName,
|
||||||
isPrivate: props.editData.isPrivate
|
isPrivate: props.editData.isPrivate
|
||||||
});
|
});
|
||||||
|
// 确保获取到后端返回的数据,包括可能的新ID
|
||||||
|
const updatedNote = response.data;
|
||||||
|
|
||||||
// 保存成功,更新状态
|
// 保存成功,更新状态
|
||||||
saveStatus.value = '已保存';
|
saveStatus.value = '已保存';
|
||||||
emit('update:editData', { ...props.editData, content: content });
|
// 发送更新后的笔记数据(包含可能的新ID)
|
||||||
|
emit('update:editData', { ...props.editData, ...updatedNote, content: content });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// 保存失败,更新状态并显示错误消息
|
// 保存失败,更新状态并显示错误消息
|
||||||
saveStatus.value = '保存失败';
|
saveStatus.value = '保存失败';
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, watch } from 'vue';
|
import { ref, watch } from 'vue';
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
|
import { updateMarkdown } from '@/api/CommonApi.js';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
visible: {
|
visible: {
|
||||||
@@ -82,6 +83,7 @@ const handleSubmit = async () => {
|
|||||||
if (!formRef.value) return;
|
if (!formRef.value) return;
|
||||||
await formRef.value.validate((valid) => {
|
await formRef.value.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
// 创建一个临时笔记对象,不包含ID,让后端生成
|
||||||
const payload = {
|
const payload = {
|
||||||
id: null,
|
id: null,
|
||||||
title: form.value.title,
|
title: form.value.title,
|
||||||
@@ -90,6 +92,8 @@ const handleSubmit = async () => {
|
|||||||
content: '',
|
content: '',
|
||||||
isPrivate: form.value.isPrivate,
|
isPrivate: form.value.isPrivate,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 立即触发创建,但不传递ID,让后端生成
|
||||||
emit('create-note', payload);
|
emit('create-note', payload);
|
||||||
handleClose();
|
handleClose();
|
||||||
} else {
|
} else {
|
||||||
@@ -106,4 +110,4 @@ const handleSubmit = async () => {
|
|||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
BIN
mydatabase.db
BIN
mydatabase.db
Binary file not shown.
Reference in New Issue
Block a user