feat: 全局人名映射工具 — 拼音 ID → 中文姓名转换
- formatUserName(userId): 查全局字典翻译为中文名,降级返回原 ID - formatUserAvatar(userId): 中文名取末字作为头像文字 - setUserNameMap(users): 批量注册用户字典
This commit is contained in:
55
track-uniapp/src/utils/format.js
Normal file
55
track-uniapp/src/utils/format.js
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/**
|
||||||
|
* 全局人名映射工具
|
||||||
|
*
|
||||||
|
* 使用方式:
|
||||||
|
* 1. 在页面 loadUsers() 后调用 setUserNameMap(userList) 填充字典
|
||||||
|
* 2. 模板中直接 `{{ formatUserName(task.assignee_id) }}`
|
||||||
|
* 3. 头像中 `{{ formatUserAvatar(msg.operator_id) }}` 取中文名末字
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 全局用户名 → 中文姓名 映射表
|
||||||
|
const userNameMap = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量设置用户名映射
|
||||||
|
* @param {Array} users - 用户列表,每项需含 username 和 full_name
|
||||||
|
*/
|
||||||
|
export function setUserNameMap(users) {
|
||||||
|
if (!users || !users.length) return;
|
||||||
|
for (const u of users) {
|
||||||
|
const id = u.username || u.id || '';
|
||||||
|
const name = u.full_name || u.name || u.real_name || '';
|
||||||
|
if (id && name) {
|
||||||
|
userNameMap[id] = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将用户 ID 翻译为中文姓名
|
||||||
|
* @param {string} userId - 用户标识(username 或 id)
|
||||||
|
* @returns {string} 中文姓名,查不到则降级返回原 ID
|
||||||
|
*/
|
||||||
|
export function formatUserName(userId) {
|
||||||
|
if (!userId) return '—';
|
||||||
|
// 特殊值原样返回
|
||||||
|
if (userId === 'virtual_warehouse') return '🏭 仓库';
|
||||||
|
const name = userNameMap[userId];
|
||||||
|
return name || userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户头像文字(中文名取末字,拼音名取首字母)
|
||||||
|
* @param {string} userId - 用户标识
|
||||||
|
* @returns {string} 单字头像文字
|
||||||
|
*/
|
||||||
|
export function formatUserAvatar(userId) {
|
||||||
|
if (!userId) return '?';
|
||||||
|
const name = userNameMap[userId];
|
||||||
|
if (name) {
|
||||||
|
// 中文名取最后一个字
|
||||||
|
return name.charAt(name.length - 1);
|
||||||
|
}
|
||||||
|
// 降级:取 ID 首字母大写
|
||||||
|
return userId.charAt(0).toUpperCase();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user