tianheng-ui 0.0.37 → 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.
- package/lib/iconfont.eot +0 -0
- package/lib/iconfont.svg +155 -0
- package/lib/iconfont.ttf +0 -0
- package/lib/iconfont.woff +0 -0
- package/lib/index.js +5 -2
- package/lib/tianheng-ui.js +34 -1
- package/lib/tianheng-ui.js.map +1 -1
- package/package.json +8 -2
- package/packages/formMaking/Container.vue +592 -0
- package/packages/formMaking/CusDialog.vue +134 -0
- package/packages/formMaking/FormConfig.vue +31 -0
- package/packages/formMaking/GenerateForm.vue +184 -0
- package/packages/formMaking/GenerateFormItem.vue +266 -0
- package/packages/formMaking/Upload/index.vue +451 -0
- package/packages/formMaking/WidgetConfig.vue +498 -0
- package/packages/formMaking/WidgetForm.vue +217 -0
- package/packages/formMaking/WidgetFormItem.vue +284 -0
- package/packages/formMaking/componentsConfig.js +313 -0
- package/packages/formMaking/generateCode.js +155 -0
- package/packages/formMaking/iconfont/demo.css +539 -0
- package/packages/formMaking/iconfont/demo_index.html +1159 -0
- package/packages/formMaking/iconfont/iconfont.css +189 -0
- package/packages/formMaking/iconfont/iconfont.eot +0 -0
- package/packages/formMaking/iconfont/iconfont.js +1 -0
- package/packages/formMaking/iconfont/iconfont.svg +155 -0
- package/packages/formMaking/iconfont/iconfont.ttf +0 -0
- package/packages/formMaking/iconfont/iconfont.woff +0 -0
- package/packages/formMaking/iconfont/iconfont.woff2 +0 -0
- package/packages/formMaking/index.js +79 -0
- package/packages/formMaking/lang/en-US.js +187 -0
- package/packages/formMaking/lang/zh-CN.js +187 -0
- package/packages/formMaking/styles/cover.scss +41 -0
- package/packages/formMaking/styles/index.scss +746 -0
- package/packages/formMaking/util/index.js +33 -0
- package/packages/formMaking/util/request.js +28 -0
- package/packages/table/action.vue +3 -3
@@ -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>
|