/** * 未登录体验模式(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 // uni.setStorageSync('store_id', GUEST_STORE_ID); } /** * 清除未登录体验模式标记 */ 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}`; }