import { Typography } from 'antd';
import Link from 'antd/lib/typography/Link';
import _ from 'lodash';
import type { CSSProperties } from 'react';
import { useIntl } from 'umi';
import UserWrap from './userWrap';
const styles: Record<'span', CSSProperties> = {
span: { color: 'red' },
};
const formatAccount = (text?: string, bracket: 'zh' | 'en' = 'zh') => {
if (_.isEmpty(text)) return '';
if (bracket === 'en') {
return `(${text})`;
}
// zh
return `(${text})`;
};
export interface UserType {
id?: number;
account?: string;
userName?: string;
nameZh?: string;
cnName?: string;
name?: string;
state?: number | string;
}
export interface UserLinkProps {
user?: UserType;
isDisabled?: boolean;
showDetail?: boolean;
userWrapStyle?: CSSProperties;
bracket?: 'zh' | 'en';
}
const UserLink = (props: UserLinkProps) => {
const { user, isDisabled, showDetail = true, userWrapStyle, bracket = 'en' } = props;
const { id: userId, account, userName, nameZh, cnName, name, state } = user || {};
const { formatMessage } = useIntl();
const effective = Boolean(account || userName || nameZh || cnName || name);
if (!effective) return <>>; // 无效用户不渲染
const vanIdc = document.documentElement.dataset.vanIdc || 'cn';
// 中文名
const yxNameZh = nameZh || cnName || name || '';
// 英文名
const yxNameEn = formatAccount(account || userName, bracket);
const ele = (
<>
{yxNameZh}
{yxNameEn}
{state === 0 && (
{bracket === 'en' && <> >}
{formatMessage({ id: 'base.common.user.state.dimission', defaultMessage: '离职' })}
)}
>
);
if (vanIdc === 'cn' && showDetail)
return (
{ele}
);
return (
{ele}
);
};
export default UserLink;