刘光辉
7 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { validateTypeConfig } from './field-types';
import { buildTag } from './tags';
import type { FieldDefinition, FieldDefinitionInput, FieldDefinitionValidationField, ValidationResult } from './types';
 
export function createFieldDefinition(input: FieldDefinitionInput): ValidationResult<FieldDefinition, FieldDefinitionValidationField> {
  const normalizeId = (value: string) => value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, '_').replace(/^_+|_+$/g, '');
  const fieldCode = normalizeId(input.fieldCode);
  const alias = input.alias.trim();
 
  if (!fieldCode) {
    return { ok: false, field: 'field-code', message: '请输入有效的字段编码' };
  }
 
  if (!alias) {
    return { ok: false, field: 'field-alias', message: '请输入字段名称' };
  }
 
  const typeResult = validateTypeConfig(input.typeConfig);
 
  if (!typeResult.ok) {
    return typeResult;
  }
 
  const typeConfig = typeResult.value;
 
  return {
    ok: true,
    value: {
      fieldCode,
      alias,
      tag: buildTag(fieldCode),
      color: { R: 23, G: 109, B: 92 },
      ...typeConfig,
      placeholder: typeConfig.placeholder || alias,
    },
  };
}