fix: validate signatures and restore report metrics

This commit is contained in:
hectorzhao
2026-07-27 20:51:14 +08:00
parent 04a497c791
commit 94aeacd3a2
19 changed files with 438 additions and 42 deletions
@@ -4,7 +4,7 @@ import { adminApi, type ApplicationReportField, type ClientSmsApplication, type
import { Breadcrumb, Button, DeleteRiskAction, FileActions, Input, Modal, Pagination, Select, Tabs, Tag, Textarea } from '@/components/ui';
import { displayFileName } from '@/utils/fileName';
import { formatDateTime } from '@/utils/dateTime';
import { isCompleteSmsSignature } from '@/utils/smsSignature';
import { getSmsSignatureValidationError, hasForbiddenSmsSignatureCharacter, isCompleteSmsSignature, SMS_SIGNATURE_CHARACTER_ERROR } from '@/utils/smsSignature';
type CarrierStatus = 'approved' | 'pending' | 'rejected' | 'filing';
@@ -310,6 +310,7 @@ function SignatureFormModal({
reportValues: payload?.signatureReportValues ?? {},
});
const [reportFields, setReportFields] = useState<ApplicationReportField[]>([]);
const [nameInputError, setNameInputError] = useState('');
const tenantApplications = applications.filter((application) => application.tenantId === form.tenantId && application.status !== 'deleted');
useEffect(() => {
@@ -327,12 +328,15 @@ function SignatureFormModal({
setForm((current) => ({ ...current, reportValues: { ...current.reportValues, [code]: value } }));
}
const signatureNameValid = !nameInputError && isCompleteSmsSignature(form.name);
const signatureNameError = nameInputError || (form.name ? getSmsSignatureValidationError(form.name) : undefined);
return (
<Modal
footer={(
<>
<Button onClick={onClose} variant="ghost"></Button>
<Button disabled={!form.tenantId || !isCompleteSmsSignature(form.name) || hasMissingRequiredReportValue(reportFields, form.reportValues)} onClick={() => onSubmit(form)}></Button>
<Button disabled={!form.tenantId || !signatureNameValid || hasMissingRequiredReportValue(reportFields, form.reportValues)} onClick={() => onSubmit(form)}></Button>
</>
)}
onClose={onClose}
@@ -374,10 +378,18 @@ function SignatureFormModal({
value={form.applicationId}
/>
<Input
error={form.name.trim() && !isCompleteSmsSignature(form.name) ? '必须填写完整中文黑括号签名,例如:【某某科技】' : undefined}
hint="新增和编辑时必须保留完整的【】"
error={signatureNameError}
hint="新增和编辑时必须保留完整的【】,且不能包含空格或不可见字符"
label="短信签名"
onChange={(event) => update('name', event.target.value)}
onChange={(event) => {
const value = event.target.value;
if (hasForbiddenSmsSignatureCharacter(value)) {
setNameInputError(SMS_SIGNATURE_CHARACTER_ERROR);
return;
}
setNameInputError('');
update('name', value);
}}
placeholder="请输入完整签名,例如:【某某科技】"
required
value={form.name}