fix(mobile): refresh official position on login

This commit is contained in:
2026-07-14 04:59:30 +08:00
parent 7b04305300
commit e4931753a3
3 changed files with 10 additions and 12 deletions
+8 -11
View File
@@ -1,7 +1,6 @@
import type { MobileIdentity, OrgSnapshotResponse, RoleKey } from '@/types/api';
import type { MobileIdentity, RoleKey } from '@/types/api';
import { apiRequest } from './api';
import {
getAuth,
hasSelectedPosition,
normalizePosition,
roleKey,
@@ -56,18 +55,15 @@ export const goToMobileTarget = (url: string) => {
uni.redirectTo({ url });
};
export const hydratePositionFromOrg = async (phone = getAuth().phone): Promise<UserPosition | ''> => {
const keyword = phone.trim();
if (!keyword) return '';
export const hydratePositionFromOrg = async (): Promise<UserPosition | ''> => {
try {
const snapshot = await apiRequest<OrgSnapshotResponse>({
url: `/api/aihr/org/snapshot?keyword=${encodeURIComponent(keyword)}&status=active&pageSize=1`,
const identity = await apiRequest<MobileIdentity>({
url: '/api/aihr/mobile/me',
method: 'GET',
timeout: 15000,
clearAuthOnUnauthorized: false
});
const officialPosition = snapshot.rows?.[0]?.positionName || '';
return saveSelectedPosition(officialPosition);
return saveSelectedPosition(identity.positionName);
} catch {
return '';
}
@@ -77,9 +73,10 @@ export const nextUserRouteAfterLogin = async (redirect: string) => {
const role = await hydrateMobileRole();
const roleRoute = routeForMobileRole(role, redirect);
if (roleRoute !== redirect) return roleRoute;
if (!isUserRoute(redirect) || hasSelectedPosition()) return redirect;
if (!isUserRoute(redirect)) return redirect;
const officialPosition = await hydratePositionFromOrg();
return normalizePosition(officialPosition) ? redirect : positionSetupUrl(redirect);
if (normalizePosition(officialPosition) || hasSelectedPosition()) return redirect;
return positionSetupUrl(redirect);
};
export const ensureEmployeePosition = async (redirect: string) => {