tianheng-ui 0.1.11 → 0.1.14
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/theme-chalk/js/axios.js +3 -2
- package/lib/theme-chalk/js/util.js +23 -0
- package/lib/theme-chalk/styles/feature.scss +15 -0
- package/lib/tianheng-ui.js +13 -14
- package/package.json +1 -1
- package/packages/FormMaking/GenerateForm.vue +6 -1
- package/packages/FormMaking/GenerateFormItem.vue +9 -5
- package/packages/FormMaking/GenerateFormItemH5.vue +1 -1
- package/packages/FormMaking/WidgetConfig.vue +39 -51
- package/packages/FormMaking/WidgetForm.vue +9 -10
- package/packages/FormMaking/WidgetFormItem.vue +2 -2
- package/packages/FormMaking/WidgetSelect.vue +0 -1
- package/packages/FormMaking/WidgetTools.vue +539 -0
- package/packages/FormMaking/config/index.js +6 -0
- package/packages/FormMaking/custom/config.js +21 -24
- package/packages/FormMaking/custom/configs/button.vue +25 -25
- package/packages/FormMaking/custom/configs/cascader.vue +7 -7
- package/packages/FormMaking/custom/configs/checkbox.vue +23 -22
- package/packages/FormMaking/custom/configs/color.vue +3 -3
- package/packages/FormMaking/custom/configs/date.vue +3 -3
- package/packages/FormMaking/custom/configs/input.vue +3 -3
- package/packages/FormMaking/custom/configs/number.vue +3 -3
- package/packages/FormMaking/custom/configs/radio.vue +23 -19
- package/packages/FormMaking/custom/configs/rate.vue +3 -3
- package/packages/FormMaking/custom/configs/select.vue +25 -20
- package/packages/FormMaking/custom/configs/slider.vue +3 -3
- package/packages/FormMaking/custom/configs/switch.vue +3 -3
- package/packages/FormMaking/custom/configs/tabs.vue +12 -17
- package/packages/FormMaking/custom/configs/textarea.vue +3 -3
- package/packages/FormMaking/custom/configs/time.vue +3 -3
- package/packages/FormMaking/custom/configs/upload.vue +5 -5
- package/packages/FormMaking/custom/items/button.vue +35 -1
- package/packages/FormMaking/custom/items/checkbox.vue +1 -1
- package/packages/FormMaking/custom/items/date.vue +1 -0
- package/packages/FormMaking/custom/items/grid_dev.vue +3 -3
- package/packages/FormMaking/custom/items/tableH5_dev.vue +3 -3
- package/packages/FormMaking/custom/items/table_dev.vue +3 -3
- package/packages/FormMaking/custom/items/tabs_dev.vue +3 -3
- package/packages/FormMaking/custom/mixins/index.js +12 -12
- package/packages/FormMaking/index.vue +93 -469
- package/packages/FormMaking/styles/index.scss +1 -21
- package/packages/FormMaking/util/index.js +24 -0
- package/packages/FormMaking/util/request.js +9 -12
- package/packages/TableMaking/WidgetTools.vue +246 -0
- package/packages/TableMaking/custom/config.js +110 -0
- package/packages/TableMaking/generateTable.vue +2 -2
- package/packages/TableMaking/index.vue +62 -157
- package/packages/TableMaking/util/index.js +54 -1
- package/packages/TableMaking/widgetConfig.vue +261 -178
- package/packages/TableMaking/widgetTable.vue +16 -46
- package/packages/index.js +5 -4
@@ -425,9 +425,62 @@ const tableConfig = {
|
|
425
425
|
}
|
426
426
|
}
|
427
427
|
}
|
428
|
-
};
|
428
|
+
};
|
429
429
|
|
430
430
|
export const tableItemConfig = key => {
|
431
431
|
const config = tableConfig[key] || null;
|
432
432
|
return JSON.parse(JSON.stringify(config));
|
433
433
|
};
|
434
|
+
|
435
|
+
export const deepClone = (obj, clone) => {
|
436
|
+
//判断拷贝的要进行深拷贝的是数组还是对象,是数组的话进行数组拷贝,对象的话进行对象拷贝
|
437
|
+
const toString = Object.prototype.toString;
|
438
|
+
toString.call(obj) === "[object Array]"
|
439
|
+
? (clone = clone || [])
|
440
|
+
: (clone = clone || {});
|
441
|
+
for (const i in obj) {
|
442
|
+
if (typeof obj[i] === "object" && obj[i] !== null) {
|
443
|
+
// 要考虑深复制问题了
|
444
|
+
if (Array.isArray(obj[i])) {
|
445
|
+
// 这是数组
|
446
|
+
clone[i] = [];
|
447
|
+
} else {
|
448
|
+
// 这是对象
|
449
|
+
clone[i] = {};
|
450
|
+
}
|
451
|
+
deepClone(obj[i], clone[i]);
|
452
|
+
} else {
|
453
|
+
clone[i] = obj[i];
|
454
|
+
}
|
455
|
+
}
|
456
|
+
return clone;
|
457
|
+
};
|
458
|
+
|
459
|
+
export const deepMerge = (target, other) => {
|
460
|
+
const targetToString = Object.prototype.toString.call(target);
|
461
|
+
const otherToString = Object.prototype.toString.call(target);
|
462
|
+
if (
|
463
|
+
targetToString === "[object Object]" &&
|
464
|
+
otherToString === "[object Object]"
|
465
|
+
) {
|
466
|
+
for (let [key, val] of Object.entries(other)) {
|
467
|
+
if (!target[key]) {
|
468
|
+
target[key] = val;
|
469
|
+
} else {
|
470
|
+
target[key] = deepMerge(target[key], val);
|
471
|
+
}
|
472
|
+
}
|
473
|
+
} else if (
|
474
|
+
targetToString === "[object Array]" &&
|
475
|
+
otherToString === "[object Array]"
|
476
|
+
) {
|
477
|
+
for (let [key, val] of Object.entries(other)) {
|
478
|
+
if (target[key]) {
|
479
|
+
target[key] = deepMerge(target[key], val);
|
480
|
+
} else {
|
481
|
+
target.push(val);
|
482
|
+
}
|
483
|
+
}
|
484
|
+
}
|
485
|
+
return target;
|
486
|
+
};
|
@@ -13,39 +13,39 @@
|
|
13
13
|
</div>
|
14
14
|
<div v-if="activeTab.value === 0" class="fields">
|
15
15
|
<el-checkbox
|
16
|
-
:indeterminate="search.isIndeterminate"
|
17
16
|
v-model="search.isCheckAll"
|
18
|
-
|
17
|
+
:indeterminate="search.isIndeterminate"
|
18
|
+
@change="val => handleCheckAllChange(val, 'search')"
|
19
19
|
>全选</el-checkbox
|
20
20
|
>
|
21
|
-
<el-checkbox
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
>
|
28
|
-
|
21
|
+
<el-checkbox
|
22
|
+
v-for="item in fields"
|
23
|
+
:label="item.prop"
|
24
|
+
:key="`search-${item.prop}-${item.isSearch}`"
|
25
|
+
:checked="item.isSearch"
|
26
|
+
@change="val => handleCheckboxChange(val, 'search', item)"
|
27
|
+
>{{ item.label }}</el-checkbox
|
28
|
+
>
|
29
29
|
</div>
|
30
30
|
<div v-if="activeTab.value === 1" class="fields">
|
31
31
|
<el-checkbox
|
32
|
-
:indeterminate="table.isIndeterminate"
|
33
32
|
v-model="table.isCheckAll"
|
34
|
-
|
33
|
+
:indeterminate="table.isIndeterminate"
|
34
|
+
@change="val => handleCheckAllChange(val, 'table')"
|
35
35
|
>全选</el-checkbox
|
36
36
|
>
|
37
|
-
<el-checkbox
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
>
|
44
|
-
|
37
|
+
<el-checkbox
|
38
|
+
v-for="item in fields"
|
39
|
+
:label="item.prop"
|
40
|
+
:key="`table-${item.prop}-${item.isTable}`"
|
41
|
+
:checked="item.isTable"
|
42
|
+
@change="val => handleCheckboxChange(val, 'table', item)"
|
43
|
+
>{{ item.label }}</el-checkbox
|
44
|
+
>
|
45
45
|
</div>
|
46
|
-
<div v-if="activeTab.value === 2" class="tableConfig">
|
46
|
+
<div v-if="activeTab.value === 2 && config.table" class="tableConfig">
|
47
47
|
<el-form
|
48
|
-
:model="
|
48
|
+
:model="config"
|
49
49
|
label-position="left"
|
50
50
|
label-width="80px"
|
51
51
|
size="mini"
|
@@ -53,17 +53,17 @@
|
|
53
53
|
<el-collapse v-model="tableCollapse">
|
54
54
|
<el-collapse-item title="表格配置" name="1">
|
55
55
|
<el-form-item label="高级查询">
|
56
|
-
<el-switch v-model="
|
56
|
+
<el-switch v-model="config.search.show"> </el-switch>
|
57
57
|
</el-form-item>
|
58
58
|
<el-form-item label="排序类型">
|
59
|
-
<el-radio-group v-model="
|
59
|
+
<el-radio-group v-model="config.table.sort.type">
|
60
60
|
<el-radio-button label="1">降序</el-radio-button>
|
61
61
|
<el-radio-button label="2">升序</el-radio-button>
|
62
62
|
</el-radio-group>
|
63
63
|
</el-form-item>
|
64
64
|
<el-form-item label="排序字段">
|
65
65
|
<el-select
|
66
|
-
v-model="
|
66
|
+
v-model="config.table.sort.key"
|
67
67
|
placeholder="请选择"
|
68
68
|
clearable
|
69
69
|
>
|
@@ -77,18 +77,13 @@
|
|
77
77
|
</el-select>
|
78
78
|
</el-form-item>
|
79
79
|
<el-form-item label="序号">
|
80
|
-
<el-switch v-model="
|
80
|
+
<el-switch v-model="config.table.sequence"> </el-switch>
|
81
81
|
</el-form-item>
|
82
82
|
<el-form-item label="分页设置">
|
83
|
-
<el-switch v-model="
|
83
|
+
<el-switch v-model="config.table.pageInfo.show"> </el-switch>
|
84
84
|
</el-form-item>
|
85
|
-
<el-form-item
|
86
|
-
v-
|
87
|
-
label="分页条数"
|
88
|
-
>
|
89
|
-
<el-radio-group
|
90
|
-
v-model="tableConfig.table.pageInfo.options.pageSize"
|
91
|
-
>
|
85
|
+
<el-form-item v-if="config.table.pageInfo.show" label="分页条数">
|
86
|
+
<el-radio-group v-model="config.table.pageInfo.options.pageSize">
|
92
87
|
<el-radio-button :label="20">20条</el-radio-button>
|
93
88
|
<el-radio-button :label="50">50条</el-radio-button>
|
94
89
|
<el-radio-button :label="100">100条</el-radio-button>
|
@@ -96,112 +91,164 @@
|
|
96
91
|
</el-radio-group>
|
97
92
|
</el-form-item>
|
98
93
|
</el-collapse-item>
|
99
|
-
|
100
|
-
<el-form-item label="
|
101
|
-
<el-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
:label="item.label"
|
106
|
-
:value="item.value"
|
107
|
-
>
|
108
|
-
</el-option>
|
109
|
-
</el-select>
|
94
|
+
<el-collapse-item title="提示语" name="2">
|
95
|
+
<el-form-item label="空数据">
|
96
|
+
<el-input
|
97
|
+
v-model="config.table.empty.text"
|
98
|
+
placeholder="请输入"
|
99
|
+
></el-input>
|
110
100
|
</el-form-item>
|
111
|
-
|
101
|
+
<el-form-item label="加载提示">
|
102
|
+
<el-input
|
103
|
+
v-model="config.table.loading.text"
|
104
|
+
placeholder="请输入"
|
105
|
+
></el-input>
|
106
|
+
</el-form-item>
|
107
|
+
</el-collapse-item>
|
112
108
|
<el-collapse-item name="3">
|
113
109
|
<template slot="title">
|
114
110
|
<div class="collapse-title">
|
115
111
|
<div>按钮配置</div>
|
116
112
|
<div
|
117
113
|
class="collapse-title-action"
|
118
|
-
@click.stop="handleActionConfig"
|
114
|
+
@click.stop="handleActionConfig()"
|
119
115
|
>
|
120
116
|
配置
|
121
117
|
</div>
|
122
118
|
</div>
|
123
119
|
</template>
|
124
|
-
<
|
125
|
-
|
126
|
-
|
127
|
-
|
120
|
+
<div
|
121
|
+
v-for="(item, index) in Object.values(config.tools)"
|
122
|
+
:key="index"
|
123
|
+
class="tools-item"
|
124
|
+
>
|
125
|
+
<el-checkbox v-model="item.show">{{ item.name }}</el-checkbox>
|
128
126
|
<el-input
|
129
|
-
v-model="
|
127
|
+
v-model="item.text"
|
130
128
|
placeholder="请输入内容"
|
129
|
+
size="mini"
|
131
130
|
></el-input>
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
131
|
+
<i class="el-icon-set-up" @click="handleActionConfig(item)"></i>
|
132
|
+
</div>
|
133
|
+
</el-collapse-item>
|
134
|
+
</el-collapse>
|
135
|
+
</el-form>
|
136
|
+
</div>
|
137
|
+
|
138
|
+
<th-dialog
|
139
|
+
v-model="dialog.show"
|
140
|
+
title="按钮配置"
|
141
|
+
:modal-append-to-body="false"
|
142
|
+
:showFooter="false"
|
143
|
+
>
|
144
|
+
<div class="toolsSeting th-flex_box">
|
145
|
+
<el-card class="th-flex_left" style="width:200px;margin-right:10px;">
|
146
|
+
<el-tree
|
147
|
+
:data="Object.values(config.tools || [])"
|
148
|
+
:props="{ label: 'name' }"
|
149
|
+
node-key="name"
|
150
|
+
@node-click="handleActionConfig"
|
151
|
+
></el-tree>
|
152
|
+
</el-card>
|
153
|
+
<el-card v-if="dialog.data" class="th-fiex_right">
|
154
|
+
<el-form
|
155
|
+
ref="form"
|
156
|
+
:model="dialog.data"
|
157
|
+
label-width="80px"
|
158
|
+
size="mini"
|
159
|
+
>
|
160
|
+
<el-form-item label="按钮模型">
|
161
|
+
<el-button
|
162
|
+
:type="dialog.data.type"
|
163
|
+
:icon="dialog.data.icon"
|
164
|
+
:plain="dialog.data.plain"
|
165
|
+
:round="dialog.data.round"
|
166
|
+
>{{ dialog.data.text }}</el-button
|
136
167
|
>
|
137
|
-
<el-input
|
138
|
-
v-model="tableConfig.tools.edit.name"
|
139
|
-
placeholder="请输入内容"
|
140
|
-
></el-input>
|
141
168
|
</el-form-item>
|
142
|
-
<el-form-item label
|
143
|
-
<el-
|
144
|
-
>详情</el-checkbox
|
145
|
-
>
|
146
|
-
<el-input
|
147
|
-
v-model="tableConfig.tools.detail.name"
|
148
|
-
placeholder="请输入内容"
|
149
|
-
></el-input>
|
169
|
+
<el-form-item label="按钮名称">
|
170
|
+
<el-input v-model="dialog.data.text"></el-input>
|
150
171
|
</el-form-item>
|
151
|
-
<el-form-item label
|
152
|
-
<el-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
172
|
+
<el-form-item label="按钮类型">
|
173
|
+
<el-radio-group v-model="dialog.data.type">
|
174
|
+
<el-radio label="">默认</el-radio>
|
175
|
+
<el-radio label="primary">主要按钮</el-radio>
|
176
|
+
<el-radio label="success">成功按钮</el-radio>
|
177
|
+
<el-radio label="info">信息按钮</el-radio>
|
178
|
+
<el-radio label="warning">警告按钮</el-radio>
|
179
|
+
<el-radio label="danger">危险按钮</el-radio>
|
180
|
+
</el-radio-group>
|
159
181
|
</el-form-item>
|
160
|
-
<el-form-item label
|
161
|
-
<el-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
>
|
166
|
-
<el-input
|
167
|
-
v-model="tableConfig.tools.batchDelete.name"
|
168
|
-
placeholder="请输入内容"
|
169
|
-
></el-input>
|
182
|
+
<el-form-item label="按钮空心">
|
183
|
+
<el-switch v-model="dialog.data.plain"> </el-switch>
|
184
|
+
</el-form-item>
|
185
|
+
<el-form-item label="按钮圆角">
|
186
|
+
<el-switch v-model="dialog.data.round"> </el-switch>
|
170
187
|
</el-form-item>
|
171
|
-
<el-form-item label
|
172
|
-
<
|
173
|
-
|
188
|
+
<el-form-item label="按钮图标">
|
189
|
+
<th-icons v-model="dialog.data.icon"></th-icons>
|
190
|
+
</el-form-item>
|
191
|
+
<el-form-item label="关联表单">
|
192
|
+
<el-select
|
193
|
+
v-model="dialog.data.form"
|
194
|
+
style="width:100%"
|
195
|
+
value-key="id"
|
196
|
+
clearable
|
197
|
+
placeholder="请关联表单"
|
198
|
+
no-data-text="暂无表单,请前往【表单模块】创建"
|
174
199
|
>
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
200
|
+
<el-option
|
201
|
+
v-for="item in formOptions"
|
202
|
+
:key="item.id"
|
203
|
+
:label="item.label"
|
204
|
+
:value="item"
|
205
|
+
>
|
206
|
+
</el-option>
|
207
|
+
</el-select>
|
179
208
|
</el-form-item>
|
180
|
-
<el-form-item label
|
181
|
-
<el-
|
182
|
-
|
209
|
+
<el-form-item label="关联接口">
|
210
|
+
<el-select
|
211
|
+
v-model="dialog.data.api"
|
212
|
+
style="width:100%"
|
213
|
+
value-key="id"
|
214
|
+
clearable
|
215
|
+
placeholder="如关联表单中已配置接口,请勿重复关联"
|
216
|
+
no-data-text="暂无接口,请前往【接口模块】创建"
|
183
217
|
>
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
218
|
+
<el-option
|
219
|
+
v-for="item in apiOptions"
|
220
|
+
:key="item.id"
|
221
|
+
:label="item.label"
|
222
|
+
:value="item"
|
223
|
+
>
|
224
|
+
</el-option>
|
225
|
+
</el-select>
|
188
226
|
</el-form-item>
|
189
|
-
</el-
|
190
|
-
</el-
|
191
|
-
</
|
192
|
-
</
|
227
|
+
</el-form>
|
228
|
+
</el-card>
|
229
|
+
</div>
|
230
|
+
</th-dialog>
|
193
231
|
</div>
|
194
232
|
</template>
|
195
233
|
|
196
234
|
<script>
|
235
|
+
import { deepClone } from "../FormMaking/util";
|
197
236
|
export default {
|
198
237
|
props: {
|
238
|
+
config: {
|
239
|
+
type: Object,
|
240
|
+
default: () => {
|
241
|
+
return { search: { options: [] } };
|
242
|
+
}
|
243
|
+
},
|
199
244
|
fields: {
|
200
245
|
type: Array,
|
201
246
|
default: () => {
|
202
247
|
return [];
|
203
248
|
}
|
204
|
-
}
|
249
|
+
},
|
250
|
+
formOptions: Array,
|
251
|
+
apiOptions: Array
|
205
252
|
},
|
206
253
|
data() {
|
207
254
|
return {
|
@@ -212,100 +259,121 @@ export default {
|
|
212
259
|
],
|
213
260
|
activeTab: { title: "查询字段", value: 0 },
|
214
261
|
search: {
|
215
|
-
fields: [],
|
216
262
|
isCheckAll: false,
|
217
263
|
isIndeterminate: false
|
218
264
|
},
|
219
265
|
table: {
|
220
|
-
fields: [],
|
221
266
|
isCheckAll: false,
|
222
267
|
isIndeterminate: false
|
223
268
|
},
|
224
|
-
tableCollapse: ["1", "3"],
|
225
|
-
|
226
|
-
search: {
|
227
|
-
show: true,
|
228
|
-
options: []
|
229
|
-
},
|
230
|
-
table: {
|
231
|
-
options: [],
|
232
|
-
pageInfo: {
|
233
|
-
show: true,
|
234
|
-
options: {
|
235
|
-
pageCount: 0, // 总页数
|
236
|
-
pageSize: 20, // 每页展示的条数
|
237
|
-
currentPage: 1, // 当前页码
|
238
|
-
total: 0, // 总条数
|
239
|
-
sizes: [10, 20, 30, 50, 100]
|
240
|
-
}
|
241
|
-
},
|
242
|
-
sort: { type: "1", key: "" },
|
243
|
-
loading: { show: false, text: "加载中", image: "" },
|
244
|
-
empty: { show: true, text: "暂无数据", image: "" },
|
245
|
-
sequence: true //是否显示序号
|
246
|
-
},
|
247
|
-
tools: {
|
248
|
-
add: { show: true, name: "新增", position: 1 },
|
249
|
-
edit: { show: true, name: "编辑", position: 2 },
|
250
|
-
detail: { show: false, name: "查看", position: 2 },
|
251
|
-
delete: { show: true, name: "删除", position: 2 },
|
252
|
-
batchDelete: { show: false, name: "批量删除", position: 1 },
|
253
|
-
export: { show: false, name: "导出", position: 1 },
|
254
|
-
import: { show: false, name: "导入", position: 1 }
|
255
|
-
},
|
256
|
-
network: {}
|
257
|
-
}
|
269
|
+
tableCollapse: ["1", "2", "3"],
|
270
|
+
dialog: { show: false, data: null }
|
258
271
|
};
|
259
272
|
},
|
273
|
+
watch: {
|
274
|
+
config(val) {
|
275
|
+
this.handleFields();
|
276
|
+
},
|
277
|
+
fields(val) {
|
278
|
+
this.handleFields();
|
279
|
+
}
|
280
|
+
},
|
281
|
+
computed: {
|
282
|
+
searchActiveFields() {
|
283
|
+
const data = this.config.search.options.map(item => {
|
284
|
+
return item.prop;
|
285
|
+
});
|
286
|
+
return data;
|
287
|
+
},
|
288
|
+
tableActiveFields() {
|
289
|
+
const data = this.config.table.options.map(item => {
|
290
|
+
return item.prop;
|
291
|
+
});
|
292
|
+
return data;
|
293
|
+
}
|
294
|
+
},
|
260
295
|
mounted() {},
|
261
296
|
methods: {
|
297
|
+
handleFields() {
|
298
|
+
this.fields.forEach(item => {
|
299
|
+
item.isSearch = this.searchActiveFields.includes(item.prop);
|
300
|
+
item.isTable = this.tableActiveFields.includes(item.prop);
|
301
|
+
});
|
302
|
+
this.search = {
|
303
|
+
isCheckAll: this.searchActiveFields.length === this.fields.length,
|
304
|
+
isIndeterminate:
|
305
|
+
this.searchActiveFields.length !== 0 &&
|
306
|
+
this.searchActiveFields.length !== this.fields.length
|
307
|
+
};
|
308
|
+
this.table = {
|
309
|
+
isCheckAll: this.tableActiveFields.length === this.fields.length,
|
310
|
+
isIndeterminate:
|
311
|
+
this.tableActiveFields.length !== 0 &&
|
312
|
+
this.tableActiveFields.length !== this.fields.length
|
313
|
+
};
|
314
|
+
},
|
262
315
|
handleTabsSelect(val) {
|
263
316
|
this.activeTab = val;
|
264
317
|
},
|
265
|
-
|
266
|
-
if (
|
267
|
-
|
268
|
-
|
269
|
-
this.search.isIndeterminate = count > 0 && count < this.fields.length;
|
270
|
-
this.$emit("fields-change", {
|
271
|
-
type: this.activeTab.value,
|
272
|
-
data: this.search.fields
|
318
|
+
handleCheckAllChange(bool, action) {
|
319
|
+
if (action === "search") {
|
320
|
+
this.fields.forEach(item => {
|
321
|
+
item.isSearch = bool;
|
273
322
|
});
|
274
|
-
|
275
|
-
|
276
|
-
this.
|
277
|
-
this.
|
278
|
-
|
279
|
-
|
280
|
-
|
323
|
+
const data = deepClone(this.fields);
|
324
|
+
this.config.search.options = bool ? data : [];
|
325
|
+
this.search.isCheckAll = bool;
|
326
|
+
this.search.isIndeterminate = false;
|
327
|
+
return;
|
328
|
+
}
|
329
|
+
if (action === "table") {
|
330
|
+
this.fields.forEach(item => {
|
331
|
+
item.isTable = bool;
|
281
332
|
});
|
333
|
+
const data = deepClone(this.fields);
|
334
|
+
this.config.table.options = bool ? data : [];
|
335
|
+
this.table.isCheckAll = bool;
|
336
|
+
this.table.isIndeterminate = false;
|
282
337
|
}
|
283
338
|
},
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
339
|
+
handleCheckboxChange(bool, action, data) {
|
340
|
+
if (action === "search") {
|
341
|
+
data.isSearch = bool;
|
342
|
+
bool
|
343
|
+
? this.config.search.options.push(deepClone(data))
|
344
|
+
: (this.config.search.options = this.config.search.options.filter(
|
345
|
+
item => {
|
346
|
+
return item.prop !== data.prop;
|
347
|
+
}
|
348
|
+
));
|
349
|
+
this.search = {
|
350
|
+
isCheckAll: this.config.search.options.length === this.fields.length,
|
351
|
+
isIndeterminate:
|
352
|
+
this.config.search.options.length !== 0 &&
|
353
|
+
this.config.search.options.length !== this.fields.length
|
354
|
+
};
|
355
|
+
return;
|
290
356
|
}
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
357
|
+
if (action === "table") {
|
358
|
+
data.isTable = bool;
|
359
|
+
bool
|
360
|
+
? this.config.table.options.push(deepClone(data))
|
361
|
+
: (this.config.table.options = this.config.table.options.filter(
|
362
|
+
item => {
|
363
|
+
return item.prop !== data.prop;
|
364
|
+
}
|
365
|
+
));
|
366
|
+
this.table = {
|
367
|
+
isCheckAll: this.config.table.options.length === this.fields.length,
|
368
|
+
isIndeterminate:
|
369
|
+
this.config.table.options.length !== 0 &&
|
370
|
+
this.config.table.options.length !== this.fields.length
|
371
|
+
};
|
372
|
+
return;
|
301
373
|
}
|
302
|
-
this.table.fields = list;
|
303
|
-
this.table.isIndeterminate = false;
|
304
|
-
this.handleChange();
|
305
374
|
},
|
306
|
-
handleActionConfig() {
|
307
|
-
|
308
|
-
return JSON.parse(JSON.stringify(this.tableConfig));
|
375
|
+
handleActionConfig(data) {
|
376
|
+
this.dialog = { show: true, data };
|
309
377
|
}
|
310
378
|
}
|
311
379
|
};
|
@@ -368,6 +436,21 @@ export default {
|
|
368
436
|
color: #409eff;
|
369
437
|
}
|
370
438
|
}
|
439
|
+
.tools-item {
|
440
|
+
display: flex;
|
441
|
+
align-items: center;
|
442
|
+
padding: 7px 0;
|
443
|
+
|
444
|
+
.el-checkbox {
|
445
|
+
width: 140px;
|
446
|
+
}
|
447
|
+
> i {
|
448
|
+
height: 20px;
|
449
|
+
line-height: 20px;
|
450
|
+
padding-left: 10px;
|
451
|
+
cursor: pointer;
|
452
|
+
}
|
453
|
+
}
|
371
454
|
}
|
372
455
|
}
|
373
456
|
</style>
|