ZF sun eae415ecad feat(recommend-diy): 推荐系统 6 个 diy-recommend-* 组件 + mixin + lang
策略: 微信小程序前端采用"专属 DIY 组件"模式实现推荐入驻主页,
不写 4 个独立 .vue 页面,而是在 components-diy/ 下新增 6 个动态数据组件,
商家在"自定义页面"装修面板里自由拖拽组合。组件 mounted 后自动 ajax
拉 /recommend/api/home/homeSummary 真实数据。

新增:
1. 6 个 vue 组件
   - diy-recommend-code        推荐码展示 + 复制 + 分享链接
   - diy-recommend-balance     可提现余额 / 待结算 / 累计收益 + 考察期剩余天数
   - diy-recommend-stat        累计推荐 / 已入驻 / 累计收益 3 个数字
   - diy-recommend-records     最近 3 条推荐(动态)
   - diy-recommend-rules       奖励规则 4 条(API 推,可后台覆写)
   - diy-recommend-action      立即提现 + 提现记录 + 入驻申请 三按钮

2. 公共 mixin — common/js/recommend-diy-data.js
   - fetchRecommendInfo() ajax 拉 homeSummary(去抖 10s)
   - computed: balance / code / probation / statistics / recentRecords / rewardRules
   - formatMoney() 数字本地化
   - 失败/未登录时 recommendInfo = null,模板显示占位

3. pages.json
   - easycom 加规则 "diy-recommend-*" → components-diy/diy-recommend-$1.vue
   - 已有 autoscan=true 自动发现;新增条目保证 builds 稳定

4. 语言包
   - lang/zh-cn/components-diy/diy-recommend.js
   - lang/en-us/components-diy/diy-recommend.js

5. 验证脚本
   - scripts/verify_diy_recommend.js — 6 文件三段式校验

技术细节:
- 所有 vue 文件模板里 data-component-name 与 easycom 名字强一致
- 6 组件之间互不依赖,可任意组合到任意 Diy 页面
- API 数据通过 mixin 共享,组件不重复拉取
- 占位/loading/error 三态完整
- 大部分样式沿用项目既有 home-grown SCSS 写法,不引入新依赖
- bundle 体积增量 < 30KB

i18n-check.js 通过:
  zh-cn: 224 files / 2678 keys
  en-us: 224 files / 2678 keys
  diff: 0 ✅

未做(后续可选):
- 4 个真正 .vue 页面(此 PR 不要,改用 DIY)
- getMyQrcode 真实二维码生成
- 提现账户管理 UI
2026-07-20 11:16:20 +08:00

小程序及快应用前端源码

1. 📋 项目说明

该项目基于 uni-app 开发构建,请使用 HBuilderX 进行代码开发及构建发布。

2. 🛠️ 开发说明

  • 源码基于 Vue2 版本
  • SCSS 采用 dart-sass 进行编译输出

3. 🔧 开发调试说明

3.1 注意事项

  • 应用访问等关键参数的配置来源于 ./common/js/config.js

3.2 本地调试

.local.config.js.example 是本地调试配置示例。

拷贝 .local.config.js.example 为 .local.config.js 文件,默认开发调试模式会自动加载该文件


4. 📦 发布说明

4.1 小程序发布

4.1.1 基本操作步骤(通用版/定制化版)

##### ##### ##### 【前置准备】
  1. 在项目根目录打开终端安装依赖:
    npm install
    
    已有依赖可跳过此步骤
##### ##### ##### 【发布构建】
  1. 使用 HBuilderX 打开项目(不用改manifest.json的web,只有H5要改 )
  2. 选择菜单栏「发行」 → 「小程序-微信」→ 「发行」,等待构建完成 ⚠️ 注意:底部控制台弹出"请在微信小程序开发者工具中点击上传"后再执行下一步
  3. 构建完成后,自动执行补丁脚本(拷贝 site.js / config 文件 + 生成 ZIP 包),无需手动操作
  4. 找到项目根目录 /unpackage/dist/build 下生成的 mp-weixin 压缩包 💡 示例:mp-weixin-2026-05-11-3bff91e.zip 压缩包文件名末尾为 Git 提交 ID 同时该目录下会生成未压缩的 mp-weixin 目录
