# 字段类型

字段类型背后代表了一段默认配置,当你配置了type时,你可以省略它代表的这部分默认配置

当没有字段类型时,你需要写如下这一大段字段配置

columns:[
    {
      title:'状态',
      key:'status',
      dict:{url:'/dict/status'},
      search:{
        compnent:{  //查询 使用选择框组件,并且是可以清除的
          name:'dict-select',
          props:{
            clearable:true
          }
        }
      },
      form:{  //添加和编辑表单 使用选择框组件
        compnent:{
          name:'dict-select'
        }
      },
      component:{ //单元格 使用value格式化组件,展示为tag
        name:'values-format'
      }
    }
]
    

有了字段类型,你可以使用字段类型简写上面的配置

columns:[
    {
      title:'状态',
      key:'status',
      dict:{url:'/dict/status'},
      type:'select'
    }
]

TIP

你可以通过字段类型列表查看字段类型包含了哪些具体配置

# 配置生成过程

# 1.‘select’类型的默认配置

{  
    select : {
        search: { component: { props: { clearable: true } } },
        form: { component: { name: 'dict-select', props: {} } },
        component: { name: 'values-format', props: {} }
    }
}

# 2.用户的字段配置

本示例中用户自定义设置select为多选

export const crudOptions = {
  columns: [ 
    {
      name: '城市',
      key: 'city',
      type: 'select' ,//字段类型
      form:{ component:{ props: {multiple:true} } }, //用户自定义配置
      dict: { 
        data:[  //select字段类型需要配置数据字典
          {value:'sz',label:'深圳'},
          {value:'bj',label:'北京'} 
        ] 
      } 
    }
  ]
}

# 3.运行时合并配置

运行时,将会根据type生成该类型定义的默认配置,用户自定义配置会覆盖默认配置
其中dict配置会自动复制到form.component以及component下

export const crudOptions = {
  columns: [ 
    {
      name: '城市',
      key: 'city',
      type: 'select',//字段类型
      //以下是根据type生成的默认配置
      form: { // form中的配置将会被复制到addTemplate、editTemplate以及searchOptions中
        component: { //添加和修改表单组件的配置
          name: 'dict-select', //form表单中使用的组件名
          dict: {...}, 
          props: { multiple:true } //此处为用户自定义的配置,会覆盖默认配置
        } 
      },
      component: { //行显示组件配置
        name: 'values-format', //列表行中使用的组件名
        dict: {...},
        props: {}
      }
    }
  ]
}

# 4.转化成d2-crud的最终配置

d2-crud有哪些配置项,请参考d2-crud-x文档:http://d2-crud-plus.docmirror.cn/d2-crud-plus/d2-crud-x/ (opens new window)

this.crud= {
  columns: [...],
  addRules:{...},
  addTemplate:{...},
  editRules:{...},
  editTemplate:{...},
  formOptions:{...},
  list:[],
  options:{...},
  rowHandle:{...},
  searchOptions:{columns:[...]}
}