'use client'; import { ProTable, ProTableActions } from '@/components/pro-table'; import { getSmsList } from '@/services/admin/sms'; import { getSmsConfig, getSmsPlatform, testSmsSend, updateSmsConfig, } from '@/services/admin/system'; import { useQuery } from '@tanstack/react-query'; import { Badge } from '@workspace/ui/components/badge'; import { Button } from '@workspace/ui/components/button'; import { Label } from '@workspace/ui/components/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@workspace/ui/components/select'; import { Switch } from '@workspace/ui/components/switch'; import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@workspace/ui/components/tabs'; import { Textarea } from '@workspace/ui/components/textarea'; import { AreaCodeSelect } from '@workspace/ui/custom-components/area-code-select'; import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; import { formatDate } from '@workspace/ui/utils'; import { useTranslations } from 'next-intl'; import Link from 'next/link'; import { useRef, useState } from 'react'; import { toast } from 'sonner'; export default function Page() { const t = useTranslations('phone'); const { data, refetch, isFetching } = useQuery({ queryKey: ['getSmsConfig'], queryFn: async () => { const { data } = await getSmsConfig(); return data.data; }, }); const { data: platforms } = useQuery({ queryKey: ['getSmsPlatform'], queryFn: async () => { const { data } = await getSmsPlatform(); return data.data?.list; }, }); const selectedPlatform = platforms?.find((platform) => platform.platform === data?.sms_platform); const { platform_url, platform_field_description: platformConfig } = selectedPlatform ?? {}; async function updateConfig(key: string, value: unknown) { if (data?.[key] === value) return; try { await updateSmsConfig({ ...data, [key]: value, } as API.SmsConfig); toast.success(t('updateSuccess')); refetch(); } catch (error) { /* empty */ } } const [params, setParams] = useState({ telephone: '', content: t('testSmsContent'), area_code: '1', }); return ( {t('settings')} {t('logs')}

{t('enableTip')}

updateConfig('sms_enabled', checked)} disabled={isFetching} />

{t('expireTimeTip')}

updateConfig('sms_expire_time', value)} suffix='S' disabled={isFetching} placeholder={t('placeholders.expireTime')} />

{t('intervalTip')}

updateConfig('sms_interval', value)} suffix='S' disabled={isFetching} placeholder={t('placeholders.interval')} />

{t('limitTip')}

updateConfig('sms_limit', value)} disabled={isFetching} placeholder={t('placeholders.limit')} />

{t('platformTip')}

{platform_url && ( )}

{t('platformConfigTip', { key: platformConfig?.sms_key })}

updateConfig('sms_key', value)} disabled={isFetching} placeholder={t('platformConfigTip', { key: platformConfig?.sms_key })} />

{t('platformConfigTip', { key: platformConfig?.sms_secret })}

updateConfig('sms_secret', value)} disabled={isFetching} type='password' placeholder={t('platformConfigTip', { key: platformConfig?.sms_secret })} />
{platformConfig?.sms_template_code && (

{t('platformConfigTip', { key: platformConfig?.sms_template_code })}

updateConfig('sms_template_code', value)} disabled={isFetching} placeholder={t('platformConfigTip', { key: platformConfig?.sms_template_code })} />
)} {platformConfig?.sms_template_param && (

{t('platformConfigTip', { key: platformConfig?.sms_template_param })}

updateConfig('sms_template_param', value)} disabled={isFetching} placeholder={t('platformConfigTip', { key: platformConfig?.sms_template_param, })} />
)}

{t('templateTip', { code: platformConfig?.sms_template })}