Files
xk-doctor-wx/utils/publicAccountLock.js
李琦 158ffd9e6e feat: 完善公账锁店流程,静态图改走 OSS
强化公账锁店页与首页横幅入口,支持声明已支付与催办;
代付二维码与 base64 工具抽到公共组件;本地 static 大图改为 OSS 引用。
2026-08-21 12:52:09 +08:00

118 lines
3.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 公账逾期锁店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' })
}