starfish-form-custom 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +2 -0
  2. package/auto-imports.d.ts +9 -0
  3. package/components.d.ts +68 -0
  4. package/dist/formAction-28d86b6a.mjs +446 -0
  5. package/dist/index-04830c0b.mjs +126 -0
  6. package/dist/index-eab8ef70.mjs +519 -0
  7. package/dist/index-f7ea052c.mjs +241 -0
  8. package/dist/main-96327b2e.mjs +5051 -0
  9. package/dist/starfish-form-a18a5409.mjs +328 -0
  10. package/dist/starfish-form.mjs +36 -0
  11. package/dist/style.css +377 -0
  12. package/dist/types/form/src/common/Loading.vue.d.ts +3 -0
  13. package/dist/types/form/src/env.d.ts +15 -0
  14. package/dist/types/form/src/main.d.ts +43 -0
  15. package/dist/types/form/src/starfish-form.vue.d.ts +40 -0
  16. package/dist/types/form/src/utils/customHooks.d.ts +2 -0
  17. package/dist/types/form/src/utils/fieldConfig.d.ts +78 -0
  18. package/dist/types/form/src/utils/fieldProps.d.ts +43 -0
  19. package/dist/types/starfish-form.d.ts +3 -0
  20. package/package.json +42 -0
  21. package/src/common/KeyValueConfig.vue +145 -0
  22. package/src/common/KeyValueConfigMult.vue +139 -0
  23. package/src/common/Loading.vue +14 -0
  24. package/src/common/action.vue +76 -0
  25. package/src/common/formAction.vue +298 -0
  26. package/src/common/listConfig.vue +45 -0
  27. package/src/common/panel.vue +61 -0
  28. package/src/common/radiogroup.vue +31 -0
  29. package/src/components/CheckBox/index.vue +42 -0
  30. package/src/components/ColorSelect/index.vue +49 -0
  31. package/src/components/Date/index.vue +39 -0
  32. package/src/components/DateTime/index.vue +39 -0
  33. package/src/components/InputNumber/index.vue +48 -0
  34. package/src/components/JsonEditor/index.vue +167 -0
  35. package/src/components/Radio/index.vue +42 -0
  36. package/src/components/RichText/index.vue +60 -0
  37. package/src/components/Rule/index.vue +365 -0
  38. package/src/components/Rule/ruleform.json +315 -0
  39. package/src/components/Rule/rules.js +91 -0
  40. package/src/components/Selected/index.vue +50 -0
  41. package/src/components/Selecteds/index.vue +50 -0
  42. package/src/components/ShowRule/index.vue +50 -0
  43. package/src/components/Slider/index.vue +38 -0
  44. package/src/components/Switch/index.vue +61 -0
  45. package/src/components/Text/index.vue +48 -0
  46. package/src/components/TextArea/index.vue +49 -0
  47. package/src/components/Time/index.vue +36 -0
  48. package/src/env.d.ts +15 -0
  49. package/src/layout/Divider.vue +30 -0
  50. package/src/layout/Info.vue +69 -0
  51. package/src/layout/Tabs.vue +75 -0
  52. package/src/layout/collapse.vue +78 -0
  53. package/src/layout/grid.vue +88 -0
  54. package/src/layout/table.vue +80 -0
  55. package/src/main.ts +62 -0
  56. package/src/starfish-form.vue +265 -0
  57. package/src/styles/action.scss +25 -0
  58. package/src/styles/collapse.scss +15 -0
  59. package/src/styles/custom-cpm.scss +5 -0
  60. package/src/styles/divider.scss +16 -0
  61. package/src/styles/form-action.scss +92 -0
  62. package/src/styles/formedit.scss +69 -0
  63. package/src/styles/grid.scss +12 -0
  64. package/src/styles/index.scss +12 -0
  65. package/src/styles/keyvalueConfig.scss +56 -0
  66. package/src/styles/rule.scss +17 -0
  67. package/src/styles/showrule.scss +5 -0
  68. package/src/styles/table.scss +19 -0
  69. package/src/styles/tabs.scss +5 -0
  70. package/src/utils/customHooks.ts +22 -0
  71. package/src/utils/fieldConfig.ts +961 -0
  72. package/src/utils/fieldProps.ts +50 -0
  73. package/stats.html +4949 -0
