import { useEffect, useState } from 'react'; import { Info } from 'lucide-react'; import { adminApi, type ApplicationReportField } from '@/api/adminApi'; import { Button, Input, Modal, Textarea } from '@/components/ui'; import { formatDateTime } from '@/utils/dateTime'; import { DynamicReportFields } from './SignatureMaterialFields'; import { hasMissingRequiredReportValue } from './signature.helpers'; import type { DrainageInfo, UploadedFileRef } from './signature.types'; export function DrainageFormModal({ applicationId, item, onClose, onSubmit }: { applicationId?: string | null; item?: DrainageInfo; onClose: () => void; onSubmit: (item: DrainageInfo) => void }) { const [reportFields, setReportFields] = useState([]); const [form, setForm] = useState(() => item ?? { id: `drain-${Date.now()}`, siteName: '', url: '', field1File: null, field2: '', field3: '', field4: '', field5: '', field6: '', field7File: null, field8: '', field9: '', field10: '', mobile: 'filing', unicom: 'filing', telecom: 'filing', submittedAt: formatDateTime(new Date()), remark: '', reportValues: {}, }); useEffect(() => { const request = applicationId ? adminApi.listApplicationReportFields(applicationId, 'drainage') : adminApi.listCommonApplicationReportFields('drainage'); request.then(setReportFields).catch(() => setReportFields([])); }, [applicationId]); function update(key: Key, value: DrainageInfo[Key]) { setForm((current) => ({ ...current, [key]: value })); } function updateReportValue(code: string, value: string | UploadedFileRef | null) { setForm((current) => ({ ...current, reportValues: { ...current.reportValues, [code]: value } })); } return ( )} onClose={onClose} open size="xl" title={item ? '编辑引流信息' : '添加引流信息'} >

基本信息

update('url', event.target.value)} placeholder="请输入引流url或号码" required value={form.url} />
  1. 本页面中所填的信息需与短信内容应用所包含的网站或服务保持一致;
  2. 图片仅支持 PNG、JPG 或 JPEG 格式的正版文件,且大小不超过 3M;
  3. 文件格式支持 PDF 格式或者图片,且大小不超过 10M。