| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | 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; |
| |
|