@@ -0,0 +1,365 @@
1
+ <template>
2
+ <div
3
+ class="starfish-formitem starfish-formitem-rule"
4
+ :class="{ formCover: drag, 'starfish-vertical': labelalign != 'top' }"
5
+ >
6
+ <div
7
+ class="label"
8
+ :class="'label_' + labelalign"
9
+ :style="{ width: labelWidth + 'px' }"
10
+ >
11
+ <label>{{ item.data.label }}</label>
12
+ <span v-if="item.data.required" class="weight">*</span>
13
+ <el-tooltip
14
+ v-if="item.data.tip"
15
+ class="item"
16
+ effect="dark"
17
+ :content="item.data.tip"
18
+ placement="bottom-start"
19
+ >
20
+ <span class="tip iconfontui icon-tishi"></span>
21
+ </el-tooltip>
22
+ </div>
23
+ <div
24
+ class="control"
25
+ :style="{ marginLeft: labelalign != 'top' ? labelWidth + 'px' : '' }"
26
+ >
27
+ <el-collapse
28
+ v-if="
29
+ Array.isArray(data[item.data.fieldName]) &&
30
+ data[item.data.fieldName].length > 0
31
+ "
32
+ >
33
+ <el-collapse-item
34
+ :title="itemList.title"
35
+ :name="itemList.title"
36
+ v-for="(itemList, index) in data[item.data.fieldName]"
37
+ :key="index"
38
+ >
39
+ <div class="collapse_enums" v-if="itemList.type == 'enum'">
40
+ <el-select
41
+ v-model="itemList.value"
42
+ placeholder="请选择"
43
+ style="width: 100%"
44
+ size="mini"
45
+ >
46
+ <el-option
47
+ v-for="items in ruleList"
48
+ :key="items.value"
49
+ :label="items.label"
50
+ :value="items.validator"
51
+ >
52
+ </el-option>
53
+ </el-select>
54
+ </div>
55
+ <div v-if="itemList.type == 'func'">
56
+ <el-button
57
+ type="primary"
58
+ @click="handleFuncEdit(itemList)"
59
+ size="mini"
60
+ >函数编辑</el-button
61
+ >
62
+ </div>
63
+ <div v-if="itemList.type == 'high'">
64
+ <el-button
65
+ type="primary"
66
+ @click="handleFormEdit(itemList)"
67
+ size="mini"
68
+ >规则表单编辑</el-button
69
+ >
70
+ </div>
71
+ <el-button
72
+ type="danger"
73
+ circle
74
+ @click="deleteRule(index)"
75
+ style="margin-left: 10px"
76
+ >
77
+ <el-icon><Delete /></el-icon>
78
+ </el-button>
79
+ </el-collapse-item>
80
+ </el-collapse>
81
+ <el-dropdown @command="handleDropdown" style="margin-top: 10px">
82
+ <el-button type="success">
83
+ 新增规则<i class="el-icon-arrow-down el-icon--right"></i>
84
+ </el-button>
85
+ <template #dropdown>
86
+ <el-dropdown-menu>
87
+ <el-dropdown-item command="enum">默认枚举</el-dropdown-item>
88
+ <el-dropdown-item command="func">自定义函数规则</el-dropdown-item>
89
+ <el-dropdown-item command="high">高级模式</el-dropdown-item>
90
+ </el-dropdown-menu>
91
+ </template>
92
+ </el-dropdown>
93
+ </div>
94
+ <CustomDialog ref="codeMyDialog">
95
+ <div
96
+ class="sqlDialog"
97
+ style="padding: 20px; height: 100%"
98
+ v-if="funcItem"
99
+ >
100
+ <el-select
101
+ v-model="funcValue.trigger"
102
+ placeholder="请选择"
103
+ size="mini"
104
+ style="margin-bottom: 20px"
105
+ >
106
+ <el-option label="blur" value="blur"></el-option>
107
+ <el-option label="change" value="change"></el-option>
108
+ </el-select>
109
+ <el-alert
110
+ title="rule是存放接收参数的对象;value是待校验的值;callback是回调函数(校验完后,要执行的操作,如抛错),mainData为表单数据"
111
+ type="success"
112
+ style="margin-bottom: 15px"
113
+ />
114
+ <div>(rule, value, callback, mainData) => {</div>
115
+ <codemirror
116
+ v-model="funcValue.func"
117
+ ref="cm"
118
+ placeholder=""
119
+ mode="text/javascript"
120
+ :style="{ height: '320px' }"
121
+ :autofocus="true"
122
+ :indent-with-tab="true"
123
+ :tab-size="2"
124
+ />
125
+ <div>}</div>
126
+ </div>
127
+ <el-footer class="my-Footer" style="height: 60px; text-align: right">
128
+ <el-button @click="saveFunc" type="primary">保存</el-button>
129
+ <el-button @click="closeDialog">关闭</el-button>
130
+ </el-footer>
131
+ </CustomDialog>
132
+ <CustomDialog ref="formRuleDialog">
133
+ <el-main style="padding: 0">
134
+ <el-container style="height: 100%">
135
+ <el-main class="my-pageMain" style="overflow: hidden">
136
+ <Dynamicform
137
+ ref="formdragger"
138
+ :formResult="formValue"
139
+ :allFormList="ruleJson"
140
+ :globalConfig="Object.assign({}, globalDatas, { size: 'large' })"
141
+ ></Dynamicform>
142
+ </el-main>
143
+ <el-footer class="my-Footer" style="height: 60px; text-align: right">
144
+ <el-button type="primary" @click="saveField">保存</el-button>
145
+ <el-button @click="closeDialog">关闭</el-button>
146
+ </el-footer>
147
+ </el-container>
148
+ </el-main>
149
+ </CustomDialog>
150
+ </div>
151
+ </template>
152
+ <script lang="ts">
153
+ import {
154
+ defineComponent,
155
+ ref,
156
+ getCurrentInstance,
157
+ inject,
158
+ computed,
159
+ } from "vue";
160
+ import fieldProps from "../../utils/fieldProps";
161
+ import _ from "@/utils/_";
162
+ import ruleListData from "./rules";
163
+ import ruleJsonData from "./ruleform.json";
164
+ import { Delete } from "@element-plus/icons-vue";
165
+ import Dynamicform from "../../starfish-form.vue";
166
+ import { Codemirror } from "vue-codemirror";
167
+ export default defineComponent({
168
+ ControlType: "Rule", // 必须与文件名匹配
169
+ rule: _.getJsonValidate(),
170
+ props: {
171
+ ...fieldProps,
172
+ },
173
+ components: {
174
+ Delete,
175
+ Dynamicform,
176
+ Codemirror,
177
+ },
178
+ setup(props) {
179
+ const { proxy } = getCurrentInstance() as any;
180
+ const { formStore } = inject<any>("control") || {};
181
+ const globalDatas = computed(() => formStore?.get("globalDatas"));
182
+ const rules = ref([]);
183
+ const ruleList = ref(ruleListData);
184
+ const funcItem: any = ref({});
185
+ const funcValue: any = ref({});
186
+ const highItem: any = ref({});
187
+ const formValue: any = ref({});
188
+ const ruleJson = ref(ruleJsonData.ruleJson);
189
+ const IsShow = ref(true);
190
+ const codeMyDialog = ref();
191
+ const formRuleDialog = ref();
192
+ const formdragger = ref();
193
+ return {
194
+ IsShow,
195
+ rules,
196
+ ruleList,
197
+ globalDatas,
198
+ funcItem,
199
+ funcValue,
200
+ highItem,
201
+ formValue,
202
+ ruleJson,
203
+ codeMyDialog,
204
+ formRuleDialog,
205
+ formdragger,
206
+ handleDropdown(type: string) {
207
+ let title = "";
208
+ if (type == "enum") {
209
+ title = "自定义枚举";
210
+ } else if (type == "func") {
211
+ title = "自定义函数规则";
212
+ } else if (type == "high") {
213
+ title = "高级模式";
214
+ }
215
+ if (Array.isArray(props.data[props.item.data.fieldName])) {
216
+ props.data[props.item.data.fieldName].push({
217
+ type,
218
+ title,
219
+ value: "",
220
+ });
221
+ } else {
222
+ props.data[props.item.data.fieldName] = [];
223
+ props.data[props.item.data.fieldName].push({
224
+ type,
225
+ title,
226
+ value: "",
227
+ });
228
+ }
229
+ },
230
+ handleFuncEdit(item: any) {
231
+ funcItem.value = item;
232
+ funcValue.value = item.value
233
+ ? JSON.parse(JSON.stringify(item.value))
234
+ : {
235
+ trigger: "blur",
236
+ func: `/** if (value === "" || value == null) {
237
+ * callback(new Error("请输入"));
238
+ *} else if (!/^[0-9]*$/.test(value)) {
239
+ * callback(new Error("必须为数字"));
240
+ *}
241
+ *callback();
242
+ */`,
243
+ };
244
+ codeMyDialog.value.init("函数编辑", "icon-icon-bianji");
245
+ codeMyDialog.value.show();
246
+ },
247
+ saveFunc() {
248
+ funcItem.value.value = funcValue.value;
249
+ proxy.closeDialog();
250
+ },
251
+ closeDialog() {
252
+ codeMyDialog.value.close();
253
+ formRuleDialog.value.close();
254
+ },
255
+ deleteRule(index: number) {
256
+ props.data[props.item.data.fieldName].splice(index, 1);
257
+ },
258
+ async handleFormEdit(item: any) {
259
+ highItem.value = item;
260
+ formValue.value = item.value || proxy.getDefaultData(ruleJson.value);
261
+ debugger;
262
+ formRuleDialog.value.init("规则表单编辑", "icon-icon-bianji");
263
+ formRuleDialog.value.show();
264
+ // await nextTick();
265
+ // formdragger.value.initForm(false, false, [], ruleJson.value, formValue.value, {});
266
+ },
267
+
268
+ getDefaultData(items: any) {
269
+ const maindata: any = {};
270
+ items.forEach((item: any) => {
271
+ maindata[item.data.fieldName] = item.data.default;
272
+ if (item.data.getDefault) {
273
+ maindata[item.data.fieldName] = item.data.getDefault();
274
+ }
275
+ if (item.data.itemConfig) {
276
+ maindata[item.data.fieldName] = item.data.itemConfig.value;
277
+ }
278
+ maindata[item.data.fieldName] =
279
+ maindata[item.data.fieldName] != undefined
280
+ ? JSON.parse(JSON.stringify(maindata[item.data.fieldName]))
281
+ : undefined;
282
+ });
283
+ return maindata;
284
+ },
285
+ saveField() {
286
+ const newFormValue: any = {};
287
+ const map: any = {
288
+ 1: {
289
+ fields: ["required", "trigger", "message"],
290
+ },
291
+ 2: {
292
+ fields: ["trigger", "min", "max", "message"],
293
+ },
294
+ 3: {
295
+ fields: ["required", "trigger", "type", "message"],
296
+ },
297
+ 4: {
298
+ fields: ["required", "trigger", "patternTemp", "message"],
299
+ },
300
+ 5: {
301
+ fields: ["trigger", "minValue", "maxValue", "message"],
302
+ },
303
+ };
304
+ for (const key in formValue.value) {
305
+ if (map[formValue.value.ruleType || "1"].fields.includes(key)) {
306
+ newFormValue[key] = formValue.value[key];
307
+ }
308
+ }
309
+ if (formValue.value.ruleType == 2) {
310
+ newFormValue.min = parseInt(newFormValue.min);
311
+ newFormValue.max = parseInt(newFormValue.max);
312
+ } else if (formValue.value.ruleType == 4) {
313
+ newFormValue.pattern = new RegExp(newFormValue.patternTemp);
314
+ } else if (formValue.value.ruleType == 5) {
315
+ newFormValue.validor = `(rule, value, callback) => {
316
+ if (!/(^[1-9]*$)/.test(value)) {
317
+ callback(new Error("请输入数字值"))
318
+ } else {
319
+ if (value > ${newFormValue.maxValue}) {
320
+ callback(new Error("${newFormValue.message}"))
321
+ } else if(value < ${newFormValue.minValue}){
322
+ callback(new Error("${newFormValue.message}"))
323
+ }else {
324
+ callback()
325
+ }
326
+ }
327
+ }`;
328
+ }
329
+ newFormValue["ruleType"] = formValue.value["ruleType"];
330
+ highItem.value.value = newFormValue;
331
+ formRuleDialog.value.close();
332
+ },
333
+ };
334
+ },
335
+ });
336
+ </script>
337
+ <style lang="scss">
338
+ .el-collapse-item {
339
+ border: 1px solid #ebeef5;
340
+ border-bottom-color: #e1e1e1;
341
+ .el-collapse-item__header {
342
+ background: #ebeef5;
343
+ height: 20px;
344
+ line-height: 20px;
345
+ padding: 5px;
346
+ font-size: 12px;
347
+ &.is-active {
348
+ border-bottom-color: transparent;
349
+ }
350
+ }
351
+ .el-collapse-item__content {
352
+ padding: 5px;
353
+ display: flex;
354
+ justify-content: space-between;
355
+ .el-button + .el-button {
356
+ margin-left: 5px;
357
+ }
358
+ }
359
+ }
360
+ .starfish-formitem-rule {
361
+ .label {
362
+ align-self: flex-start;
363
+ }
364
+ }
365
+ </style>
@@ -0,0 +1,315 @@
1
+ {
2
+ "ruleJson": [
3
+ {
4
+ "ControlType": "Radio",
5
+ "nameCn": "单选框",
6
+ "id": "fzeXda7JLr_Ji5rHr-p3v",
7
+ "layout": false,
8
+ "data": {
9
+ "fieldName": "ruleType",
10
+ "label": "规则种类",
11
+ "tip": "",
12
+ "value": "",
13
+ "showRule": "{}",
14
+ "required": false,
15
+ "rule": "[]",
16
+ "default": false,
17
+ "itemConfig": {
18
+ "value": "5",
19
+ "id": 5,
20
+ "items": [
21
+ {
22
+ "label": "必填类",
23
+ "value": "1",
24
+ "select": true,
25
+ "id": 1
26
+ },
27
+ {
28
+ "label": "字符长度类(还要表单必填才能生效)",
29
+ "value": "2",
30
+ "select": false,
31
+ "id": 2
32
+ },
33
+ {
34
+ "label": "字符类型类",
35
+ "value": "3",
36
+ "select": false,
37
+ "id": 3
38
+ },
39
+ {
40
+ "label": "正则类",
41
+ "value": "4",
42
+ "select": false,
43
+ "id": 4
44
+ },
45
+ {
46
+ "label": "数字大小",
47
+ "value": "5",
48
+ "select": false,
49
+ "id": 5
50
+ }
51
+ ]
52
+ },
53
+ "csslist": []
54
+ }
55
+ },
56
+ {
57
+ "ControlType": "Switch",
58
+ "nameCn": "开关",
59
+ "id": "9cZ6kCMBldaXKMOn6plsX",
60
+ "layout": false,
61
+ "data": {
62
+ "fieldName": "required",
63
+ "label": "是否必填",
64
+ "tip": "",
65
+ "value": "",
66
+ "showRule": {
67
+ "type": "andgroup",
68
+ "result": [
69
+ {
70
+ "type": "data",
71
+ "data": {
72
+ "field": "ruleType",
73
+ "logic": "!=",
74
+ "type": "选项",
75
+ "value": "2"
76
+ }
77
+ },
78
+ {
79
+ "type": "data",
80
+ "data": {
81
+ "field": "ruleType",
82
+ "logic": "!=",
83
+ "type": "选项",
84
+ "value": "5"
85
+ }
86
+ }
87
+ ],
88
+ "control": true
89
+ },
90
+ "required": false,
91
+ "rule": "[]",
92
+ "default": false,
93
+ "csslist": []
94
+ }
95
+ },
96
+ {
97
+ "ControlType": "Text",
98
+ "nameCn": "文本框",
99
+ "id": "zsnvN-ISlawlqmQ2zKy4_",
100
+ "layout": false,
101
+ "data": {
102
+ "fieldName": "message",
103
+ "label": "文案提示",
104
+ "tip": "",
105
+ "placeholder": "",
106
+ "showRule": "{}",
107
+ "required": false,
108
+ "rule": "[]",
109
+ "default": "",
110
+ "csslist": []
111
+ }
112
+ },
113
+ {
114
+ "ControlType": "Selected",
115
+ "nameCn": "选择器",
116
+ "id": "IyJ0vsvwI2JUUA3mx8rDV",
117
+ "layout": false,
118
+ "data": {
119
+ "fieldName": "trigger",
120
+ "label": "触发方式",
121
+ "tip": "",
122
+ "placeholder": "",
123
+ "showRule": "{}",
124
+ "required": false,
125
+ "rule": "[]",
126
+ "itemConfig": {
127
+ "value": "change",
128
+ "items": [
129
+ {
130
+ "label": "blur",
131
+ "value": "blur",
132
+ "select": true,
133
+ "id": 1
134
+ },
135
+ {
136
+ "label": "change",
137
+ "value": "change",
138
+ "select": false,
139
+ "id": 2
140
+ }
141
+ ],
142
+ "id": 2
143
+ }
144
+ }
145
+ },
146
+ {
147
+ "ControlType": "Text",
148
+ "nameCn": "文本框",
149
+ "id": "jrA_d3cgGvu2ihn_FalPb",
150
+ "layout": false,
151
+ "data": {
152
+ "fieldName": "min",
153
+ "label": "字符最小长度",
154
+ "tip": "",
155
+ "placeholder": "",
156
+ "showRule": {
157
+ "type": "data",
158
+ "data": {
159
+ "field": "ruleType",
160
+ "logic": "=",
161
+ "type": "选项",
162
+ "value": "2"
163
+ }
164
+ },
165
+ "required": false,
166
+ "rule": "[]",
167
+ "default": "",
168
+ "csslist": []
169
+ }
170
+ },
171
+ {
172
+ "ControlType": "Text",
173
+ "nameCn": "文本框",
174
+ "id": "OgCNEDeLUtRqe1PyLjnrm",
175
+ "layout": false,
176
+ "data": {
177
+ "fieldName": "max",
178
+ "label": "字符最大长度",
179
+ "tip": "",
180
+ "placeholder": "",
181
+ "showRule": {
182
+ "type": "data",
183
+ "data": {
184
+ "field": "ruleType",
185
+ "logic": "=",
186
+ "type": "选项",
187
+ "value": "2"
188
+ }
189
+ },
190
+ "required": false,
191
+ "rule": "[]",
192
+ "default": ""
193
+ }
194
+ },
195
+ {
196
+ "ControlType": "Text",
197
+ "nameCn": "文本框",
198
+ "id": "ebsL0k6iGC5iq_8uwsIsg",
199
+ "layout": false,
200
+ "data": {
201
+ "fieldName": "minValue",
202
+ "label": "最小值",
203
+ "tip": "",
204
+ "placeholder": "",
205
+ "showRule": {
206
+ "type": "data",
207
+ "data": {
208
+ "field": "ruleType",
209
+ "logic": "=",
210
+ "type": "选项",
211
+ "value": "5"
212
+ }
213
+ },
214
+ "required": false,
215
+ "rule": "[]",
216
+ "default": ""
217
+ }
218
+ },
219
+ {
220
+ "ControlType": "Text",
221
+ "nameCn": "文本框",
222
+ "id": "194TgvN1pDO7jQgHq9Uqe",
223
+ "layout": false,
224
+ "data": {
225
+ "fieldName": "maxValue",
226
+ "label": "最大值",
227
+ "tip": "",
228
+ "placeholder": "",
229
+ "showRule": {
230
+ "type": "data",
231
+ "data": {
232
+ "field": "ruleType",
233
+ "logic": "=",
234
+ "type": "选项",
235
+ "value": "5"
236
+ }
237
+ },
238
+ "required": false,
239
+ "rule": "[]",
240
+ "default": ""
241
+ }
242
+ },
243
+ {
244
+ "ControlType": "Selected",
245
+ "nameCn": "选择器",
246
+ "id": "-f-r3Nb9ARNbgrEyVrHc5",
247
+ "layout": false,
248
+ "data": {
249
+ "fieldName": "type",
250
+ "label": "字符类型",
251
+ "tip": "",
252
+ "placeholder": "",
253
+ "showRule": {
254
+ "type": "data",
255
+ "data": {
256
+ "field": "ruleType",
257
+ "logic": "=",
258
+ "type": "选项",
259
+ "value": "3"
260
+ }
261
+ },
262
+ "required": false,
263
+ "rule": "[]",
264
+ "itemConfig": {
265
+ "value": "number",
266
+ "items": [
267
+ {
268
+ "label": "date",
269
+ "value": "date",
270
+ "select": true,
271
+ "id": 1
272
+ },
273
+ {
274
+ "label": "array",
275
+ "value": "array",
276
+ "select": false,
277
+ "id": 2
278
+ },
279
+ {
280
+ "label": "number",
281
+ "value": "number",
282
+ "select": false,
283
+ "id": 3
284
+ }
285
+ ],
286
+ "id": 3
287
+ }
288
+ }
289
+ },
290
+ {
291
+ "ControlType": "Text",
292
+ "nameCn": "文本框",
293
+ "id": "2q4KrUCOegiGiU7OnIaa6",
294
+ "layout": false,
295
+ "data": {
296
+ "fieldName": "patternTemp",
297
+ "label": "自定义正则",
298
+ "tip": "",
299
+ "placeholder": "^\\d{6}$",
300
+ "showRule": {
301
+ "type": "data",
302
+ "data": {
303
+ "field": "ruleType",
304
+ "logic": "=",
305
+ "type": "选项",
306
+ "value": "4"
307
+ }
308
+ },
309
+ "required": false,
310
+ "rule": "[]",
311
+ "default": ""
312
+ }
313
+ }
314
+ ]
315
+ }