##### ##### ##### 【验证与重命名】
  1. 打开未压缩的 mp-weixin 目录,找到 site.js 文件,将文件内的 uniacid 值改为当前客户编号(如:2812)并保存

  2. 打开微信开发者工具,导入「mp-weixin」目录,点击「编译」,在开发者工具控制台验证有无报错,以及能否返回对应客户的业务数据

  3. 确保无误后将生成的 mp-weixin 压缩包重命名

    • 定制化版格式:定制化-客户编号-域名-mp-weixin-当前日期-Git提交ID.zip
    • 通用版无需重命名

    💡 示例:custom-2812-xcx.aigc-quickapp.com-mp-weixin-2026-05-11-3bff91e.zip

    🚫 禁止:压缩包命名禁止包含 / \ : * ? " < > | 等特殊字符

##### ##### ##### 【交付与最终发布】🔍
  1. 将重命名后的文件发送给技术人员 📌通用版直接将生成的 mp-weixin 压缩包发送给技术人员
  2. 技术人员操作流程:
    • 解压压缩包
    • 确认 site.js 中的 uniacid 为客户编号
    • 用微信开发者工具导入解压后的代码目录
    • 编译验证无误后,上传发布

4.1.2 鸿蒙小程序发布(mp-harmony)

##### ##### ##### 【发布构建】
  1. 使用 HBuilderX 打开项目
  2. 选择菜单栏「发行」 → 「HarmonyOS」→ 「发行」,等待构建完成
  3. 构建完成后,自动执行 harmony.patch.js 补丁脚本(配置拷贝 + ZIP 打包)
  4. 找到项目根目录 /unpackage/dist/build 下生成的 mp-harmony 压缩包
##### ##### ##### 【交付与最终发布】🔍
  1. 将生成的 .zip 文件发送给运维人员
  2. 运维人员操作流程:
    • 解压压缩包
    • 打开鸿蒙开发者工具,导入解压后的代码目录
    • 验证代码无报错后,执行上传发布操作
##### ##### ##### 【本地设置】
  ![](readme_files/1.jpg) 

4.2 快应用发布

4.2.1 基本操作(通用版/定制化版)

4.2.1.1 【发布构建】
  1. 使用 HBuilderX 打开项目

  2. 打开项目根目录的 manifest.json 文件,切换至可视化配置界面:

    1. 依次点击「Web 配置」→「运行的基础配置」
    2. 根据情况查看是否修改路径中/hwappx/????/的客户编号 📌 通用版保留原有 /hwappx/common/ 📌 测试版保留原有 /hwappx/test/ 💡 个性化定制示例:/hwappx/2811/,其中 2811 为定制化版客户编号
  3. 选择菜单栏「发行」 → 「自定义发行」 → 选择对应的站点脚本 💡 例如:网址是 5g.aigc-quickapp.com 选 H5-5g.aigc-quickapp.com

  4. 修改以下配置:

    1. 网站标题:快应用
    2. 网站域名:当前客户域名
    3. 确认后点击「发行」等待构建完成

    ⚠️ 注意:构建完成后自动输出到 unpackage/dist/build/h5/,格式为 {域名}-{base路径}.zip 💡 示例:xcx.aigc-quickapp.com-hwappx.common-3bff91e-20260511_1058.zip

4.2.1.2 【交付与最终发布】🔍
  1. 将生成的 .zip 文件发送给运维人员
  2. 运维人员操作流程:
    1. 解压压缩包
    2. 打开快应用开发者工具,导入解压后的代码目录
    3. 验证代码无报错后,执行上传发布操作
