feat: 做好了扫描兼容处理
This commit is contained in:
@@ -83,11 +83,14 @@ App({
|
|||||||
},
|
},
|
||||||
|
|
||||||
// 处理推荐码绑定(支持 query.ref 与扫码 scene;scene 可能为 ref=SOULXXX 或 id=1.1_ref=xxx,后端会把 & 转成 _)
|
// 处理推荐码绑定(支持 query.ref 与扫码 scene;scene 可能为 ref=SOULXXX 或 id=1.1_ref=xxx,后端会把 & 转成 _)
|
||||||
|
// 扫码进入时:options.scene 为场景值(1047),自定义 scene 在 options.query.scene
|
||||||
handleReferralCode(options) {
|
handleReferralCode(options) {
|
||||||
const query = options?.query || {}
|
const query = options?.query || {}
|
||||||
let refCode = query.ref || query.referralCode
|
let refCode = query.ref || query.referralCode
|
||||||
if (options?.scene) {
|
// 扫码进入时自定义 scene 在 query.scene;options.scene 为场景值(1047)
|
||||||
const scene = (typeof options.scene === 'string' ? decodeURIComponent(options.scene) : '').trim()
|
const sceneStr = query?.scene || (typeof options?.scene === 'string' ? options.scene : null)
|
||||||
|
if (sceneStr) {
|
||||||
|
const scene = (typeof sceneStr === 'string' ? decodeURIComponent(sceneStr) : '').trim()
|
||||||
// 支持 _ 或 & 作为参数分隔符(后端生成小程序码时会把 & 转为 _)
|
// 支持 _ 或 & 作为参数分隔符(后端生成小程序码时会把 & 转为 _)
|
||||||
const parts = scene.split(/[&_]/)
|
const parts = scene.split(/[&_]/)
|
||||||
for (const part of parts) {
|
for (const part of parts) {
|
||||||
|
|||||||
@@ -73,11 +73,30 @@ Page({
|
|||||||
},
|
},
|
||||||
|
|
||||||
async onLoad(options) {
|
async onLoad(options) {
|
||||||
// 扫码进入时 id 可能在 app.globalData.initialSectionId(scene 里 id=1.1 由 app 解析)
|
// 扫码进入时:options.id 无;id 可能在 app.globalData.initialSectionId(App 解析 query.scene)
|
||||||
|
// 或直接在 options.scene 中(页面 query 为 ?scene=id%3D1.1,后端把 & 转成 _)
|
||||||
let id = options.id || app.globalData.initialSectionId
|
let id = options.id || app.globalData.initialSectionId
|
||||||
|
if (!id && options.scene) {
|
||||||
|
const scene = (typeof options.scene === 'string' ? decodeURIComponent(options.scene) : '').trim()
|
||||||
|
const parts = scene.split(/[&_]/)
|
||||||
|
for (const part of parts) {
|
||||||
|
const eq = part.indexOf('=')
|
||||||
|
if (eq > 0 && part.slice(0, eq) === 'id') {
|
||||||
|
id = part.slice(eq + 1)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (app.globalData.initialSectionId) delete app.globalData.initialSectionId
|
if (app.globalData.initialSectionId) delete app.globalData.initialSectionId
|
||||||
const ref = options.ref
|
const ref = options.ref
|
||||||
|
|
||||||
|
if (!id) {
|
||||||
|
console.warn('[Read] 未获取到章节 id,options:', options)
|
||||||
|
wx.showToast({ title: '章节参数缺失', icon: 'none' })
|
||||||
|
this.setData({ accessState: 'error', loading: false })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
this.setData({
|
this.setData({
|
||||||
statusBarHeight: app.globalData.statusBarHeight,
|
statusBarHeight: app.globalData.statusBarHeight,
|
||||||
navBarHeight: app.globalData.navBarHeight,
|
navBarHeight: app.globalData.navBarHeight,
|
||||||
|
|||||||
@@ -23,12 +23,19 @@
|
|||||||
"condition": {
|
"condition": {
|
||||||
"miniprogram": {
|
"miniprogram": {
|
||||||
"list": [
|
"list": [
|
||||||
|
{
|
||||||
|
"name": "ces",
|
||||||
|
"pathName": "pages/read/read",
|
||||||
|
"query": "scene=id%3D1.1",
|
||||||
|
"scene": null,
|
||||||
|
"launchMode": "default"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "pages/read/read",
|
"name": "pages/read/read",
|
||||||
"pathName": "pages/read/read",
|
"pathName": "pages/read/read",
|
||||||
"query": "id=1.2",
|
"query": "id=1.2",
|
||||||
"scene": null,
|
"launchMode": "default",
|
||||||
"launchMode": "default"
|
"scene": null
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user