import React from 'react'; import {Link} from 'react-router'; import {UpdateGPA1, UpdateGPA2} from '../components/UpdateComponentDemo'; module.exports = [ { key: 'id', title: 'ID', dataType: 'int', primary: true, }, { key: 'name', title: '姓名', dataType: 'varchar', validator: [{type: 'string', max: 10, message: '最多10个字符'}], }, { key: 'touxiang', title: '头像', dataType: 'varchar', showType: 'image', width: 60, }, { key: 'desc', title: '描述', dataType: 'varchar', }, { key: 'score', title: '分数', dataType: 'int', max: 18, validator: [{required: true, message: '必填'}], }, { key: 'gpa', title: 'GPA', dataType: 'float', }, { key: 'birthday', title: '生日', dataType: 'datetime', }, // 定义针对单条记录的操作 // 常见的针对单条记录的自定义操作有哪些? 无非是更新和删除 // 注意, 如果没有定义主键, 是不允许更新和删除的 { // 这个key是我预先定义好的, 注意不要冲突 key: 'singleRecordActions', title: '我是自定义操作', // 列名 width: 300, // 宽度 actions: [ { name: '更新姓名', type: 'update', // 更新单条记录 keys: ['name'], // 允许更新哪些字段, 如果不设置keys, 就允许更所有字段 }, { name: '更新分数和GPA', type: 'update', keys: ['score', 'gpa'], // 弹出的modal中只会有这两个字段 }, { name: '更新生日', type: 'update', keys: ['birthday'], visible: (record) => record.id >= 1010, // 所有action都可以定义visible函数, 返回false则对这行记录不显示这个操作 }, { name: '更新头像', type: 'update', keys: ['touxiang'], }, { type: 'newLine', // 换行, 纯粹用于排版的, 更美观一点 }, { type: 'newLine', }, { name: '删除', type: 'delete', // 删除单条记录 }, { // 如果不是预定义的type(update/delete/newLine/component), 就检查是否有render函数 // 有render函数就直接执行 render: (record) => {'跳转url'}, }, { // react-router的Link组件 render: (record) => {'跳转其他组件'}, }, { // 这样写似乎和Link组件是一样的效果 render: (record) => {'跳转2'}, }, { type: 'newLine', }, { type: 'newLine', }, // 如果有一些特殊的需求, 或者想要更好的交互, 可以用自定义组件实现对单条记录的更新 // 一个常见的情况是DB中某个varchar字段存储的是json, 如果用textarea去编辑json对用户很不友好, 也容易出错, 这时候就可以用自定义组件了 // 但自定义的组件必须遵守一些约定, 有点像java的接口, 参考我的例子 { name: '自定义组件-更新gpa', type: 'component', component: UpdateGPA1, // 要渲染哪个组件, 这个组件会被渲染到modal中 }, { name: '自定义组件2号', type: 'component', component: UpdateGPA2, }, ], }, ];