-
Notifications
You must be signed in to change notification settings - Fork 444
/
testAction.dataSchema.js
121 lines (120 loc) · 3.46 KB
/
testAction.dataSchema.js
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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) => <a href={`http://jxy.me?id=${record.id}`} target="_blank">{'跳转url'}</a>,
},
{
// react-router的Link组件
render: (record) => <Link to={`/index/option1?name=${record.id}`}>{'跳转其他组件'}</Link>,
},
{
// 这样写似乎和Link组件是一样的效果
render: (record) => <a href={`/#/index/option1?name=${record.id}`}>{'跳转2'}</a>,
},
{
type: 'newLine',
},
{
type: 'newLine',
},
// 如果有一些特殊的需求, 或者想要更好的交互, 可以用自定义组件实现对单条记录的更新
// 一个常见的情况是DB中某个varchar字段存储的是json, 如果用textarea去编辑json对用户很不友好, 也容易出错, 这时候就可以用自定义组件了
// 但自定义的组件必须遵守一些约定, 有点像java的接口, 参考我的例子
{
name: '自定义组件-更新gpa',
type: 'component',
component: UpdateGPA1, // 要渲染哪个组件, 这个组件会被渲染到modal中
},
{
name: '自定义组件2号',
type: 'component',
component: UpdateGPA2,
},
],
},
];