sohelp-eleplus 1.1.18 → 1.1.20

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.
@@ -12,13 +12,12 @@
12
12
  @radioChange="onRadioChange"
13
13
  @cellClick.stop="onCellClick"
14
14
  >
15
- <template #searchSlot>
15
+ <template #keywords>
16
16
  <div class="search-wrap">
17
17
  <div class="search-box">
18
- <ele-tooltip :content="getKeywordsPlaceholder" placement="top" :offset="3">
18
+ <ele-tooltip content="请输入关键字按回车搜索." placement="top" :offset="3">
19
19
  <sohelp-input
20
20
  v-model="keywords"
21
- :placeholder="getKeywordsPlaceholder"
22
21
  clearable
23
22
  @keyup.enter="reload(gridOptions.params)"
24
23
  class="input-with-select"
@@ -47,410 +46,363 @@
47
46
  </div>
48
47
  </template>
49
48
 
50
- <script>
49
+ <script setup>
51
50
  import { EleMessage } from '@/components/ele-admin-plus/components';
52
51
  import { DragOutlined } from '../sohelp-icon-select/icons';
53
- import { reactive, ref, nextTick, watch, computed } from 'vue';
52
+ import { nextTick, onMounted, reactive, ref, watch } from 'vue';
53
+ import { merge, cloneDeep } from 'lodash-es'; // 正确导入
54
54
  import DefaultProps from './DefaultProps';
55
- import initial from './SohelpGridConfig';
56
55
  import { Search } from '@element-plus/icons-vue';
56
+ import DefaultGridOptions from './DefaultGridOptions';
57
+
58
+ /**判断配置是否初始化完毕*/
59
+ const emit = defineEmits([
60
+ 'filter',
61
+ 'reset',
62
+ 'pageChange',
63
+ 'checkboxAll',
64
+ 'checkboxChange',
65
+ 'toolbarButtonClick',
66
+ 'menuClick',
67
+ 'cellClick',
68
+ 'pageChange',
69
+ 'refresh',
70
+ 'radioChange',
71
+ 'update:value',
72
+ 'update:value'
73
+ ]);
74
+
75
+ const isPage = ref(false);
76
+ const selectedValue = ref([]);
77
+ const selectedData = ref([]);
78
+ const keywords = ref('');
79
+ const props = defineProps(cloneDeep(DefaultProps));
80
+
81
+ /**列表实例*/
82
+ const sohelpVxeGridRef = ref(null);
83
+
84
+ const gridOptions = reactive(cloneDeep(DefaultGridOptions));
85
+ if (props.gridOptions) {
86
+ merge(gridOptions, props.gridOptions);
87
+ }
57
88
 
