- 自定义 tabBar:AI 入口图标与样式,相关页面与审核门控调整 - API:MpTabbar、出站推送 Hook、后台设置与迁移 SQL(含 FAB 居中排序) - 管理端:推送 Hook 面板、出站推送调试工具与生产环境注释说明 Made-with: Cursor
73 lines
2.3 KiB
JavaScript
73 lines
2.3 KiB
JavaScript
/**
|
||
* 超管审核相关:隐藏神仙 AI Tab/入口;提审模式下另由后端/各页关闭虚拟商品与「了解自己」深度套餐。
|
||
* - miniprogramAuditMode:提审专用(含虚拟支付合规)
|
||
* - maintenanceMode / reviewMode:面相审核(用户口语「审核模式」常指其一)
|
||
*/
|
||
|
||
/** 临时:为 true 时在客户端忽略审核/提审隐藏逻辑。平时必须为 false,由 runtime 与后端 miniprogramAuditMode 等决定展示 */
|
||
const TEMP_FORCE_SHOW_ALL_HIDDEN_UI = false
|
||
|
||
/**
|
||
* 在 getRuntimeConfig 写入 globalData 之后调用:把审核相关开关置为关闭,供各页与 TabBar 使用。
|
||
*/
|
||
function applyAuditUiOverride(app) {
|
||
if (!TEMP_FORCE_SHOW_ALL_HIDDEN_UI || !app || !app.globalData) return
|
||
app.globalData.reviewMode = false
|
||
app.globalData.maintenanceMode = false
|
||
app.globalData.miniprogramAuditMode = false
|
||
}
|
||
|
||
/** 是否因审核/面相权限隐藏中间凸起 Tab(拍摄) */
|
||
function shouldHideTabBarHighlightFab(gd) {
|
||
if (TEMP_FORCE_SHOW_ALL_HIDDEN_UI) return false
|
||
if (!gd) return false
|
||
const ep = gd.enterprisePermissions
|
||
const faceOff = !!(ep && ep.face === false)
|
||
return !!(gd.reviewMode || gd.maintenanceMode) || faceOff
|
||
}
|
||
|
||
function isAuditHideAiMode(gd) {
|
||
if (TEMP_FORCE_SHOW_ALL_HIDDEN_UI) return false
|
||
if (!gd) return false
|
||
return !!(gd.miniprogramAuditMode || gd.maintenanceMode || gd.reviewMode)
|
||
}
|
||
|
||
function redirectIfMiniprogramAudit(message) {
|
||
const app = getApp()
|
||
const gd = app && app.globalData
|
||
if (!isAuditHideAiMode(gd)) return false
|
||
wx.showToast({ title: message || '功能升级中', icon: 'none' })
|
||
setTimeout(() => {
|
||
wx.switchTab({ url: '/pages/index/index' })
|
||
}, 300)
|
||
return true
|
||
}
|
||
|
||
/**
|
||
* 先拉 runtime(若存在),再若提审则踢回首页;否则执行 callback。
|
||
*/
|
||
function ensureRuntimeThenGate(callback) {
|
||
const app = getApp()
|
||
const run = () => {
|
||
if (isAuditHideAiMode(app.globalData)) {
|
||
redirectIfMiniprogramAudit()
|
||
return
|
||
}
|
||
if (typeof callback === 'function') callback()
|
||
}
|
||
if (app && typeof app.getRuntimeConfig === 'function') {
|
||
app.getRuntimeConfig().then(run).catch(run)
|
||
return
|
||
}
|
||
run()
|
||
}
|
||
|
||
module.exports = {
|
||
TEMP_FORCE_SHOW_ALL_HIDDEN_UI,
|
||
applyAuditUiOverride,
|
||
shouldHideTabBarHighlightFab,
|
||
isAuditHideAiMode,
|
||
redirectIfMiniprogramAudit,
|
||
ensureRuntimeThenGate
|
||
}
|