From a6b65ae9182306edd74080794dde1513f855148f Mon Sep 17 00:00:00 2001 From: "weicw1996@qq.com" Date: Sat, 19 Sep 2026 02:05:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(hjc-web):=20=E4=B8=BA=E7=99=BB=E5=BD=95/?= =?UTF-8?q?=E6=B3=A8=E5=86=8C/=E6=89=BE=E5=9B=9E=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E7=AD=89=207=20=E4=B8=AA=E9=A1=B5=E9=9D=A2=E8=A1=A5=20title=20?= =?UTF-8?q?=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这些页面未调用 usePageSeo,SSR 产物里没有 ,浏览器标签页显示 URL。 - login / register / forgot-password / change-password / buy / renewal / preview 统一按 contact.vue 的既有写法:await fetchSiteInfo() 后调 usePageSeo, 标题自动带上站点品牌后缀 - preview 页仅供内部调试,追加 robots: noindex,nofollow 避免被收录 - cases.vue 是 /cases → /case 的纯重定向壳,无需标题,未改动 --- app/pages/buy.vue | 12 ++++++++++++ app/pages/change-password.vue | 12 ++++++++++++ app/pages/forgot-password.vue | 12 ++++++++++++ app/pages/login.vue | 13 +++++++++++++ app/pages/preview.vue | 15 +++++++++++++++ app/pages/register.vue | 13 +++++++++++++ app/pages/renewal.vue | 12 ++++++++++++ 7 files changed, 89 insertions(+) diff --git a/app/pages/buy.vue b/app/pages/buy.vue index c7a30de..6291767 100644 --- a/app/pages/buy.vue +++ b/app/pages/buy.vue @@ -11,6 +11,18 @@ */ const route = useRoute() const { loadTemplate } = useTemplate() +const { siteInfo, fetchSiteInfo } = useSite() + +// 先取站点信息,保证标题能带上品牌名(与其它页面一致) +await fetchSiteInfo() + +usePageSeo( + { + title: '购买标书', + path: '/buy' + }, + siteInfo.value +) const pageComponent = shallowRef<Component | null>(null) const components = await loadTemplate() diff --git a/app/pages/change-password.vue b/app/pages/change-password.vue index edad1e2..3999873 100644 --- a/app/pages/change-password.vue +++ b/app/pages/change-password.vue @@ -75,6 +75,18 @@ <script setup lang="ts"> const { sendChangePasswordSms, changePassword } = useHjcPassword() const { isLoggedIn, logout } = useHjcAuth() +const { siteInfo, fetchSiteInfo } = useSite() + +// 先取站点信息,保证标题能带上品牌名(与其它页面一致) +await fetchSiteInfo() + +usePageSeo( + { + title: '修改密码', + path: '/change-password' + }, + siteInfo.value +) const PASSWORD_PATTERN = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&]{8,}$/ const SMS_COUNTDOWN_SECONDS = 60 diff --git a/app/pages/forgot-password.vue b/app/pages/forgot-password.vue index dc3abc4..1c62b35 100644 --- a/app/pages/forgot-password.vue +++ b/app/pages/forgot-password.vue @@ -141,6 +141,18 @@ import type { HjcPasswordApplyStatus } from '~/composables/useHjcPassword' const { applyPasswordReset, fetchApplyStatus } = useHjcPassword() +const { siteInfo, fetchSiteInfo } = useSite() + +// 先取站点信息,保证标题能带上品牌名(与其它页面一致) +await fetchSiteInfo() + +usePageSeo( + { + title: '忘记密码', + path: '/forgot-password' + }, + siteInfo.value +) /** 密码强度:与后端(核心实例)一致,先在前端挡一道,免得提交后才被拒 */ const PASSWORD_PATTERN = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&]{8,}$/ diff --git a/app/pages/login.vue b/app/pages/login.vue index d8b0fac..4ec6aea 100644 --- a/app/pages/login.vue +++ b/app/pages/login.vue @@ -56,7 +56,20 @@ <script setup lang="ts"> const { login, fetchCaptcha } = useHjcAuth() +const { siteInfo, fetchSiteInfo } = useSite() const route = useRoute() + +// 先取站点信息,保证标题能带上品牌名(与其它页面一致) +await fetchSiteInfo() + +usePageSeo( + { + title: '企业登录', + path: '/login' + }, + siteInfo.value +) + const enterpriseName = ref('') const password = ref('') /** 图形验证码(后端只下发图片,答案由用户肉眼识别后输入) */ diff --git a/app/pages/preview.vue b/app/pages/preview.vue index 5ac2e14..2c6d4ab 100644 --- a/app/pages/preview.vue +++ b/app/pages/preview.vue @@ -13,6 +13,21 @@ const route = useRoute() const previewTemplateId = route.query.templateId as string const { loadTemplate, registerTemplate } = useTemplate() +const { siteInfo, fetchSiteInfo } = useSite() + +// 先取站点信息,保证标题能带上品牌名(与其它页面一致) +await fetchSiteInfo() + +usePageSeo( + { + title: '模板预览', + path: '/preview' + }, + siteInfo.value +) + +// 预览页仅供内部调试,不希望被搜索引擎收录 +useSeoMeta({ robots: 'noindex, nofollow' }) // 注册所有模板 const templates = await import('~/templates') diff --git a/app/pages/register.vue b/app/pages/register.vue index 8f6b7af..43570c1 100644 --- a/app/pages/register.vue +++ b/app/pages/register.vue @@ -58,7 +58,20 @@ <script setup lang="ts"> const { register, sendSms } = useHjcAuth() +const { siteInfo, fetchSiteInfo } = useSite() const route = useRoute() + +// 先取站点信息,保证标题能带上品牌名(与其它页面一致) +await fetchSiteInfo() + +usePageSeo( + { + title: '企业注册', + path: '/register' + }, + siteInfo.value +) + const loading = ref(false) const error = ref('') const entForm = ref<any>(null) diff --git a/app/pages/renewal.vue b/app/pages/renewal.vue index 0f09681..4093086 100644 --- a/app/pages/renewal.vue +++ b/app/pages/renewal.vue @@ -11,6 +11,18 @@ * 使用空白布局 */ const { loadTemplate } = useTemplate() +const { siteInfo, fetchSiteInfo } = useSite() + +// 先取站点信息,保证标题能带上品牌名(与其它页面一致) +await fetchSiteInfo() + +usePageSeo( + { + title: '服务续费', + path: '/renewal' + }, + siteInfo.value +) const pageComponent = shallowRef<Component | null>(null)