Files
shz-admin/src/utils/jobPortalDict.ts
francis-fh 971e2b8be5
Some checks failed
Node CI / build (14.x, macOS-latest) (push) Has been cancelled
Node CI / build (14.x, ubuntu-latest) (push) Has been cancelled
Node CI / build (14.x, windows-latest) (push) Has been cancelled
Node CI / build (16.x, macOS-latest) (push) Has been cancelled
Node CI / build (16.x, ubuntu-latest) (push) Has been cancelled
Node CI / build (16.x, windows-latest) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
coverage CI / build (push) Has been cancelled
Node pnpm CI / build (16.x, macOS-latest) (push) Has been cancelled
Node pnpm CI / build (16.x, ubuntu-latest) (push) Has been cancelled
Node pnpm CI / build (16.x, windows-latest) (push) Has been cancelled
11
2026-06-04 17:15:41 +08:00

78 lines
1.9 KiB
TypeScript
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.

import type { DictValueEnumObj } from '@/components/DictTag';
/** 字典值转展示文案 */
export function getDictLabel(
enums: DictValueEnumObj | Record<string, any>,
value?: string | number | null,
): string {
if (value === null || value === undefined || value === '') {
return '';
}
const strVal = String(value);
if (!enums || !Object.keys(enums).length) {
return strVal;
}
const direct = enums[strVal] ?? enums[Number(value)];
if (direct) {
return direct.label || direct.text || strVal;
}
const matched = Object.values(enums).find((item: any) => {
return (
String(item.value) === strVal ||
String(item.key) === strVal ||
String(item.id) === strVal
);
});
if (matched) {
return (matched as any).label || (matched as any).text || strVal;
}
return strVal;
}
/** 树形数据 id 转 label岗位分类 / 行业等) */
export function findTreeLabelById(
nodes: any[] | undefined,
id?: string | number | null,
): string {
if (id === null || id === undefined || id === '') {
return '';
}
const idStr = String(id);
if (!nodes?.length) {
return '';
}
for (const node of nodes) {
const nodeId = String(node.id ?? node.value ?? '');
if (nodeId === idStr) {
return node.label ?? node.title ?? '';
}
if (node.children?.length) {
const childLabel = findTreeLabelById(node.children, id);
if (childLabel) {
return childLabel;
}
}
}
return '';
}
/** 所属行业:数字 id 走行业树,已是文案则直接展示 */
export function resolveIndustryLabel(
tree: any[] | undefined,
value?: string | number | null,
): string {
const str = value == null ? '' : String(value).trim();
if (!str) return '';
if (/^\d+$/.test(str)) {
return findTreeLabelById(tree, str) || str;
}
return str;
}
/** @deprecated 使用 findTreeLabelById */
export const findIndustryLabelInTree = findTreeLabelById;