Appearance
JPwise 字段映射规则
智能字段识别和组件选择规则
基于字段名称的模式匹配
javascript
const fieldPatterns = {
// 用户相关
/.*USER.*|.*CREATOR.*|.*MODIFIER.*|.*OPERATOR.*/: 'userSelect',
/.*PERSON.*|.*STAFF.*|.*EMPLOYEE.*/: 'userSelect',
// 部门相关
/.*DEPT.*|.*DEPARTMENT.*|.*ORGANIZE.*/: 'depSelect',
/.*BRANCH.*|.*DIVISION.*/: 'depSelect',
// 时间相关
/.*DATE.*|.*TIME.*/: 'date',
/.*STARTDATE.*|.*ENDDATE.*/: 'date',
// 金额相关
/.*AMOUNT.*|.*MONEY.*|.*PRICE.*|.*COST.*/: 'JPWInput',
/.*FEE.*|.*SALARY.*|.*PAYMENT.*/: 'JPWInput',
// 文件相关
/.*FILE.*|.*ATTACHMENT.*|.*UPLOAD.*/: 'uploadFz',
/.*IMAGE.*|.*PHOTO.*|.*PIC.*/: 'uploadImg',
// 状态相关
/.*STATUS.*|.*STATE.*|.*MARK.*/: 'select',
/.*TYPE.*|.*CATEGORY.*/: 'select',
// 文本相关
/.*REMARK.*|.*NOTE.*|.*COMMENT.*|.*DESC.*/: 'textarea',
/.*CONTENT.*|.*DETAIL.*/: 'textarea',
// 编号相关
/.*CODE.*|.*NO.*|.*NUMBER.*/: 'comInput',
/.*ID$/: 'hidden', // ID字段隐藏
// 富文本
/.*HTML.*|.*RICH.*|.*EDITOR.*/: 'editor'
}
基于数据类型的智能选择
javascript
const dataTypeMapping = {
'varchar': {
default: 'comInput',
rules: [
{ condition: 'length > 500', component: 'textarea' },
{ condition: 'contains("USER")', component: 'userSelect' },
{ condition: 'contains("DEPT")', component: 'depSelect' },
{ condition: 'contains("CODE")', component: 'billRule' }
]
},
'text': 'textarea',
'longtext': 'editor',
'decimal': 'JPWInput',
'int': 'numInput',
'datetime': 'date',
'date': 'date',
'time': 'time',
'char(1)': 'switch'
}
字段映射优先级
- 字段名称模式 (最高优先级)
- 业务场景上下文
- 数据类型
- 字段长度/精度
- 默认映射 (最低优先级)
特殊字段处理
主键字段
- 所有ID字段自动隐藏
- 不在表单中显示
- 自动生成19位雪花算法ID
系统字段
javascript
const systemFields = [
'CREATORTIME', 'CREATORUSER', 'CREATORUSERNAME',
'LASTMODIFYTIME', 'LASTMODIFYUSER', 'LASTMODIFYUSERNAME',
'ENABLEDMARK', 'DELETETIME', 'DELETEUSER', 'DELETEUSERNAME',
'SORTCODE', 'ORGANIZE'
]
流程字段
javascript
const flowFields = [
'FLOWPHASE', 'STEPNAME', 'FLOWTASKID', 'FLOWENDTIME'
]
必填字段判断规则
javascript
const requiredFieldRules = {
// 基于字段名称
patterns: [
/.*NAME.*/, // 名称类字段
/.*TITLE.*/, // 标题类字段
/.*CODE.*/ // 编码类字段
],
// 基于业务场景
scenarios: {
'financial': ['AMOUNT', 'CURRENCY', 'APPLICANT'],
'contract': ['PARTY_A', 'PARTY_B', 'AMOUNT', 'START_DATE'],
'hr': ['EMPLOYEE', 'DEPARTMENT', 'POSITION']
}
}
组件属性自动配置
placeholder 自动生成
javascript
const placeholderRules = {
'comInput': field => `请输入${field.fieldName}`,
'select': field => `请选择${field.fieldName}`,
'date': field => `请选择${field.fieldName}`,
'userSelect': field => `请选择${field.fieldName}`,
'depSelect': field => `请选择${field.fieldName}`
}
span 自动计算
javascript
const spanCalculation = {
'comInput': 8, // 普通输入框
'numInput': 8, // 数字输入框
'select': 8, // 下拉选择
'date': 8, // 日期选择
'userSelect': 8, // 用户选择
'depSelect': 8, // 部门选择
'textarea': 24, // 多行文本
'editor': 24, // 富文本
'uploadFz': 24, // 文件上传
'uploadImg': 24, // 图片上传
'table': 24 // 子表
}
验证规则自动生成
javascript
const validationRules = {
'email': /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
'phone': /^1[3-9]\d{9}$/,
'idCard': /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/,
'number': /^\d+(\.\d+)?$/
}