@lx-frontend/wrap-element-ui 1.0.25 → 1.0.26

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.
Files changed (113) hide show
  1. package/README.md +54 -4
  2. package/dist/auto/index.mjs +21 -0
  3. package/dist/auto/types/index.d.ts +9 -0
  4. package/dist/vue2/index.css +1 -0
  5. package/dist/vue2/index.mjs +3017 -0
  6. package/dist/vue2/types/components/AddMembers/index.vue.d.ts +31 -0
  7. package/dist/vue2/types/components/AuditSteps/index.vue.d.ts +46 -0
  8. package/dist/vue2/types/components/DemoComponent/index.vue.d.ts +2 -0
  9. package/{src/components/EditableTable/bizHooks/index.ts → dist/vue2/types/components/EditableTable/bizHooks/index.d.ts} +1 -1
  10. package/dist/vue2/types/components/EditableTable/bizHooks/useCellHover.d.ts +11 -0
  11. package/dist/vue2/types/components/EditableTable/bizHooks/useColumnHeaderOperation.d.ts +34 -0
  12. package/dist/vue2/types/components/EditableTable/bizHooks/useDefaultOperation.d.ts +22 -0
  13. package/dist/vue2/types/components/EditableTable/bizHooks/useDragSort.d.ts +14 -0
  14. package/dist/vue2/types/components/EditableTable/bizHooks/usePagination.d.ts +12 -0
  15. package/dist/vue2/types/components/EditableTable/bizHooks/useRowBgColor.d.ts +15 -0
  16. package/dist/vue2/types/components/EditableTable/bizHooks/useViewSetting.d.ts +26 -0
  17. package/dist/vue2/types/components/EditableTable/features/bizColorSelect.vue.d.ts +25 -0
  18. package/dist/vue2/types/components/EditableTable/features/bizEditCell.vue.d.ts +21 -0
  19. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizCheckboxFilter.vue.d.ts +21 -0
  20. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizColorRadioFilter.vue.d.ts +21 -0
  21. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue.d.ts +21 -0
  22. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizInputFilter.vue.d.ts +21 -0
  23. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.d.ts +48 -0
  24. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.vue.d.ts +21 -0
  25. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizRadioFilter.vue.d.ts +21 -0
  26. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizSortFilter.vue.d.ts +23 -0
  27. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/index.vue.d.ts +311 -0
  28. package/dist/vue2/types/components/EditableTable/features/bizTableOperatePopover.vue.d.ts +32 -0
  29. package/dist/vue2/types/components/EditableTable/features/bizViewSettingDialog.vue.d.ts +30 -0
  30. package/dist/vue2/types/components/EditableTable/index.vue.d.ts +472 -0
  31. package/dist/vue2/types/components/EditableTable/types/index.d.ts +235 -0
  32. package/dist/vue2/types/components/Ellipsis/MultilineEllipsis.vue.d.ts +91 -0
  33. package/dist/vue2/types/components/Ellipsis/index.vue.d.ts +89 -0
  34. package/dist/vue2/types/components/LxTable/index.vue.d.ts +2 -0
  35. package/dist/vue2/types/components/PopoverForm/index.vue.d.ts +50 -0
  36. package/dist/vue2/types/components/SearchForm/index.vue.d.ts +116 -0
  37. package/dist/vue2/types/components/SearchForm/types/index.d.ts +65 -0
  38. package/dist/vue2/types/components/SearchSelect/index.vue.d.ts +53 -0
  39. package/dist/vue2/types/components/helper.d.ts +8 -0
  40. package/dist/vue2/types/components/index.d.ts +12 -0
  41. package/dist/vue2/types/components/singleMessage/index.d.ts +4 -0
  42. package/dist/vue2/types/vue2/index.d.ts +1363 -0
  43. package/dist/vue3/index.css +1 -0
  44. package/dist/vue3/index.mjs +2306 -0
  45. package/dist/vue3/index.mjs.map +1 -0
  46. package/dist/vue3/types/components/EditableTable/features/bizColorSelect.vue.d.ts +31 -0
  47. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizCheckboxFilter.vue.d.ts +23 -0
  48. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizColorRadioFilter.vue.d.ts +23 -0
  49. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue.d.ts +23 -0
  50. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizInputFilter.vue.d.ts +23 -0
  51. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.d.ts +48 -0
  52. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.vue.d.ts +23 -0
  53. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizRadioFilter.vue.d.ts +23 -0
  54. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizSortFilter.vue.d.ts +25 -0
  55. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/index.vue.d.ts +77 -0
  56. package/dist/vue3/types/components/EditableTable/features/bizTableOperatePopover.vue.d.ts +36 -0
  57. package/dist/vue3/types/components/EditableTable/features/bizViewSettingDialog.vue.d.ts +35 -0
  58. package/dist/vue3/types/components/EditableTable/hooks/index.d.ts +9 -0
  59. package/dist/vue3/types/components/EditableTable/hooks/useCellHover.d.ts +19 -0
  60. package/dist/vue3/types/components/EditableTable/hooks/useColumnHeaderOperation.d.ts +37 -0
  61. package/dist/vue3/types/components/EditableTable/hooks/useDefaultOperation.d.ts +22 -0
  62. package/dist/vue3/types/components/EditableTable/hooks/useDragSort.d.ts +15 -0
  63. package/dist/vue3/types/components/EditableTable/hooks/usePagination.d.ts +12 -0
  64. package/dist/vue3/types/components/EditableTable/hooks/useRowBgColor.d.ts +18 -0
  65. package/dist/vue3/types/components/EditableTable/hooks/useRowEdit.d.ts +14 -0
  66. package/dist/vue3/types/components/EditableTable/hooks/useTableRender.d.ts +41 -0
  67. package/dist/vue3/types/components/EditableTable/hooks/useViewSetting.d.ts +26 -0
  68. package/dist/vue3/types/components/EditableTable/index.vue.d.ts +4478 -0
  69. package/dist/vue3/types/components/EditableTable/types.d.ts +419 -0
  70. package/dist/vue3/types/components/helper.d.ts +8 -0
  71. package/dist/vue3/types/index.d.ts +7 -0
  72. package/dist/vue3/types/stories/EditableTable.fake.d.ts +33 -0
  73. package/dist/vue3/types/stories/EditableTable.hook.d.ts +12 -0
  74. package/dist/vue3/types/stories/EditableTable.stories.d.ts +18 -0
  75. package/package.json +38 -8
  76. package/src/components/AddMembers/index.vue +0 -149
  77. package/src/components/AuditSteps/index.vue +0 -140
  78. package/src/components/DemoComponent/index.vue +0 -21
  79. package/src/components/EditableTable/README.md +0 -147
  80. package/src/components/EditableTable/bizHooks/useCellHover.ts +0 -72
  81. package/src/components/EditableTable/bizHooks/useColumnHeaderOperation.ts +0 -339
  82. package/src/components/EditableTable/bizHooks/useDefaultOperation.ts +0 -96
  83. package/src/components/EditableTable/bizHooks/useDragSort.ts +0 -291
  84. package/src/components/EditableTable/bizHooks/usePagination.ts +0 -31
  85. package/src/components/EditableTable/bizHooks/useRowBgColor.ts +0 -44
  86. package/src/components/EditableTable/bizHooks/useViewSetting.ts +0 -206
  87. package/src/components/EditableTable/features/bizColorSelect.vue +0 -63
  88. package/src/components/EditableTable/features/bizEditCell.vue +0 -44
  89. package/src/components/EditableTable/features/bizTableHeaderPopover/BizCheckboxFilter.vue +0 -40
  90. package/src/components/EditableTable/features/bizTableHeaderPopover/BizColorRadioFilter.vue +0 -56
  91. package/src/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue +0 -94
  92. package/src/components/EditableTable/features/bizTableHeaderPopover/BizInputFilter.vue +0 -26
  93. package/src/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.ts +0 -131
  94. package/src/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.vue +0 -115
  95. package/src/components/EditableTable/features/bizTableHeaderPopover/BizRadioFilter.vue +0 -39
  96. package/src/components/EditableTable/features/bizTableHeaderPopover/BizSortFilter.vue +0 -50
  97. package/src/components/EditableTable/features/bizTableHeaderPopover/index.vue +0 -160
  98. package/src/components/EditableTable/features/bizTableOperatePopover.vue +0 -67
  99. package/src/components/EditableTable/features/bizViewSettingDialog.vue +0 -137
  100. package/src/components/EditableTable/index.less +0 -820
  101. package/src/components/EditableTable/index.vue +0 -681
  102. package/src/components/EditableTable/pin-top.png +0 -0
  103. package/src/components/EditableTable/types/index.ts +0 -212
  104. package/src/components/Ellipsis/MultilineEllipsis.vue +0 -141
  105. package/src/components/Ellipsis/index.vue +0 -119
  106. package/src/components/LxTable/index.vue +0 -296
  107. package/src/components/PopoverForm/index.vue +0 -66
  108. package/src/components/SearchForm/index.vue +0 -262
  109. package/src/components/SearchForm/types/index.ts +0 -81
  110. package/src/components/SearchSelect/index.vue +0 -153
  111. package/src/components/helper.ts +0 -37
  112. package/src/components/index.ts +0 -24
  113. package/src/components/singleMessage/index.ts +0 -44
