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