fix(hn): hide unavailable purchase periods

This commit is contained in:
hellcat 2026-10-28 15:49:13 +08:00
parent 39d7277f4b
commit a8e7026457
3 changed files with 13 additions and 0 deletions

View File

@ -0,0 +1,9 @@
# HN购买页周期显示
2026-10-28用户要求:套餐卡片里置灰的不可购买周期直接不显示。
仅在frontends/hn/vite.config.mjs的HN适配器中,对上游Shop.vue周期标签v-for数据过滤price===null;不修改锁定EZ源码或DPL主题/代码/数据。不改套餐价格、销售状态、周期定义或订单校验。
本地实际浏览器确认:标准与专业各只显示月付/季度/半年/一年,一次性只显示一次性,DOM中disabled周期标签0个。周期切换/分组正常,既有价格和介绍未变。截图在共享工作目录codex/output/hn-hide-periods-20261028/shop.png。
生产仅发布HN,Git提交/构建与验收收据在同任务忽略目录及服务器备份;部署完成记录由GemDocs HN项目档案维护。恢复时仅回退HN此适配器提交并重新构建,或从该次静态资源备份恢复;不变更DPL、数据库或共享EZ子仓库。

View File

@ -16,6 +16,7 @@
| 文件 | 用途 |
| --- | --- |
| HN_MAIL_GATEWAY.md | HN独立企业邮箱/Resend、辅助域名、订阅网关、验收及恢复 |
| HN_SHOP_PERIODS.md | HN购买页隐藏不可购买周期、隔离与验收 |
| HN_PRODUCTION.md | HN生产版本、主域名/后台、独立运行服务、TLS、服务器验收与回退 |
| SITE_PROFILES.md | dpl / hn 独立部署参数、主题选择、开发与发布隔离 |
| THEME_DESIGNS.md | tpl-a 等可复用设计方案、定稿与绑定状态、预览和验证边界 |

View File

@ -17,6 +17,9 @@ export default defineConfig(({mode}) => ({
transform(code, id) {
if (!id.startsWith(upstream + '/src/')) return;
code = code.replaceAll('src="/images/logo.png"', ':src="hnLogo"').replaceAll('/images/logo.png', '/brand/hn/logo.svg');
if (id === path.join(upstream,'src/views/shop/Shop.vue')) {
code = code.replace('v-for="(price, type) in getPlanPrices(plan)"', 'v-for="(price, type) in Object.fromEntries(Object.entries(getPlanPrices(plan)).filter(([, price]) => price !== null))"');
}
if (id === path.join(upstream,'src/i18n/locales/zh-CN.js')) code = code.replaceAll('商店', '购买套餐');
if (id === path.join(upstream,'src/appInit.js')) code = code.replace("app.mount('#app');", "app.config.globalProperties.hnLogo = window.settings?.logo || '/brand/hn/logo.svg'; app.mount('#app');");
if (id === path.join(upstream,'src/api/user.js')) code = code.replace(/export function getIpLocationInfo\(\)\s*\{[\s\S]*?\n\}/, 'export function getIpLocationInfo() { return Promise.resolve({data: null}); }');