From 2d87c8f23dc932b7e76a18a7412594f8f05741da Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 19 Aug 2025 21:17:13 +0800 Subject: [PATCH 1/7] =?UTF-8?q?fix:=20=E6=A0=BC=E5=BC=8F=E5=8C=96=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend_nuxt/components/CommentEditor.vue | 1 + frontend_nuxt/components/PostEditor.vue | 1 + frontend_nuxt/utils/vditor.js | 1 - 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend_nuxt/components/CommentEditor.vue b/frontend_nuxt/components/CommentEditor.vue index 0914d3ef1..422fb563c 100644 --- a/frontend_nuxt/components/CommentEditor.vue +++ b/frontend_nuxt/components/CommentEditor.vue @@ -22,6 +22,7 @@ import { getEditorTheme as getEditorThemeUtil, getPreviewTheme as getPreviewThemeUtil, } from '~/utils/vditor' +import '~/assets/global.css' import LoginOverlay from '~/components/LoginOverlay.vue' export default { diff --git a/frontend_nuxt/components/PostEditor.vue b/frontend_nuxt/components/PostEditor.vue index 06994e041..0c9a728f7 100644 --- a/frontend_nuxt/components/PostEditor.vue +++ b/frontend_nuxt/components/PostEditor.vue @@ -16,6 +16,7 @@ import { getEditorTheme as getEditorThemeUtil, getPreviewTheme as getPreviewThemeUtil, } from '~/utils/vditor' +import '~/assets/global.css' export default { name: 'PostEditor', diff --git a/frontend_nuxt/utils/vditor.js b/frontend_nuxt/utils/vditor.js index 900486e74..c38aed7b1 100644 --- a/frontend_nuxt/utils/vditor.js +++ b/frontend_nuxt/utils/vditor.js @@ -2,7 +2,6 @@ import Vditor from 'vditor' import { getToken, authState } from './auth' import { searchUsers, fetchFollowings, fetchAdmins } from './user' import { tiebaEmoji } from './tiebaEmoji' -import '~/assets/global.css' export function getEditorTheme() { return document.documentElement.dataset.theme === 'dark' ? 'dark' : 'classic' From e9458f541937eac22bd3a8df3d21f5cb3d190c23 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 19 Aug 2025 21:24:27 +0800 Subject: [PATCH 2/7] =?UTF-8?q?fix:=20hljs=20=E4=BC=98=E5=8C=96=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend_nuxt/utils/markdown.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend_nuxt/utils/markdown.js b/frontend_nuxt/utils/markdown.js index 4092c3dd8..0d9f8b1c1 100644 --- a/frontend_nuxt/utils/markdown.js +++ b/frontend_nuxt/utils/markdown.js @@ -1,4 +1,5 @@ -import hljs from 'highlight.js' +import hljs from 'highlight.js/lib/common' + if (typeof window !== 'undefined') { const theme = document.documentElement.dataset.theme || From fb89c9fb254029b3a6247f8ac25e23eeca889f38 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 19 Aug 2025 21:48:48 +0800 Subject: [PATCH 3/7] =?UTF-8?q?fix:=20=E5=BC=B9=E5=87=BA=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend_nuxt/components/ConfirmDialog.vue | 64 +++++++---- frontend_nuxt/composables/useConfirm.js | 42 ------- frontend_nuxt/composables/useConfirm.ts | 52 +++++++++ frontend_nuxt/pages/posts/[id]/index.vue | 126 +++++++++++++++++---- 4 files changed, 194 insertions(+), 90 deletions(-) delete mode 100644 frontend_nuxt/composables/useConfirm.js create mode 100644 frontend_nuxt/composables/useConfirm.ts diff --git a/frontend_nuxt/components/ConfirmDialog.vue b/frontend_nuxt/components/ConfirmDialog.vue index 922dd402a..f3a678d8b 100644 --- a/frontend_nuxt/components/ConfirmDialog.vue +++ b/frontend_nuxt/components/ConfirmDialog.vue @@ -1,21 +1,21 @@ - \ No newline at end of file +.cancel-button:hover { + opacity: 0.85; +} + diff --git a/frontend_nuxt/composables/useConfirm.js b/frontend_nuxt/composables/useConfirm.js deleted file mode 100644 index feffa0712..000000000 --- a/frontend_nuxt/composables/useConfirm.js +++ /dev/null @@ -1,42 +0,0 @@ -import { ref } from 'vue' - -const state = ref({ - visible: false, - title: '', - message: '', - resolve: null, - reject: null, -}) - -export const useConfirm = () => { - const confirm = (title, message) => { - state.value.title = title - state.value.message = message - state.value.visible = true - return new Promise((resolve, reject) => { - state.value.resolve = resolve - state.value.reject = reject - }) - } - - const onConfirm = () => { - if (state.value.resolve) { - state.value.resolve(true) - } - state.value.visible = false - } - - const onCancel = () => { - if (state.value.reject) { - state.value.reject(false) - } - state.value.visible = false - } - - return { - confirm, - onConfirm, - onCancel, - state, - } -} \ No newline at end of file diff --git a/frontend_nuxt/composables/useConfirm.ts b/frontend_nuxt/composables/useConfirm.ts new file mode 100644 index 000000000..d33822a0e --- /dev/null +++ b/frontend_nuxt/composables/useConfirm.ts @@ -0,0 +1,52 @@ +// composables/useConfirm.ts +import { ref } from 'vue' + +// 全局单例(SPA 下即可;Nuxt/SSR 下见文末“SSR 提醒”) +const visible = ref(false) +const title = ref('') +const message = ref('') + +let resolver: ((ok: boolean) => void) | null = null + +function reset() { + visible.value = false + title.value = '' + message.value = '' + resolver = null +} + +export function useConfirm() { + /** + * 打开确认框,返回 Promise + * - 确认 => resolve(true) + * - 取消/关闭 => resolve(false) + * 若并发调用,以最后一次为准(更简单直观) + */ + const confirm = (t: string, m: string) => { + title.value = t + message.value = m + visible.value = true + return new Promise((resolve) => { + resolver = resolve + }) + } + + const onConfirm = () => { + resolver?.(true) + reset() + } + + const onCancel = () => { + resolver?.(false) + reset() + } + + return { + visible, + title, + message, + confirm, + onConfirm, + onCancel, + } +} diff --git a/frontend_nuxt/pages/posts/[id]/index.vue b/frontend_nuxt/pages/posts/[id]/index.vue index 5771163d9..d2e76abc1 100644 --- a/frontend_nuxt/pages/posts/[id]/index.vue +++ b/frontend_nuxt/pages/posts/[id]/index.vue @@ -15,13 +15,21 @@
审核中
已拒绝
-
+
{{ isMobile ? '订阅' : '订阅文章' }}
-
+
{{ isMobile ? '退订' : '取消订阅' }} @@ -44,8 +52,12 @@
{{ author.username }} - {{ - getMedalTitle(author.displayMedal) }} + {{ getMedalTitle(author.displayMedal) }}
{{ postTime }}
@@ -56,12 +68,20 @@
{{ author.username }} - {{ - getMedalTitle(author.displayMedal) }} + {{ getMedalTitle(author.displayMedal) }}
{{ postTime }}
-
+