meixioacomponent 0.4.2 → 0.4.6
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/meixioacomponent.common.js +16241 -19856
- package/lib/meixioacomponent.umd.js +16353 -19968
- package/lib/meixioacomponent.umd.min.js +33 -34
- package/lib/style/element/index.css +1182 -1153
- package/lib/style/theme/light.less +5 -4
- package/package.json +2 -2
- package/packages/components/base/baseCropper/index.vue +2 -1
- package/packages/components/base/baseDialog/index.vue +13 -7
- package/packages/components/base/baseDrawer/index.vue +5 -2
- package/packages/components/base/baseIcon/index.vue +1 -2
- package/packages/components/base/baseList/index.js +6 -0
- package/packages/components/base/baseList/index.vue +48 -0
- package/packages/components/base/baseList/scrollbar/index.js +8 -0
- package/packages/components/base/baseList/scrollbar/src/bar.js +92 -0
- package/packages/components/base/baseList/scrollbar/src/main.js +150 -0
- package/packages/components/base/baseList/scrollbar/src/util.js +34 -0
- package/packages/components/base/baseNumberInput/index.js +6 -0
- package/packages/components/base/baseNumberInput/index.vue +191 -0
- package/packages/components/base/basePlainTable/basePlainTable.vue +78 -12
- package/packages/components/base/basePopoverButton/index.vue +1 -1
- package/packages/components/base/baseSection/baseSection.vue +24 -11
- package/packages/components/base/baseSingleImgUpload/index.js +6 -0
- package/packages/components/base/baseSingleImgUpload/index.vue +147 -0
- package/packages/components/base/baseStoreSelect/index.js +6 -0
- package/packages/components/base/baseStoreSelect/index.vue +159 -0
- package/packages/components/base/baseToggle/toggle.vue +22 -3
- package/packages/components/base/baseTreeSelect/index.vue +7 -1
- package/packages/components/base/baseUpload/baseUpload.vue +23 -0
- package/packages/components/base/baseUpload/baseUploadItem.vue +2 -3
- package/packages/components/base/baseUpload/mixins.js +12 -2
- package/packages/components/base/baseUploadTemplate/index.vue +19 -3
- package/packages/components/base/upload/upload.vue +36 -13
- package/packages/components/base/upload/uploadItem.vue +40 -17
- package/packages/components/dynamicmount/index.js +30 -29
- package/packages/components/index.js +19 -2
- package/packages/components/proForm/dialogForm/baseDialogForm.vue +29 -19
- package/packages/components/proForm/proForm/proFormItem/index.js +6 -0
- package/packages/components/proForm/proForm/{pro_form_item.vue → proFormItem/pro_form_item.vue} +161 -99
- package/packages/components/proForm/proForm/pro_form.vue +70 -16
- package/packages/components/proForm/proFormWrap/pro_form_wrap.vue +70 -28
- package/packages/components/proPageTable/oa_pro_colum_config.vue +24 -28
- package/packages/components/proPageTable/oa_pro_footer.vue +12 -10
- package/packages/components/proPageTable/oa_pro_screen.vue +1 -0
- package/packages/components/proPageTable/oa_pro_screen_item.vue +6 -6
- package/packages/components/proPageTable/oa_pro_table.vue +44 -20
- package/packages/components/style/element/index.css +1182 -1153
- package/packages/components/style/theme/light.less +5 -4
- package/packages/config/selectStore/SelectStore.js +26 -17
- package/packages/config/uploadRequest.js +1 -0
- package/packages/utils/upload.js +22 -21
- package/packages/utils/utils.js +110 -111
- package/src/App.vue +9 -14
- package/src/component/test.vue +333 -233
- package/src/component/testSelectStore.js +25 -13
- package/src/config/CompanyInfoConfig.js +4 -2
- package/packages/components/base/brieflyItem.vue +0 -198
package/packages/components/proForm/proForm/{pro_form_item.vue → proFormItem/pro_form_item.vue}
RENAMED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
'form-item-wrap': true,
|
|
9
9
|
}"
|
|
10
10
|
>
|
|
11
|
-
<div class="item-content" v-if="!typeOftemplate
|
|
11
|
+
<div class="item-content" v-if="!typeOftemplate" v-show="!isEdit">
|
|
12
12
|
<p
|
|
13
|
-
v-if="!spContentType"
|
|
13
|
+
v-if="!spContentType && selectMounted"
|
|
14
14
|
class="content-value"
|
|
15
15
|
@click="handleClick('content')"
|
|
16
16
|
:class="[`${config.click ? 'click' : config.color}`]"
|
|
@@ -71,7 +71,12 @@
|
|
|
71
71
|
></base-icon>
|
|
72
72
|
</div>
|
|
73
73
|
|
|
74
|
-
<div
|
|
74
|
+
<div
|
|
75
|
+
class="item-handle-wrap"
|
|
76
|
+
:class="[`${config.type}`]"
|
|
77
|
+
v-if="!typeOftemplate"
|
|
78
|
+
v-show="isEdit"
|
|
79
|
+
>
|
|
75
80
|
<!-- input输入框 -->
|
|
76
81
|
<el-input
|
|
77
82
|
ref="target"
|
|
@@ -83,65 +88,62 @@
|
|
|
83
88
|
style="width: 100%; height: 100%;"
|
|
84
89
|
></el-input>
|
|
85
90
|
<!-- 数字类型无小数 -->
|
|
86
|
-
<
|
|
91
|
+
<BaseNumberInput
|
|
92
|
+
v-else-if="config.type == 'number'"
|
|
87
93
|
ref="target"
|
|
88
94
|
:size="size"
|
|
89
|
-
|
|
90
|
-
|
|
95
|
+
v-model="module"
|
|
96
|
+
:unit="config.unit"
|
|
91
97
|
:disabled="isDisabled"
|
|
92
98
|
:maxlength="config.maxlength"
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
></el-input-number>
|
|
99
|
+
></BaseNumberInput>
|
|
100
|
+
|
|
96
101
|
<!--数字类型两位小数 -->
|
|
97
|
-
|
|
98
|
-
|
|
102
|
+
|
|
103
|
+
<BaseNumberInput
|
|
104
|
+
v-else-if="config.type == 'number2'"
|
|
99
105
|
ref="target"
|
|
106
|
+
:size="size"
|
|
107
|
+
v-model="module"
|
|
100
108
|
:precision="2"
|
|
101
|
-
:
|
|
102
|
-
v-model.number="module"
|
|
109
|
+
:unit="config.unit"
|
|
103
110
|
:disabled="isDisabled"
|
|
104
111
|
:maxlength="config.maxlength"
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
></el-input-number>
|
|
112
|
+
></BaseNumberInput>
|
|
113
|
+
|
|
108
114
|
<!-- select选择器 -->
|
|
109
|
-
|
|
115
|
+
|
|
116
|
+
<baseStoreSelect
|
|
110
117
|
:size="size"
|
|
111
118
|
ref="target"
|
|
112
119
|
v-model="module"
|
|
113
|
-
placeholder="请选择"
|
|
114
120
|
:multiple="multiple"
|
|
115
|
-
:filterable="true"
|
|
116
|
-
:loading="selectLoading"
|
|
117
121
|
:disabled="isDisabled"
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
v-else-if="config.type == 'select'
|
|
122
|
+
:params="config.params"
|
|
123
|
+
:useStore="config.useStore"
|
|
124
|
+
v-else-if="config.type == 'select'"
|
|
125
|
+
@hook:mounted="selectMounted = true"
|
|
121
126
|
:multipleLimit="config.multipleLimit"
|
|
122
|
-
>
|
|
123
|
-
|
|
124
|
-
v-for="item in selectData"
|
|
125
|
-
:key="item.value"
|
|
126
|
-
:label="item[`${selectConfig.label}`]"
|
|
127
|
-
:value="item[`${selectConfig.value}`]"
|
|
128
|
-
></el-option>
|
|
129
|
-
</el-select>
|
|
130
|
-
<!-- 时间选择器 -->
|
|
127
|
+
></baseStoreSelect>
|
|
128
|
+
|
|
131
129
|
<el-date-picker
|
|
132
|
-
type="date"
|
|
133
130
|
align="right"
|
|
134
131
|
v-model="module"
|
|
135
132
|
:size="size"
|
|
136
133
|
ref="target"
|
|
134
|
+
:type="datePickType"
|
|
137
135
|
placeholder="选择日期"
|
|
138
|
-
value-format="yyyy-MM-dd HH:mm:ss"
|
|
139
136
|
:disabled="isDisabled"
|
|
137
|
+
v-else-if="isDatePick"
|
|
138
|
+
value-format="timestamp"
|
|
140
139
|
:prefix-icon="`el-icon-time`"
|
|
140
|
+
:rangeSeparator="datePickPlace[1]"
|
|
141
|
+
:endPlaceholder="datePickPlace[2]"
|
|
142
|
+
:startPlaceholder="datePickPlace[0]"
|
|
141
143
|
style="width: 100%; height: 100%;"
|
|
142
|
-
v-else-if="config.type == 'time'"
|
|
143
144
|
:picker-options="config.pickerOptions"
|
|
144
145
|
></el-date-picker>
|
|
146
|
+
|
|
145
147
|
<!-- 单选框 -->
|
|
146
148
|
<el-radio-group
|
|
147
149
|
v-model="module"
|
|
@@ -189,10 +191,19 @@
|
|
|
189
191
|
v-if="config.type == 'textarea'"
|
|
190
192
|
:show-word-limit="config.maxlength ? true : false"
|
|
191
193
|
></el-input>
|
|
192
|
-
|
|
193
|
-
|
|
194
|
+
</div>
|
|
195
|
+
<!-- 插槽 -->
|
|
196
|
+
|
|
197
|
+
<div
|
|
198
|
+
class="item-handle-wrap"
|
|
199
|
+
:class="[`${config.type}`]"
|
|
200
|
+
v-else-if="typeOftemplate"
|
|
201
|
+
>
|
|
202
|
+
<slot name="template" v-if="config.type == 'template'"></slot>
|
|
194
203
|
<slot name="area" v-else-if="config.type == 'area'"></slot>
|
|
204
|
+
<slot name="numberUnit" v-else-if="config.type == 'numberUnit'"></slot>
|
|
195
205
|
</div>
|
|
206
|
+
|
|
196
207
|
<!-- 确定的按钮 -->
|
|
197
208
|
<div class="bottom-handle-wrap" v-show="isEdit && !form">
|
|
198
209
|
<el-button
|
|
@@ -216,13 +227,17 @@
|
|
|
216
227
|
</template>
|
|
217
228
|
|
|
218
229
|
<script>
|
|
230
|
+
import BaseNumberInput from '../../../base/baseNumberInput/index.vue'
|
|
231
|
+
import baseStoreSelect from '../../../base/baseStoreSelect/index.vue'
|
|
219
232
|
//
|
|
220
|
-
import
|
|
233
|
+
import { FilterTime } from '../../../../utils/utils'
|
|
221
234
|
export default {
|
|
235
|
+
name: 'baseFormItem',
|
|
222
236
|
data() {
|
|
223
237
|
return {
|
|
224
238
|
isEdit: false,
|
|
225
239
|
oldValue: null,
|
|
240
|
+
selectMounted: false,
|
|
226
241
|
}
|
|
227
242
|
},
|
|
228
243
|
created() {
|
|
@@ -248,7 +263,6 @@ export default {
|
|
|
248
263
|
config: {
|
|
249
264
|
type: Object,
|
|
250
265
|
},
|
|
251
|
-
|
|
252
266
|
form: {
|
|
253
267
|
type: Boolean,
|
|
254
268
|
default: false,
|
|
@@ -257,19 +271,15 @@ export default {
|
|
|
257
271
|
type: String,
|
|
258
272
|
default: `right`,
|
|
259
273
|
},
|
|
260
|
-
|
|
261
274
|
value: {},
|
|
262
|
-
|
|
263
275
|
size: {
|
|
264
276
|
type: String,
|
|
265
277
|
default: 'small',
|
|
266
278
|
},
|
|
267
|
-
|
|
268
279
|
width: {
|
|
269
280
|
type: String,
|
|
270
281
|
},
|
|
271
282
|
},
|
|
272
|
-
|
|
273
283
|
computed: {
|
|
274
284
|
isDisabled() {
|
|
275
285
|
const { config, disabled } = this.$props
|
|
@@ -278,20 +288,6 @@ export default {
|
|
|
278
288
|
multiple() {
|
|
279
289
|
return this.$props.config.multipleLimit ? true : false
|
|
280
290
|
},
|
|
281
|
-
selectLoading() {
|
|
282
|
-
return this.selectStore?.getLoading()
|
|
283
|
-
},
|
|
284
|
-
selectStore() {
|
|
285
|
-
return componentConfig.selectStore.getStore(this.$props.config.useStore)
|
|
286
|
-
},
|
|
287
|
-
|
|
288
|
-
selectData() {
|
|
289
|
-
return this.selectStore.getData()
|
|
290
|
-
},
|
|
291
|
-
|
|
292
|
-
selectConfig() {
|
|
293
|
-
return this.selectStore.getConfig()
|
|
294
|
-
},
|
|
295
291
|
|
|
296
292
|
spContentType() {
|
|
297
293
|
let configType = this.$props.config.type
|
|
@@ -305,34 +301,28 @@ export default {
|
|
|
305
301
|
}
|
|
306
302
|
return false
|
|
307
303
|
},
|
|
308
|
-
|
|
309
304
|
typeOftemplate() {
|
|
310
305
|
const { type } = this.$props.config
|
|
311
|
-
|
|
312
|
-
if (type == 'template' || type == 'area') {
|
|
306
|
+
if (type == 'template' || type == 'area' || type == 'numberUnit') {
|
|
313
307
|
return true
|
|
314
308
|
}
|
|
315
|
-
|
|
316
309
|
return false
|
|
317
310
|
},
|
|
318
|
-
|
|
319
311
|
contentValue() {
|
|
320
312
|
let type = this.$props.config.type
|
|
321
313
|
switch (type) {
|
|
322
314
|
case 'input':
|
|
323
315
|
case 'textarea':
|
|
324
316
|
return this.module
|
|
325
|
-
|
|
326
317
|
case 'select':
|
|
327
|
-
let list = this.
|
|
328
|
-
const selectConfig = this.
|
|
329
|
-
if (list
|
|
318
|
+
let list = this.$refs.target.getSelectData()
|
|
319
|
+
const selectConfig = this.$refs.target.getSelectConfig()
|
|
320
|
+
if (list) {
|
|
330
321
|
if (!this.multiple) {
|
|
331
|
-
if (this.module) {
|
|
322
|
+
if (this.module && list.length > 0) {
|
|
332
323
|
let index = list.findIndex((item) => {
|
|
333
324
|
return item[`${selectConfig.value}`] == this.module
|
|
334
325
|
})
|
|
335
|
-
|
|
336
326
|
return list[index][`${selectConfig.label}`]
|
|
337
327
|
} else {
|
|
338
328
|
return '暂无数据'
|
|
@@ -343,7 +333,6 @@ export default {
|
|
|
343
333
|
let index = list.findIndex((citem) => {
|
|
344
334
|
return citem[`${selectConfig.value}`] == item
|
|
345
335
|
})
|
|
346
|
-
|
|
347
336
|
text += text
|
|
348
337
|
? ` / ${list[index][`${selectConfig.label}`]}`
|
|
349
338
|
: list[index][`${selectConfig.label}`]
|
|
@@ -351,52 +340,73 @@ export default {
|
|
|
351
340
|
return text
|
|
352
341
|
}
|
|
353
342
|
} else {
|
|
354
|
-
this.loadSelectData()
|
|
343
|
+
this.$refs.target.loadSelectData()
|
|
355
344
|
return this.$props.config.value
|
|
356
345
|
}
|
|
357
346
|
|
|
358
|
-
// case "time":
|
|
359
|
-
// if (this.module) {
|
|
360
|
-
// let config = this.$props.config;
|
|
361
|
-
// let format = config.format ? config.format : "YYYY-MM-DD";
|
|
362
|
-
// return FilterTime(this.module, format);
|
|
363
|
-
// } else {
|
|
364
|
-
// return "暂无时间";
|
|
365
|
-
// }
|
|
366
|
-
|
|
367
347
|
default:
|
|
348
|
+
if (this.isDatePick) {
|
|
349
|
+
if (this.module) {
|
|
350
|
+
return this.filterTimestamp()
|
|
351
|
+
} else {
|
|
352
|
+
return '暂无时间'
|
|
353
|
+
}
|
|
354
|
+
}
|
|
368
355
|
return this.module
|
|
369
356
|
}
|
|
370
357
|
},
|
|
358
|
+
datePickPlace() {
|
|
359
|
+
const { datePickPlace } = this.$props.config
|
|
360
|
+
if (!datePickPlace || datePickPlace.length < 2) {
|
|
361
|
+
return ['开始日期', '至', '结束日期']
|
|
362
|
+
}
|
|
363
|
+
return datePickPlace
|
|
364
|
+
},
|
|
371
365
|
type() {
|
|
372
366
|
return this.$props.config.type
|
|
373
367
|
},
|
|
374
|
-
|
|
375
368
|
checkMax() {
|
|
376
369
|
let max = this.$props.config.max
|
|
377
370
|
return max ? max : this.$props.config.list.length
|
|
378
371
|
},
|
|
379
|
-
|
|
380
372
|
checkMin() {
|
|
381
373
|
let min = this.$props.config.min
|
|
382
374
|
return min < 0 || min == undefined || min == null ? 0 : min
|
|
383
375
|
},
|
|
376
|
+
isDatePick() {
|
|
377
|
+
const type = this.type
|
|
378
|
+
return type == 'time' || type == 'datetime' || type == 'daterange'
|
|
379
|
+
},
|
|
380
|
+
datePickType() {
|
|
381
|
+
const type = this.type
|
|
382
|
+
switch (type) {
|
|
383
|
+
case 'time':
|
|
384
|
+
return 'date'
|
|
385
|
+
case 'datetime':
|
|
386
|
+
return 'datetime'
|
|
387
|
+
case 'daterange':
|
|
388
|
+
return 'daterange'
|
|
389
|
+
default:
|
|
390
|
+
break
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
|
|
384
394
|
module: {
|
|
385
395
|
get() {
|
|
386
|
-
|
|
387
|
-
if (
|
|
388
|
-
|
|
389
|
-
|
|
396
|
+
const value = this.$props.value
|
|
397
|
+
if (this.isDatePick) {
|
|
398
|
+
const type = this.type
|
|
399
|
+
if (type == 'time' || type == 'datetime') {
|
|
400
|
+
return this.returnTimestamp(value)
|
|
401
|
+
} else if (type == 'daterange') {
|
|
402
|
+
const _value = this.returnDaterangeTimestamp(value)
|
|
403
|
+
return _value
|
|
390
404
|
}
|
|
391
405
|
}
|
|
392
|
-
|
|
393
|
-
return this.$props.value
|
|
406
|
+
return value
|
|
394
407
|
},
|
|
395
408
|
set(val) {
|
|
396
409
|
this.$emit('input', val)
|
|
397
|
-
if (this.$props.disableWatcher) {
|
|
398
|
-
this.triggerDisable(val)
|
|
399
|
-
}
|
|
400
410
|
},
|
|
401
411
|
},
|
|
402
412
|
},
|
|
@@ -407,6 +417,10 @@ export default {
|
|
|
407
417
|
} else {
|
|
408
418
|
this.isEdit = false
|
|
409
419
|
}
|
|
420
|
+
const type = this.$props.config.type
|
|
421
|
+
if (type != 'select') {
|
|
422
|
+
this.selectMounted = true
|
|
423
|
+
}
|
|
410
424
|
},
|
|
411
425
|
handleContent() {
|
|
412
426
|
if (this.$props.config.click) {
|
|
@@ -449,14 +463,7 @@ export default {
|
|
|
449
463
|
handleConfirm() {
|
|
450
464
|
this.isEdit = false
|
|
451
465
|
},
|
|
452
|
-
|
|
453
|
-
this.selectStore.loadData()
|
|
454
|
-
},
|
|
455
|
-
visibleChange(visible) {
|
|
456
|
-
if (!visible) return
|
|
457
|
-
if (this.selectData.length > 0) return
|
|
458
|
-
this.loadSelectData()
|
|
459
|
-
},
|
|
466
|
+
|
|
460
467
|
triggerDisable(val) {
|
|
461
468
|
let effects = this.$props.disableWatcher.effects
|
|
462
469
|
effects.forEach((item) => {
|
|
@@ -466,16 +473,56 @@ export default {
|
|
|
466
473
|
result: item.fn(val),
|
|
467
474
|
}
|
|
468
475
|
|
|
469
|
-
console.log(val)
|
|
470
476
|
this.$emit('disableWatcherResult', obj)
|
|
471
477
|
})
|
|
472
478
|
},
|
|
479
|
+
|
|
480
|
+
// 返回 *1000的时间戳
|
|
481
|
+
returnTimestamp(value) {
|
|
482
|
+
if (value) {
|
|
483
|
+
if (value.toString().length <= 10) {
|
|
484
|
+
return value * 1000
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
return value
|
|
488
|
+
},
|
|
489
|
+
|
|
490
|
+
// 返回daterange的时间戳
|
|
491
|
+
returnDaterangeTimestamp(timestampArray) {
|
|
492
|
+
if (timestampArray instanceof Array) {
|
|
493
|
+
return timestampArray.map((item) => {
|
|
494
|
+
return this.returnTimestamp(item)
|
|
495
|
+
})
|
|
496
|
+
}
|
|
497
|
+
return timestampArray
|
|
498
|
+
},
|
|
499
|
+
|
|
500
|
+
// 转换时间戳
|
|
501
|
+
filterTimestamp() {
|
|
502
|
+
const config = this.$props.config
|
|
503
|
+
const type = this.type
|
|
504
|
+
let format = config.format ? config.format : 'YYYY-MM-DD HH:mm:ss'
|
|
505
|
+
if (type != 'daterange') {
|
|
506
|
+
return FilterTime(this.module, format)
|
|
507
|
+
} else {
|
|
508
|
+
let timeStr = FilterTime(this.module[0], format)
|
|
509
|
+
timeStr += ` - ${this.datePickPlace[1]} - `
|
|
510
|
+
timeStr += FilterTime(this.module[1], format)
|
|
511
|
+
}
|
|
512
|
+
},
|
|
473
513
|
},
|
|
474
514
|
watch: {
|
|
475
515
|
form(newVal, oldVal) {
|
|
476
516
|
this.init()
|
|
477
517
|
},
|
|
518
|
+
|
|
519
|
+
module(newVal, oldVal) {
|
|
520
|
+
if (this.$props.disableWatcher) {
|
|
521
|
+
this.triggerDisable(newVal)
|
|
522
|
+
}
|
|
523
|
+
},
|
|
478
524
|
},
|
|
525
|
+
components: { BaseNumberInput, baseStoreSelect },
|
|
479
526
|
}
|
|
480
527
|
</script>
|
|
481
528
|
|
|
@@ -606,6 +653,10 @@ export default {
|
|
|
606
653
|
}
|
|
607
654
|
}
|
|
608
655
|
|
|
656
|
+
.radio {
|
|
657
|
+
background-color: var(--color-table-header) !important;
|
|
658
|
+
}
|
|
659
|
+
|
|
609
660
|
.content-value {
|
|
610
661
|
color: var(--font-color-ds) !important;
|
|
611
662
|
}
|
|
@@ -635,4 +686,15 @@ export default {
|
|
|
635
686
|
min-height: 24px;
|
|
636
687
|
}
|
|
637
688
|
}
|
|
689
|
+
|
|
690
|
+
/deep/ .el-textarea.is-disabled .el-textarea__inner {
|
|
691
|
+
background-color: var(--color-table-header) !important;
|
|
692
|
+
&:hover {
|
|
693
|
+
border-color: transparent !important;
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
/deep/ .el-radio-button__orig-radio:disabled:checked + .el-radio-button__inner {
|
|
698
|
+
background-color: var(--color-table-header) !important;
|
|
699
|
+
}
|
|
638
700
|
</style>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<div
|
|
12
12
|
:key="item.key"
|
|
13
13
|
v-for="item in module"
|
|
14
|
-
v-show="!item.renderHide"
|
|
14
|
+
v-show="!item.renderHide && !item.hide"
|
|
15
15
|
class="pro-form-item-content"
|
|
16
16
|
:class="[`chunk-${chunkLength}`]"
|
|
17
17
|
:style="{
|
|
@@ -21,9 +21,12 @@
|
|
|
21
21
|
<el-form-item
|
|
22
22
|
:prop="item.key"
|
|
23
23
|
:label="item.label"
|
|
24
|
+
v-if="formType != 'template'"
|
|
24
25
|
:class="[`${flexClass}`, size]"
|
|
25
26
|
>
|
|
26
|
-
<span slot="label" class="item-label">
|
|
27
|
+
<span slot="label" class="item-label lable-text">
|
|
28
|
+
{{ item.label }}
|
|
29
|
+
</span>
|
|
27
30
|
|
|
28
31
|
<template>
|
|
29
32
|
<pro_form_itemVue
|
|
@@ -43,10 +46,10 @@
|
|
|
43
46
|
<template slot="template" v-if="item.type == 'template'">
|
|
44
47
|
<slot :name="`form-${item.key}`" :scope="module"></slot>
|
|
45
48
|
</template>
|
|
46
|
-
<template slot="area" v-if="item.type == 'area'">
|
|
49
|
+
<template slot="area" v-else-if="item.type == 'area'">
|
|
47
50
|
<baseAreaVue
|
|
48
51
|
v-model="item.value"
|
|
49
|
-
:disable="item.disabled"
|
|
52
|
+
:disable="item.disabled || disabled"
|
|
50
53
|
:ref="`area-${item.key}`"
|
|
51
54
|
:style="{ width: `100%` }"
|
|
52
55
|
:class="[`form-item-${item.key}`]"
|
|
@@ -57,17 +60,36 @@
|
|
|
57
60
|
"
|
|
58
61
|
></baseAreaVue>
|
|
59
62
|
</template>
|
|
63
|
+
|
|
64
|
+
<template slot="numberUnit" v-else-if="item.type == 'numberUnit'">
|
|
65
|
+
<BaseNumberInput
|
|
66
|
+
:select="true"
|
|
67
|
+
:size="size"
|
|
68
|
+
v-model="item.value"
|
|
69
|
+
:maxlength="item.maxlength"
|
|
70
|
+
:select-store="item.useStore"
|
|
71
|
+
:disabled="item.disabled || disabled"
|
|
72
|
+
@selectChange="selectChange($event, item.linkKey)"
|
|
73
|
+
:link-value="findFormItemOfKey(item.linkKey).value"
|
|
74
|
+
></BaseNumberInput>
|
|
75
|
+
</template>
|
|
60
76
|
</pro_form_itemVue>
|
|
61
77
|
|
|
62
78
|
<baseUploadVue
|
|
63
79
|
v-model="item.value"
|
|
64
80
|
:max="formConfig.max"
|
|
81
|
+
:disabled="disabled"
|
|
82
|
+
@onDragEnd="onDragEnd"
|
|
65
83
|
v-if="formType == `upload`"
|
|
66
84
|
:uploadPath="item.uploadPath"
|
|
67
85
|
:class="[`form-item-${item.key}`]"
|
|
68
86
|
></baseUploadVue>
|
|
69
87
|
</template>
|
|
70
88
|
</el-form-item>
|
|
89
|
+
|
|
90
|
+
<template v-if="formType == 'template'">
|
|
91
|
+
<slot :name="formConfig.key"></slot>
|
|
92
|
+
</template>
|
|
71
93
|
</div>
|
|
72
94
|
</el-form>
|
|
73
95
|
<baseButtonHandleVue
|
|
@@ -93,18 +115,18 @@
|
|
|
93
115
|
</template>
|
|
94
116
|
|
|
95
117
|
<script>
|
|
96
|
-
import pro_form_itemVue from './pro_form_item.vue'
|
|
118
|
+
import pro_form_itemVue from './proFormItem/pro_form_item.vue'
|
|
97
119
|
import baseAreaVue from '../../base/baseArea/baseArea.vue'
|
|
98
120
|
import baseUploadVue from '../../base/baseUpload/baseUpload.vue'
|
|
99
121
|
import pro_formItem_skeletonVue from './pro_form-item_skeleton.vue'
|
|
100
122
|
import baseButtonHandleVue from '../../base/baseButtonHandle/baseButtonHandle.vue'
|
|
101
123
|
//
|
|
102
124
|
import { ArrayChunk } from '../../../utils/utils'
|
|
125
|
+
import BaseNumberInput from '../../base/baseNumberInput/index.vue'
|
|
103
126
|
export default {
|
|
104
127
|
name: 'baseForm',
|
|
105
128
|
data() {
|
|
106
129
|
return {
|
|
107
|
-
loading: true,
|
|
108
130
|
handleConfig: [],
|
|
109
131
|
chunkLength: null,
|
|
110
132
|
formItemWidth: null,
|
|
@@ -178,12 +200,18 @@ export default {
|
|
|
178
200
|
default: false,
|
|
179
201
|
},
|
|
180
202
|
|
|
203
|
+
loading: {
|
|
204
|
+
type: Boolean,
|
|
205
|
+
default: false,
|
|
206
|
+
},
|
|
207
|
+
|
|
181
208
|
footButtonText: { type: Array, default: () => ['取消', '确定'] },
|
|
182
209
|
},
|
|
183
210
|
components: {
|
|
184
211
|
baseAreaVue,
|
|
185
212
|
baseUploadVue,
|
|
186
213
|
pro_form_itemVue,
|
|
214
|
+
BaseNumberInput,
|
|
187
215
|
baseButtonHandleVue,
|
|
188
216
|
pro_formItem_skeletonVue,
|
|
189
217
|
},
|
|
@@ -294,7 +322,6 @@ export default {
|
|
|
294
322
|
}
|
|
295
323
|
},
|
|
296
324
|
submitVerifiData(params) {
|
|
297
|
-
console.log(params)
|
|
298
325
|
if (this.$props.rules) {
|
|
299
326
|
// element 验证单条表单修改
|
|
300
327
|
let confrim = true
|
|
@@ -342,7 +369,9 @@ export default {
|
|
|
342
369
|
}
|
|
343
370
|
let nodeScope = this.$refs.proFormWrap
|
|
344
371
|
let dom = nodeScope.querySelector(`.form-item-${firstKey}`)
|
|
345
|
-
dom
|
|
372
|
+
if (dom) {
|
|
373
|
+
dom.scrollIntoView()
|
|
374
|
+
}
|
|
346
375
|
},
|
|
347
376
|
|
|
348
377
|
async onSubmit() {
|
|
@@ -391,6 +420,8 @@ export default {
|
|
|
391
420
|
this.$set(formItem, 'renderHide', result)
|
|
392
421
|
} else if (type == 'disable') {
|
|
393
422
|
this.$set(formItem, 'disabled', result)
|
|
423
|
+
} else if (type == 'template') {
|
|
424
|
+
formItem.type = result
|
|
394
425
|
}
|
|
395
426
|
}
|
|
396
427
|
}
|
|
@@ -400,15 +431,32 @@ export default {
|
|
|
400
431
|
const { labelWidth } = this.$props
|
|
401
432
|
this.formItemWidth = `calc(100% - ${labelWidth}) !important`
|
|
402
433
|
},
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
434
|
+
|
|
435
|
+
onDragEnd() {
|
|
436
|
+
this.$emit('onDragEnd')
|
|
437
|
+
},
|
|
438
|
+
|
|
439
|
+
findFormItemOfKey(key) {
|
|
440
|
+
let index = this.module.findIndex((item) => {
|
|
441
|
+
return item.key == key
|
|
442
|
+
})
|
|
443
|
+
if (index > -1) {
|
|
444
|
+
return this.module[index]
|
|
410
445
|
}
|
|
411
446
|
},
|
|
447
|
+
selectChange(value, key) {
|
|
448
|
+
let item = this.findFormItemOfKey(key)
|
|
449
|
+
item.value = value
|
|
450
|
+
},
|
|
451
|
+
},
|
|
452
|
+
watch: {
|
|
453
|
+
// module: {
|
|
454
|
+
// deep: true,
|
|
455
|
+
// handler(newVal, oldVal) {
|
|
456
|
+
// console.log(newVal)
|
|
457
|
+
// // this.$refs.form.$emit('el.form.change')
|
|
458
|
+
// },
|
|
459
|
+
// },
|
|
412
460
|
},
|
|
413
461
|
}
|
|
414
462
|
</script>
|
|
@@ -455,8 +503,8 @@ export default {
|
|
|
455
503
|
/deep/ .el-form-item__content {
|
|
456
504
|
width: 100% !important;
|
|
457
505
|
box-sizing: border-box;
|
|
458
|
-
padding-right: var(--padding-5);
|
|
459
506
|
margin-left: 0px !important;
|
|
507
|
+
padding-right: calc(var(--padding-4) * 2) !important;
|
|
460
508
|
}
|
|
461
509
|
.flex-row {
|
|
462
510
|
display: flex;
|
|
@@ -491,5 +539,11 @@ export default {
|
|
|
491
539
|
padding-top: 0px;
|
|
492
540
|
}
|
|
493
541
|
}
|
|
542
|
+
|
|
543
|
+
.lable-text {
|
|
544
|
+
color: var(--form-label-color) !important;
|
|
545
|
+
font-weight: 400 !important;
|
|
546
|
+
font-size: var(--font-size-base);
|
|
547
|
+
}
|
|
494
548
|
}
|
|
495
549
|
</style>
|