4.2.1.3 【测试流程】

H5:打开自己的浏览器输入网址(https://5g.aigc-quickapp.com/hwappx/common/?uniacid=75)改站点 如果是test就把hwappx/common/改为hwappx/test/----------改站点


5. 📝 构建与版本信息

5.1 自动注入机制

生产构建时,vue.config.js 中的 VersionInjectPlugin 会自动执行以下操作:

操作 适用平台 说明
__app_version 全局变量注入 所有平台 构建产物的 vendor.js(小程序)或 index.html(H5)中自动内联版本数据
构建版本信息查看 所有平台 首页右下角连击 5 次弹出模态框显示 commitId 和 buildTime
极限压缩优化 小程序(mp-weixin / mp-harmony) 生产构建自动应用多层次压缩配置,显著减小产物包体积

版本数据包含:

  • commitId:当前构建的 Git 短提交 ID
  • buildTime:构建时间

开发模式:HMR 热更新时由 webpack emit 钩子自动处理,不影响开发体验。

5.2 自动 ZIP 打包

H5 自定义发行构建完成后自动执行:

步骤 说明
重命名输出目录 {域名}-{base路径用.连接}(如 xcx.aigc-quickapp.com-hwappx.common)
创建 ZIP 文件 文件名格式:{目录名}-{Git提交ID}-{上海时区时间戳}.zip
清理 ZIP 创建完成后自动删除源目录

💡 示例 ZIP:xcx.aigc-quickapp.com-hwappx.common-3bff91e-20260511_1058.zip

微信小程序生产构建时自动执行:

  • 拷贝 site.js / project.config.json / project.private.config.json 文件到构建目录
  • 创建 ZIP 包(文件名包含 Git 提交 ID)

鸿蒙小程序生产构建时自动执行:

  • 拷贝必要配置文件到构建目录
  • 创建 ZIP 包(文件名包含 Git 提交 ID)

5.3 环境配置

域名配置统一通过 package.json 中各脚本的 env.UNI_APP_DOMAIN 传入:

"h5-xcx.aigc-quickapp.com": {
    "title": "...",
    "env": {
        "UNI_PLATFORM": "h5",
        "UNI_APP_DOMAIN": "https://xcx.aigc-quickapp.com/"
    },
    "define": { "PRODUCTION": true }
}

config.js 和 vue.config.js 均通过 process.env.UNI_APP_DOMAIN 读取,新增/删除脚本无需改动代码。


6. 🔄 版本历史

6.1 v1.5.1

  • VersionInjectPlugin:webpack emit 钩子自动注入 __app_version 到所有平台产物
  • 首页右下角连击 5 次显示构建版本信息(commitId + buildTime)
  • mp-weixin.patch.js 精简为仅文件拷贝和 ZIP 打包
  • 新增 harmony.patch.js:鸿蒙小程序生产构建补丁脚本(配置拷贝 + ZIP 打包)
  • open-directory.js:构建完成后自动打开输出目录
  • 极限压缩优化:集成 zion-uniapp-mp-load-package 插件 + TerserWebpackPlugin 多层次压缩配置
  • 修复 openWxWorkServiceChat 方法中 fail 回调语法错误
  • ZIP 文件名末尾使用 Git 提交 ID 替换时间戳
  • 构建脚本幂等性修复,支持多次运行不产生重复注入

6.2 v1.3

  • 修复微信小程序构建脚本,支持复制 project.config.json 和 project.private.config.json 文件
  • 增强构建脚本功能,添加命令行参数支持
  • 在 package.json 中添加相关 npm 脚本命令
  • 优化脚本执行逻辑,提高可靠性和灵活性
Description
No description provided
Readme 36 MiB
2026-02-04 09:17:28 +00:00
Languages
Vue 67.3%
JavaScript 19.2%
SCSS 8.6%
CSS 4.9%