pda操作

This commit is contained in:
2026-09-22 17:28:37 +08:00
parent 4ed1faea5f
commit 68357a4766
3 changed files with 30 additions and 10 deletions
+15 -5
View File
@@ -10,6 +10,10 @@ const LOGIN_PREFERENCE_KEY = 'pda-login-account-preference'
export const session = reactive({ currentUser: null, token: '', refreshToken: '', tenantId: '', apiBase: PLATFORM_API_ROOT })
export function isDomesticPdaOperator(user = session.currentUser) {
return Array.isArray(user?.roles) && user.roles.includes('CN_FIRSTLEG_PDA_OPERATOR')
}
export function isAccessTokenExpiring(token = session.token, skewSeconds = 30) {
try {
const expiresAt = Number(decodeAccessToken(token).exp || 0) * 1000
@@ -49,7 +53,7 @@ function persistSession() {
}
export function signIn(account, warehouse, options = {}) {
session.currentUser = { id: String(account.id), name: account.name, role: account.role, roles: account.roles || [], warehouse, warehouseId: account.warehouseId || null }
session.currentUser = { id: String(account.id), name: account.name, role: account.role, roles: account.roles || [], warehouse, warehouseId: account.warehouseId || null, domesticWarehouseId: account.domesticWarehouseId || null, warehouseBound: Boolean(account.domesticWarehouseId) }
session.token = options.token || account.token || ''
session.refreshToken = options.refreshToken || account.refreshToken || ''
session.tenantId = options.tenantId || account.tenantId || ''
@@ -69,8 +73,9 @@ export function signInWithTokens(tokens) {
return signIn({
id: claims.user_id ?? '',
name: claims.username || '仓库作业员',
role: Array.isArray(claims.roles) ? claims.roles.join('、') : '',
roles: claims.roles || []
role: Array.isArray(claims.roles || tokens.roles) ? (claims.roles || tokens.roles).join('、') : '',
roles: claims.roles || tokens.roles || [],
domesticWarehouseId: claims.domestic_warehouse_id || tokens.domesticWarehouseId || null
}, '', {
token: tokens.accessToken,
refreshToken: tokens.refreshToken || '',
@@ -82,6 +87,7 @@ export function selectWarehouse(warehouse) {
if (!session.currentUser) throw new Error('请先登录')
if (!warehouse?.id || !warehouse?.warehouseName) throw new Error('请选择有效的作业仓库')
const warehouseId = String(warehouse.id)
if (isDomesticPdaOperator() && String(session.currentUser.domesticWarehouseId || '') !== warehouseId) throw new Error('当前账号已绑定固定作业仓库,不能切换')
if (String(session.currentUser.warehouseId || '') !== warehouseId) resetPickingSession()
session.currentUser = {
...session.currentUser,
@@ -105,7 +111,9 @@ export function updateTokenPair(tokens) {
id: String(claims.user_id ?? previousUser.id ?? ''),
name: claims.username || previousUser.name || '仓库作业员',
role: Array.isArray(claims.roles) ? claims.roles.join('、') : (previousUser.role || ''),
roles: claims.roles || previousUser.roles || []
roles: claims.roles || previousUser.roles || [],
domesticWarehouseId: claims.domestic_warehouse_id || previousUser.domesticWarehouseId || null,
warehouseBound: Boolean(claims.domestic_warehouse_id || previousUser.domesticWarehouseId)
}
session.token = tokens.accessToken
session.refreshToken = tokens.refreshToken
@@ -129,7 +137,9 @@ export function restoreSession() {
id: String(claims.user_id ?? savedUser.id ?? ''),
name: claims.username || savedUser.name || '仓库作业员',
role: Array.isArray(claims.roles) ? claims.roles.join('、') : (savedUser.role || ''),
roles: claims.roles || savedUser.roles || []
roles: claims.roles || savedUser.roles || [],
domesticWarehouseId: claims.domestic_warehouse_id || savedUser.domesticWarehouseId || null,
warehouseBound: Boolean(claims.domestic_warehouse_id || savedUser.domesticWarehouseId)
},
tenantId: claims.tenant_id == null ? (saved.tenantId || '') : String(claims.tenant_id),
apiBase: saved.apiBase || PLATFORM_API_ROOT