weicw-dshsa 31f2f07c5c feat: 收银台支持支付宝支付(微信/支付宝选择器)
PC 收银台此前硬编码「请使用微信扫码支付」,只能走微信 Native。

改动:
- 支付方式选择器(微信支付 / 支付宝),切换即重新发起支付并清掉上一张码——
  同一订单号换支付类型重复下单会被渠道拒(微信回 OUT_TRADE_NO_USED),
  两种支付信息同时留在页面上只会让用户困惑。
- 支付宝走电脑网站支付:后端返回自提交表单,用 document.write 写进新窗口。
  刻意不用 v-html——它插入的脚本标签不会执行(HTML 规范如此),
  表单永远不会自动提交。原收银台页留在原标签页继续轮询查单。
- 弹窗被拦截时给出可行动提示,并保留「前往支付宝付款」按钮兜底。
- 回到一张曾用支付宝发起过的待支付订单时,默认选中支付宝,
  避免又拿微信去撞一次「订单号已使用」。
- useHjcPayStatus 增加 channel 参数,仅供提示文案说对「微信侧/支付宝侧」。
  **状态词表不变**——后端已把两个渠道的状态映射成渠道无关的 PaymentStatus,
  前端再加一份支付宝词表等于把渠道知识泄漏进 UI。顺带把这层理由写进注释。
- 修正代码注释里对 ADR 0009 的引用:工作区 docs/adr 下并没有这一篇,
  相关决策现记录在 ADR 0008。

验证:eslint 0 error;npm run build:dev 构建通过。
2026-09-20 19:18:02 +08:00
2026-09-19 00:52:04 +08:00
2026-09-19 00:52:04 +08:00
2026-09-19 00:52:04 +08:00
2026-09-19 00:52:04 +08:00
2026-09-19 00:52:04 +08:00
2026-09-19 00:52:04 +08:00
2026-09-19 00:52:04 +08:00
2026-09-19 00:52:04 +08:00
2026-09-19 00:52:04 +08:00
2026-09-19 00:52:04 +08:00

通用企业官网程序

基于 Nuxt 4 + Vue 3 + TypeScript 的企业官网纯前端展示系统。

项目定位

  • 本项目仅包含官网前台展示代码
  • 不含后端管理端,所有数据通过调用 SaaS 后端 API 获取
  • 支持多模板切换、多租户、独立域名绑定、订阅过期校验

目录结构

website/
├── app/                    # 应用代码
│   ├── components/         # 公共组件
│   ├── composables/        # 组合式函数
│   ├── layouts/            # 布局
│   ├── pages/              # 页面路由
│   ├── templates/          # 模板集合
│   ├── types/              # TS 类型
│   ├── utils/              # 工具函数
│   └── assets/             # 样式资源
├── server/                 # Nuxt Server
│   ├── api/                # API 代理
│   ├── middleware/         # 中间件
│   └── utils/              # 服务端工具
├── scripts/                # 脚本
└── templates/cloud-website # 模板预览图

安装依赖

npm install

本地开发

npm run dev

默认访问:http://localhost:3000

环境变量与打包

项目已按环境拆分配置文件,打生产包不再需要手改 .env:

命令 用途 读取的配置
npm run dev 本地开发 .env.development
npm run build:prod 生产打包 .env.production
npm run build 等同 build:prod .env.production
npm run build:dev 用开发配置打包(排查用) .env.development
npm run dev:prod 以生产配置本地起服务(排查用) .env.production

配置文件说明:

文件 是否提交 说明
.env.development ✅ 团队共享的开发配置,接口指向本地后端
.env.production ✅ 团队共享的生产配置,接口指向线上
.env.example ✅ 变量总览模板,新增变量时同步更新
.env.local ❌ 个人通用覆盖
.env.<环境>.local ❌ 个人针对某环境的覆盖,优先级最高
.env ❌ 历史遗留的个人配置,优先级最低

优先级(高 → 低): 进程环境变量 > .env.<环境>.local > .env.<环境> > .env.local > .env

只有「变量尚未定义」时才会被下一层填充,因此高优先级不会被低优先级顶掉, .env 里残留的本地地址也不会再污染生产包。

发布前可自查产物是否干净:

grep -rl "127.0.0.1" .output/ || echo "产物干净,无本地地址"

模板系统

模板存放在 app/templates/ 目录下,每个模板独立目录,包含:

  • config.ts:模板配置
  • components/:模板私有组件(Header、Footer 等)
  • pages/:模板页面组件
  • theme.css:模板主题变量

当前已实现:

  • template-01:科技蓝企业模板(完整)
  • template-02 ~ template-04:占位模板,后续根据设计稿实现

环境变量清单

完整变量说明见 .env.example。核心变量:

# 租户 / 模板(生产留空,由域名自动识别)
NUXT_PUBLIC_TENANT_ID=
NUXT_PUBLIC_APP_ID=website
NUXT_PUBLIC_TEMPLATE_ID=

# 接口地址
NUXT_PUBLIC_SERVER_API_BASE=https://server.websoft.top/api
NUXT_PUBLIC_MODULES_API_BASE=https://hjc-api.websoft.top/api
NUXT_PUBLIC_APP_API_BASE=https://websopy-api.websoft.top

# 多租户域名
NUXT_PUBLIC_BASE_DOMAINS=shoplnk.cn,sitelink.cn,wsdns.cn

ℹ️ nuxt.config.ts 内置的 NUXT_PUBLIC_MODULES_API_BASE 默认值已统一为 https://hjc-api.websoft.top/api(原 cms-api.websoft.top 域名 /api/* 已返回 404, 故全面切换到 hjc-api)。.env.production 中也显式指定同一地址。 若将来再次更换域名,请同步修改 nuxt.config.ts、.env.production 与 .env.example。

接口说明

本项目通过 server/api/ 代理转发 SaaS 后端接口,前端不直接调用后端地址。

核心接口:

  • GET /api/site/info:站点信息
  • GET /api/page/all:页面列表
  • GET /api/page/detail?slug=xxx:页面详情
  • GET /api/article/list:文章列表
  • GET /api/product/list:产品列表
  • GET /api/case/list:案例列表
  • GET /api/subscription/status:订阅状态
  • GET /api/sitemap.xml:动态站点地图
  • GET /api/robots.txt:robots 文件
  • POST /api/form/submit:表单提交

部署

npm run build
npm run preview

生产环境建议使用 Nginx 反向代理,配置泛域名 *.shoplnk.cn 指向 Nuxt 服务。

注意事项

  • 模板组件为动态导入,新增模板后需在 app/templates/index.ts 注册
  • 域名绑定查询接口 /cms/cms-website/resolveDomain 需 SaaS 后端实现
  • 订阅状态接口 /api/app/subscription/check 需 SaaS 后端实现
S
Description
汇聚采网站
Readme 22 MiB
Languages
Vue 47.5%
TypeScript 38.8%
HTML 10.6%
JavaScript 1.6%
CSS 0.6%
Other 0.9%