@@ -1,149 +0,0 @@
1
- <template>
2
- <div>
3
- <PopoverForm
4
- :title="title"
5
- :with-submit-btn="false"
6
- :width="360"
7
- @on-change="handleCloseTechniciansSelectPopup"
8
- >
9
- <div
10
- slot="form"
11
- class="team-setting__technicians-popover"
12
- >
13
- <div class="team-setting__technicians-select">
14
- <el-input
15
- v-model="techniciansSearchQuery"
16
- placeholder="请输入姓名"
17
- @input="handleInputTechniciansSearch"
18
- />
19
- </div>
20
- <div
21
- v-if="techniciansSearchQuery && !technicianOptions.length && !fetchTechniciansLoading"
22
- class="team-setting__empty-technicians-options"
23
- >
24
- {{ $attrs.empty || '系统未登记该员工,请先添加员工账号' }}
25
- </div>
26
- <ul
27
- v-else
28
- class="team-setting__technicians-options"
29
- >
30
- <li
31
- class="team-setting__technicians-option"
32
- v-for="item in technicianOptions"
33
- :key="item[$attrs.showConfig.id]"
34
- >
35
- <div class="team-setting__technicians-option-left">
36
- {{ `${item[$attrs.showConfig.name]} | ${item.roles}` }}
37
- </div>
38
- <el-button
39
- v-if="item.is_selected"
40
- type="text"
41
- disabled
42
- >
43
- 已添加
44
- </el-button>
45
- <el-button
46
- v-else
47
- type="text"
48
- @click="handleAddTechnician($attrs.keyId, item)"
49
- >
50
- 添加
51
- </el-button>
52
- </li>
53
- </ul>
54
- </div>
55
- <el-button
56
- slot="reference"
57
- type="text"
58
- icon="el-icon-plus"
59
- >
60
- {{ title }}
61
- </el-button>
62
- </PopoverForm>
63
- </div>
64
- </template>
65
-
66
- <script>
67
- import PopoverForm from '../PopoverForm'
68
- export default {
69
- name: 'AddMembers',
70
- components: {
71
- PopoverForm
72
- },
73
- props: {
74
- /** 成员数据 */
75
- technicianOptions: Array,
76
- /** 获取数据加载中 */
77
- fetchTechniciansLoading: Boolean,
78
- /** 弹窗标题 */
79
- title: {
80
- type: String,
81
- default: '添加成员',
82
- },
83
- },
84
- data() {
85
- return {
86
- techniciansSearchQuery: '',
87
- }
88
- },
89
- watch: {
90
- },
91
- methods: {
92
- handleCloseTechniciansSelectPopup(show) {
93
- if (show) return;
94
- this.techniciansSearchQuery = '';
95
- this.$emit('update:technicianOptions', []);
96
- },
97
- handleInputTechniciansSearch(query) {
98
- this.$emit('fetchTechniciansMethods', query);
99
- },
100
- handleAddTechnician(id, item) {
101
- const query = { id, item };
102
- this.$emit('handleAddTechnician', query);
103
- },
104
- },
105
- };
106
- </script>
107
-
108
- <style lang="less">
109
- .team-setting {
110
- &__technicians-popover {
111
- padding: 20px;
112
- height: 350px;
113
- overflow-y: auto;
114
- }
115
- &__technicians-select {
116
- width: 320px;
117
- }
118
- &__empty-technicians-options {
119
- font-size: 12px;
120
- color: #80838e;
121
- text-align: center;
122
- margin-top: 10px;
123
- }
124
- &__technicians-options {
125
- display: flex;
126
- flex-direction: column;
127
- }
128
- &__technicians-option {
129
- display: flex;
130
- justify-content: space-between;
131
- align-items: center;
132
- height: 30px;
133
- &-left {
134
- width: 250px;
135
- overflow: hidden;
136
- text-overflow: ellipsis;
137
- white-space: nowrap;
138
- color: #80838e;
139
- }
140
- &-right {
141
- color: #1890ff;
142
- &--selected {
143
- color: #80838e;
144
- }
145
- }
146
- }
147
- }
148
-
149
- </style>
@@ -1,140 +0,0 @@
1
- <template>
2
- <div class="audit-steps">
3
- <ElSteps direction="vertical">
4
- <ElStep class="audit-steps__step-item" v-for="(item, index) in value" :key="index">
5
- <div slot="icon">{{index + 1}}</div>
6
- <div :class="{'el-name-box': item.id}" slot="description">
7
- <span :class="[ 'audit-steps__step-order', {first: index===0} ]">{{index + 1}}</span>
8
- <ElSelect
9
- :value="item.employees"
10
- @input="val => handleEditCandidate(val, index)"
11
- multiple
12
- :multiple-limit="maxSelect"
13
- placeholder="请选择">
14
- <ElOption
15
- v-for="v in candidates"
16
- :key="v.id"
17
- :label="v.name"
18
- :value="v.id" />
19
- </ElSelect>
20
- <i class="el-name" v-if="item.id">{{item.miniName}}</i>
21
- <i class="el-icon-delete" v-if="index" @click="handleDeleteStep(index)" ></i>
22
- </div>
23
- </ElStep>
24
- </ElSteps>
25
- <ElButton v-if="isAdd" type="text" class="audit-steps__add" icon="circle-plus" @click="handleAddStep">添加审核环节</ElButton>
26
- </div>
27
- </template>
28
-
29
- <script>
30
- export default {
31
- name: 'AuditSteps',
32
- props: {
33
- candidates: {
34
- type: Array
35
- },
36
- value: {
37
- type: Array,
38
- default () {
39
- return []
40
- }
41
- },
42
- maxSelect: {
43
- type: Number,
44
- default: 3
45
- },
46
- stepNum: {
47
- type: Number,
48
- default: 2
49
- }
50
- },
51
- computed: {
52
- isAdd () {
53
- return this.value.length < this.stepNum
54
- }
55
- },
56
- methods: {
57
- syncSteps (modification) {
58
- const _steps = [ ...this.value ]
59
- this.$emit('input', modification(_steps))
60
- },
61
- handleEditCandidate (val, index) {
62
- this.syncSteps(_steps => {
63
- _steps[index].employees = val
64
- return _steps
65
- })
66
- },
67
- handleDeleteStep (i) {
68
- this.syncSteps(_steps => {
69
- _steps.splice(i, 1)
70
- return _steps
71
- })
72
- },
73
- handleAddStep () {
74
- this.syncSteps(_steps => {
75
- return _steps.concat([{ employees: [] }])
76
- })
77
- },
78
- // 判断是不是每一个步骤都选有审核人
79
- isValidateSteps () {
80
- return !this.value.some(_steps => _steps.employees.length <= 0)
81
- }
82
- }
83
- }
84
- </script>
85
-
86
- <style lang="less">
87
- .audit-steps {
88
- width: 612px;
89
-
90
- .el-step__head {
91
- display: none;
92
- }
93
-
94
- &__step-item {
95
- min-height: 43px;
96
- max-height: 43px;
97
- margin-bottom: 35px;
98
-
99
- .el-select {
100
- width: 400px;
101
- }
102
-
103
- .el-icon-delete {
104
- margin-left: 10px;
105
- font-size: 16px;
106
- cursor: pointer;
107
- }
108
- }
109
-
110
- &__step-order {
111
- cursor: default;
112
- margin-right: 8px;
113
- position: relative;
114
- display: inline-block;
115
- text-align: center;
116
- width: 20px;
117
- height: 20px;
118
- border-radius: 50%;
119
- border: 1px solid #aaa;
120
- background: #aaa;
121
- color: #fff;
122
-
123
- &:not(.first):before{
124
- position: absolute;
125
- content: '';
126
- display: block;
127
- width: 1px;
128
- height: 60px;
129
- background: #aaa;
130
- top: -60px;
131
- left: 50%;
132
- }
133
- }
134
-
135
- &__add {
136
- margin-top: -10px;
137
- }
138
- }
139
- </style>
140
-
@@ -1,21 +0,0 @@
1
- <template>
2
- <div class="demo-component__input">
3
- <ElInput title="DemoComponent" lable="DemoComponent" />
4
- </div>
5
- </template>
6
- <script>
7
- export default{
8
- name: 'DemoComponent'
9
- }
10
- </script>
11
-
12
- <style lang="less">
13
- @--test: 30px;
14
-
15
- .demo-component {
16
- &__input {
17
- width: @--test;
18
- border-color: red;
19
- }
20
- }
21
- </style>
@@ -1,147 +0,0 @@
1
- # EditableTable
2
-
3
- ## 属性
4
-
5
- ### EditableTable 属性
6
-
7
- | 属性名 | 类型 | 默认值 | 是否必须 | 说明 |
8
- | ------------------ | ------- | ------ | -------- | ---------------- |
9
- | columnConfig | Array | [] | 是 | 列配置数组 |
10
- | dataList | Array | [] | 是 | 当前页数据列表 |
11
- | total | Number | 0 | 是 | 总条数 |
12
- | loading | Boolean | false | 否 | 是否正在加载 |
13
- | hasIndexColumn | Boolean | false | 否 | 是否展示索引 |
14
- | hasExpandRow | Boolean | false | 否 | 是否展示展开行 |
15
- | hasSelectionColumn | Boolean | false | 否 | 是否展示选择列 |
16
- | rowDragAble | Boolean | false | 否 | 是否支持拖拽 |
17
- | defaultOperations | Array | [] | 否 | 默认操作 |
18
- | colorList | Array | [] | 否 | 行背景色颜色列表 |
19
- | leftFixedCount | Number | 0 | 否 | 左侧固定列数量 |
20
- | dragSemiRange | Number | 15 | 否 | 性能优化配置 |
21
-
22
- #### columnConfig
23
-
24
- 所有和列相关的操作都在这里配置。具体和功能相关的配置可参考后续功能相关的文档,这里只说明两个必选的参数:prop 和 label。
25
-
26
- prop: 该列在列表中的唯一标识,和 dataList 数组项中的属性相对应
27
- label: 该列的表头展示名称
28
-
29
- 同时,columnConfig 列表项也能接收 el-table-column 组件所能传递的任何属性,如 width,min-width 等,这些属性会直接透传给对应的 el-table-column 组件。详见[el-table-column](https://element.eleme.io/#/en-US/component/table#table-column-attributes)
30
-
31
- #### dataList
32
-
33
- 列表要显示的数据列表。其中每一项都必须包含 prop 属性,和 columnConfig 中的 prop 属性相对应。
34
-
35
- 其次,dataList 数据项还包含几个特别的属性:
36
-
37
- - colorId: Number 类型,表示当前行的背景色 id,和 colorList 中的 id 对应
38
- - isPinned: Boolean 类型,表示当前行是否置顶
39
-
40
- #### defaultOperations
41
-
42
- 如果这个配置不为空数组,则会在列表最右侧显示操作列。当前支持三种操作:删除(delete)、编辑(edit)、置顶(top)。默认值为空数组,表示不显示操作列。
43
-
44
- eg:
45
-
46
- 1. defaultOperations: ['delete', 'edit', 'top'] // 显示删除、编辑、置顶
47
- 2. defaultOperations: ['delete'] // 只显示删除操作
48
-
49
- #### colorList
50
-
51
- 行背景色弹窗配置列表。ts 类型表示如下:
52
-
53
- ```ts
54
- type IColorList = {
55
- name: string; // 颜色名称
56
- textColor: string; // 颜色弹窗中文本颜色,避免文字颜色与背景颜色相同时,无法看清文字
57
- sampleColor: string; // 颜色弹窗中样例的颜色
58
- bgColor: string; // 选中颜色后,行背景色
59
- id: number; // 颜色id
60
- default?: boolean; // 是否是默认色,默认色需要显示颜色图标
61
- }[];
62
- ```
63
-
64
- 这里之所以有 sampleColor 和 bgColor,是因为样例样色和实际设置的背景色不一样。通常背景色是通过样例色添加透明度后得到的,但是在设置行背景色时,如果背景透明,会导致其他显示问题,所以这里使用不透明的实际背景色。
65
-
66
- #### dragSemiRange
67
-
68
- 性能优化配置,拖拽元素的拖拽范围。默认值为 15,表示拖拽范围为当前拖拽元素的上下 15 个元素。
69
-
70
- 因为在拖拽过程中,需要对所有行进行遍历,设置属性,当列表过大时,性能较差,所以这里限制拖拽范围在当前拖拽元素的上下 15 个元素内,拖拽时只需要处理最多 30 个元素,性能会更好。
71
-
72
- ## Usage
73
-
74
- ### 自定义列
75
-
76
- 如果某一列数据需要特殊展示,可以在 columnConfig 中配置 slotName,该值为该列的插槽名称。slotName 不为空,则使用用户提供的插槽内容来渲染对应的列。
77
-
78
- ```ts
79
- columnConfig: [
80
- {
81
- prop: "name",
82
- label: "姓名",
83
- slotName: "name",
84
- },
85
- {
86
- prop: "statusName",
87
- label: "状态",
88
- slotName: "statusName",
89
- },
90
- ];
91
- ```
92
-
93
- ```xml
94
- <EditableTable :columnConfig="columnConfig" :dataList="dataList">
95
- <template v-slot:statusName="scope">
96
- 自定义内容,{{ scope.row }}为该行数据
97
- </template>
98
- </EditableTable>
99
- ```
100
-
101
- 以上例子,`name`对应的列使用默认渲染,而 statusName 则使用自定义的插槽内容进行渲染。
102
-
103
- ### 列排序
104
-
105
- 列排序是指,根据某一列的排序规则,对当前列表页的行数据进行排序。
106
-
107
- 开启列排序,只需要在 columnConfig 中设置 sortable 为 true,并且设置`sort-method`方法即可。
108
-
109
- `sort-method`的使用方法和`el-table`的`sort-method`完全一致。
110
-
111
- ### 列筛选
112
-
113
- 列筛选是指,根据某一列的筛选规则,对当前列表页的行数据进行筛选,保留符合条件的行数据。
114
-
115
- 开启列筛选,需要在 columnConfig 中设置 filters 和 filter-method 方法,这两个属性均来自[el-table](https://element.eleme.io/#/en-US/component/table#table-column-attributes)。
116
-
117
- ### 列搜索
118
-
119
- 列搜索是指,根据用户的输入,对当前列表页的行数据进行搜索,保留符合条件的行数据。
120
-
121
- 开启列搜索,需要在 columnConfig 中设置 searchable 为 true。
122
-
123
- 如果不提供 searchMethod 方法,则会检查当前列对应的数据是否包含搜索关键字,如果包含,则保留。
124
-
125
- 如果提供了 searchMethod 方法,在触发搜索时会将该行数据传入该方法,返回 true 则保留该行,否则过滤该行。
126
-
127
- ### 列统计
128
-
129
- 列统计是指,根据某一列的统计规则,对当前列数据进行统计,统计结果会在表格底部显示。
130
-
131
- 开启列统计,需要在 columnConfig 中设置 summary 为 true,同时需要在 columnConfig 中设置 summaryMethod 方法,该方法接收一个由当前列数据组成的数组,返回一个字符串或数字类型的统计结果。
132
-
133
- ```ts
134
- // price列统计所有价格的和
135
- columnConfig: [
136
- {
137
- prop: "price",
138
- label: "价格",
139
- summary: true,
140
- summaryMethod: (data: number[]) => {
141
- return data.reduce((a, b) => a + b, 0);
142
- },
143
- },
144
- ];
145
- ```
146
-
147
- ### 单元格 hover 态展示
@@ -1,72 +0,0 @@
1
- import debounce from 'lodash/debounce';
2
- import throttle from 'lodash/throttle';
3
- import { onBeforeUnmount, onMounted, ref } from 'vue'
4
-
5
- export function useCellHover(tableDomRef) {
6
-
7
- // 鼠标悬浮的行
8
- const hoveringCellInfo = ref<{
9
- rowIndex: number;
10
- columnProperty: string;
11
- }>({ rowIndex: -1, columnProperty: ''});
12
-
13
- const isMouseWheeling = ref(false);
14
-
15
- onMounted(() => {
16
- tableDomRef.value.$el.addEventListener('mouseleave', resetHoveringCellInfo);
17
- document.addEventListener('wheel', throttledHandleMouseWheel);
18
- })
19
-
20
- onBeforeUnmount(() => {
21
- tableDomRef.value.$el.removeEventListener('mouseleave', resetHoveringCellInfo);
22
- document.removeEventListener('wheel', throttledHandleMouseWheel);
23
- })
24
-
25
- const setCellClassName = ({ column, rowIndex }) => {
26
- // hoving-cell-[name]-[rowIndex]
27
- if (!column.property) return '';
28
- return `hoving-cell-(${column.property})-(${rowIndex})`;
29
- }
30
-
31
- const resetHoveringCellInfo = () => {
32
- hoveringCellInfo.value = {
33
- rowIndex: -1,
34
- columnProperty: ''
35
- };
36
- }
37
-
38
- let timerHandler: any = null
39
- // 性能考虑,在鼠标滚动时,停止处理cell的hover事件
40
- const handleMouseWheel = () => {
41
- isMouseWheeling.value = true;
42
- clearTimeout(timerHandler);
43
- // 停止滚动后,恢复hover事件
44
- timerHandler = setTimeout(() => {
45
- isMouseWheeling.value = false;
46
- }, 100)
47
- }
48
- const throttledHandleMouseWheel = throttle(handleMouseWheel, 50);
49
-
50
- const handleCellMouseEnter = (row, column, cell, event) => {
51
- // 性能考虑,表格滚动时会不断触发该事件,导致滚动性能变差
52
- if (isMouseWheeling.value) return
53
-
54
- const className = [...event.target.classList].find(c => /hoving-cell-\(\w+\)-\(\d+\)/.test(c))
55
- if (!className) return;
56
- // 正则匹配括号中的内容
57
- const matchArr = className.match(/hoving-cell-\((\w+)\)-\((\d+)\)/);
58
-
59
- hoveringCellInfo.value = {
60
- rowIndex: +matchArr?.[2],
61
- columnProperty: matchArr?.[1]
62
- }
63
- }
64
-
65
- const debouncedHoverHandler = debounce(handleCellMouseEnter, 10);
66
-
67
- return {
68
- hoveringCellInfo,
69
- setCellClassName,
70
- debouncedHoverHandler
71
- }
72
- }