/** * 公账逾期锁店:4101 写入本地并强制跳到分包锁店页 * soft 模式:未纳入硬锁的角色(如未开「锁诊所管理员」)可从条幅进入并返回 */ const STORAGE_KEY = 'xk_public_account_lock' export const PUBLIC_ACCOUNT_LOCK_PAGE = '/subPackages/sub_workbench/public_account_lock/index' let jumping = false export function setPublicAccountLock(payload) { const data = payload && typeof payload === 'object' ? payload : {} uni.setStorageSync(STORAGE_KEY, data) uni.$emit('public-account-lock', data) redirectToPublicAccountLockPage() } export function getPublicAccountLock() { return uni.getStorageSync(STORAGE_KEY) || null } /** * 是否已锁店:漏单未出日汇总时 daily_id=0,要用 bill_date / locked / store_locked */ export function isPublicAccountLocked(payload) { if (!payload || typeof payload !== 'object') { return false } if (payload.locked === true || payload.locked === 1) { return true } if (payload.store_locked === true || payload.store_locked === 1) { return true } return !!(payload.daily_id || payload.bill_date) } /** * 门店逾期(条幅用),不要求当前身份硬锁 */ export function isPublicAccountStoreLocked(payload) { if (!payload || typeof payload !== 'object') { return false } if (payload.store_locked === true || payload.store_locked === 1) { return true } if (payload.locked === true || payload.locked === 1) { return true } return !!(payload.daily_id || payload.bill_date) } /** * 条幅点击:硬锁走 reLaunch;仅门店逾期走 soft 可返回 */ export function openPublicAccountLockFromBanner(payload) { const data = payload && typeof payload === 'object' ? payload : {} uni.setStorageSync(STORAGE_KEY, data) uni.$emit('public-account-lock', data) const hard = data.locked === true || data.locked === 1 if (hard) { redirectToPublicAccountLockPage() return } if (isOnPublicAccountLockPage()) { return } uni.navigateTo({ url: PUBLIC_ACCOUNT_LOCK_PAGE + '?soft=1', }) } export function clearPublicAccountLock() { uni.removeStorageSync(STORAGE_KEY) uni.$emit('public-account-lock-clear') } export function isOnPublicAccountLockPage() { const pages = getCurrentPages() const cur = pages.length ? pages[pages.length - 1] : null const route = cur && cur.route ? String(cur.route) : '' return route.indexOf('public_account_lock') !== -1 } /** * 拦截器命中 4101 后跳分包锁店页;已在该页则不再跳,避免死循环 */ export function redirectToPublicAccountLockPage() { if (isOnPublicAccountLockPage() || jumping) { return } jumping = true // reLaunch 清掉上一页,模拟器返回不能退回业务页;tabBar 页也不能用 redirectTo uni.reLaunch({ url: PUBLIC_ACCOUNT_LOCK_PAGE, complete() { jumping = false }, }) } /** * 解锁后回各自工作台 */ export function goHomeAfterPublicAccountUnlock() { const mode = uni.getStorageSync('loginMode') const identity = Number(uni.getStorageSync('identity') || 1) if (mode === 'clinic_admin') { uni.reLaunch({ url: '/subPackages/sub_clinic_admin/home/index' }) return } if (identity === 2) { uni.switchTab({ url: '/pages/pharmacist/index' }) return } uni.switchTab({ url: '/pages/workbench/index' }) }