c010d8b416
- 新增共享 auth.js(jiuAuth):access token 60 分钟过期后,checkout 提交/ 结果页轮询遇 401 自动 POST /auth/refresh 换新 token 并重试一次,仍失败 才跳登录——修复「已登录点提交订单却被踢回登录页」 - 登录判定放宽为 access 或 refresh token 任一存在(refresh 7 天有效) - 所有 JS/CSS 引用加 ?v=构建版本号:修复旧版 nav.js 被浏览器缓存后在新 页面执行(右上角错位的旧用户面板、带引号的 "张三" 显示) - nav.js 改经 jiuAuth 读 localStorage(JSON 解码,去掉引号显示) - 登录页回填上次的门店编号与账号 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
/* 官网导航交互:汉堡菜单 + 登录态感知(Web 版 App 与官网同域时,
|
|
localStorage['flutter.*'] 有登录信息 → CTA 变「进入系统」)。零依赖。 */
|
|
(function () {
|
|
function getAuthUser() {
|
|
if (!window.jiuAuth || !jiuAuth.loggedIn()) return null;
|
|
var username = jiuAuth.get('username');
|
|
if (!username) return null;
|
|
return {
|
|
username: username,
|
|
realName: jiuAuth.get('real_name') || '',
|
|
shopNo: jiuAuth.get('shop_no') || '',
|
|
};
|
|
}
|
|
|
|
// 汉堡菜单
|
|
var burger = document.getElementById('nav-burger');
|
|
var mobile = document.getElementById('nav-mobile-menu');
|
|
if (burger && mobile) {
|
|
burger.addEventListener('click', function (e) {
|
|
e.stopPropagation();
|
|
var open = mobile.classList.toggle('open');
|
|
burger.setAttribute('aria-expanded', open ? 'true' : 'false');
|
|
});
|
|
document.addEventListener('click', function (e) {
|
|
if (!mobile.contains(e.target) && e.target !== burger) {
|
|
mobile.classList.remove('open');
|
|
}
|
|
});
|
|
}
|
|
|
|
// 登录态:CTA 换成「进入系统」
|
|
var user = getAuthUser();
|
|
if (user) {
|
|
var cta = document.getElementById('nav-cta');
|
|
if (cta) {
|
|
cta.innerHTML =
|
|
'<a class="btn primary" href="/app/">进入系统 · ' +
|
|
(user.realName || user.username).replace(/[<>&"]/g, '') +
|
|
'</a>';
|
|
}
|
|
}
|
|
})();
|