|
|
@@ -331,6 +331,30 @@ export async function fetchUserDetail(userId) {
|
|
|
return profile;
|
|
|
}
|
|
|
|
|
|
+// 拉取当前用户的主管档案并把 name 回填到 vo.managerName;
|
|
|
+// 失败静默:主管姓名缺失时不影响主流程(申请表单会兜底展示"系统自动匹配")
|
|
|
+// 复用 fetchUserDetail,与现有 resolvePostIds 串联模式保持一致
|
|
|
+export async function resolveManagerName(vo) {
|
|
|
+ if (!vo || typeof vo !== "object") return vo;
|
|
|
+ const raw = vo.user && typeof vo.user === "object" ? vo.user : vo;
|
|
|
+ const managerId = raw.managerUserId ?? vo.managerUserId;
|
|
|
+ if (managerId === undefined || managerId === null || managerId === "")
|
|
|
+ return vo;
|
|
|
+ try {
|
|
|
+ const managerVo = await fetchUserDetail(managerId);
|
|
|
+ if (managerVo) {
|
|
|
+ const name =
|
|
|
+ (managerVo.user && managerVo.user.name) ||
|
|
|
+ managerVo.name ||
|
|
|
+ "";
|
|
|
+ raw.managerName = String(name || "");
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ // 主管档案解析失败不阻塞登录 / 档案刷新主流程
|
|
|
+ }
|
|
|
+ return vo;
|
|
|
+}
|
|
|
+
|
|
|
// 把 profile.postId("1111,2222")解析成岗位名称字符串,用 / 拼接多个岗位
|
|
|
async function resolvePostIds(postIdString) {
|
|
|
if (!postIdString) return "";
|
|
|
@@ -421,7 +445,12 @@ export async function performLogin({ account, password, rememberPassword }) {
|
|
|
const merged = detailData
|
|
|
? { ...(basicData || {}), ...detailData }
|
|
|
: basicData;
|
|
|
- if (merged) saveCurrentUser(merged);
|
|
|
+ if (merged) {
|
|
|
+ // 解析出 managerUserId 对应的主管姓名,写回 currentUser.managerName
|
|
|
+ // 失败由 helper 内部吞掉,不影响登录流程
|
|
|
+ await resolveManagerName(merged);
|
|
|
+ saveCurrentUser(merged);
|
|
|
+ }
|
|
|
if (detail.status === "rejected") {
|
|
|
uni.showToast({
|
|
|
title: detail.reason?.message || "员工档案加载失败",
|