tianheng-ui 0.0.39 → 0.0.40

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 (35) hide show
  1. package/lib/iconfont.eot +0 -0
  2. package/lib/iconfont.svg +155 -0
  3. package/lib/iconfont.ttf +0 -0
  4. package/lib/iconfont.woff +0 -0
  5. package/lib/index.js +5 -2
  6. package/lib/tianheng-ui.js +34 -1
  7. package/lib/tianheng-ui.js.map +1 -1
  8. package/package.json +8 -2
  9. package/packages/formMaking/Container.vue +592 -0
  10. package/packages/formMaking/CusDialog.vue +134 -0
  11. package/packages/formMaking/FormConfig.vue +31 -0
  12. package/packages/formMaking/GenerateForm.vue +184 -0
  13. package/packages/formMaking/GenerateFormItem.vue +266 -0
  14. package/packages/formMaking/Upload/index.vue +451 -0
  15. package/packages/formMaking/WidgetConfig.vue +498 -0
  16. package/packages/formMaking/WidgetForm.vue +217 -0
  17. package/packages/formMaking/WidgetFormItem.vue +284 -0
  18. package/packages/formMaking/componentsConfig.js +313 -0
  19. package/packages/formMaking/generateCode.js +155 -0
  20. package/packages/formMaking/iconfont/demo.css +539 -0
  21. package/packages/formMaking/iconfont/demo_index.html +1159 -0
  22. package/packages/formMaking/iconfont/iconfont.css +189 -0
  23. package/packages/formMaking/iconfont/iconfont.eot +0 -0
  24. package/packages/formMaking/iconfont/iconfont.js +1 -0
  25. package/packages/formMaking/iconfont/iconfont.svg +155 -0
  26. package/packages/formMaking/iconfont/iconfont.ttf +0 -0
  27. package/packages/formMaking/iconfont/iconfont.woff +0 -0
  28. package/packages/formMaking/iconfont/iconfont.woff2 +0 -0
  29. package/packages/formMaking/index.js +79 -0
  30. package/packages/formMaking/lang/en-US.js +187 -0
  31. package/packages/formMaking/lang/zh-CN.js +187 -0
  32. package/packages/formMaking/styles/cover.scss +41 -0
  33. package/packages/formMaking/styles/index.scss +746 -0
  34. package/packages/formMaking/util/index.js +33 -0
  35. package/packages/formMaking/util/request.js +28 -0