58
- export default {
59
- name: 'SohelpVxeGrid',
60
- extends: [],
61
- props: DefaultProps,
62
- emits: [
63
- 'pageChange',
64
- 'checkboxAll',
65
- 'checkboxChange',
66
- 'toolbarButtonClick',
67
- 'menuClick',
68
- 'cellClick',
69
- 'pageChange',
70
- 'refresh',
71
- 'radioChange',
72
- 'update:value',
73
- 'update:value'
74
- ],
75
- setup(props, { emit }) {
76
- /**判断配置是否初始化完毕*/
77
- const isConfigInitialized = ref(false);
78
- const sohelpConfig = reactive({});
79
- const isPage = ref(false);
80
- const selectedValue = ref([]);
81
- const selectedData = ref([]);
82
- const keywords = ref('');
83
- const propertiesMap = reactive({});
84
-
85
- /**列表实例*/
86
- const sohelpVxeGridRef = ref(null);
87
- const gridOptions = reactive({});
88
- /**初始化配置*/
89
- initial(sohelpVxeGridRef, props)
90
- .then((config) => {
91
- /**配置刷新功能 */
92
- config.gridOptions = {
93
- ...config.gridOptions,
94
- toolbarConfig: {
95
- ...config.gridOptions?.toolbarConfig,
96
- refresh: true,
97
- zoom: true
98
- },
99
- proxyConfig: {
100
- ajax: {
101
- query: () => refresh() // 简写箭头函数
102
- }
103
- }
104
- };
105
-
106
- Object.assign(gridOptions, config.gridOptions);
107
- Object.assign(sohelpConfig, config.sohelpConfig);
108
- Object.assign(propertiesMap, config.propertiesMap);
109
-
110
- /**配置初始化完成*/
111
- isConfigInitialized.value = true;
112
- })
113
- .catch((e) => {
114
- EleMessage.error(e.message);
115
- });
116
-
117
- const getKeywordsPlaceholder = computed(() => {
118
- if (sohelpConfig?.filter?.keywords?.length) {
119
- return (
120
- '请输入关键 ' +
121
- sohelpConfig.filter.keywords
122
- .filter((key) => propertiesMap[key])
123
- .map((key) => propertiesMap[key].label)
124
- .join('、') +
125
- ' 进行查询'
126
- );
127
- }
128
- return '请输入关键字';
129
- });
130
-
131
- /**判断配置是否初始化完毕*/
132
- const isConfigDone = async () => {
133
- return new Promise((resolve) => {
134
- if (isConfigInitialized.value) {
135
- resolve();
136
- } else {
137
- let timer = setInterval(() => {
138
- if (isConfigInitialized.value) {
139
- clearInterval(timer);
140
- resolve();
141
- }
142
- }, 10);
143
- }
144
- });
145
- };
146
-
147
- /**根据参数加载数据*/
148
- const reload = async (param = {}) => {
149
- gridOptions.loading = true;
150
- gridOptions.params = param;
151
- //配置初始化完毕后,才可以执行刷新
152
- await isConfigDone();
153
- const $grid = sohelpVxeGridRef.value;
154
- if ($grid) {
155
- const url = props.url || sohelpConfig.requestValue;
156
- if (!url) {
157
- gridOptions.loading = false;
158
- return { results: [], total: 0 };
159
- }
160
-
161
- let pageConfig = {};
162
- // 是否分页
163
- if (gridOptions.pagerConfig?.enabled) {
164
- pageConfig.page = gridOptions.pagerConfig?.currentPage ?? 1;
165
- pageConfig.limit = gridOptions.pagerConfig?.pageSize ?? 50;
166
- }
89
+ if (props.gridOptions) {
90
+ merge(gridOptions, props.gridOptions);
91
+ }
167
92
 
168
- const res = await SohelpHttp.get(url, {
169
- ...param,
170
- keywords: keywords.value,
171
- ...pageConfig
172
- }).catch((e) => {
173
- gridOptions.loading = false;
174
- EleMessage.error(e);
175
- });
176
-
177
- gridOptions.loading = false;
178
- if (!res.meta.success) {
179
- EleMessage.error(res.meta.message);
180
- return { results: [], total: 0 };
181
- }
182
- $grid.loadData(res.data.results || res.data);
183
- if (gridOptions?.pagerConfig?.enabled) {
184
- gridOptions.pagerConfig.total = res.data.total;
185
- }
186
- }
187
- gridOptions.loading = false;
188
- initValue();
189
- };
190
-
191
- /**实现分页事件*/
192
- const pageChangeEvent = (page) => {
193
- isPage.value = true;
194
- gridOptions.pagerConfig.currentPage = page.currentPage;
195
- gridOptions.pagerConfig.pageSize = page.pageSize;
196
- emit('pageChange', page);
197
- };
198
-
199
- /**刷新数据*/
200
- const refresh = () => {
201
- if (!isPage.value) {
202
- keywords.value = '';
203
- if (gridOptions.pagerConfig && gridOptions.pagerConfig.enabled) {
204
- gridOptions.pagerConfig.currentPage = 1;
205
- } else {
206
- gridOptions.pagerConfig = {
207
- currentPage: 1
208
- };
93
+ /**根据URL动态加载数据**/
94
+ if (props.url) {
95
+ merge(gridOptions, {
96
+ proxyConfig: {
97
+ response: {
98
+ result: 'result',
99
+ total: 'page.total'
100
+ },
101
+ ajax: {
102
+ query: () => {
103
+ refresh();
209
104
  }
210
- //清空选中
211
- selectedValue.value = [];
212
- sohelpVxeGridRef.value?.clearCheckboxRow();
213
- emit('refresh');
214
105
  }
215
- isPage.value = false;
216
- const autoLoad = props.autoLoad || sohelpConfig?.autoLoad || true;
106
+ }
107
+ });
108
+ }
217
109
 
218
- if (autoLoad) {
219
- reload({ ...gridOptions.params });
220
- }
221
- };
222
-
223
- /**
224
- * grid事件
225
- * @param param0
226
- */
227
- const menuEvents = async ({ menu, row, column, rowIndex }) => {
228
- const $grid = sohelpVxeGridRef.value;
229
- if ($grid) {
230
- $grid.setCurrentRow(row);
231
- switch (menu.code) {
232
- case 'insert':
233
- const { row } = await $grid.insertAt(
234
- {
235
- role_name: 'sales user'
236
- },
237
- rowIndex
238
- );
239
- break;
240
- }
241
- }
242
- };
243
-
244
- /**
245
- * 工具栏点击事件
246
- * @param params
247
- */
248
- const onToolbarButtonClick = (params) => {
249
- emit('toolbarButtonClick', params);
250
- };
251
-
252
- /**
253
- * checkbox 点击
254
- * @param params
255
- */
256
- const onCheckboxChange = (params) => {
257
- emit('checkboxChange', params);
258
- if (props.multiple) {
259
- setSelectedValue(params.row);
260
- updateData();
261
- }
262
- };
263
-
264
- /**
265
- * 获取表格当前页数据
266
- */
267
- const getTableData = () => {
268
- return JSON.parse(JSON.stringify(sohelpVxeGridRef.value?.getTableData().tableData));
269
- };
270
-
271
- /**
272
- * 全选、取消全选 更新value,data值
273
- * @param param0
274
- */
275
- const onCheckboxAllChange = (params) => {
276
- const data = getTableData();
277
- const ids = data.map((item) => item.id);
278
- if (params.checked) {
279
- selectedValue.value = [...new Set([...selectedValue.value, ...ids])];
280
- selectedData.value = Array.from(
281
- [...selectedData.value, ...data].reduce((map, item) => map.set(item.id, item), new Map()).values()
282
- );
283
- } else {
284
- selectedValue.value = selectedValue.value.filter((item) => !ids.includes(item));
285
- }
110
+ /**根据参数加载数据*/
111
+ const reload = async (param = {}) => {
112
+ emit('filter', param);
113
+ gridOptions.loading = true;
114
+ gridOptions.params = param;
115
+ //配置初始化完毕后,才可以执行刷新
116
+
117
+ const url = props.url;
118
+ if (!url) {
119
+ gridOptions.loading = false;
120
+ return { results: [], total: 0 };
121
+ }
286
122
 
287
- emit('checkboxAll', params);
288
- updateData();
289
- };
290
-
291
- /**
292
- * checkbox row click selectValue, selectedData设置是否选中
293
- * @param row
294
- */
295
- const setSelectedValue = (row) => {
296
- let idx = selectedValue.value.findIndex((id) => id === row.id);
297
- if (idx != -1) {
298
- selectedValue.value.splice(idx, 1);
299
- } else {
300
- selectedValue.value.push(row.id);
301
- let _idx = selectedData.value.findIndex((item) => item.id === row.id);
302
- if (_idx === -1) {
303
- selectedData.value.push({ ...row });
304
- }
305
- }
306
- };
307
-
308
- /**
309
- * 行点击
310
- * @param params
311
- */
312
- const onCellClick = (params) => {
313
- emit('cellClick', params);
314
- };
315
-
316
- /**
317
- *
318
- * @param params 单选框点击
319
- */
320
- const onRadioChange = (params) => {
321
- emit('radioChange', params);
322
- if (!props.multiple) {
323
- clear();
324
- const row = sohelpVxeGridRef.value?.getRadioRecord();
325
- if (row) {
326
- selectedValue.value = [row.id];
327
- selectedData.value = Array.from(
328
- new Map([row, ...selectedData.value].map((item) => [item.id, item])).values()
329
- );
330
- } else {
331
- selectedData.value = props.data;
332
- selectedValue.value = [];
333
- }
123
+ let pageConfig = {};
124
+ // 是否分页
125
+ if (gridOptions.pagerConfig?.enabled) {
126
+ pageConfig.page = gridOptions.pagerConfig?.currentPage ?? 1;
127
+ pageConfig.limit = gridOptions.pagerConfig?.pageSize ?? 50;
128
+ }
334
129
 
335
- updateData();
336
- }
337
- };
338
-
339
- /**
340
- * 更新value,data
341
- */
342
- const updateData = () => {
343
- emit('update:value', [...selectedValue.value]);
344
- emit('update:data', [...selectedData.value]);
345
- };
346
-
347
- /**grid 事件处理 */
348
- const gridEvents = {
349
- cellMenu({ row, rowIndex }) {
350
- const $grid = sohelpVxeGridRef.value;
351
- if ($grid) {
352
- $grid.setCurrentRow(row);
353
- }
354
- },
355
- menuClick({ menu, column, row, rowIndex }) {
356
- const $grid = sohelpVxeGridRef.value;
357
- if ($grid) {
358
- switch (menu.code) {
359
- case 'insert':
360
- // $grid.insert();
361
- $grid.insertAt({}, rowIndex);
362
-
363
- let _table = $grid.getTableData();
364
-
365
- break;
366
- case 'copy':
367
- break;
368
- }
130
+ const res = await SohelpHttp.get(url, {
131
+ ...param,
132
+ keywords: keywords.value,
133
+ ...pageConfig
134
+ }).catch((e) => {
135
+ gridOptions.loading = false;
136
+ EleMessage.error(e);
137
+ });
138
+
139
+ gridOptions.loading = false;
140
+ if (!res.meta.success) {
141
+ EleMessage.error(res.meta.message);
142
+ return { results: [], total: 0 };
143
+ }
144
+ const $grid = sohelpVxeGridRef.value;
145
+ $grid.loadData(res.data.results || res.data);
146
+ if (gridOptions?.pagerConfig?.enabled) {
147
+ gridOptions.pagerConfig.total = res.data.total;
148
+ }
369
149
 
370
- emit('menuClick', $grid, code);
371
- }
372
- }
373
- };
150
+ gridOptions.loading = false;
151
+ initValue();
152
+ };
374
153
 
375
- const loadData = (data) =>{
376
- const $grid = sohelpVxeGridRef.value;
377
- $grid.loadData(data);
154
+ /**实现分页事件*/
155
+ const pageChangeEvent = (page) => {
156
+ isPage.value = true;
157
+ gridOptions.pagerConfig.currentPage = page.currentPage;
158
+ gridOptions.pagerConfig.pageSize = page.pageSize;
159
+ emit('pageChange', page);
160
+ };
161
+
162
+ /**刷新数据*/
163
+ const refresh = () => {
164
+ if (!isPage.value) {
165
+ keywords.value = '';
166
+ if (gridOptions.pagerConfig && gridOptions.pagerConfig.enabled) {
167
+ gridOptions.pagerConfig.currentPage = 1;
168
+ } else {
169
+ gridOptions.pagerConfig = {
170
+ currentPage: 1
171
+ };
378
172
  }
173
+ //清空选中
174
+ selectedValue.value = [];
175
+ sohelpVxeGridRef.value?.clearCheckboxRow();
176
+ emit('refresh');
177
+ }
178
+ isPage.value = false;
179
+ reload({ ...gridOptions.params });
180
+ };
379
181
 
380
- /**
381
- * 数据回显
382
- */
383
- const initValue = () => {
384
- nextTick(() => {
385
- const $grid = sohelpVxeGridRef.value;
386
- if ($grid && selectedValue.value.length) {
387
- setTimeout(() => {
388
- $grid.setCheckboxRowKey(selectedValue.value, true);
389
- }, 100);
390
- }
391
- });
392
- };
393
-
394
- /**
395
- * 清空
396
- */
397
- const clear = () => {
398
- const $grid = sohelpVxeGridRef.value;
399
- $grid?.clearCheckboxReserve();
400
- $grid?.clearCheckboxRow();
401
- $grid.clearSelected();
402
- };
403
-
404
- const getSelection = () => {
405
- return sohelpVxeGridRef.value?.getCheckboxRecords() || []
406
- };
407
-
408
- watch(
409
- () => props.value,
410
- (val) => {
411
- let arr = Array.isArray(val) ? val : val ? [val] : [];
412
- selectedValue.value = props.multiple ? [...arr] : [arr[0]];
413
- if (props.data && props.data?.length > 0) {
414
- selectedData.value = [...props.data];
415
- }
416
- },
417
- {
418
- immediate: true
419
- }
182
+ /**
183
+ * grid事件
184
+ * @param param0
185
+ */
186
+ const menuEvents = async ({ menu, row, column, rowIndex }) => {
187
+ const $grid = sohelpVxeGridRef.value;
188
+ if ($grid) {
189
+ $grid.setCurrentRow(row);
190
+ }
191
+ };
192
+
193
+ /**
194
+ * 工具栏点击事件
195
+ * @param params
196
+ */
197
+ const onToolbarButtonClick = (params) => {
198
+ emit('toolbarButtonClick', params);
199
+ };
200
+
201
+ /**
202
+ * checkbox 点击
203
+ * @param params
204
+ */
205
+ const onCheckboxChange = (params) => {
206
+ emit('checkboxChange', params);
207
+ if (props.multiple) {
208
+ setSelectedValue(params.row);
209
+ updateData();
210
+ }
211
+ };
212
+
213
+ /**
214
+ * 获取表格当前页数据
215
+ */
216
+ const getTableData = () => {
217
+ return JSON.parse(JSON.stringify(sohelpVxeGridRef.value?.getTableData().tableData));
218
+ };
219
+
220
+ /**
221
+ * 全选、取消全选 更新value,data值
222
+ * @param param0
223
+ */
224
+ const onCheckboxAllChange = (params) => {
225
+ const data = getTableData();
226
+ const ids = data.map((item) => item.id);
227
+ if (params.checked) {
228
+ selectedValue.value = [...new Set([...selectedValue.value, ...ids])];
229
+ selectedData.value = Array.from(
230
+ [...selectedData.value, ...data].reduce((map, item) => map.set(item.id, item), new Map()).values()
420
231
  );
232
+ } else {
233
+ selectedValue.value = selectedValue.value.filter((item) => !ids.includes(item));
234
+ }
235
+
236
+ emit('checkboxAll', params);
237
+ updateData();
238
+ };
239
+
240
+ /**
241
+ * checkbox row click selectValue, selectedData设置是否选中
242
+ * @param row
243
+ */
244
+ const setSelectedValue = (row) => {
245
+ let idx = selectedValue.value.findIndex((id) => id === row.id);
246
+ if (idx != -1) {
247
+ selectedValue.value.splice(idx, 1);
248
+ } else {
249
+ selectedValue.value.push(row.id);
250
+ let _idx = selectedData.value.findIndex((item) => item.id === row.id);
251
+ if (_idx === -1) {
252
+ selectedData.value.push({ ...row });
253
+ }
254
+ }
255
+ };
421
256
 
422
- return {
423
- getSelection,
424
- gridOptions,
425
- loadData,
426
- sohelpVxeGridRef,
427
- DragOutlined,
428
- refresh,
429
- reload,
430
- pageChangeEvent,
431
- gridEvents,
432
- menuEvents,
433
- onToolbarButtonClick,
434
- onCheckboxChange,
435
- onCellClick,
436
- onCheckboxAllChange,
437
- onRadioChange,
438
- selectedData,
439
- selectedValue,
440
- updateData,
441
- initValue,
442
- clear,
443
- getTableData,
444
- keywords,
445
- Search,
446
- getKeywordsPlaceholder,
447
- propertiesMap,
448
- clearRadioRow: () => {
449
- sohelpVxeGridRef.value.clearRadioRow();
257
+ /**
258
+ * 行点击
259
+ * @param params
260
+ */
261
+ const onCellClick = (params) => {
262
+ emit('cellClick', params);
263
+ };
264
+
265
+ /**
266
+ *
267
+ * @param params 单选框点击
268
+ */
269
+ const onRadioChange = (params) => {
270
+ emit('radioChange', params);
271
+ if (!props.multiple) {
272
+ clear();
273
+ const row = sohelpVxeGridRef.value?.getRadioRecord();
274
+ if (row) {
275
+ selectedValue.value = [row.id];
276
+ selectedData.value = Array.from(new Map([row, ...selectedData.value].map((item) => [item.id, item])).values());
277
+ } else {
278
+ selectedData.value = props.data;
279
+ selectedValue.value = [];
280
+ }
281
+
282
+ updateData();
283
+ }
284
+ };
285
+
286
+ /**
287
+ * 更新value,data
288
+ */
289
+ const updateData = () => {
290
+ emit('update:value', [...selectedValue.value]);
291
+ emit('update:data', [...selectedData.value]);
292
+ };
293
+
294
+ /**grid 事件处理 */
295
+ const gridEvents = {
296
+ cellMenu({ row, rowIndex }) {
297
+ const $grid = sohelpVxeGridRef.value;
298
+ if ($grid) {
299
+ $grid.setCurrentRow(row);
300
+ }
301
+ },
302
+ menuClick({ menu, column, row, rowIndex }) {
303
+ const $grid = sohelpVxeGridRef.value;
304
+ if ($grid) {
305
+ switch (menu.code) {
306
+ case 'insert':
307
+ // $grid.insert();
308
+ $grid.insertAt({}, rowIndex);
309
+
310
+ let _table = $grid.getTableData();
311
+
312
+ break;
313
+ case 'copy':
314
+ break;
450
315
  }
451
- };
316
+
317
+ emit('menuClick', $grid, code);
318
+ }
452
319
  }
453
320
  };
321
+
322
+ const loadData = (data) => {
323
+ const $grid = sohelpVxeGridRef.value;
324
+ $grid.loadData(data);
325
+ };
326
+
327
+ /**
328
+ * 数据回显
329
+ */
330
+ const initValue = () => {
331
+ nextTick(() => {
332
+ const $grid = sohelpVxeGridRef.value;
333
+ if ($grid && selectedValue.value.length) {
334
+ setTimeout(() => {
335
+ $grid.setCheckboxRowKey(selectedValue.value, true);
336
+ }, 100);
337
+ }
338
+ });
339
+ };
340
+
341
+ onMounted(() => {
342
+ if (props.autoLoad) {
343
+ // reload({});
344
+ }
345
+ });
346
+
347
+ /**
348
+ * 清空
349
+ */
350
+ const clear = () => {
351
+ const $grid = sohelpVxeGridRef.value;
352
+ $grid?.clearCheckboxReserve();
353
+ $grid?.clearCheckboxRow();
354
+ $grid.clearSelected();
355
+ };
356
+
357
+ const getSelection = () => {
358
+ return sohelpVxeGridRef.value?.getCheckboxRecords() || [];
359
+ };
360
+
361
+ watch(
362
+ () => props.value,
363
+ (val) => {
364
+ let arr = Array.isArray(val) ? val : val ? [val] : [];
365
+ selectedValue.value = props.multiple ? [...arr] : [arr[0]];
366
+ if (props.data && props.data?.length > 0) {
367
+ selectedData.value = [...props.data];
368
+ }
369
+ },
370
+ {
371
+ immediate: true
372
+ }
373
+ );
374
+
375
+ defineExpose({
376
+ $grid: sohelpVxeGridRef,
377
+ getSelection,
378
+ gridOptions,
379
+ loadData,
380
+ refresh,
381
+ reload,
382
+ pageChangeEvent,
383
+ gridEvents,
384
+ menuEvents,
385
+ onToolbarButtonClick,
386
+ onCheckboxChange,
387
+ onCellClick,
388
+ onCheckboxAllChange,
389
+ onRadioChange,
390
+ selectedData,
391
+ selectedValue,
392
+ updateData,
393
+ initValue,
394
+ clear,
395
+ getTableData,
396
+ keywords,
397
+ clearRadioRow: () => {
398
+ sohelpVxeGridRef.value.clearRadioRow();
399
+ }
400
+ });
401
+ </script>
402
+ <script>
403
+ export default {
404
+ name: 'SohelpVxeGrid'
405
+ };
454
406
  </script>
455
407
 
456
408
  <style lang="scss" scoped>
@@ -458,6 +410,7 @@
458
410
  width: 100%;
459
411
  height: 100%;
460
412
  box-sizing: border-box;
413
+
461
414
  :deep(.vxe-grid) {
462
415
  height: 100%;
463
416
  width: 100%;
@@ -477,12 +430,16 @@
477
430
  .vxe-grid--table-container {
478
431
  flex: 1;
479
432
  height: 100%;
433
+
480
434
  .vxe-table {
481
435
  height: 100%;
436
+
482
437
  .vxe-table--render-wrapper {
483
438
  height: 100%;
439
+
484
440
  .vxe-table--layout-wrapper {
485
441
  height: calc(100% - 10px);
442
+
486
443
  .col--selected {
487
444
  //去除单元格选中效果
488
445
  box-shadow: none;
@@ -511,6 +468,7 @@
511
468
  justify-content: flex-start;
512
469
  gap: 10px;
513
470
  margin-right: 10px;
471
+
514
472
  .search-box {
515
473
  width: 200px;
516
474
  }