|
@@ -3,21 +3,18 @@ import { Button } from '@/client/components/ui/button';
|
|
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/client/components/ui/card';
|
|
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/client/components/ui/card';
|
|
|
import { Avatar, AvatarFallback, AvatarImage } from '@/client/components/ui/avatar';
|
|
import { Avatar, AvatarFallback, AvatarImage } from '@/client/components/ui/avatar';
|
|
|
import { Badge } from '@/client/components/ui/badge';
|
|
import { Badge } from '@/client/components/ui/badge';
|
|
|
-import { Separator } from '@/client/components/ui/separator';
|
|
|
|
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/client/components/ui/tabs';
|
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/client/components/ui/tabs';
|
|
|
import { Input } from '@/client/components/ui/input';
|
|
import { Input } from '@/client/components/ui/input';
|
|
|
import { Label } from '@/client/components/ui/label';
|
|
import { Label } from '@/client/components/ui/label';
|
|
|
-import { Switch } from '@/client/components/ui/switch';
|
|
|
|
|
import { Alert, AlertDescription } from '@/client/components/ui/alert';
|
|
import { Alert, AlertDescription } from '@/client/components/ui/alert';
|
|
|
import {
|
|
import {
|
|
|
User,
|
|
User,
|
|
|
Key,
|
|
Key,
|
|
|
CreditCard,
|
|
CreditCard,
|
|
|
- Clock,
|
|
|
|
|
CheckCircle,
|
|
CheckCircle,
|
|
|
AlertCircle,
|
|
AlertCircle,
|
|
|
- Eye,
|
|
|
|
|
- EyeOff
|
|
|
|
|
|
|
+ EyeOff,
|
|
|
|
|
+ Eye
|
|
|
} from 'lucide-react';
|
|
} from 'lucide-react';
|
|
|
import { format } from 'date-fns';
|
|
import { format } from 'date-fns';
|
|
|
import { zhCN } from 'date-fns/locale';
|
|
import { zhCN } from 'date-fns/locale';
|
|
@@ -85,18 +82,6 @@ export default function UserInfoModal({ isOpen, onClose }: UserInfoModalProps) {
|
|
|
navigate('/');
|
|
navigate('/');
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- const getStatusBadge = (status: string) => {
|
|
|
|
|
- switch (status) {
|
|
|
|
|
- case 'completed':
|
|
|
|
|
- return <Badge className="bg-green-100 text-green-800">已完成</Badge>;
|
|
|
|
|
- case 'pending':
|
|
|
|
|
- return <Badge className="bg-yellow-100 text-yellow-800">处理中</Badge>;
|
|
|
|
|
- case 'failed':
|
|
|
|
|
- return <Badge className="bg-red-100 text-red-800">失败</Badge>;
|
|
|
|
|
- default:
|
|
|
|
|
- return <Badge>{status}</Badge>;
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
<div className="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50">
|
|
<div className="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50">
|
|
@@ -129,8 +114,8 @@ export default function UserInfoModal({ isOpen, onClose }: UserInfoModalProps) {
|
|
|
<div className="space-y-6">
|
|
<div className="space-y-6">
|
|
|
<div className="flex items-center space-x-4">
|
|
<div className="flex items-center space-x-4">
|
|
|
<Avatar className="h-20 w-20">
|
|
<Avatar className="h-20 w-20">
|
|
|
- <AvatarImage
|
|
|
|
|
- src={user.avatar || `https://avatar.vercel.sh/${user.username}`}
|
|
|
|
|
|
|
+ <AvatarImage
|
|
|
|
|
+ src={user.avatarFile?.fullUrl || `https://avatar.vercel.sh/${user.username}`}
|
|
|
alt={user.nickname || user.username}
|
|
alt={user.nickname || user.username}
|
|
|
/>
|
|
/>
|
|
|
<AvatarFallback className="text-2xl">
|
|
<AvatarFallback className="text-2xl">
|