118 lines
3.2 KiB
JavaScript
118 lines
3.2 KiB
JavaScript
/**
|
||
* 公账逾期锁店: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' })
|
||
}
|