- [P0安全底座] 多租户数据闭环:公开留资与雷达足迹自动逆向追溯绑定名片 tenantId 与归属销售 userId - [P0性能稳定] 消除内存全量加载:公海池分批带条件扫描回收,雷达国家分布改用 SQL 原生 GROUP BY 聚合查询彻底消除 OOM 隐患 - [P0商业变现] 商业化配额门禁切面:在 Cool-Admin modifyBefore 生命周期织入 assertQuotaAvailable 校验,阻断超额名片创建 - [P0环境解耦] 客户端解耦本地硬编码:request.uts 支持 api_base_url 本地覆盖,生产数据库名修正为 crmmpdata - [P1高并发削峰] 雷达足迹批量缓冲引擎:引入 CrmRadarBufferService 环形缓冲队列与阈值/定时批量 Bulk Insert 落盘 - [P2中枢租户化] AI 智能中枢多租户 BYOK 与 Token 成本风控:支持企业自带 Key 隔离、Token 消耗账本、用量配额门禁与名片人设个性化联动 - [跨端规范] 对齐 Uni-app x 移动微官网原生首屏与底部原生 tabBar 规范 - [测试驱动] 全工程 116 个测试套件,1,175 个单元与集成测试用例全部 100% 绿色通过,管理后台 Vite 打包无错误
69 行
1.6 KiB
Plaintext
69 行
1.6 KiB
Plaintext
<script setup lang="uts">
|
|
import { getAuthToken } from './common/request.uts'
|
|
import { parseDeepLink, buildAppPageRoute } from './common/deeplink-router.uts'
|
|
|
|
// #ifdef APP-ANDROID || APP-HARMONY
|
|
let firstBackTime = 0
|
|
// #endif
|
|
|
|
function openDeepLink(scheme : string | null, link : string | null) : boolean {
|
|
const raw = scheme != null && scheme != '' ? scheme! : (link != null ? link! : '')
|
|
const info = parseDeepLink(raw)
|
|
if (!info.isValid) {
|
|
return false
|
|
}
|
|
uni.reLaunch({
|
|
url: buildAppPageRoute(info)
|
|
})
|
|
return true
|
|
}
|
|
|
|
function routeOwnerHome() : void {
|
|
if (getAuthToken() != '') {
|
|
uni.switchTab({
|
|
url: '/pages/owner/hall/index'
|
|
})
|
|
return
|
|
}
|
|
uni.reLaunch({
|
|
url: '/pages/common/login'
|
|
})
|
|
}
|
|
|
|
onLaunch((_res : OnLaunchOptions) => {
|
|
// #ifdef APP
|
|
routeOwnerHome()
|
|
// #endif
|
|
})
|
|
|
|
onAppShow((res : OnShowOptions) => {
|
|
openDeepLink(res.appScheme, res.appLink)
|
|
})
|
|
|
|
// #ifdef APP-ANDROID || APP-HARMONY
|
|
onLastPageBackPress(() => {
|
|
if (firstBackTime == 0) {
|
|
uni.showToast({
|
|
title: '再按一次退出应用',
|
|
position: 'bottom',
|
|
})
|
|
firstBackTime = Date.now()
|
|
setTimeout(() => {
|
|
firstBackTime = 0
|
|
}, 2000)
|
|
} else if (Date.now() - firstBackTime < 2000) {
|
|
firstBackTime = Date.now()
|
|
uni.exit()
|
|
}
|
|
})
|
|
// #endif
|
|
</script>
|
|
|
|
<style>
|
|
page {
|
|
background-color: #F7F8FA;
|
|
color: #101828;
|
|
font-family: Inter, "Noto Sans SC", "Noto Sans Arabic", "Noto Sans JP", "Noto Sans KR", sans-serif;
|
|
}
|
|
</style>
|