|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import React from 'react'; |
|
|
import { Modal, Badge } from '@douyinfe/semi-ui'; |
|
|
import { renderQuota, renderNumber } from '../../../../helpers'; |
|
|
|
|
|
const UserInfoModal = ({ |
|
|
showUserInfo, |
|
|
setShowUserInfoModal, |
|
|
userInfoData, |
|
|
t, |
|
|
}) => { |
|
|
const infoItemStyle = { |
|
|
marginBottom: '16px', |
|
|
}; |
|
|
|
|
|
const labelStyle = { |
|
|
display: 'flex', |
|
|
alignItems: 'center', |
|
|
marginBottom: '2px', |
|
|
fontSize: '12px', |
|
|
color: 'var(--semi-color-text-2)', |
|
|
gap: '6px', |
|
|
}; |
|
|
|
|
|
const renderLabel = (text, type = 'tertiary') => ( |
|
|
<div style={labelStyle}> |
|
|
<Badge dot type={type} /> |
|
|
{text} |
|
|
</div> |
|
|
); |
|
|
|
|
|
const valueStyle = { |
|
|
fontSize: '14px', |
|
|
fontWeight: '600', |
|
|
color: 'var(--semi-color-text-0)', |
|
|
}; |
|
|
|
|
|
const rowStyle = { |
|
|
display: 'flex', |
|
|
justifyContent: 'space-between', |
|
|
marginBottom: '16px', |
|
|
gap: '20px', |
|
|
}; |
|
|
|
|
|
const colStyle = { |
|
|
flex: 1, |
|
|
minWidth: 0, |
|
|
}; |
|
|
|
|
|
return ( |
|
|
<Modal |
|
|
title={t('用户信息')} |
|
|
visible={showUserInfo} |
|
|
onCancel={() => setShowUserInfoModal(false)} |
|
|
footer={null} |
|
|
centered |
|
|
closable |
|
|
maskClosable |
|
|
width={600} |
|
|
> |
|
|
{userInfoData && ( |
|
|
<div style={{ padding: 20 }}> |
|
|
{/* 基本信息 */} |
|
|
<div style={rowStyle}> |
|
|
<div style={colStyle}> |
|
|
{renderLabel(t('用户名'), 'primary')} |
|
|
<div style={valueStyle}>{userInfoData.username}</div> |
|
|
</div> |
|
|
{userInfoData.display_name && ( |
|
|
<div style={colStyle}> |
|
|
{renderLabel(t('显示名称'), 'primary')} |
|
|
<div style={valueStyle}>{userInfoData.display_name}</div> |
|
|
</div> |
|
|
)} |
|
|
</div> |
|
|
|
|
|
{/* 余额信息 */} |
|
|
<div style={rowStyle}> |
|
|
<div style={colStyle}> |
|
|
{renderLabel(t('余额'), 'success')} |
|
|
<div style={valueStyle}>{renderQuota(userInfoData.quota)}</div> |
|
|
</div> |
|
|
<div style={colStyle}> |
|
|
{renderLabel(t('已用额度'), 'warning')} |
|
|
<div style={valueStyle}> |
|
|
{renderQuota(userInfoData.used_quota)} |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
{/* 统计信息 */} |
|
|
<div style={rowStyle}> |
|
|
<div style={colStyle}> |
|
|
{renderLabel(t('请求次数'), 'warning')} |
|
|
<div style={valueStyle}> |
|
|
{renderNumber(userInfoData.request_count)} |
|
|
</div> |
|
|
</div> |
|
|
{userInfoData.group && ( |
|
|
<div style={colStyle}> |
|
|
{renderLabel(t('用户组'), 'tertiary')} |
|
|
<div style={valueStyle}>{userInfoData.group}</div> |
|
|
</div> |
|
|
)} |
|
|
</div> |
|
|
|
|
|
{/* 邀请信息 */} |
|
|
{(userInfoData.aff_code || userInfoData.aff_count !== undefined) && ( |
|
|
<div style={rowStyle}> |
|
|
{userInfoData.aff_code && ( |
|
|
<div style={colStyle}> |
|
|
{renderLabel(t('邀请码'), 'tertiary')} |
|
|
<div style={valueStyle}>{userInfoData.aff_code}</div> |
|
|
</div> |
|
|
)} |
|
|
{userInfoData.aff_count !== undefined && ( |
|
|
<div style={colStyle}> |
|
|
{renderLabel(t('邀请人数'), 'tertiary')} |
|
|
<div style={valueStyle}> |
|
|
{renderNumber(userInfoData.aff_count)} |
|
|
</div> |
|
|
</div> |
|
|
)} |
|
|
</div> |
|
|
)} |
|
|
|
|
|
{/* 邀请获得额度 */} |
|
|
{userInfoData.aff_quota !== undefined && |
|
|
userInfoData.aff_quota > 0 && ( |
|
|
<div style={infoItemStyle}> |
|
|
{renderLabel(t('邀请获得额度'), 'success')} |
|
|
<div style={valueStyle}> |
|
|
{renderQuota(userInfoData.aff_quota)} |
|
|
</div> |
|
|
</div> |
|
|
)} |
|
|
|
|
|
{/* 备注 */} |
|
|
{userInfoData.remark && ( |
|
|
<div style={{ marginBottom: 0 }}> |
|
|
{renderLabel(t('备注'), 'tertiary')} |
|
|
<div |
|
|
style={{ |
|
|
...valueStyle, |
|
|
wordBreak: 'break-all', |
|
|
lineHeight: '1.4', |
|
|
}} |
|
|
> |
|
|
{userInfoData.remark} |
|
|
</div> |
|
|
</div> |
|
|
)} |
|
|
</div> |
|
|
)} |
|
|
</Modal> |
|
|
); |
|
|
}; |
|
|
|
|
|
export default UserInfoModal; |
|
|
|