2026-01-12 12:36:50 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 未登录体验模式(Guest Mode)工具函数
|
|
|
|
|
|
* 用于管理未登录用户的访问权限和跳转信息
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
const GUEST_MODE_KEY = 'guest_mode';
|
|
|
|
|
|
const GUEST_STORE_ID = '11001';
|
|
|
|
|
|
const REDIRECT_INFO_KEY = 'redirect_info';
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 判断是否为未登录体验模式
|
|
|
|
|
|
* @returns {boolean}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function isGuestMode() {
|
|
|
|
|
|
return uni.getStorageSync(GUEST_MODE_KEY) === true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 设置未登录体验模式标记
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function setGuestMode() {
|
|
|
|
|
|
uni.setStorageSync(GUEST_MODE_KEY, true);
|
|
|
|
|
|
// 同时设置store_id为11001
|
2026-01-14 20:59:32 +08:00
|
|
|
|
// uni.setStorageSync('store_id', GUEST_STORE_ID);
|
2026-01-12 12:36:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 清除未登录体验模式标记
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function clearGuestMode() {
|
|
|
|
|
|
uni.removeStorageSync(GUEST_MODE_KEY);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取Guest模式下的固定诊所ID
|
|
|
|
|
|
* @returns {string}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function getGuestStoreId() {
|
|
|
|
|
|
return GUEST_STORE_ID;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 保存跳转登录前的页面路径和参数
|
|
|
|
|
|
* @param {string} path - 页面路径
|
|
|
|
|
|
* @param {object} params - 页面参数对象
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function saveRedirectInfo(path, params = {}) {
|
|
|
|
|
|
const redirectInfo = {
|
|
|
|
|
|
path,
|
|
|
|
|
|
params,
|
|
|
|
|
|
timestamp: Date.now()
|
|
|
|
|
|
};
|
|
|
|
|
|
uni.setStorageSync(REDIRECT_INFO_KEY, redirectInfo);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取保存的跳转信息
|
|
|
|
|
|
* @returns {object|null} 返回 {path, params} 或 null
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function getRedirectInfo() {
|
|
|
|
|
|
const info = uni.getStorageSync(REDIRECT_INFO_KEY);
|
|
|
|
|
|
if (!info) {
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
// 检查是否过期(24小时)
|
|
|
|
|
|
const expireTime = 24 * 60 * 60 * 1000; // 24小时
|
|
|
|
|
|
if (Date.now() - info.timestamp > expireTime) {
|
|
|
|
|
|
clearRedirectInfo();
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
return {
|
|
|
|
|
|
path: info.path,
|
|
|
|
|
|
params: info.params
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 清除跳转信息
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function clearRedirectInfo() {
|
|
|
|
|
|
uni.removeStorageSync(REDIRECT_INFO_KEY);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 检查是否已登录
|
|
|
|
|
|
* @returns {boolean}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function isLoggedIn() {
|
|
|
|
|
|
const token = uni.getStorageSync('token');
|
|
|
|
|
|
const userInfo = uni.getStorageSync('userinfo');
|
|
|
|
|
|
return !!(token && userInfo);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 构建带参数的URL
|
|
|
|
|
|
* @param {string} path - 页面路径
|
|
|
|
|
|
* @param {object} params - 参数对象
|
|
|
|
|
|
* @returns {string}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function buildUrlWithParams(path, params = {}) {
|
|
|
|
|
|
if (!params || Object.keys(params).length === 0) {
|
|
|
|
|
|
return path;
|
|
|
|
|
|
}
|
|
|
|
|
|
const queryString = Object.keys(params)
|
|
|
|
|
|
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
|
|
|
|
|
|
.join('&');
|
|
|
|
|
|
return `${path}?${queryString}`;
|
|
|
|
|
|
}
|
|
|
|
|
|
|