选一款海报,分享给好友
春招季 · 一起加油
AI 改简历 · 面试更有底气
扫码注册 · 与复制链接相同
海报不会自动保存 · 请先保存到相册,再到微信选图分享
27-invite-g6.html页面27-invite-poster.html · 邀请海报(邀请有礼子页)· 验收见 ⑧
阅读方式:每条先写界面上是什么,再写元素 ID 与接口。
展示顺序(按角色 · 章节号固定)
接口本页唯一 · GET /growth/invite/code → display_poster_result · 与邀请有礼页同响应 · 完整见 ⑥
一句话:选海报规格、预览合成大图,保存到相册或分享给好友(独立全屏页,非弹层)。
poster(可选)· mock 真源 _invite-prototype.js · 见 dev-notes · 小程序保存分享btn_nav_back · fallback 27-invite-g6.htmlpage_titlecopy_poster_picker_hint · CMS 可配list_poster_specs · chip_poster_specposters[]:poster_id · name · thumb_url(缩略图)· 运营上下架 · 禁止写死三款poster_id 的素材与文案display_poster_result · display_qr_invite?poster=cheer|fresh|campus(可选;缺省列表首项;切换模版时 URL 同步)posters[] 当前项:bg_url(或主题色)· kicker · tagline · subline · 后台 CMScode(与 27 页 display_invite_code 必须一致)invite_link(与「复制邀请链接」同链,禁止前端另拼)copy_poster_save_hint(保存前/后两套 · 保存成功后切「已保存…」)copy_poster_saved_toast(默认见 **⑨**)· H5 成功 Toast 见 **⑨** · 与 copy_poster_save_hint 静态引导不同bar_poster_actionsbtn_poster_share(未保存 Toast 提醒;已保存走微信分享,见 dev-notes)btn_poster_save · 成功反馈见 **⑨**(H5 原型 _invite-prototype.js · 小程序 CMS copy_poster_saved_toast)
posterTempPath → 再 wx.saveImageToPhotosAlbum(系统可能同步弹授权)errMsg 含授权拒绝 → wx.showModal 说明「保存海报需相册权限」+ wx.openSetting · 未授权则不写入、不 Toast 成功invite_poster_album_deniedcopy_poster_save_hint 切已保存态 · 埋点 invite_poster_save(save_success=true)saveImageToPhotosAlbum · 降级下载/长按保存 · 成功 Toast 见 **⑨** · 不 silent fail · 禁止 Toast「已保存到相册」GET /growth/invite/code(本页唯一 · 与 27-invite-g6 相同)说明:海报页没有单独的「拉海报列表」接口;模版、邀请码、分享链均来自同一个接口。与 27-invite-g6.html 共用,避免两页 code 不一致。原型 HTML 静态兜底 + _invite-prototype.js 重绘 QR;上线由响应渲染 display_poster_result。替换清单 → dev-notes · 静态 mock → API。
onLoad 必须请求chip_poster_spec)不再请求接口,只用已下发的 posters[] 本地切换reward_points 仅邀请页用,本页可忽略)
code(string)→ 大图 foot「我的邀请码」· 须与邀请页 display_invite_code 相同invite_link(string)→ display_qr_invite 二维码内容 · 与「复制邀请链接」同一 URL · 禁止前端拼接posters(array)→ list_poster_specs 缩略图列表 + display_poster_result 大图合成posters[] 单项结构(CMS 上传 · 运营上下架 · 按 sort 排序展示)
poster_id(string)→ chip_poster_spec 的 data-poster-id · URL 参数 ?poster=name(string)→ 缩略图下方模版名称(如「加油求职」)thumb_url(string)→ 缩略图图片 URLbg_url(string)→ 大图背景图(无图时可用主题色兜底)kicker · tagline · subline(string)→ 大图内三行营销文案{ "code": "INV8K2M9", "invite_link": "https://…/invite?code=INV8K2M9", "posters": [{ "poster_id": "cheer", "name": "加油求职", "thumb_url": "…", "bg_url": "…", "kicker": "春招季…", "tagline": "祝你早日…", "subline": "AI 改简历…" }] }posters 为空 → 展示空态「暂无可用海报」· 隐藏缩略图区 · 大图区勿留黑框27-invite-g6.html · btn_gen_invite_poster · 可选 URL ?poster=cheer|fresh|campus27-invite-g6.html)· 「保存到相册」· 「分享给好友」(微信 · 见 dev-notes)codeGET /growth/invite/code · posters[] 结构与缓存策略。27-invite-g6.html 点「生成邀请海报」→ 进入本页全屏。app-image/ICON-CATALOG.md · 全站通用 §7 · 上传 §8 · 品牌 §9 · 本页见 §10 索引表app-image/ICON-CATALOG.md · 状态栏 §11 · 增长/分享 §12 · 表单/附件 §13 · 法务 §14 · 订单/空态 §15 · 媒体/语音 §16 · 本页见 §10app-image/ICON-CATALOG.md · F4 模块 §18 · 状态徽章 §19 · 弹窗/加载 §20 · 联系打码 §21 · 折叠/更多 §22 · 文件类型 §23 · 分享装饰 §24 · 账号 §25 · 本页见 §10btn_poster_save 成功 · 与 copy_poster_save_hint 静态引导无关)
_invite-prototype.js · 上线:合成图 blob/下载后同句 · 禁止 Toast「已保存到相册」saveImageToPhotosAlbum 成功 · Toast/HUD(CMS · copy_poster_saved_toast · 默认):**「已保存到相册 · 打开「照片」按时间查找,或搜索 AI简历优化」**btn_poster_share · 双端同句 Toast「请先保存到相册,再分享给好友」· 已保存:小程序 showShareImageMenu / onShareAppMessage · H5 原型 mock「正在打开微信分享…」· 详 App-weapp-notesinvite_poster_view · invite_poster_spec_change(poster_id)· invite_poster_save · invite_poster_sharecopy_poster_picker_hint · copy_poster_save_hint · copy_poster_saved_toast(**小程序保存成功** · 非 ⑥ 响应字段)· 模版素材走 posters[]posterTempPath · saveImageToPhotosAlbum · showShareImageMenu · 详表 dev-notes_invite-prototype.js 重绘 QR · 仅 mock H5 保存 Toast · 正式上线 → launch-static-to-api悬停可交互控件会出现黄框。