From ff7eac407a964098888529580d9f21331ddc36c5 Mon Sep 17 00:00:00 2001 From: seaHi Date: Fri, 11 Sep 2026 18:16:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=96=87=E7=AB=A0?= =?UTF-8?q?=E9=99=84=E4=BB=B6=E7=AE=A1=E7=90=86=E7=BB=84=E4=BB=B6=E5=8F=8A?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=E4=B8=8A=E4=BC=A0=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/ArticleAttachments.svelte | 264 ++++++++++++++++++ .../components/admin/MarkdownEditor.svelte | 13 +- 2 files changed, 276 insertions(+), 1 deletion(-) create mode 100644 src/lib/components/admin/ArticleAttachments.svelte diff --git a/src/lib/components/admin/ArticleAttachments.svelte b/src/lib/components/admin/ArticleAttachments.svelte new file mode 100644 index 0000000..d828ffa --- /dev/null +++ b/src/lib/components/admin/ArticleAttachments.svelte @@ -0,0 +1,264 @@ + + +
+ {#if attachments.length === 0} +
当前文章暂无附件
+ {:else} +
+ {#each attachments as attachment (attachment.url)} +
+
+ {attachment.filename} +
+
+
{attachment.filename}
+
+ {#if attachment.source === 'session'} + 本次上传 (未引用) + {:else} + 正文引用 + {/if} +
+
+ +
+ {/each} +
+ {/if} +
+ + diff --git a/src/lib/components/admin/MarkdownEditor.svelte b/src/lib/components/admin/MarkdownEditor.svelte index 9b065e1..0f17ab7 100644 --- a/src/lib/components/admin/MarkdownEditor.svelte +++ b/src/lib/components/admin/MarkdownEditor.svelte @@ -8,7 +8,15 @@ import { placeholder as cmPlaceholder } from '@codemirror/view'; import { addToast } from '$lib/stores/toast.svelte'; - let { value = $bindable(''), placeholderText = '支持 Markdown 格式...' } = $props(); + let { + value = $bindable(''), + placeholderText = '支持 Markdown 格式...', + onUpload + } = $props<{ + value?: string; + placeholderText?: string; + onUpload?: (file: { url: string; key: string; filename: string }) => void; + }>(); let editorContainer: HTMLDivElement; let view: EditorView; @@ -36,6 +44,9 @@ if (data.success) { insertAtCursor('![', `](${data.url})`, file.name || '图片'); addToast('图片上传成功', 'success'); + if (onUpload) { + onUpload({ url: data.url, key: data.key, filename: data.filename }); + } } else { addToast(data.error || '上传失败', 'error'); }