feat: unify signature channel reporting status

This commit is contained in:
hectorzhao
2026-07-12 20:38:20 +08:00
parent 3f3ff8a793
commit eab059583f
16 changed files with 439 additions and 110 deletions
+8 -7
View File
@@ -11,16 +11,17 @@ type DrainageField = DictionaryItem & {
description?: string | null;
};
type ReportFieldType = 'string' | 'image' | 'file';
const typeOptions = [
{ label: '全部类型', value: 'all' },
{ label: '字符串', value: 'string' },
{ label: '整数', value: 'number' },
{ label: '图片', value: 'image' },
{ label: '文件', value: 'file' },
{ label: '网址', value: 'url' },
{ label: '电话', value: 'phone' },
{ label: '日期', value: 'date' },
];
const typeLabels: Record<string, string> = { string: '字符串', image: '图片', file: '文件' };
export function AdminDrainageFieldsPage() {
const [fields, setFields] = useState<DrainageField[]>([]);
const [keyword, setKeyword] = useState('');
@@ -30,7 +31,7 @@ export function AdminDrainageFieldsPage() {
const [creating, setCreating] = useState(false);
const [code, setCode] = useState('');
const [name, setName] = useState('');
const [fieldType, setFieldType] = useState('string');
const [fieldType, setFieldType] = useState<ReportFieldType>('string');
const [description, setDescription] = useState('');
const [error, setError] = useState('');
@@ -72,7 +73,7 @@ export function AdminDrainageFieldsPage() {
const columns = useMemo<Array<TableColumn<DrainageField>>>(() => [
{ key: 'code', title: '字段代码', width: '160px', render: (record) => <strong>{record.code}</strong> },
{ key: 'name', title: '字段名称', width: '190px', render: (record) => record.name ?? '-' },
{ key: 'type', title: '字段类型', width: '160px', render: (record) => <span className="admin-drainage-type">{record.fieldType}</span> },
{ key: 'type', title: '字段类型', width: '160px', render: (record) => <span className="admin-drainage-type">{typeLabels[record.fieldType ?? ''] ?? record.fieldType}</span> },
{ key: 'description', title: '描述', render: (record) => record.description ?? '-' },
{ key: 'required', title: '是否必填', width: '120px', render: (record) => <Tag tone={record.required ? 'warning' : 'info'}>{record.required ? '必填' : '选填'}</Tag> },
], []);
@@ -117,7 +118,7 @@ export function AdminDrainageFieldsPage() {
<Input label="字段名称" onChange={(event) => setName(event.target.value)} value={name} />
<Select
label="字段类型"
onChange={(event) => setFieldType(event.target.value)}
onChange={(event) => setFieldType(event.target.value as ReportFieldType)}
options={typeOptions.filter((option) => option.value !== 'all')}
value={fieldType}
/>