From 43d776534744abc564a94580426d13071aafc1a6 Mon Sep 17 00:00:00 2001 From: Ryan Wang Date: Mon, 28 Nov 2022 23:32:18 +0800 Subject: [PATCH] fix: the issue that post publishTime cannot be set and displayed back (halo-dev/console#718) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind bug /milestone 2.0 #### What this PR does / why we need it: 修复文章和自定义页面的发布时间无法设置和回显的问题。 #### Which issue(s) this PR fixes: Fixes https://github.com/halo-dev/halo/issues/2770 #### Special notes for your reviewer: 测试方式: 1. 创建一篇文章和自定义页面。 2. 在高级设置中设置发布时间。 3. 检查发布后列表中显示的时间是否和设置的一致。 4. 再次打开文章设置,检查发布时间输入框的时间是否正确。 #### Does this PR introduce a user-facing change? ```release-note 修复 Console 端文章和自定义页面的发布时间无法设置和回显的问题。 ``` --- .../components/SinglePageSettingModal.vue | 20 ++++++++++++- .../posts/components/PostSettingModal.vue | 21 ++++++++++++- src/utils/__tests__/date.spec.ts | 30 +++++++++++++++++-- src/utils/date.ts | 27 +++++++++++++++-- 4 files changed, 91 insertions(+), 7 deletions(-) diff --git a/src/modules/contents/pages/components/SinglePageSettingModal.vue b/src/modules/contents/pages/components/SinglePageSettingModal.vue index 8fa59d687..941e262fc 100644 --- a/src/modules/contents/pages/components/SinglePageSettingModal.vue +++ b/src/modules/contents/pages/components/SinglePageSettingModal.vue @@ -7,6 +7,7 @@ import { apiClient } from "@/utils/api-client"; import { useThemeCustomTemplates } from "@/modules/interface/themes/composables/use-theme"; import { singlePageLabels } from "@/constants/labels"; import { randomUUID } from "@/utils/id"; +import { toDatetimeLocal, toISOString } from "@/utils/date"; const initialFormState: SinglePage = { spec: { @@ -69,6 +70,9 @@ const isUpdateMode = computed(() => { const onVisibleChange = (visible: boolean) => { emit("update:visible", visible); if (!visible) { + setTimeout(() => { + activeTab.value = "general"; + }, 200); emit("close"); } }; @@ -162,6 +166,19 @@ watchEffect(() => { // custom templates const { templates } = useThemeCustomTemplates("page"); + +// publishTime +const publishTime = computed(() => { + const { publishTime } = formState.value.spec; + if (publishTime) { + return toDatetimeLocal(publishTime); + } + return ""; +}); + +const onPublishTimeChange = (value: string) => { + formState.value.spec.publishTime = toISOString(value); +};