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
| // 表单校验规则由 schema2code 生成,不建议直接修改校验规则,而建议通过 schema2code 生成, 详情: https://uniapp.dcloud.net.cn/uniCloud/schema
|
|
| const validator = {
| "content": {
| "rules": [
| {
| "required": true
| },
| {
| "format": "string"
| }
| ],
| "label": "留言内容/回复内容"
| },
| "imgs": {
| "rules": [
| {
| "format": "array"
| },
| {
| "arrayType": "file"
| },
| {
| "maxLength": 6
| }
| ],
| "label": "图片列表"
| },
| "contact": {
| "rules": [
| {
| "format": "string"
| }
| ],
| "label": "联系人"
| },
| "mobile": {
| "rules": [
| {
| "format": "string"
| },
| {
| "pattern": "^\\+?[0-9-]{3,20}$"
| }
| ],
| "label": "联系电话"
| }
| }
|
| const enumConverter = {}
|
| function filterToWhere(filter, command) {
| let where = {}
| for (let field in filter) {
| let { type, value } = filter[field]
| switch (type) {
| case "search":
| if (typeof value === 'string' && value.length) {
| where[field] = new RegExp(value)
| }
| break;
| case "select":
| if (value.length) {
| let selectValue = []
| for (let s of value) {
| selectValue.push(command.eq(s))
| }
| where[field] = command.or(selectValue)
| }
| break;
| case "range":
| if (value.length) {
| let gt = value[0]
| let lt = value[1]
| where[field] = command.and([command.gte(gt), command.lte(lt)])
| }
| break;
| case "date":
| if (value.length) {
| let [s, e] = value
| let startDate = new Date(s)
| let endDate = new Date(e)
| where[field] = command.and([command.gte(startDate), command.lte(endDate)])
| }
| break;
| case "timestamp":
| if (value.length) {
| let [startDate, endDate] = value
| where[field] = command.and([command.gte(startDate), command.lte(endDate)])
| }
| break;
| }
| }
| return where
| }
|
| export { validator, enumConverter, filterToWhere }
|
|