tianheng-ui 0.1.44 → 0.1.45
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/tianheng-ui.js +13 -13
- package/package.json +1 -1
- package/packages/FormMaking/GenerateForm.vue +93 -84
- package/packages/FormMaking/GenerateFormItem.vue +40 -130
- package/packages/FormMaking/WidgetConfig.vue +123 -59
- package/packages/FormMaking/WidgetFormItem.vue +1 -1
- package/packages/FormMaking/WidgetTools.vue +34 -9
- package/packages/FormMaking/custom/config.js +6 -2
- package/packages/FormMaking/custom/configs/button.vue +2 -2
- package/packages/FormMaking/custom/configs/cascader.vue +2 -2
- package/packages/FormMaking/custom/configs/checkbox.vue +2 -2
- package/packages/FormMaking/custom/configs/grid.vue +12 -0
- package/packages/FormMaking/custom/configs/list.vue +18 -0
- package/packages/FormMaking/custom/configs/radio.vue +2 -2
- package/packages/FormMaking/custom/configs/select.vue +2 -2
- package/packages/FormMaking/custom/configs/tabs.vue +2 -2
- package/packages/FormMaking/custom/configs/upload.vue +2 -2
- package/packages/FormMaking/custom/items/alliance.vue +2 -2
- package/packages/FormMaking/custom/items/blank_dev.vue +2 -2
- package/packages/FormMaking/custom/items/blank_pro.vue +2 -2
- package/packages/FormMaking/custom/items/button.vue +2 -2
- package/packages/FormMaking/custom/items/cascader.vue +2 -2
- package/packages/FormMaking/custom/items/cell.vue +2 -2
- package/packages/FormMaking/custom/items/checkbox.vue +2 -2
- package/packages/FormMaking/custom/items/color.vue +2 -2
- package/packages/FormMaking/custom/items/date.vue +2 -2
- package/packages/FormMaking/custom/items/divider.vue +2 -2
- package/packages/FormMaking/custom/items/editor.vue +2 -2
- package/packages/FormMaking/custom/items/filler.vue +2 -2
- package/packages/FormMaking/custom/items/grid_dev.vue +2 -2
- package/packages/FormMaking/custom/items/grid_pro.vue +18 -4
- package/packages/FormMaking/custom/items/image.vue +2 -2
- package/packages/FormMaking/custom/items/input.vue +2 -2
- package/packages/FormMaking/custom/items/list_dev.vue +2 -2
- package/packages/FormMaking/custom/items/number.vue +2 -2
- package/packages/FormMaking/custom/items/radio.vue +2 -2
- package/packages/FormMaking/custom/items/rate.vue +2 -2
- package/packages/FormMaking/custom/items/select.vue +2 -2
- package/packages/FormMaking/custom/items/slider.vue +2 -2
- package/packages/FormMaking/custom/items/switch.vue +2 -2
- package/packages/FormMaking/custom/items/tableH5_dev.vue +2 -2
- package/packages/FormMaking/custom/items/tableH5_pro.vue +26 -18
- package/packages/FormMaking/custom/items/table_dev.vue +2 -2
- package/packages/FormMaking/custom/items/table_pro.vue +10 -5
- package/packages/FormMaking/custom/items/tabs_dev.vue +2 -2
- package/packages/FormMaking/custom/items/tabs_pro.vue +14 -9
- package/packages/FormMaking/custom/items/text.vue +2 -2
- package/packages/FormMaking/custom/items/textarea.vue +2 -2
- package/packages/FormMaking/custom/items/time.vue +2 -2
- package/packages/FormMaking/custom/items/upload.vue +2 -2
- package/packages/FormMaking/custom/mixins/index.js +69 -13
- package/packages/FormMaking/index.vue +62 -57
- package/packages/TableMaking/custom/config.js +4 -1
- package/packages/TableMaking/custom/items/table/index-pc.vue +3 -3
- package/packages/TableMaking/index.vue +44 -6
- package/packages/TableMaking/widgetConfig.vue +55 -27
- package/packages/TableMaking/widgetTable.vue +4 -4
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
<div v-if="activeTab.value === 'field'">
|
16
16
|
<el-form
|
17
|
-
v-if="data.
|
17
|
+
v-if="data.key"
|
18
18
|
:model="data"
|
19
19
|
label-position="left"
|
20
20
|
label-width="80px"
|
@@ -48,7 +48,10 @@
|
|
48
48
|
</el-option>
|
49
49
|
</el-select>
|
50
50
|
</el-form-item>
|
51
|
-
<el-form-item
|
51
|
+
<el-form-item
|
52
|
+
v-if="config.fields.type === 'api'"
|
53
|
+
:prop="['grid'].includes(data.type) ? '' : 'model'"
|
54
|
+
>
|
52
55
|
<el-tooltip
|
53
56
|
slot="label"
|
54
57
|
effect="light"
|
@@ -57,21 +60,31 @@
|
|
57
60
|
>
|
58
61
|
<span style="color: #409EFF;">字段标识</span>
|
59
62
|
</el-tooltip>
|
60
|
-
<el-
|
63
|
+
<el-cascader
|
64
|
+
v-model="data.model"
|
65
|
+
:options="getFieldsOptions"
|
66
|
+
:props="{
|
67
|
+
value: 'alias',
|
68
|
+
checkStrictly: true,
|
69
|
+
emitPath: false
|
70
|
+
}"
|
71
|
+
clearable
|
72
|
+
></el-cascader>
|
73
|
+
<!-- <el-select
|
61
74
|
v-model="data.model"
|
62
75
|
style="width:100%;"
|
63
76
|
placeholder="请选择字段"
|
64
77
|
>
|
65
78
|
<el-option
|
66
|
-
v-for="item in
|
67
|
-
:key="item.
|
79
|
+
v-for="item in getFieldsOptions"
|
80
|
+
:key="item.alias"
|
68
81
|
:label="item.label"
|
69
|
-
:value="item.
|
82
|
+
:value="item.alias"
|
70
83
|
>
|
71
84
|
</el-option>
|
72
|
-
</el-select>
|
85
|
+
</el-select> -->
|
73
86
|
</el-form-item>
|
74
|
-
<el-form-item prop="model">
|
87
|
+
<el-form-item :prop="['grid'].includes(data.type) ? '' : 'model'">
|
75
88
|
<el-tooltip
|
76
89
|
slot="label"
|
77
90
|
effect="light"
|
@@ -87,8 +100,7 @@
|
|
87
100
|
<component
|
88
101
|
:widget="data"
|
89
102
|
:config="config"
|
90
|
-
:
|
91
|
-
:apiConfig="apiConfig"
|
103
|
+
:apiOptions="apiOptions"
|
92
104
|
:is="compsData[data.type].content"
|
93
105
|
></component>
|
94
106
|
|
@@ -146,7 +158,7 @@
|
|
146
158
|
>
|
147
159
|
<el-collapse v-model="collapseValue">
|
148
160
|
<el-collapse-item title="表单配置" name="group-form">
|
149
|
-
<el-form-item prop="
|
161
|
+
<el-form-item prop="fields.type" required>
|
150
162
|
<el-tooltip
|
151
163
|
slot="label"
|
152
164
|
effect="light"
|
@@ -155,41 +167,49 @@
|
|
155
167
|
>
|
156
168
|
<span style="color: #409EFF;">字段类型</span>
|
157
169
|
</el-tooltip>
|
158
|
-
<el-radio-group v-model="config.
|
170
|
+
<el-radio-group v-model="config.fields.type">
|
159
171
|
<el-radio-button label="custom">自定义</el-radio-button>
|
160
|
-
<el-radio-button label="
|
172
|
+
<el-radio-button label="api">接口导入</el-radio-button>
|
161
173
|
</el-radio-group>
|
162
174
|
</el-form-item>
|
163
|
-
<
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
effect="light"
|
171
|
-
content="使用接口的出参配置可选字段"
|
172
|
-
placement="top"
|
173
|
-
>
|
174
|
-
<span style="color: #409EFF;">字段接口</span>
|
175
|
-
</el-tooltip>
|
176
|
-
<el-select
|
177
|
-
v-model="config.fieldsApi"
|
178
|
-
style="width:100%"
|
179
|
-
clearable
|
180
|
-
placeholder="请选择"
|
181
|
-
no-data-text="暂无接口,请前往【数据源模块】创建"
|
182
|
-
@change="handleFieldsApiChange"
|
183
|
-
>
|
184
|
-
<el-option
|
185
|
-
v-for="item in Object.values(apiConfig)"
|
186
|
-
:key="item.id"
|
187
|
-
:label="item.label"
|
188
|
-
:value="item.id"
|
175
|
+
<template v-if="config.fields.type === 'api'">
|
176
|
+
<el-form-item>
|
177
|
+
<el-tooltip
|
178
|
+
slot="label"
|
179
|
+
effect="light"
|
180
|
+
content="开启后,列表接口值修改,会触发 remote-params 回调,用于从服务器查询字段,"
|
181
|
+
placement="top"
|
189
182
|
>
|
190
|
-
|
191
|
-
|
192
|
-
|
183
|
+
<span style="color: #409EFF;">远程字段</span>
|
184
|
+
</el-tooltip>
|
185
|
+
<el-switch v-model="config.fields.remote"> </el-switch>
|
186
|
+
</el-form-item>
|
187
|
+
<el-form-item prop="fields.api" required>
|
188
|
+
<el-tooltip
|
189
|
+
slot="label"
|
190
|
+
effect="light"
|
191
|
+
content="使用接口的出参配置可选字段"
|
192
|
+
placement="top"
|
193
|
+
>
|
194
|
+
<span style="color: #409EFF;">字段接口</span>
|
195
|
+
</el-tooltip>
|
196
|
+
<el-select
|
197
|
+
v-model="config.fields.api"
|
198
|
+
style="width:100%"
|
199
|
+
clearable
|
200
|
+
placeholder="请选择"
|
201
|
+
no-data-text="暂无接口,请前往【数据源模块】创建"
|
202
|
+
>
|
203
|
+
<el-option
|
204
|
+
v-for="item in apiOptions"
|
205
|
+
:key="item.id"
|
206
|
+
:label="item.name"
|
207
|
+
:value="item.id"
|
208
|
+
>
|
209
|
+
</el-option>
|
210
|
+
</el-select>
|
211
|
+
</el-form-item>
|
212
|
+
</template>
|
193
213
|
<el-form-item label="表单标题" prop="title" required>
|
194
214
|
<el-input
|
195
215
|
v-model="config.title"
|
@@ -232,9 +252,9 @@
|
|
232
252
|
no-data-text="暂无接口,请前往【接口模块】创建"
|
233
253
|
>
|
234
254
|
<el-option
|
235
|
-
v-for="item in
|
255
|
+
v-for="item in apiOptions"
|
236
256
|
:key="item.id"
|
237
|
-
:label="item.
|
257
|
+
:label="item.name"
|
238
258
|
:value="item.id"
|
239
259
|
>
|
240
260
|
</el-option>
|
@@ -381,9 +401,7 @@
|
|
381
401
|
</div>
|
382
402
|
</div>
|
383
403
|
<span slot="footer" class="dialog-footer">
|
384
|
-
<el-button size="small" @click="dialog.show = false"
|
385
|
-
>取 消</el-button
|
386
|
-
>
|
404
|
+
<el-button size="small" @click="dialog.show = false">取 消</el-button>
|
387
405
|
<el-button type="primary" size="small" @click="handleEventDialogAffirm"
|
388
406
|
>保 存</el-button
|
389
407
|
>
|
@@ -409,8 +427,7 @@ export default {
|
|
409
427
|
return {};
|
410
428
|
}
|
411
429
|
},
|
412
|
-
|
413
|
-
apiConfig: Object
|
430
|
+
apiOptions: Array
|
414
431
|
},
|
415
432
|
data() {
|
416
433
|
return {
|
@@ -431,6 +448,7 @@ export default {
|
|
431
448
|
"group-attributes",
|
432
449
|
"group-style_form"
|
433
450
|
],
|
451
|
+
fieldsData: { inParams: [], outParams: [] },
|
434
452
|
dialog: {
|
435
453
|
show: false,
|
436
454
|
data: [],
|
@@ -472,7 +490,7 @@ export default {
|
|
472
490
|
model: [
|
473
491
|
{ required: true, message: "请填选组件字段", trigger: "change" }
|
474
492
|
],
|
475
|
-
|
493
|
+
"fields.api": [
|
476
494
|
{ required: true, message: "请选择字段接口", trigger: "change" }
|
477
495
|
],
|
478
496
|
title: [
|
@@ -481,6 +499,19 @@ export default {
|
|
481
499
|
}
|
482
500
|
};
|
483
501
|
},
|
502
|
+
computed: {
|
503
|
+
getFieldsOptions() {
|
504
|
+
return this.fieldsData.inParams;
|
505
|
+
}
|
506
|
+
},
|
507
|
+
watch: {
|
508
|
+
"config.fields.api"(val) {
|
509
|
+
this.handleFieldsApiChange(val);
|
510
|
+
},
|
511
|
+
apiOptions() {
|
512
|
+
this.handleFieldsApiChange(this.config.fields.api);
|
513
|
+
}
|
514
|
+
},
|
484
515
|
created() {
|
485
516
|
this.activeTab = this.tabsMenus[1];
|
486
517
|
const keys = Object.keys(this.compsData);
|
@@ -515,10 +546,7 @@ export default {
|
|
515
546
|
};
|
516
547
|
},
|
517
548
|
handleEventDialogDelete(item, index) {
|
518
|
-
if (
|
519
|
-
this.dialog.active &&
|
520
|
-
item.key === this.dialog.active.key
|
521
|
-
) {
|
549
|
+
if (this.dialog.active && item.key === this.dialog.active.key) {
|
522
550
|
this.dialog.active = null;
|
523
551
|
}
|
524
552
|
this.dialog.data.splice(index, 1);
|
@@ -541,8 +569,46 @@ export default {
|
|
541
569
|
const config = deepClone(this.compsData[val].config);
|
542
570
|
this.$emit("update", config);
|
543
571
|
},
|
544
|
-
handleFieldsApiChange() {
|
545
|
-
this
|
572
|
+
handleFieldsApiChange(apiId) {
|
573
|
+
if (!this.apiOptions.length || !this.config.fields.api) {
|
574
|
+
this.fieldsData = { inParams: [], outParams: [] };
|
575
|
+
return;
|
576
|
+
}
|
577
|
+
const api = this.apiOptions.filter(item => {
|
578
|
+
return item.id === apiId;
|
579
|
+
})[0];
|
580
|
+
if (!api) {
|
581
|
+
this.$message.warning("未知的字段借口,请检查配置信息");
|
582
|
+
this.fieldsData = { inParams: [], outParams: [] };
|
583
|
+
return;
|
584
|
+
}
|
585
|
+
|
586
|
+
const initParams = (paramsList, pAlias) => {
|
587
|
+
paramsList.forEach(item => {
|
588
|
+
item.elType = "input";
|
589
|
+
item.align = "left";
|
590
|
+
item.pAlias = pAlias ? `${pAlias}.${item.alias}` : item.alias;
|
591
|
+
if (item.children && item.children.length) {
|
592
|
+
initParams(item.children, item.pAlias);
|
593
|
+
}
|
594
|
+
});
|
595
|
+
};
|
596
|
+
if (this.config.fields.remote) {
|
597
|
+
const callback = res => {
|
598
|
+
api.inParams = res.inParams;
|
599
|
+
api.outParams = res.outParams;
|
600
|
+
this.fieldsData.inParams = deepClone(res.inParams) || [];
|
601
|
+
initParams(this.fieldsData.inParams);
|
602
|
+
this.fieldsData.outParams = deepClone(res.outParams) || [];
|
603
|
+
initParams(this.fieldsData.outParams);
|
604
|
+
};
|
605
|
+
this.$emit("remote-params", apiId, callback);
|
606
|
+
} else {
|
607
|
+
this.fieldsData.inParams = deepClone(api.inParams) || [];
|
608
|
+
initParams(this.fieldsData.inParams);
|
609
|
+
this.fieldsData.outParams = deepClone(api.outParams) || [];
|
610
|
+
initParams(this.fieldsData.outParams);
|
611
|
+
}
|
546
612
|
},
|
547
613
|
formValidate() {
|
548
614
|
return new Promise((resolve, reject) => {
|
@@ -550,9 +616,7 @@ export default {
|
|
550
616
|
this.$refs.formRef.validate(valid => {
|
551
617
|
resolve(valid);
|
552
618
|
});
|
553
|
-
} else
|
554
|
-
reject();
|
555
|
-
}
|
619
|
+
} else reject();
|
556
620
|
});
|
557
621
|
}
|
558
622
|
}
|
@@ -165,7 +165,6 @@
|
|
165
165
|
<generate-form
|
166
166
|
v-if="dialog.show"
|
167
167
|
:config="formData"
|
168
|
-
:value="formValue"
|
169
168
|
:oauthConfig="oauthConfig"
|
170
169
|
:remoteData="remoteData"
|
171
170
|
:slotKeys="slotKeys"
|
@@ -189,7 +188,6 @@
|
|
189
188
|
v-if="dialog.show"
|
190
189
|
class="box"
|
191
190
|
:config="formData"
|
192
|
-
:value="formValue"
|
193
191
|
:oauthConfig="oauthConfig"
|
194
192
|
:remote="remoteData"
|
195
193
|
insite="true"
|
@@ -239,7 +237,6 @@ export default {
|
|
239
237
|
basicComponents: Array,
|
240
238
|
layoutComponents: Array,
|
241
239
|
formData: Object,
|
242
|
-
formValue: Object,
|
243
240
|
oauthConfig: Object,
|
244
241
|
apiOptions: Array
|
245
242
|
},
|
@@ -305,12 +302,7 @@ export default {
|
|
305
302
|
let workbook = XLSX.read(data, { type: "binary" }); //解析二进制格式数据
|
306
303
|
let worksheet = workbook.Sheets[workbook.SheetNames[0]]; //获取第一个Sheet
|
307
304
|
|
308
|
-
// console.log("XLSX.read => \n", workbook);
|
309
|
-
// console.log("sheet_to_json => \n", XLSX.utils.sheet_to_json(worksheet));
|
310
|
-
// console.log("sheet_to_csv => \n", XLSX.utils.sheet_to_csv(worksheet));
|
311
|
-
// console.log("sheet_to_txt => \n", XLSX.utils.sheet_to_txt(worksheet));
|
312
305
|
const xlsxDom = this.parseDom(XLSX.utils.sheet_to_html(worksheet));
|
313
|
-
// console.log("sheet_to_html => \n", xlsxDom);
|
314
306
|
const rowsDom = xlsxDom.getElementsByTagName("tr");
|
315
307
|
let rowSpan = 0;
|
316
308
|
for (let i = 0; i < rowsDom[0].childNodes.length; i++) {
|
@@ -321,7 +313,7 @@ export default {
|
|
321
313
|
|
322
314
|
let config = {
|
323
315
|
list: [],
|
324
|
-
config: this.baseConfig
|
316
|
+
config: this.baseConfig.config
|
325
317
|
};
|
326
318
|
|
327
319
|
for (const row of rowsDom) {
|
@@ -363,6 +355,11 @@ export default {
|
|
363
355
|
data.options.defaultValue = valueDom.innerText;
|
364
356
|
data.key = colKey;
|
365
357
|
data.model = "input_" + colKey;
|
358
|
+
data.events = {
|
359
|
+
onChange: "",
|
360
|
+
onFocus: "",
|
361
|
+
onBlur: ""
|
362
|
+
};
|
366
363
|
grid.options.columns.push({ span: span, list: [data] });
|
367
364
|
} else {
|
368
365
|
span = titleDom.colSpan * colSpan;
|
@@ -386,6 +383,7 @@ export default {
|
|
386
383
|
config.list.push(data);
|
387
384
|
}
|
388
385
|
}
|
386
|
+
|
389
387
|
this.handleClick("import-excel", config);
|
390
388
|
}
|
391
389
|
},
|
@@ -439,6 +437,7 @@ export default {
|
|
439
437
|
this.$refs.generateForm.reset();
|
440
438
|
},
|
441
439
|
handleDialogOpen(action) {
|
440
|
+
this.handleNetworkConfig();
|
442
441
|
let data = "";
|
443
442
|
switch (action) {
|
444
443
|
case "generateJson":
|
@@ -493,6 +492,32 @@ export default {
|
|
493
492
|
default:
|
494
493
|
break;
|
495
494
|
}
|
495
|
+
},
|
496
|
+
handleNetworkConfig() {
|
497
|
+
const fieldsApi = {
|
498
|
+
fields: this.formData.config.fields.api,
|
499
|
+
mounted: this.formData.config.mounted.api
|
500
|
+
};
|
501
|
+
const initList = list => {
|
502
|
+
for (const item of list) {
|
503
|
+
if (item.type === "grid" || item.type === "tabs") {
|
504
|
+
item.options.columns.forEach(e => {
|
505
|
+
initList(e.list);
|
506
|
+
});
|
507
|
+
} else if (item.type === "table" || item.type === "tableH5") {
|
508
|
+
initList(item.options.columns);
|
509
|
+
} else if (item.options.remote) {
|
510
|
+
fieldsApi[item.model] = item.options.remoteFunc;
|
511
|
+
}
|
512
|
+
}
|
513
|
+
};
|
514
|
+
initList(this.formData.list);
|
515
|
+
const apis = Object.values(fieldsApi);
|
516
|
+
const network = {};
|
517
|
+
this.apiOptions.map(item => {
|
518
|
+
if (apis.includes(item.id)) network[item.id] = item;
|
519
|
+
});
|
520
|
+
this.formData.config.network = network;
|
496
521
|
}
|
497
522
|
}
|
498
523
|
};
|
@@ -735,6 +735,7 @@ export const layoutComponents = [
|
|
735
735
|
list: []
|
736
736
|
}
|
737
737
|
],
|
738
|
+
isEntity: false,
|
738
739
|
hideLabel: true
|
739
740
|
},
|
740
741
|
events: {},
|
@@ -803,8 +804,11 @@ export const templateComponents = [];
|
|
803
804
|
export const baseConfig = {
|
804
805
|
list: [],
|
805
806
|
config: {
|
806
|
-
|
807
|
-
|
807
|
+
fields: {
|
808
|
+
type: "api",
|
809
|
+
api: "",
|
810
|
+
remote: false
|
811
|
+
},
|
808
812
|
ui: "element",
|
809
813
|
title: "",
|
810
814
|
width: "",
|
@@ -68,6 +68,18 @@
|
|
68
68
|
<el-option value="bottom" label="底部对齐"></el-option>
|
69
69
|
</el-select>
|
70
70
|
</el-form-item>
|
71
|
+
|
72
|
+
<el-form-item>
|
73
|
+
<el-tooltip
|
74
|
+
slot="label"
|
75
|
+
effect="light"
|
76
|
+
content="用于包装数据结构,开启后对布局中的组件数据做对象处理"
|
77
|
+
placement="top"
|
78
|
+
>
|
79
|
+
<span style="color: #409EFF;">实体结构</span>
|
80
|
+
</el-tooltip>
|
81
|
+
<el-switch v-model="widget.options.isEntity"> </el-switch>
|
82
|
+
</el-form-item>
|
71
83
|
</el-collapse-item>
|
72
84
|
</div>
|
73
85
|
</template>
|
@@ -29,12 +29,12 @@
|
|
29
29
|
</template>
|
30
30
|
|
31
31
|
<script>
|
32
|
-
import { itemsComponent } from "../mixins/index";
|
32
|
+
import { itemsComponent, eventMixin } from "../mixins/index";
|
33
33
|
import Draggable from "vuedraggable";
|
34
34
|
import WidgetFormItem from "../../WidgetFormItem.vue";
|
35
35
|
export default {
|
36
36
|
components: { Draggable, WidgetFormItem },
|
37
|
-
mixins: [itemsComponent],
|
37
|
+
mixins: [itemsComponent, eventMixin],
|
38
38
|
data() {
|
39
39
|
return {
|
40
40
|
selectWidget: {}
|
@@ -19,10 +19,10 @@
|
|
19
19
|
</template>
|
20
20
|
|
21
21
|
<script>
|
22
|
-
import { itemsComponent } from "../mixins/index";
|
22
|
+
import { itemsComponent, eventMixin } from "../mixins/index";
|
23
23
|
import * as Axios from "lib/theme-chalk/js/axios";
|
24
24
|
export default {
|
25
|
-
mixins: [itemsComponent],
|
25
|
+
mixins: [itemsComponent, eventMixin],
|
26
26
|
data() {
|
27
27
|
return {
|
28
28
|
axios: null
|
@@ -24,9 +24,9 @@
|
|
24
24
|
</template>
|
25
25
|
|
26
26
|
<script>
|
27
|
-
import { itemsComponent } from "../mixins/index";
|
27
|
+
import { itemsComponent, eventMixin } from "../mixins/index";
|
28
28
|
export default {
|
29
|
-
mixins: [itemsComponent]
|
29
|
+
mixins: [itemsComponent, eventMixin]
|
30
30
|
};
|
31
31
|
</script>
|
32
32
|
|
@@ -47,9 +47,9 @@
|
|
47
47
|
</template>
|
48
48
|
|
49
49
|
<script>
|
50
|
-
import { itemsComponent } from "../mixins/index";
|
50
|
+
import { itemsComponent, eventMixin } from "../mixins/index";
|
51
51
|
export default {
|
52
|
-
mixins: [itemsComponent]
|
52
|
+
mixins: [itemsComponent, eventMixin]
|
53
53
|
};
|
54
54
|
</script>
|
55
55
|
|
@@ -10,9 +10,9 @@
|
|
10
10
|
</template>
|
11
11
|
|
12
12
|
<script>
|
13
|
-
import { itemsComponent } from "../mixins/index";
|
13
|
+
import { itemsComponent, eventMixin } from "../mixins/index";
|
14
14
|
export default {
|
15
|
-
mixins: [itemsComponent]
|
15
|
+
mixins: [itemsComponent, eventMixin]
|
16
16
|
};
|
17
17
|
</script>
|
18
18
|
|