feat(note): 实现笔记创建时后端生成ID功能
- 在CreateNoteDialog组件中导入updateMarkdown API并修改创建逻辑 - 创建笔记时传递null ID让后端生成唯一标识符 - 修改HomePage组件中的笔记创建和更新处理逻辑 - 在NoteEditor组件中获取后端返回的完整笔记数据包括新生成的ID - 新创建的笔记将添加到列表开头并正确更新显示
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 = '保存失败';
|
||||
|
||||
@@ -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 {
|
||||
|
||||
BIN
mydatabase.db
BIN
mydatabase.db
Binary file not shown.
Reference in New Issue
Block a user