diff --git a/it0-web-admin/src/app/(admin)/my-org/page.tsx b/it0-web-admin/src/app/(admin)/my-org/page.tsx index d667c37..a6fc0ff 100644 --- a/it0-web-admin/src/app/(admin)/my-org/page.tsx +++ b/it0-web-admin/src/app/(admin)/my-org/page.tsx @@ -41,7 +41,8 @@ const ROLE_LABELS: Record = { export default function MyOrgPage() { const queryClient = useQueryClient(); - const [inviteEmail, setInviteEmail] = useState(''); + const [inviteMethod, setInviteMethod] = useState<'email' | 'phone'>('email'); + const [inviteContact, setInviteContact] = useState(''); const [inviteRole, setInviteRole] = useState('viewer'); const [inviteLink, setInviteLink] = useState(null); const [linkCopied, setLinkCopied] = useState(false); @@ -66,13 +67,13 @@ export default function MyOrgPage() { }, []); const inviteMutation = useMutation({ - mutationFn: (body: { email: string; role: string }) => + mutationFn: (body: { email?: string; phone?: string; role: string }) => apiClient('/api/v1/auth/my-org/invite', { method: 'POST', body }), onSuccess: (invite) => { queryClient.invalidateQueries({ queryKey: ['my-org', 'invites'] }); const link = `${window.location.origin}/invite/${invite.token}`; setInviteLink(link); - setInviteEmail(''); + setInviteContact(''); setInviteError(null); }, onError: (err: Error) => { @@ -81,8 +82,11 @@ export default function MyOrgPage() { }); const handleInvite = () => { - if (!inviteEmail.trim()) { setInviteError('请填写邮箱'); return; } - inviteMutation.mutate({ email: inviteEmail.trim(), role: inviteRole }); + if (!inviteContact.trim()) { setInviteError(inviteMethod === 'email' ? '请填写邮箱' : '请填写手机号'); return; } + const body = inviteMethod === 'email' + ? { email: inviteContact.trim(), role: inviteRole } + : { phone: inviteContact.trim(), role: inviteRole }; + inviteMutation.mutate(body); }; const copyLink = () => { @@ -162,12 +166,25 @@ export default function MyOrgPage() { {/* Invite form */}

邀请成员

+ {/* Email / Phone toggle */} +
+ + +
setInviteEmail(e.target.value)} - placeholder="输入邮箱地址" + type={inviteMethod === 'email' ? 'email' : 'tel'} + value={inviteContact} + onChange={(e) => setInviteContact(e.target.value)} + placeholder={inviteMethod === 'email' ? '输入邮箱地址' : '输入手机号'} className="flex-1 px-3 py-2 bg-input border rounded-md text-sm" />