|
|
b45a190a59
|
chore: 入库生产基线(2026-10-26 工作树快照)
- 含首页壳/容器页/授权页/分享图/首页配置等此前未入库的在途改动
- 新增未跟踪的 pages/index/mall.vue(第 5 个 tabBar 页,pages.json 已引用)
- 排除本地备份文件(*.bak* / *.origin-bak)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-10-26 17:07:49 +08:00 |
|
|
|
e99b4a475c
|
fix(身份): 宿主页「拿到 openid 才加载 H5」+ 复用 App.vue 并行登录(不重复换 code)
背景(2026-09-20 线上排查):删掉小程序缓存重进时 H5 以访客态加载(孕周 `--`、档案空、
跳应用不带 openid,实测跳授权示例是裸 URL)。服务端证据:该设备只打了 `/api/mp/apps`,
没有任何带 openid 的 profile/pregnancy 调用 —— 宿主那次没注入身份,不是数据丢了。
根因:
1) App.vue 静默授权只处理 token 分支:v2/wechat/silence_auth 对新用户 / 强制绑定手机号返回
{auth_login:1, key, openid, unionid}(无 token),openid 被丢掉;且 res.data.userInfo 缺失时
取 .uid 会抛异常把后续 commit 一起带走。
2) 两个宿主页只从 store.openid / 缓存 OPENID / JWT 读身份,读不到就匿名加载(首页壳不等不重试,
容器页 _finalizeUrl / _fetchOpenidAndLoad 兜底)。
改法:
- App.vue:补「无 token 但有 openid」分支(SET_OPENID + 缓存,unionid 同理);userInfo 判空;
**并把这次静默登录的 promise 挂到 globalData._silenceAuthPromise**(供宿主页复用,见下)。
- mixins/webviewHost.js:新增
· _silenceAuthOpenid()(wx.login → v2/wechat/silence_auth,兼容 auth_login/userInfo/JWT 三种
openid 来源,拿到即落 store + 缓存,带 8s 超时保险丝);
· _awaitHostLogin(timeout)(等 App.vue 那次登录结束,**不重复换 code**)。
- 两个宿主页统一 fail-closed「拿到 openid 才加载」,并且**第 1 次先 await App.vue 的并行登录**、
命中缓存就直接加载;之后才自己取。**网络尝试上限 3 → 2,退避 600×n → 固定 500ms**
(实测:code2session 约 200–300ms,重复换一次就是白花这个钱;最坏等待从 ~3.5s 降到 ~1–2.5s)。
- 首页壳:读不到身份就不设 webUrl(停在小程序自己的加载屏,文案分「取身份中/失败/页面加载失败」三态);
2 次仍失败 → 「未获取到微信身份」+「重新获取身份」。
- 容器页:三条失败分支(有 token 无 openid 的重试失败、无 token 无 openid、onShow 仍无 openid)
全部改走 _ensureIdentityThenLoad();删除本页重复实现的 _fetchOpenidAndLoad;新增兜底屏
(以前 url 为空是白屏)。非可信域(商城自身域名等)不注入身份、照常直接加载。
- utils/util.js:注释里的方法名同步(_fetchOpenidAndLoad → _ensureIdentityThenLoad)。
⚠️ 提交同时包含这两处**此前已存在的未提交 WIP**(同文件、改动交织):pages/annex/web_view/index.vue
的 mixin 重构(handleMessage→handleHostMessage 等 4 处 handler 改名)与 pages/index/index.vue
的两行 tabBar 调整。
⚠️ 刻意 fail-closed:CRMEB silence_auth 整体不可用时会停在失败屏而不是降级加载。
⚠️ 未动 manifest.json 版本号(见另一次改动:已统一为 0.3.6 / 36)。
|
2026-09-20 23:50:31 +08:00 |
|
|
|
c216865852
|
feat(user-center): 授权页 submitAuth 带 unionid(用户中心身份键,预留功能)
- 新增 getUnionid()(store/Cache 'UNIONID')
- POST /auth/profile 增加 unionid 参数:box_app 授权成功自动推送用户中心并回写 openid→unionid 映射
- 没拿到 unionid 也不影响授权(后端映射兜底)
- 配套:box_app 1269058(已部署);需重新发版生效
|
2026-09-19 17:41:02 +08:00 |
|
|
|
3df3e08252
|
fix(auth): 授权回传落点改确定性通道 —— backUrl 经 navigateTo query 传递
- 授权页 onLoad 读 options.backUrl(H5 发起授权时带上的当前地址),成功时写进
__AUTH_RESULT__.backUrl
- consumeAuthResult 优先用 res.backUrl 做回传基址(不再赌 postMessage 派发时机:
微信只在后退/销毁/分享时批量派发,宫格 location.href 换应用后 shareHref 可能
还是上一个应用的地址 → 授权后被踢回 mama-box 首页)
- 配套:mama-box wx-auth.js requestProfile / goAuth 已带 backUrl(mama-box d39e52c)
需重新发版生效
|
2026-09-19 16:56:00 +08:00 |
|
|
|
67eaae0ceb
|
fix(auth): 授权回传落点写死 MAMA_HOME + 假成功判据 → 宫格应用授权死循环
- 首页壳 onShow consumeAuthResult:回传基址改为 shareHref(H5 发起授权前
reportLocation 上报的当前地址)|| webUrl || MAMA_HOME —— 此前写死 MAMA_HOME,
宫格 location.href 换应用后(webUrl 数据未变),授权结果被送回 mama-box,
目标应用(孕检日历等)永远收不到 phone,弹层复现
- 首页壳 else 分支的 ?t= 重载同样以 shareHref 为基址(不再把宫格应用用户踢回 mama-box)
- 首页壳 submitAuth(原生面板)同步改用当前 H5 地址
- 授权页成功判据:提交了 code 时必须核对 result.phone 非空才写 __AUTH_RESULT__/
提示成功 —— 配合 box_app 后端 400 如实报错(box_app commit e6b98e7)
需重新发版生效
|
2026-09-18 19:36:39 +08:00 |
|
|
|
ad30f3eb01
|
feat(auth): 共享授权页 pages/annex/auth/index + web_view 宿主授权面板与回传(__AUTH_RESULT__ → H5 hash)
|
2026-09-09 22:51:57 +08:00 |
|
|
|
d9263d2ea2
|
feat: 微信审核适配 — 移除提现/分销页面 + 分享图片预取 + 登录链路修复
- pages.json 移除 14 个提现/分销页面注册(user_cash/user_spread/spreadData/promoter/distributor),文件保留可恢复
- template4.vue 隐藏'立即提现'区块(用户中心可见入口,分销功能已关闭)
- record.vue 抽奖记录移除提现收款跳转(改 toast 提示)
- web_view 分享图片:太阳码/点击应用时从 box_app 预取 shareImageUrl,H5 postMessage 传图优先
- web_view _fetchOpenidAndLoad 兼容老用户响应(openid 从 userInfo/JWT 兜底解析)并写回缓存
- App.vue 移除 expired=[object Promise] 无意义日志
|
2026-08-15 16:36:49 +08:00 |
|
|
|
a600dc05f7
|
fix: 冷启动竞态 — 无 token 时延迟重试等待静默授权,仍无则匿名直达
|
2026-07-31 11:37:35 +08:00 |
|
|
|
3455a834c4
|
debug: 增加免授权直达 H5 流程调试日志 [auth-flow]
|
2026-07-31 11:32:02 +08:00 |
|
|
|
edb084bd7a
|
feat: 免授权直达 H5 — 无 token 不再跳登录页,按需授权(requireAuth 返回后刷新身份)
|
2026-07-31 11:25:39 +08:00 |
|
|
|
14d2d1e4e2
|
fix: 删除自定义字体改用系统字体,减少主包体积
|
2026-07-30 13:18:51 +08:00 |
|
|
|
ed3e5f22ec
|
fix: 太阳码 scene 解析支持 &ch=渠道参数,identifier 用 split('&')[0] 分割
|
2026-07-30 12:39:44 +08:00 |
|
|
|
8c9613044c
|
cleanup(web_view): 隐藏调试浮层,清除 DEBUG 日志
|
2026-07-09 13:45:15 +08:00 |
|
|
|
865f68e415
|
fix(web_view): scene 值先 decodeURIComponent 再匹配
微信 wxacode.getUnlimited 返回的 scene 值中 = 被编码为 %3D
导致 scene="app%3Dpregnancy" 无法匹配 indexOf('app=')
修复:先 decodeURIComponent(option.scene) 再检查
|
2026-07-08 21:14:33 +08:00 |
|
|
|
e2ec214ae1
|
cleanup: 移除测试按钮和调试日志,准备发布
|
2026-07-08 18:53:14 +08:00 |
|
|
|
4dc3c68808
|
test(web_view): 添加 ?app=identifier 参数跳过 scene 直接解析
|
2026-07-08 18:48:47 +08:00 |
|
|
|
61caf4eb50
|
test(web_view): 测试按钮直接传 H5 URL 并加调试日志
不再依赖 scene/wxscene 参数传递(参数名可能被微信拦截)
改为直接传 ?url=encoded_h5_url
同时 web_view onLoad 打印所有 option 参数供排错
|
2026-07-08 18:40:18 +08:00 |
|
|
|
0e9ce6f7d6
|
fix(web_view): 改用 wxscene 避免 scene 被微信拦截
微信小程序的 navigateTo 会把 `scene` 参数名当作保留字段
(只由扫码填充),导致 `option.scene` 为空。
改用 wxscene,同时在 web_view onLoad 中兼容检查两者。
|
2026-07-08 18:29:08 +08:00 |
|
|
|
f18a21ea73
|
refactor(web_view): 把 _resolveAppScene 和 _initWebView 移到 methods 块内
HBuilderX 编译错误"Unexpected token (350:0)"
根因:Vue 2 Options API 要求所有方法在 methods: { ... } 块内
之前把这两个方法放在 export default 顶层,违反规范
修复:把 _resolveAppScene 和 _initWebView 移到 methods 块开头
Node.js --check 验证:语法通过
|
2026-07-08 17:45:58 +08:00 |
|
|
|
ccd6380c4b
|
fix(web_view): 补回 export default 关闭括号
build error: Unexpected token (350:0)
原因:之前修复时连续删多了,export default {...} 块本身没有关闭
修复:第 350 行 </script> 之前插入 `\t}` 关闭 export default
Node.js --check 验证:语法通过
|
2026-07-08 17:37:35 +08:00 |
|
|
|
6e3e2bb3ea
|
fix(web_view): 补回 handleMessage 方法关闭逗号
build error: Unexpected token, expected "," (350:0)
原因:之前修复时手抖,handleMessage 方法 `}` 后缺 `,`
导致 export default 最后一个属性末尾不合法
修复:第 348 行 `}` → `},`
Node.js --check 验证:语法通过
|
2026-07-08 17:31:52 +08:00 |
|
|
|
2e97550a5c
|
fix(web_view): 补回 _resolveAppScene 方法关闭括号
build error: Missing semicolon (163:22)
原因:之前修复时误删了 _resolveAppScene 方法的关闭 `},`
导致 _initWebView 紧接 uni.request 的 `});`,缺少 _resolveAppScene 关闭
修复:在 uni.request 关闭后插入 `\t\t},`
Node.js --check 验证:语法通过
|
2026-07-08 17:28:28 +08:00 |
|
|
|
e137841ec1
|
fix(web_view): 修正 export default 结构
build error: Unexpected token, expected "," (352:0)
原因:
1. 在 onLoad 内部错误地多写了 `methods: {` 块
2. 末尾有一个多余的 `}`
修复:
- 删除错位的 `methods: {` 块
- _resolveAppScene 和 _initWebView 现在作为 export default
顶层方法(Vue 2 Options API 支持)
- 删除末尾多余的 `}`
- 转换回 CRLF 行尾(HBuilderX 期望)
CRMEB 应能正常 HBuilderX 编译。
|
2026-07-08 17:10:56 +08:00 |
|
|
|
c184108f45
|
feat(web_view): 太阳码 scene 解析支持 app=identifier
box_app /api/wxacode 新增 app=identifier 模式,scene 编码
"app=<identifier>"。CRMEB 收到后解析 scene,调 box_app
/api/mp/apps 找对应 H5 url,加载应用。
场景示例:
太阳码 path=pages/annex/web_view/index
太阳码 scene="app=pregnancy"
→ CRMEB 调 box_app /api/mp/apps
→ 遍历 items 找 identifier=pregnancy 的 App
→ 拿到 App.url
→ 注入到 web-view src
→ 加载孕育无忧 H5
兼容性:
- 原 ?url=xxx 模式完全保留
- scene 解析失败/响应异常时降级到 CRMEB 首页
- 不影响原有分享/复制链接功能
实现细节:
- 遍历 items 找 identifier(不依赖 items[0] 排序假设)
- 找不到时回退 items[0](保底)
- 未来 box_app 支持 ?identifier= 直接过滤时,CRMEB 端无需改动
|
2026-07-08 16:41:58 +08:00 |
|
|
|
69da6597d9
|
fix(web_view): 修复 H5 分享消息投递,废弃无效 uni.share()
- handleMessage share 分支:存储 H5 传来的分享数据,Toast 引导用户点击右上角原生分享
- onShareAppMessage / onShareTimeline:使用 H5 传来的 title/imageUrl/href
- 新增 shareSummary/shareImageUrl/shareHref data 属性
|
2026-07-02 19:54:53 +08:00 |
|
|
|
797724c01d
|
feat(页面组件): 新增图片组件和页面顶部导航组件
- 新增 images.vue 图片组件,支持图片展示、链接跳转和二维码长按识别
- 新增 pageTopbar.vue 页面顶部导航组件,支持自定义标题、返回按钮和样式配置
- 在首页和专题页中注册并使用新增组件
- 优化 homeComb.vue 组件,添加选项卡轮播显示控制逻辑
- 添加 DIY 组件调试日志功能,便于开发调试
- 修复缓存读取空值时的默认值处理
|
2026-04-16 19:51:08 +08:00 |
|
|
|
a5c5d753b6
|
feat: 添加静态资源文件及基础组件
- 新增大量图片资源,包括图标、背景图、海报等,用于页面展示
- 添加字体文件及样式配置,支持自定义字体
- 引入 uni-ui 组件库,包括图标、弹窗、日期选择器等常用组件
- 添加网络状态监听、加密工具等基础工具函数
- 配置 Vuex 状态管理,包括购物车数量、热门搜索词等
- 增加页面组件,如用户协议、分销信息、提现状态等
- 配置项目构建和忽略文件,优化开发体验
|
2026-02-26 17:59:51 +08:00 |
|