@@ -0,0 +1,498 @@
1
+ <template>
2
+ <div v-if="show">
3
+ <el-form label-position="top">
4
+ <el-form-item :label="$t('fm.config.widget.model')" v-if="data.type!='grid'">
5
+ <el-input v-model="data.model"></el-input>
6
+ </el-form-item>
7
+ <el-form-item :label="$t('fm.config.widget.name')" v-if="data.type!='grid'">
8
+ <el-input v-model="data.name"></el-input>
9
+ </el-form-item>
10
+ <el-form-item :label="$t('fm.config.widget.width')" v-if="Object.keys(data.options).indexOf('width')>=0">
11
+ <el-input v-model="data.options.width"></el-input>
12
+ </el-form-item>
13
+
14
+ <el-form-item :label="$t('fm.config.widget.height')" v-if="Object.keys(data.options).indexOf('height')>=0">
15
+ <el-input v-model="data.options.height"></el-input>
16
+ </el-form-item>
17
+
18
+ <el-form-item :label="$t('fm.config.widget.size')" v-if="Object.keys(data.options).indexOf('size')>=0">
19
+ {{$t('fm.config.widget.width')}} <el-input style="width: 90px;" type="number" v-model.number="data.options.size.width"></el-input>
20
+ {{$t('fm.config.widget.height')}} <el-input style="width: 90px;" type="number" v-model.number="data.options.size.height"></el-input>
21
+ </el-form-item>
22
+
23
+ <el-form-item :label="$t('fm.config.widget.placeholder')" v-if="Object.keys(data.options).indexOf('placeholder')>=0 && (data.type!='time' || data.type!='date')">
24
+ <el-input v-model="data.options.placeholder"></el-input>
25
+ </el-form-item>
26
+ <el-form-item :label="$t('fm.config.widget.layout')" v-if="Object.keys(data.options).indexOf('inline')>=0">
27
+ <el-radio-group v-model="data.options.inline">
28
+ <el-radio-button :label="false">{{$t('fm.config.widget.block')}}</el-radio-button>
29
+ <el-radio-button :label="true">{{$t('fm.config.widget.inline')}}</el-radio-button>
30
+ </el-radio-group>
31
+ </el-form-item>
32
+ <el-form-item :label="$t('fm.config.widget.showInput')" v-if="Object.keys(data.options).indexOf('showInput')>=0">
33
+ <el-switch v-model="data.options.showInput" ></el-switch>
34
+ </el-form-item>
35
+ <el-form-item :label="$t('fm.config.widget.min')" v-if="Object.keys(data.options).indexOf('min')>=0">
36
+ <el-input-number v-model="data.options.min" :min="0" :max="100" :step="1"></el-input-number>
37
+ </el-form-item>
38
+ <el-form-item :label="$t('fm.config.widget.max')" v-if="Object.keys(data.options).indexOf('max')>=0">
39
+ <el-input-number v-model="data.options.max" :min="0" :max="100" :step="1"></el-input-number>
40
+ </el-form-item>
41
+ <el-form-item :label="$t('fm.config.widget.step')" v-if="Object.keys(data.options).indexOf('step')>=0">
42
+ <el-input-number v-model="data.options.step" :min="0" :max="100" :step="1"></el-input-number>
43
+ </el-form-item>
44
+ <el-form-item :label="$t('fm.config.widget.multiple')" v-if="data.type=='select' || data.type=='imgupload'">
45
+ <el-switch v-model="data.options.multiple" @change="handleSelectMuliple"></el-switch>
46
+ </el-form-item>
47
+ <el-form-item :label="$t('fm.config.widget.filterable')" v-if="data.type=='select'">
48
+ <el-switch v-model="data.options.filterable"></el-switch>
49
+ </el-form-item>
50
+ <el-form-item :label="$t('fm.config.widget.allowHalf')" v-if="Object.keys(data.options).indexOf('allowHalf')>=0">
51
+ <el-switch
52
+ v-model="data.options.allowHalf"
53
+ >
54
+ </el-switch>
55
+ </el-form-item>
56
+ <el-form-item :label="$t('fm.config.widget.showAlpha')" v-if="Object.keys(data.options).indexOf('showAlpha')>=0">
57
+ <el-switch
58
+ v-model="data.options.showAlpha"
59
+ >
60
+ </el-switch>
61
+ </el-form-item>
62
+ <el-form-item :label="$t('fm.config.widget.showLabel')" v-if="Object.keys(data.options).indexOf('showLabel')>=0">
63
+ <el-switch
64
+ v-model="data.options.showLabel"
65
+ >
66
+ </el-switch>
67
+ </el-form-item>
68
+ <el-form-item :label="$t('fm.config.widget.option')" v-if="Object.keys(data.options).indexOf('options')>=0">
69
+ <el-radio-group v-model="data.options.remote" size="mini" style="margin-bottom:10px;">
70
+ <el-radio-button :label="false">{{$t('fm.config.widget.staticData')}}</el-radio-button>
71
+ <el-radio-button :label="true">{{$t('fm.config.widget.remoteData')}}</el-radio-button>
72
+ </el-radio-group>
73
+ <template v-if="data.options.remote">
74
+ <div>
75
+ <el-input size="mini" style="" v-model="data.options.remoteFunc">
76
+ <template slot="prepend">{{$t('fm.config.widget.remoteFunc')}}</template>
77
+ </el-input>
78
+ <el-input size="mini" style="" v-model="data.options.props.value">
79
+ <template slot="prepend">{{$t('fm.config.widget.value')}}</template>
80
+ </el-input>
81
+ <el-input size="mini" style="" v-model="data.options.props.label">
82
+ <template slot="prepend">{{$t('fm.config.widget.label')}}</template>
83
+ </el-input>
84
+ </div>
85
+ </template>
86
+ <template v-else>
87
+ <template v-if="data.type=='radio' || (data.type=='select'&&!data.options.multiple)">
88
+ <el-radio-group v-model="data.options.defaultValue">
89
+ <draggable tag="ul" :list="data.options.options"
90
+ v-bind="{group:{ name:'options'}, ghostClass: 'ghost',handle: '.drag-item'}"
91
+ handle=".drag-item"
92
+ >
93
+ <li v-for="(item, index) in data.options.options" :key="index" >
94
+ <el-radio
95
+ :label="item.value"
96
+ style="margin-right: 5px;"
97
+ >
98
+ <el-input :style="{'width': data.options.showLabel? '90px': '180px' }" size="mini" v-model="item.value"></el-input>
99
+ <el-input style="width:90px;" size="mini" v-if="data.options.showLabel" v-model="item.label"></el-input>
100
+ <!-- <input v-model="item.value"/> -->
101
+ </el-radio>
102
+ <i class="drag-item" style="font-size: 16px;margin: 0 5px;cursor: move;"><i class="iconfont icon-icon_bars"></i></i>
103
+ <el-button @click="handleOptionsRemove(index)" circle plain type="danger" size="mini" icon="el-icon-minus" style="padding: 4px;margin-left: 5px;"></el-button>
104
+
105
+ </li>
106
+ </draggable>
107
+
108
+ </el-radio-group>
109
+ </template>
110
+
111
+ <template v-if="data.type=='checkbox' || (data.type=='select' && data.options.multiple)">
112
+ <el-checkbox-group v-model="data.options.defaultValue">
113
+
114
+ <draggable tag="ul" :list="data.options.options"
115
+ v-bind="{group:{ name:'options'}, ghostClass: 'ghost',handle: '.drag-item'}"
116
+ handle=".drag-item"
117
+ >
118
+ <li v-for="(item, index) in data.options.options" :key="index" >
119
+ <el-checkbox
120
+ :label="item.value"
121
+ style="margin-right: 5px;"
122
+ >
123
+ <el-input :style="{'width': data.options.showLabel? '90px': '180px' }" size="mini" v-model="item.value"></el-input>
124
+ <el-input style="width:90px;" size="mini" v-if="data.options.showLabel" v-model="item.label"></el-input>
125
+ </el-checkbox>
126
+ <i class="drag-item" style="font-size: 16px;margin: 0 5px;cursor: move;"><i class="iconfont icon-icon_bars"></i></i>
127
+ <el-button @click="handleOptionsRemove(index)" circle plain type="danger" size="mini" icon="el-icon-minus" style="padding: 4px;margin-left: 5px;"></el-button>
128
+
129
+ </li>
130
+ </draggable>
131
+ </el-checkbox-group>
132
+ </template>
133
+ <div style="margin-left: 22px;">
134
+ <el-button type="text" @click="handleAddOption">{{$t('fm.actions.addOption')}}</el-button>
135
+ </div>
136
+ </template>
137
+
138
+ </el-form-item>
139
+
140
+ <el-form-item :label="$t('fm.config.widget.remoteData')" v-if="data.type=='cascader'">
141
+ <div>
142
+ <el-input size="mini" style="" v-model="data.options.remoteFunc">
143
+ <template slot="prepend">{{$t('fm.config.widget.remoteFunc')}}</template>
144
+ </el-input>
145
+ <el-input size="mini" style="" v-model="data.options.props.value">
146
+ <template slot="prepend">{{$t('fm.config.widget.value')}}</template>
147
+ </el-input>
148
+ <el-input size="mini" style="" v-model="data.options.props.label">
149
+ <template slot="prepend">{{$t('fm.config.widget.label')}}</template>
150
+ </el-input>
151
+ <el-input size="mini" style="" v-model="data.options.props.children">
152
+ <template slot="prepend">{{$t('fm.config.widget.childrenOption')}}</template>
153
+ </el-input>
154
+ </div>
155
+ </el-form-item>
156
+
157
+ <el-form-item :label="$t('fm.config.widget.defaultValue')" v-if="Object.keys(data.options).indexOf('defaultValue')>=0 && (data.type == 'textarea' || data.type == 'input' || data.type=='rate' || data.type=='color' || data.type=='switch' || data.type=='text')">
158
+ <el-input v-if="data.type=='textarea'" type="textarea" :rows="5" v-model="data.options.defaultValue"></el-input>
159
+ <el-input v-if="data.type=='input'" v-model="data.options.defaultValue"></el-input>
160
+ <el-rate v-if="data.type == 'rate'" style="display:inline-block;vertical-align: middle;" :max="data.options.max" :allow-half="data.options.allowHalf" v-model="data.options.defaultValue"></el-rate>
161
+ <el-button type="text" v-if="data.type == 'rate'" style="display:inline-block;vertical-align: middle;margin-left: 10px;" @click="data.options.defaultValue=0">{{$t('fm.actions.clear')}}</el-button>
162
+ <el-color-picker
163
+ v-if="data.type == 'color'"
164
+ v-model="data.options.defaultValue"
165
+ :show-alpha="data.options.showAlpha"
166
+ ></el-color-picker>
167
+ <el-switch v-if="data.type=='switch'" v-model="data.options.defaultValue"></el-switch>
168
+ <el-input v-if="data.type=='text'" v-model="data.options.defaultValue"></el-input>
169
+ </el-form-item>
170
+
171
+ <el-form-item :label="$t('fm.config.widget.maxlength')" v-if="(data.type == 'textarea' || data.type == 'input')">
172
+ <el-input-number v-model="data.options.maxlength" :min="-1" ></el-input-number>
173
+ </el-form-item>
174
+ <el-form-item :label="$t('fm.config.widget.showWordLimit')" v-if="(data.type == 'textarea' || data.type == 'input')">
175
+ <el-switch v-model="data.options.showWordLimit" ></el-switch>
176
+ </el-form-item>
177
+
178
+ <template v-if="data.type == 'time' || data.type == 'date'">
179
+ <el-form-item :label="$t('fm.config.widget.showType')" v-if="data.type == 'date'">
180
+ <el-select v-model="data.options.type">
181
+ <el-option value="year"></el-option>
182
+ <el-option value="month"></el-option>
183
+ <el-option value="date"></el-option>
184
+ <el-option value="dates"></el-option>
185
+ <!-- <el-option value="week"></el-option> -->
186
+ <el-option value="datetime"></el-option>
187
+ <el-option value="datetimerange"></el-option>
188
+ <el-option value="daterange"></el-option>
189
+ </el-select>
190
+ </el-form-item>
191
+ <el-form-item :label="$t('fm.config.widget.isRange')" v-if="data.type == 'time'">
192
+ <el-switch
193
+ v-model="data.options.isRange"
194
+ >
195
+ </el-switch>
196
+ </el-form-item>
197
+ <el-form-item :label="$t('fm.config.widget.isTimestamp')" v-if="data.type == 'date'">
198
+ <el-switch
199
+ v-model="data.options.timestamp"
200
+ >
201
+ </el-switch>
202
+ </el-form-item>
203
+ <el-form-item :label="$t('fm.config.widget.placeholder')" v-if="(!data.options.isRange && data.type == 'time') || (data.type != 'time' && data.options.type != 'datetimerange' && data.options.type != 'daterange')">
204
+ <el-input v-model="data.options.placeholder"></el-input>
205
+ </el-form-item>
206
+ <el-form-item :label="$t('fm.config.widget.startPlaceholder')" v-if="(data.options.isRange) || data.options.type=='datetimerange' || data.options.type=='daterange'">
207
+ <el-input v-model="data.options.startPlaceholder"></el-input>
208
+ </el-form-item>
209
+ <el-form-item :label="$t('fm.config.widget.endPlaceholder')" v-if="data.options.isRange || data.options.type=='datetimerange' || data.options.type=='daterange'">
210
+ <el-input v-model="data.options.endPlaceholder"></el-input>
211
+ </el-form-item>
212
+ <el-form-item :label="$t('fm.config.widget.format')">
213
+ <el-input v-model="data.options.format"></el-input>
214
+ </el-form-item>
215
+ <el-form-item :label="$t('fm.config.widget.defaultValue')" v-if="data.type=='time' && Object.keys(data.options).indexOf('isRange')>=0">
216
+ <el-time-picker
217
+ key="1"
218
+ style="width: 100%;"
219
+ v-if="!data.options.isRange"
220
+ v-model="data.options.defaultValue"
221
+ :arrowControl="data.options.arrowControl"
222
+ :value-format="data.options.format"
223
+ >
224
+ </el-time-picker>
225
+ <el-time-picker
226
+ key="2"
227
+ v-if="data.options.isRange"
228
+ style="width: 100%;"
229
+ v-model="data.options.defaultValue"
230
+ is-range
231
+ :arrowControl="data.options.arrowControl"
232
+ :value-format="data.options.format"
233
+ >
234
+ </el-time-picker>
235
+ </el-form-item>
236
+ </template>
237
+
238
+ <template v-if="data.type=='imgupload'">
239
+
240
+ <el-form-item :label="$t('fm.config.widget.limit')">
241
+ <el-input type="number" v-model.number="data.options.length"></el-input>
242
+ </el-form-item>
243
+ <el-form-item :label="$t('fm.config.widget.isQiniu')">
244
+ <el-switch v-model="data.options.isQiniu"></el-switch>
245
+ </el-form-item>
246
+ <template v-if="data.options.isQiniu">
247
+ <el-form-item label="Domain" :required="true">
248
+ <el-input v-model="data.options.domain"></el-input>
249
+ </el-form-item>
250
+ <el-form-item :label="$t('fm.config.widget.tokenFunc')" :required="true">
251
+ <el-input v-model="data.options.tokenFunc"></el-input>
252
+ </el-form-item>
253
+ </template>
254
+ <template v-else>
255
+ <el-form-item :label="$t('fm.config.widget.imageAction')" :required="true">
256
+ <el-input v-model="data.options.action"></el-input>
257
+ </el-form-item>
258
+ </template>
259
+ </template>
260
+
261
+ <template v-if="data.type=='blank'">
262
+ <el-form-item :label="$t('fm.config.widget.defaultType')">
263
+ <el-select v-model="data.options.defaultType">
264
+ <el-option value="String" :label="$t('fm.config.widget.string')"></el-option>
265
+ <el-option value="Object" :label="$t('fm.config.widget.object')"></el-option>
266
+ <el-option value="Array" :label="$t('fm.config.widget.array')"></el-option>
267
+ </el-select>
268
+ </el-form-item>
269
+ </template>
270
+
271
+ <template v-if="data.type == 'grid'">
272
+ <el-form-item :label="$t('fm.config.widget.gutter')">
273
+ <el-input type="number" v-model.number="data.options.gutter"></el-input>
274
+ </el-form-item>
275
+ <el-form-item :label="$t('fm.config.widget.columnOption')">
276
+ <draggable tag="ul" :list="data.columns"
277
+ v-bind="{group:{ name:'options'}, ghostClass: 'ghost',handle: '.drag-item'}"
278
+ handle=".drag-item"
279
+ >
280
+ <li v-for="(item, index) in data.columns" :key="index" >
281
+ <i class="drag-item" style="font-size: 16px;margin: 0 5px;cursor: move;"><i class="iconfont icon-icon_bars"></i></i>
282
+ <el-input :placeholder="$t('fm.config.widget.span')" size="mini" style="width: 100px;" type="number" v-model.number="item.span"></el-input>
283
+
284
+ <el-button @click="handleOptionsRemove(index)" circle plain type="danger" size="mini" icon="el-icon-minus" style="padding: 4px;margin-left: 5px;"></el-button>
285
+
286
+ </li>
287
+ </draggable>
288
+ <div style="margin-left: 22px;">
289
+ <el-button type="text" @click="handleAddColumn">{{$t('fm.actions.addColumn')}}</el-button>
290
+ </div>
291
+ </el-form-item>
292
+ <el-form-item :label="$t('fm.config.widget.justify')">
293
+ <el-select v-model="data.options.justify">
294
+ <el-option value="start" :label="$t('fm.config.widget.justifyStart')"></el-option>
295
+ <el-option value="end" :label="$t('fm.config.widget.justifyEnd')"></el-option>
296
+ <el-option value="center" :label="$t('fm.config.widget.justifyCenter')"></el-option>
297
+ <el-option value="space-around" :label="$t('fm.config.widget.justifySpaceAround')"></el-option>
298
+ <el-option value="space-between" :label="$t('fm.config.widget.justifySpaceBetween')"></el-option>
299
+ </el-select>
300
+ </el-form-item>
301
+ <el-form-item :label="$t('fm.config.widget.align')">
302
+ <el-select v-model="data.options.align">
303
+ <el-option value="top" :label="$t('fm.config.widget.alignTop')"></el-option>
304
+ <el-option value="middle" :label="$t('fm.config.widget.alignMiddle')"></el-option>
305
+ <el-option value="bottom" :label="$t('fm.config.widget.alignBottom')"></el-option>
306
+ </el-select>
307
+ </el-form-item>
308
+ </template>
309
+
310
+
311
+ <template v-if="data.type != 'grid'">
312
+ <el-form-item :label="$t('fm.config.widget.attribute')">
313
+ <el-checkbox v-model="data.options.readonly" v-if="Object.keys(data.options).indexOf('readonly')>=0">{{$t('fm.config.widget.readonly')}}</el-checkbox>
314
+ <el-checkbox v-model="data.options.disabled" v-if="Object.keys(data.options).indexOf('disabled')>=0">{{$t('fm.config.widget.disabled')}} </el-checkbox>
315
+ <el-checkbox v-model="data.options.editable" v-if="Object.keys(data.options).indexOf('editable')>=0">{{$t('fm.config.widget.editable')}}</el-checkbox>
316
+ <el-checkbox v-model="data.options.clearable" v-if="Object.keys(data.options).indexOf('clearable')>=0">{{$t('fm.config.widget.clearable')}} </el-checkbox>
317
+ <el-checkbox v-model="data.options.arrowControl" v-if="Object.keys(data.options).indexOf('arrowControl')>=0">{{$t('fm.config.widget.arrowControl')}}</el-checkbox>
318
+ <el-checkbox v-model="data.options.isDelete" v-if="Object.keys(data.options).indexOf('isDelete')>=0">{{$t('fm.config.widget.isDelete')}}</el-checkbox>
319
+ <el-checkbox v-model="data.options.isEdit" v-if="Object.keys(data.options).indexOf('isEdit')>=0">{{$t('fm.config.widget.isEdit')}}</el-checkbox>
320
+
321
+ </el-form-item>
322
+ <el-form-item :label="$t('fm.config.widget.validate')">
323
+ <div v-if="Object.keys(data.options).indexOf('required')>=0">
324
+ <el-checkbox v-model="data.options.required">{{$t('fm.config.widget.required')}}</el-checkbox>
325
+ </div>
326
+ <el-select v-if="Object.keys(data.options).indexOf('dataType')>=0" v-model="data.options.dataType" size="mini" >
327
+ <el-option value="string" :label="$t('fm.config.widget.string')"></el-option>
328
+ <el-option value="number" :label="$t('fm.config.widget.number')"></el-option>
329
+ <el-option value="boolean" :label="$t('fm.config.widget.boolean')"></el-option>
330
+ <el-option value="integer" :label="$t('fm.config.widget.integer')"></el-option>
331
+ <el-option value="float" :label="$t('fm.config.widget.float')"></el-option>
332
+ <el-option value="url" :label="$t('fm.config.widget.url')"></el-option>
333
+ <el-option value="email" :label="$t('fm.config.widget.email')"></el-option>
334
+ <el-option value="hex" :label="$t('fm.config.widget.hex')"></el-option>
335
+ </el-select>
336
+
337
+ <div v-if="Object.keys(data.options).indexOf('pattern')>=0">
338
+ <el-input size="mini" class="config-pattern-input" v-model.lazy="data.options.pattern" style=" width: 240px;" :placeholder="$t('fm.config.widget.patternPlaceholder')">
339
+ <template slot="prepend" >/</template>
340
+ <template slot="append" >/</template>
341
+ </el-input>
342
+ </div>
343
+ </el-form-item>
344
+ </template>
345
+ </el-form>
346
+ </div>
347
+ </template>
348
+
349
+ <script>
350
+ import Draggable from 'vuedraggable'
351
+
352
+ export default {
353
+ components: {
354
+ Draggable
355
+ },
356
+ props: ['data'],
357
+ data () {
358
+ return {
359
+ validator: {
360
+ type: null,
361
+ required: null,
362
+ pattern: null,
363
+ range: null,
364
+ length: null
365
+ }
366
+ }
367
+ },
368
+ computed: {
369
+ show () {
370
+ if (this.data && Object.keys(this.data).length > 0) {
371
+ return true
372
+ }
373
+ return false
374
+ }
375
+ },
376
+ methods: {
377
+ handleOptionsRemove (index) {
378
+ if (this.data.type === 'grid') {
379
+ this.data.columns.splice(index, 1)
380
+ } else {
381
+ this.data.options.options.splice(index, 1)
382
+ }
383
+
384
+ },
385
+ handleAddOption () {
386
+ if (this.data.options.showLabel) {
387
+ this.data.options.options.push({
388
+ value: this.$t('fm.config.widget.newOption'),
389
+ label: this.$t('fm.config.widget.newOption')
390
+ })
391
+ } else {
392
+ this.data.options.options.push({
393
+ value: this.$t('fm.config.widget.newOption')
394
+ })
395
+ }
396
+
397
+ },
398
+ handleAddColumn () {
399
+ this.data.columns.push({
400
+ span: '',
401
+ list: []
402
+ })
403
+ },
404
+ generateRule () {
405
+ this.data.rules = []
406
+ Object.keys(this.validator).forEach(key => {
407
+ if (this.validator[key]) {
408
+ this.data.rules.push(this.validator[key])
409
+ }
410
+ })
411
+ },
412
+ handleSelectMuliple (value) {
413
+ if (value) {
414
+ if (this.data.options.defaultValue) {
415
+ this.data.options.defaultValue = [this.data.options.defaultValue]
416
+ } else {
417
+ this.data.options.defaultValue = []
418
+ }
419
+
420
+ } else {
421
+ if (this.data.options.defaultValue.length>0){
422
+ this.data.options.defaultValue = this.data.options.defaultValue[0]
423
+ } else {
424
+ this.data.options.defaultValue = ''
425
+ }
426
+
427
+ }
428
+ },
429
+
430
+ validateRequired (val) {
431
+ if (val) {
432
+ this.validator.required = {required: true, message: `${this.data.name}${this.$t('fm.config.widget.validatorRequired')}`}
433
+ } else {
434
+ this.validator.required = null
435
+ }
436
+
437
+ this.$nextTick(() => {
438
+ this.generateRule()
439
+ })
440
+ },
441
+
442
+ validateDataType (val) {
443
+ if (!this.show) {
444
+ return false
445
+ }
446
+
447
+ if (val) {
448
+ this.validator.type = {type: val, message: this.data.name + this.$t('fm.config.widget.validatorType')}
449
+ } else {
450
+ this.validator.type = null
451
+ }
452
+
453
+ this.generateRule()
454
+ },
455
+ valiatePattern (val) {
456
+ if (!this.show) {
457
+ return false
458
+ }
459
+
460
+ if (val) {
461
+ this.validator.pattern = {pattern: val, message: this.data.name + this.$t('fm.config.widget.validatorPattern')}
462
+ } else {
463
+ this.validator.pattern = null
464
+ }
465
+
466
+ this.generateRule()
467
+ }
468
+ },
469
+ watch: {
470
+ 'data.options.isRange': function(val) {
471
+ if (typeof val !== 'undefined') {
472
+ if (val) {
473
+ this.data.options.defaultValue = null
474
+ } else {
475
+ if (Object.keys(this.data.options).indexOf('defaultValue')>=0)
476
+ this.data.options.defaultValue = ''
477
+ }
478
+ }
479
+ },
480
+ 'data.options.required': function(val) {
481
+ this.validateRequired(val)
482
+ },
483
+ 'data.options.dataType': function (val) {
484
+ this.validateDataType(val)
485
+ },
486
+ 'data.options.pattern': function (val) {
487
+ this.valiatePattern(val)
488
+ },
489
+ 'data.name': function (val) {
490
+ if (this.data.options) {
491
+ this.validateRequired(this.data.options.required)
492
+ this.validateDataType(this.data.options.dataType)
493
+ this.valiatePattern(this.data.options.pattern)
494
+ }
495
+ }
496
+ }
497
+ }
498
+ </script>