@lx-frontend/wrap-element-ui 1.0.0-beta.3 → 1.0.0-beta.4
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/package.json +5 -4
- package/src/components/EditableTable/index.less +34 -26
- package/src/components/EditableTable/index.vue +104 -34
- package/src/components/EditableTable/types.ts +32 -10
- package/src/components/EditableTable/useColumnHeaderOperation.ts +166 -28
- package/src/components/EditableTable/useDefaultOperation.ts +10 -10
- package/src/components/EditableTable/useDragSort.ts +4 -5
- package/src/components/EditableTable/usePagination.ts +4 -7
- package/src/components/EditableTable/useRowBgColor.ts +3 -3
- package/src/components/EditableTable/useViewSetting.ts +44 -1
- package/src/components/index.ts +3 -1
- package/dist/AddMembers/index.vue.d.ts +0 -31
- package/dist/AuditSteps/index.vue.d.ts +0 -46
- package/dist/DemoComponent/index.vue.d.ts +0 -2
- package/dist/EditableTable/index.vue.d.ts +0 -186
- package/dist/EditableTable/types.d.ts +0 -123
- package/dist/EditableTable/useCellHover.d.ts +0 -11
- package/dist/EditableTable/useColumnHeaderOperation.d.ts +0 -106
- package/dist/EditableTable/useDefaultOperation.d.ts +0 -22
- package/dist/EditableTable/useDragSort.d.ts +0 -15
- package/dist/EditableTable/usePagination.d.ts +0 -13
- package/dist/EditableTable/useRowBgColor.d.ts +0 -16
- package/dist/EditableTable/useViewSetting.d.ts +0 -58
- package/dist/Ellipsis/MultilineEllipsis.vue.d.ts +0 -91
- package/dist/Ellipsis/index.vue.d.ts +0 -89
- package/dist/LxTable/index.vue.d.ts +0 -2
- package/dist/PopoverForm/index.vue.d.ts +0 -50
- package/dist/SearchForm/index.vue.d.ts +0 -105
- package/dist/SearchSelect/index.vue.d.ts +0 -53
- package/dist/index.css +0 -1
- package/dist/index.d.ts +0 -11
- package/dist/index.mjs +0 -40808
- package/dist/singleMessage/index.d.ts +0 -4
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lx-frontend/wrap-element-ui",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.4",
|
|
4
4
|
"description": "wrap-element-ui",
|
|
5
5
|
"author": "",
|
|
6
6
|
"main": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
7
8
|
"private": false,
|
|
8
9
|
"scripts": {
|
|
9
10
|
"clean": "rimraf dist",
|
|
@@ -14,6 +15,7 @@
|
|
|
14
15
|
"preview": "serve ./storybook-static",
|
|
15
16
|
"publish:dev": "npm publish --access public --tag beta",
|
|
16
17
|
"publish:prod": "npm publish --access public",
|
|
18
|
+
"cdn": "gulp oss",
|
|
17
19
|
"lint": "eslint src"
|
|
18
20
|
},
|
|
19
21
|
"files": [
|
|
@@ -49,12 +51,11 @@
|
|
|
49
51
|
"@vue/eslint-config-typescript": "^13.0.0",
|
|
50
52
|
"@vue/test-utils": "1.0.0-beta.29",
|
|
51
53
|
"ali-oss": "^6.20.0",
|
|
54
|
+
"autoprefixer": "^10.4.19",
|
|
52
55
|
"cross-env": "^7.0.3",
|
|
53
56
|
"eslint": "^8.57.0",
|
|
54
57
|
"eslint-plugin-vue": "^9.27.0",
|
|
55
58
|
"gulp": "^4.0.2",
|
|
56
|
-
"gulp-autoprefixer": "^4.0.0",
|
|
57
|
-
"gulp-cssmin": "^0.1.7",
|
|
58
59
|
"less": "^4.2.0",
|
|
59
60
|
"react": "^18.3.1",
|
|
60
61
|
"react-dom": "^18.3.1",
|
|
@@ -64,7 +65,7 @@
|
|
|
64
65
|
"storybook": "7.6.19",
|
|
65
66
|
"through2": "^4.0.2",
|
|
66
67
|
"typescript": "^4.9.5",
|
|
67
|
-
"vite": "^
|
|
68
|
+
"vite": "^3.2.7",
|
|
68
69
|
"vite-plugin-dts": "^3.9.1",
|
|
69
70
|
"vite-plugin-lib-inject-css": "^2.1.1",
|
|
70
71
|
"vite-tsconfig-paths": "^4.3.2",
|
|
@@ -180,6 +180,31 @@
|
|
|
180
180
|
border-right: 2px #e4e8ef solid;
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
|
+
|
|
184
|
+
.el-table-filter,
|
|
185
|
+
th.el-table__cell .el-table__column-filter-trigger,
|
|
186
|
+
th.is-sortable .caret-wrapper {
|
|
187
|
+
display: none;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.el-table__body tr.current-row > td,
|
|
191
|
+
.el-table__body tr.hover-row > td {
|
|
192
|
+
background-color: #fafafa;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
table tbody tr td {
|
|
196
|
+
& .el-date-editor.el-input {
|
|
197
|
+
width: 100%;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
& .cell {
|
|
201
|
+
font-size: 14px;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.el-table__fixed-body-wrapper {
|
|
206
|
+
background: #fff;
|
|
207
|
+
}
|
|
183
208
|
}
|
|
184
209
|
|
|
185
210
|
.view-setting {
|
|
@@ -207,7 +232,7 @@
|
|
|
207
232
|
padding: 0px;
|
|
208
233
|
|
|
209
234
|
.el-dialog__body {
|
|
210
|
-
max-height:
|
|
235
|
+
max-height: 70vh;
|
|
211
236
|
}
|
|
212
237
|
|
|
213
238
|
.el-dialog__body {
|
|
@@ -497,6 +522,12 @@
|
|
|
497
522
|
background-color: @--theme-blue--;
|
|
498
523
|
border-color: @--theme-blue--;
|
|
499
524
|
}
|
|
525
|
+
|
|
526
|
+
.el-checkbox__input.is-checked .el-checkbox__inner,
|
|
527
|
+
.el-radio__input.is-checked .el-radio__inner {
|
|
528
|
+
background: #2468f2;
|
|
529
|
+
border-color: #2468f2;
|
|
530
|
+
}
|
|
500
531
|
}
|
|
501
532
|
|
|
502
533
|
.btn-pointer {
|
|
@@ -576,6 +607,8 @@
|
|
|
576
607
|
margin-top: 12px;
|
|
577
608
|
|
|
578
609
|
& .el-pagination {
|
|
610
|
+
padding: 0;
|
|
611
|
+
|
|
579
612
|
.el-pager li.number {
|
|
580
613
|
background-color: #fff;
|
|
581
614
|
border: 1px solid #d6dbe3;
|
|
@@ -605,26 +638,7 @@
|
|
|
605
638
|
}
|
|
606
639
|
}
|
|
607
640
|
|
|
608
|
-
.el-table__body tr.current-row > td,
|
|
609
|
-
.el-table__body tr.hover-row > td {
|
|
610
|
-
background-color: #fafafa;
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
.el-table-filter,
|
|
614
|
-
th.el-table__cell .el-table__column-filter-trigger,
|
|
615
|
-
th.is-sortable .caret-wrapper {
|
|
616
|
-
display: none;
|
|
617
|
-
}
|
|
618
641
|
|
|
619
|
-
table tbody tr td {
|
|
620
|
-
& .el-date-editor.el-input {
|
|
621
|
-
width: 100%;
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
& .cell {
|
|
625
|
-
font-size: 14px;
|
|
626
|
-
}
|
|
627
|
-
}
|
|
628
642
|
|
|
629
643
|
.editable-table {
|
|
630
644
|
& table th {
|
|
@@ -674,12 +688,6 @@ table tbody tr td {
|
|
|
674
688
|
}
|
|
675
689
|
}
|
|
676
690
|
|
|
677
|
-
.el-select-dropdown {
|
|
678
|
-
&__item {
|
|
679
|
-
text-align: center;
|
|
680
|
-
}
|
|
681
|
-
}
|
|
682
|
-
|
|
683
691
|
.el-dialog__header {
|
|
684
692
|
display: flex;
|
|
685
693
|
justify-content: space-between;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="editable-table">
|
|
3
3
|
<div class="view-setting">
|
|
4
|
-
<div
|
|
4
|
+
<div
|
|
5
|
+
v-if="!hideViewSettingBtn"
|
|
6
|
+
class="view-setting__btn-wrapper"
|
|
7
|
+
>
|
|
5
8
|
<div
|
|
6
9
|
class="view-setting__btn btn-pointer"
|
|
7
10
|
@click="handleViewSettingShow"
|
|
@@ -17,6 +20,7 @@
|
|
|
17
20
|
title="显示设置"
|
|
18
21
|
:visible.sync="viewSettingVisible"
|
|
19
22
|
width="750px"
|
|
23
|
+
top="12vh"
|
|
20
24
|
:close-on-click-modal="false"
|
|
21
25
|
:append-to-body="true"
|
|
22
26
|
custom-class="view-setting__dialog"
|
|
@@ -218,7 +222,7 @@
|
|
|
218
222
|
:key="column.prop + index"
|
|
219
223
|
resizable
|
|
220
224
|
class-name="editable-table__data-column"
|
|
221
|
-
:filtered-value="filteredValue[column.prop]
|
|
225
|
+
:filtered-value="Array.isArray(filteredValue[column.prop]) ? filteredValue[column.prop] : []"
|
|
222
226
|
v-bind="getColumnBindProps(column)"
|
|
223
227
|
>
|
|
224
228
|
<template
|
|
@@ -267,7 +271,7 @@
|
|
|
267
271
|
</div>
|
|
268
272
|
</div>
|
|
269
273
|
<div
|
|
270
|
-
v-if="column.
|
|
274
|
+
v-if="column.search && !Array.isArray(column.search)"
|
|
271
275
|
class="sort-filter__search"
|
|
272
276
|
>
|
|
273
277
|
<div class="sort-filter__search-title">
|
|
@@ -279,19 +283,41 @@
|
|
|
279
283
|
placeholder="请输入内容"
|
|
280
284
|
/>
|
|
281
285
|
</div>
|
|
286
|
+
|
|
282
287
|
<div
|
|
283
|
-
v-if="column.
|
|
288
|
+
v-if="column.search && Array.isArray(column.search)"
|
|
289
|
+
class="sort-filter__search"
|
|
290
|
+
style="display: flex;flex-direction: column;gap: 12px;"
|
|
291
|
+
>
|
|
292
|
+
<div
|
|
293
|
+
v-for="item in column.search"
|
|
294
|
+
:key="item.prop"
|
|
295
|
+
>
|
|
296
|
+
<div class="sort-filter__search-title">
|
|
297
|
+
{{ item.label }}
|
|
298
|
+
</div>
|
|
299
|
+
<el-input
|
|
300
|
+
v-model="tempSearchValue[item.prop]"
|
|
301
|
+
class="sort-filter__search-input"
|
|
302
|
+
placeholder="请输入内容"
|
|
303
|
+
/>
|
|
304
|
+
</div>
|
|
305
|
+
</div>
|
|
306
|
+
|
|
307
|
+
<div
|
|
308
|
+
v-if="column.filters && ((Array.isArray(column.filters) ? column.filters : column.filters.options).length > 0)"
|
|
284
309
|
class="sort-filter__filter"
|
|
285
310
|
>
|
|
286
311
|
<div class="sort-filter__filter-title">
|
|
287
312
|
筛选
|
|
288
313
|
</div>
|
|
289
314
|
<el-checkbox-group
|
|
315
|
+
v-if="column.filters && (Array.isArray(column.filters) || column.filters.type === 'checkbox')"
|
|
290
316
|
v-model="tempFilteredValue[column.prop]"
|
|
291
317
|
class="sort-filter__filter-checkbox-group"
|
|
292
318
|
>
|
|
293
319
|
<el-checkbox
|
|
294
|
-
v-for="item in column.filters"
|
|
320
|
+
v-for="item in (Array.isArray(column.filters) ? column.filters : column.filters.options)"
|
|
295
321
|
:key="item.value"
|
|
296
322
|
:label="item.value"
|
|
297
323
|
class="sort-filter__filter-checkbox"
|
|
@@ -304,6 +330,25 @@
|
|
|
304
330
|
</slot>
|
|
305
331
|
</el-checkbox>
|
|
306
332
|
</el-checkbox-group>
|
|
333
|
+
|
|
334
|
+
<el-radio-group
|
|
335
|
+
v-if="column.filters && !Array.isArray(column.filters) && column.filters.type === 'radio'"
|
|
336
|
+
v-model="tempFilteredValue[column.prop]"
|
|
337
|
+
style="display: flex;flex-direction: column;gap: 6px;"
|
|
338
|
+
>
|
|
339
|
+
<el-radio
|
|
340
|
+
v-for="item in column.filters.options"
|
|
341
|
+
:key="item.value"
|
|
342
|
+
:label="item.value"
|
|
343
|
+
>
|
|
344
|
+
<slot
|
|
345
|
+
:name="column.prop + '-filter-item'"
|
|
346
|
+
v-bind="item"
|
|
347
|
+
>
|
|
348
|
+
{{ item.text }}
|
|
349
|
+
</slot>
|
|
350
|
+
</el-radio>
|
|
351
|
+
</el-radio-group>
|
|
307
352
|
</div>
|
|
308
353
|
<div
|
|
309
354
|
v-if="column.summary"
|
|
@@ -339,7 +384,7 @@
|
|
|
339
384
|
<el-button
|
|
340
385
|
class="sort-filter__confirm-btn"
|
|
341
386
|
type="primary"
|
|
342
|
-
@click="handleHeaderOperationConfirm(scope)"
|
|
387
|
+
@click="handleHeaderOperationConfirm(column, scope)"
|
|
343
388
|
>
|
|
344
389
|
确定
|
|
345
390
|
</el-button>
|
|
@@ -538,7 +583,7 @@
|
|
|
538
583
|
:page-sizes="[10, 15, 30, 60, 100]"
|
|
539
584
|
:page-size.sync="pageSize"
|
|
540
585
|
:pager-count="11"
|
|
541
|
-
:current-page
|
|
586
|
+
:current-page="currentPage"
|
|
542
587
|
:total="total"
|
|
543
588
|
@size-change="handlePageSizeChange"
|
|
544
589
|
@current-change="handleCurrPageChange"
|
|
@@ -565,7 +610,7 @@ interface IProps {
|
|
|
565
610
|
dataList: ITableDataItem[];
|
|
566
611
|
/** 列配置 */
|
|
567
612
|
columnConfig: IColumnConfig[];
|
|
568
|
-
/** 是否展示展开行 */
|
|
613
|
+
/** 是否展示展开行 */
|
|
569
614
|
hasExpandRow?: boolean;
|
|
570
615
|
/** 是否展示序号 */
|
|
571
616
|
hasIndexColumn?: boolean;
|
|
@@ -585,6 +630,16 @@ interface IProps {
|
|
|
585
630
|
dragSemiRange?: number;
|
|
586
631
|
/** 是否显示加载 */
|
|
587
632
|
loading?: boolean;
|
|
633
|
+
/** 是否隐藏显示设置按钮 */
|
|
634
|
+
hideViewSettingBtn?: boolean
|
|
635
|
+
/** 设置的缓存的key */
|
|
636
|
+
settingStorgeKey?: string
|
|
637
|
+
/** 前端排序,默认关闭 */
|
|
638
|
+
localSort?: boolean
|
|
639
|
+
/** 前端过滤,默认关闭 */
|
|
640
|
+
localFilter?: boolean
|
|
641
|
+
/** 页码 */
|
|
642
|
+
currentPage: number
|
|
588
643
|
}
|
|
589
644
|
|
|
590
645
|
interface IEmits {
|
|
@@ -606,6 +661,10 @@ interface IEmits {
|
|
|
606
661
|
(e: 'row-edit-cancel', param: { row: any; page: number; size: number;}): void
|
|
607
662
|
/** 页码改变 */
|
|
608
663
|
(e: 'page-change', param: { page: number, size: number }): void
|
|
664
|
+
/** 查询 */
|
|
665
|
+
(e: 'search', param: Record<string, any>): void
|
|
666
|
+
/** 排序 */
|
|
667
|
+
(e: 'sort-change', param: { order: 'descending' | 'ascending' | null, prop: string }): void
|
|
609
668
|
}
|
|
610
669
|
|
|
611
670
|
const props = withDefaults(defineProps<IProps>(), {
|
|
@@ -620,7 +679,12 @@ const props = withDefaults(defineProps<IProps>(), {
|
|
|
620
679
|
colorList: () => [],
|
|
621
680
|
leftFixedCount: 1,
|
|
622
681
|
dragSemiRange: 15,
|
|
623
|
-
loading: false
|
|
682
|
+
loading: false,
|
|
683
|
+
hideViewSettingBtn: false,
|
|
684
|
+
settingStorgeKey: '',
|
|
685
|
+
localSort: false,
|
|
686
|
+
localFilter: false,
|
|
687
|
+
currentPage: 1,
|
|
624
688
|
})
|
|
625
689
|
|
|
626
690
|
// 同defineProps一样,不支持泛型参数从外部导入
|
|
@@ -640,16 +704,14 @@ const actualColumns = computed(() => {
|
|
|
640
704
|
isColumnSortable: rawItem.sortable,
|
|
641
705
|
sortable: inSorting.value ? rawItem.sortable : false
|
|
642
706
|
};
|
|
643
|
-
if (
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
item.fixed = undefined;
|
|
650
|
-
}
|
|
651
|
-
res.push(item);
|
|
707
|
+
if (cnt > 0) {
|
|
708
|
+
item.fixed = 'left';
|
|
709
|
+
// eslint-disable-next-line no-plusplus
|
|
710
|
+
cnt--;
|
|
711
|
+
} else {
|
|
712
|
+
item.fixed = undefined;
|
|
652
713
|
}
|
|
714
|
+
res.push(item);
|
|
653
715
|
}
|
|
654
716
|
|
|
655
717
|
// 使用默认操作项,添加默认操作列。该列在编辑模式下隐藏
|
|
@@ -675,9 +737,8 @@ const beforePageChange = () => {
|
|
|
675
737
|
}
|
|
676
738
|
const {
|
|
677
739
|
pageSize,
|
|
678
|
-
currentPage,
|
|
679
740
|
handleCurrPageChange,
|
|
680
|
-
handlePageSizeChange
|
|
741
|
+
handlePageSizeChange,
|
|
681
742
|
} = usePagination({
|
|
682
743
|
emit,
|
|
683
744
|
beforePageChange
|
|
@@ -717,7 +778,7 @@ const {
|
|
|
717
778
|
emit,
|
|
718
779
|
tableDomRef,
|
|
719
780
|
pageSize,
|
|
720
|
-
|
|
781
|
+
props,
|
|
721
782
|
hasExpandRow: props.hasExpandRow
|
|
722
783
|
})
|
|
723
784
|
|
|
@@ -739,6 +800,9 @@ const {
|
|
|
739
800
|
|
|
740
801
|
/************ 列头部操作相关 ************ */
|
|
741
802
|
const {
|
|
803
|
+
setSort,
|
|
804
|
+
clearSort,
|
|
805
|
+
setSearchParams,
|
|
742
806
|
isColumnHeadActive,
|
|
743
807
|
handleSort,
|
|
744
808
|
handleHeaderPopoverShow,
|
|
@@ -756,11 +820,13 @@ const {
|
|
|
756
820
|
sortingColumn,
|
|
757
821
|
isColumnFiltering,
|
|
758
822
|
searchValue,
|
|
759
|
-
inSorting
|
|
823
|
+
inSorting,
|
|
760
824
|
} = useColumnHeaderOperation({
|
|
761
825
|
tableDomRef,
|
|
762
826
|
sortFilterPopoverRef,
|
|
763
|
-
props
|
|
827
|
+
props,
|
|
828
|
+
emit,
|
|
829
|
+
showingColumns,
|
|
764
830
|
})
|
|
765
831
|
|
|
766
832
|
/************ 表格行拖拽和显示设置列拖拽 ************ */
|
|
@@ -787,7 +853,6 @@ useDragSort({
|
|
|
787
853
|
props,
|
|
788
854
|
viewSettingDragSortOptions,
|
|
789
855
|
beforeDragStart,
|
|
790
|
-
currentPage,
|
|
791
856
|
pageSize,
|
|
792
857
|
currScope,
|
|
793
858
|
tableDomRef,
|
|
@@ -798,18 +863,10 @@ const doTableLayout = async () => {
|
|
|
798
863
|
tableDomRef.value?.doLayout();
|
|
799
864
|
}
|
|
800
865
|
|
|
801
|
-
watch(
|
|
802
|
-
() => props.columnConfig,
|
|
803
|
-
(val) => {
|
|
804
|
-
showingColumns.value = val.map(c => c.prop);
|
|
805
|
-
},
|
|
806
|
-
{ immediate: true }
|
|
807
|
-
)
|
|
808
|
-
|
|
809
866
|
// 过滤出自定义属性,将其它属性全部透传给 el-table-column
|
|
810
867
|
const getColumnBindProps = (column: IColumnConfig) => {
|
|
811
868
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
812
|
-
const { editAble, editType, slotName, inputType, options, ...rest } = column;
|
|
869
|
+
const { editAble, editType, slotName, inputType, options, filters, ...rest } = column;
|
|
813
870
|
return rest;
|
|
814
871
|
}
|
|
815
872
|
|
|
@@ -832,7 +889,20 @@ const handleColumnClose = (item) => {
|
|
|
832
889
|
|
|
833
890
|
defineExpose({
|
|
834
891
|
closeAllExpandedRows,
|
|
835
|
-
|
|
892
|
+
openViewSetting: handleViewSettingShow,
|
|
893
|
+
elTableRef: tableDomRef,
|
|
894
|
+
setSort,
|
|
895
|
+
clearSort,
|
|
896
|
+
setSearchParams,
|
|
897
|
+
})
|
|
898
|
+
|
|
899
|
+
// loading 结束和页码变化时滚动到顶部
|
|
900
|
+
watch([
|
|
901
|
+
() => props.loading,
|
|
902
|
+
() => props.currentPage,
|
|
903
|
+
], ([loading]) => {
|
|
904
|
+
if (loading) return;
|
|
905
|
+
tableDomRef.value.$el.querySelector('.el-table__body-wrapper').scrollTop = 0
|
|
836
906
|
})
|
|
837
907
|
|
|
838
908
|
</script>
|
|
@@ -11,24 +11,40 @@ export interface IColumnConfigRequired {
|
|
|
11
11
|
sortable?: boolean; // 该列是否允许排序,ture则表头弹窗会显示升降序按钮
|
|
12
12
|
slotName?: string; // 如果要自定义,传入 slotName
|
|
13
13
|
isAlwaysShow?: boolean; // 不可隐藏,显示设置中,该列不允许隐藏
|
|
14
|
-
|
|
14
|
+
/** 默认隐藏,显示设置中,该列默认隐藏 */
|
|
15
|
+
defaultHide?: boolean;
|
|
16
|
+
/** 列是否允许搜索,true则表头弹窗会多一个搜索框,一列中有多个搜索字段时传数组进行配置 */
|
|
17
|
+
search?: boolean | ISearchOptions
|
|
15
18
|
summary?: boolean; // 是否可以显示该列的统计
|
|
16
19
|
summaryMethod?: (values: any[]) => string | number; // 这一列的统计方法,values为该列的所有值
|
|
17
|
-
|
|
20
|
+
/** 过滤,传数组时默认复选框 */
|
|
21
|
+
filters?: {
|
|
22
|
+
type?: 'checkbox' | 'radio',
|
|
23
|
+
options: FiltersOption[]
|
|
24
|
+
default?: string | number | string[] | number[]
|
|
25
|
+
} | FiltersOption[]
|
|
18
26
|
// 透传el-table column有的属性, https://element.eleme.cn/#/en-US/component/table#table-column-attributes
|
|
19
27
|
[key: string]: any;
|
|
20
28
|
}
|
|
21
29
|
|
|
30
|
+
type FiltersOption = { value: string | number; text: string; [key: string]: any }
|
|
31
|
+
|
|
32
|
+
type ISearchOptions = {
|
|
33
|
+
prop: string,
|
|
34
|
+
label: string,
|
|
35
|
+
validator?: (value: string) => boolean
|
|
36
|
+
}[]
|
|
37
|
+
|
|
22
38
|
type IInputColumn = IColumnConfigRequired & {
|
|
23
39
|
inputType: string | number;
|
|
24
40
|
}
|
|
25
41
|
|
|
26
42
|
type ISelectColumn = IColumnConfigRequired & {
|
|
27
|
-
options: {key: string; value: string | number; [key: string]: any}[];
|
|
43
|
+
options: { key: string; value: string | number; [key: string]: any }[];
|
|
28
44
|
}
|
|
29
45
|
|
|
30
|
-
type IDateOnlyColumn = IColumnConfigRequired
|
|
31
|
-
type IDateTimeColumn = IColumnConfigRequired
|
|
46
|
+
type IDateOnlyColumn = IColumnConfigRequired
|
|
47
|
+
type IDateTimeColumn = IColumnConfigRequired
|
|
32
48
|
|
|
33
49
|
export type IColumnConfig = IInputColumn | ISelectColumn | IDateOnlyColumn | IDateTimeColumn
|
|
34
50
|
|
|
@@ -79,16 +95,22 @@ export interface IProps {
|
|
|
79
95
|
leftFixedCount?: number;
|
|
80
96
|
dragSemiRange?: number;
|
|
81
97
|
loading?: boolean;
|
|
98
|
+
settingStorgeKey?: string
|
|
99
|
+
localSort?: boolean
|
|
100
|
+
localFilter?: boolean
|
|
101
|
+
currentPage: number
|
|
82
102
|
}
|
|
83
103
|
|
|
84
104
|
export interface IEmits {
|
|
85
105
|
(e: 'selection-change', selection: any): void
|
|
86
|
-
(e: 'row-bg-change', param: {colorId: number; row: ITableDataItem; rowIndex: number}): void
|
|
87
|
-
(e: 'row-drag-drop', param: { row: any; fromIndex: number; toIndex: number; page: number; size: number;}): void
|
|
106
|
+
(e: 'row-bg-change', param: { colorId: number; row: ITableDataItem; rowIndex: number }): void
|
|
107
|
+
(e: 'row-drag-drop', param: { row: any; fromIndex: number; toIndex: number; page: number; size: number; }): void
|
|
88
108
|
(e: 'row-delete', param: { row: any; index: number; page: number; size: number; }): void
|
|
89
|
-
(e: 'row-edit', param: { row: any, index: number; page: number; size: number;}): void
|
|
90
|
-
(e: 'row-pin-to-top', param: { row: any, rawIndex: number; page: number; size: number;}): void
|
|
109
|
+
(e: 'row-edit', param: { row: any, index: number; page: number; size: number; }): void
|
|
110
|
+
(e: 'row-pin-to-top', param: { row: any, rawIndex: number; page: number; size: number; }): void
|
|
91
111
|
(e: 'row-edit-save', param: { page: number; size: number; row: any; changedData: Record<string, any>; }): void
|
|
92
|
-
(e: 'row-edit-cancel', param: { row: any; page: number; size: number;}): void
|
|
112
|
+
(e: 'row-edit-cancel', param: { row: any; page: number; size: number; }): void
|
|
93
113
|
(e: 'page-change', param: { page: number, size: number }): void
|
|
114
|
+
(e: 'search', param: Record<string, any>): void
|
|
115
|
+
(e: 'sort-change', param: { order: 'descending' | 'ascending' | null, prop: string }): void
|
|
94
116
|
}
|