|
|
@@ -18,7 +18,7 @@ For commercial licensing, please contact support@quantumnous.com
|
|
|
*/
|
|
|
|
|
|
import React from 'react';
|
|
|
-import { Modal } from '@douyinfe/semi-ui';
|
|
|
+import { Modal, Badge } from '@douyinfe/semi-ui';
|
|
|
import { renderQuota, renderNumber } from '../../../../helpers';
|
|
|
|
|
|
const UserInfoModal = ({
|
|
|
@@ -27,28 +27,130 @@ const UserInfoModal = ({
|
|
|
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={true}
|
|
|
+ centered
|
|
|
+ closable
|
|
|
+ maskClosable
|
|
|
+ width={600}
|
|
|
>
|
|
|
{userInfoData && (
|
|
|
- <div style={{ padding: 12 }}>
|
|
|
- <p>
|
|
|
- {t('用户名')}: {userInfoData.username}
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- {t('余额')}: {renderQuota(userInfoData.quota)}
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- {t('已用额度')}:{renderQuota(userInfoData.used_quota)}
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- {t('请求次数')}:{renderNumber(userInfoData.request_count)}
|
|
|
- </p>
|
|
|
+ <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>
|