'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 { 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: platform } = useQuery({ queryKey: ['getSmsPlatform'], queryFn: async () => { const { data } = await getSmsPlatform(); return data.data?.list; }, }); 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', 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')}

{t('usernameTip')}

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

{t('passwordTip')}

updateConfig('sms_secret', value)} disabled={isFetching} type='password' placeholder={t('placeholders.password')} />

{t('apiUrlTip')}

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

{t('foreignApiUrlTip')}

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

{t('regionTip')}

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

{t('templateCodeTip')}

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

{t('templateParamTip')}

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

{t('templateTip', { code: '{{.Code}}', })}