@lx-frontend/wrap-element-ui 1.0.24 → 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 +65 -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 -256
  109. package/src/components/SearchForm/types/index.ts +0 -79
  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,339 +0,0 @@
1
- import { computed, nextTick, ref, Ref, watch } from 'vue'
2
- import {
3
- FilterItem,
4
- FilterListType,
5
- IColumnConfig,
6
- IEmits,
7
- IFilterInput,
8
- IFilterSolt,
9
- IProps
10
- } from '../types';
11
-
12
- interface IUseColumnHeaderOperationParams {
13
- props: IProps
14
- tableDomRef: any
15
- emit: IEmits;
16
- showingColumns: Ref<string[]>
17
- }
18
-
19
- export function useColumnHeaderOperation({ props, tableDomRef, emit, showingColumns }: IUseColumnHeaderOperationParams) {
20
- // column如果有sortable属性,点击列头部,会直接触发排序,为了在弹窗点确定时再触发排序,需要阻止点击立即排序
21
- // 所以,初始渲染时,将sortable设置为false,在触发排序逻辑时再设置成真实的值,再利用el-table自身的排序逻辑触发排序
22
- const inSorting = ref(false);
23
-
24
- // 生效中的排序配置
25
- const sortType = ref<'ascending' | 'descending' | null>(null);
26
- const sortProp = ref('')
27
-
28
- // 临时的排序配置
29
- const tempSortType = ref<'ascending' | 'descending' | ''>('');
30
- const tempSortProp = ref('')
31
-
32
- // 生效中的过滤配置 和 临时过滤配置
33
- const filteredValue = ref<Record<string, string | number | number[] | string[]>>({});
34
- const tempFilteredValue = ref<Record<string, string | number | number[] | string[]>>({});
35
-
36
- // 生效中的统计配置 和 临时统计配置
37
- const tempSummaryList = ref<string[]>([]);
38
- const summaryList = ref<string[]>([]);
39
-
40
- const isColumnFiltering = computed(() => {
41
- return Object.keys(tempFilteredValue.value).some(
42
- (key) => {
43
- const value = tempFilteredValue.value[key]
44
- if (Array.isArray(value)) return value.length
45
- return value;
46
- }
47
- )
48
- });
49
-
50
- const showColumnHeadSortIcon = ({ isColumnSortable, filters }: IColumnConfig) => {
51
- return isColumnSortable || (filters && Array.isArray(filters) && filters.length > 0)
52
- }
53
-
54
- watch(
55
- () => props.columnConfig,
56
- (val) => {
57
- val?.forEach(v => handleResetFilterValue(v));
58
- tempFilteredValue.value = { ...filteredValue.value };
59
- },
60
- { immediate: true }
61
- )
62
-
63
- const tableSummaryMethod = (param) => {
64
- const { columns, data } = param;
65
- const sums: (string | number)[] = []
66
- columns.forEach((column, index) => {
67
- if (index === 0) {
68
- sums[index] = '合计';
69
- return;
70
- }
71
- if (!summaryList.value.includes(column.property)) {
72
- sums[index] = '';
73
- } else {
74
- const values = data.map(item => item[column.property]);
75
- // 找到对应列的summaryMethod函数
76
- const summaryMethod = props.columnConfig.find(c => c.prop === column.property)?.summaryMethod ?? (() => '');
77
- sums[index] = summaryMethod(values);
78
- }
79
- })
80
-
81
- return sums
82
- }
83
-
84
- const isColumnHeadActive = ({ prop, filters, _sortable }: IColumnConfig) => {
85
- const hasFilters = filters && Array.isArray(filters) && filters.length > 0
86
- const currentFilterActive = hasFilters && filters?.some(
87
- (item) => {
88
- if (item.type === 'doubleDatePicker' || item.type === 'monthDayPicker') {
89
- const [start, end] = item.prop
90
- return !!(filteredValue.value[start] || filteredValue.value[end])
91
- }
92
-
93
- if (item.type === 'checkbox') {
94
- return !!(filteredValue.value[item.prop] as any[]).length
95
- }
96
-
97
- if (item.type === 'slot') {
98
- return item.active()
99
- }
100
-
101
- return !!filteredValue.value[item.prop]
102
- }
103
- )
104
-
105
- const isUseSort = Array.isArray(_sortable)
106
- ? _sortable.some(v => v.prop === sortProp.value)
107
- : sortProp.value === prop
108
-
109
- return currentFilterActive || isUseSort|| summaryList.value.includes(prop);
110
- }
111
-
112
- const handleHeaderPopoverShow = (column: IColumnConfig) => {
113
- // 关闭其他的排序和筛选弹窗(理论上不写也能关闭其他,但是就是有些列会出现两个弹窗同时出现的情况)
114
- closeSortAndFilterPopover(column.prop);
115
- tempFilteredValue.value = { ...filteredValue.value };
116
- tempSortType.value = sortType.value || '';
117
- tempSortProp.value = sortProp.value || '';
118
- // 临时合计项设置成实际的合计项
119
- tempSummaryList.value = [...summaryList.value];
120
- }
121
-
122
- const closeSortAndFilterPopover = (exceptProp?: string) => {
123
- document.querySelectorAll('span[data-popper-name]').forEach((item: any) => {
124
- if (!exceptProp || exceptProp !== item.dataset.prop) {
125
- item?.__vue__?.doClose?.();
126
- }
127
- });
128
- }
129
-
130
- const handleSort = (type: 'ascending' | 'descending', prop: string) => {
131
- tempSortType.value = type;
132
- tempSortProp.value = prop;
133
- }
134
-
135
- const columnMap = computed(() => {
136
- const obj: Record<string, IColumnConfig> = {}
137
- props.columnConfig.forEach(column => {
138
- obj[column.prop] = column
139
- })
140
-
141
- return obj
142
- })
143
-
144
- const emitSearch = () => {
145
- const params: Record<string, any> = {};
146
-
147
- const processFilter = (filters: FilterListType) => {
148
- filters
149
- .filter((item): item is Exclude<FilterItem, IFilterSolt> => item.type !== 'slot')
150
- .forEach((item) => {
151
- if (item.type === 'doubleDatePicker' || item.type === 'monthDayPicker') {
152
- const [start, end] = item.prop
153
- params[start] = filteredValue.value[start];
154
- params[end] = filteredValue.value[end];
155
- } else {
156
- params[item.prop] = filteredValue.value[item.prop];
157
- }
158
- });
159
- }
160
-
161
- // 仅提交显示的列的相关数据
162
- showingColumns.value.forEach(prop => {
163
- const { filters = [] } = columnMap.value[prop] as IColumnConfig;
164
- processFilter(filters);
165
- });
166
-
167
- if (props.colorFilterConfig) {
168
- const { filters = [] } = props.colorFilterConfig;
169
- processFilter(filters);
170
- }
171
-
172
- Object.keys(params).forEach(key => {
173
- if (params[key] === undefined) delete params[key];
174
- });
175
-
176
- emit('search', {
177
- ...params,
178
- page: 1
179
- });
180
- };
181
-
182
-
183
- const handleHeaderOperationConfirm = async (column: IColumnConfig) => {
184
- const inputFilters = (column.filters ?? []).filter(
185
- (item): item is IFilterInput => item.type === 'input'
186
- );
187
-
188
- const hasValidatorError = inputFilters.some(
189
- (item) => item.validator
190
- && !item.validator((tempFilteredValue.value[item.prop] as string).trim())
191
- )
192
-
193
- if (hasValidatorError) {
194
- return
195
- }
196
-
197
- inputFilters.forEach(
198
- (item) => {
199
- if (!tempFilteredValue.value[item.prop]) tempFilteredValue.value[item.prop] = ''
200
- }
201
- )
202
-
203
- summaryList.value = [...tempSummaryList.value];
204
- sortProp.value = tempSortProp.value || '';
205
- sortType.value = tempSortType.value || null;
206
-
207
- if (sortProp.value) { // 确认时提交排序
208
- if (props.localSort) {
209
- // 恢复列配置的sortable属性,只有列配置的sortable为true,才能用下面的sort方法
210
- inSorting.value = true;
211
- await nextTick();
212
- tableDomRef.value?.sort(sortProp.value, sortType.value);
213
- inSorting.value = false
214
- } else {
215
- emit('sort-change', { order: sortType.value, prop: sortProp.value });
216
- }
217
- }
218
-
219
- filteredValue.value = { ...tempFilteredValue.value };
220
-
221
- emitSearch();
222
- closeSortAndFilterPopover();
223
- await nextTick()
224
- tableDomRef.value?.doLayout();
225
- }
226
-
227
- const clearSort = () => {
228
- sortProp.value = '';
229
- sortType.value = null;
230
- if (props.localSort) { // 前端过滤
231
- tableDomRef.value?.clearSort();
232
- } else { // 接口过滤
233
- emit('sort-change', { order: null, prop: '' });
234
- }
235
- }
236
-
237
- const setSort = (params: { order: 'ascending' | 'descending', prop: string }) => {
238
- const column = props.columnConfig.find(c => Array.isArray(c.sortable)
239
- ? c.sortable.some(v => v.prop === params.prop)
240
- : c.prop === params.prop);
241
-
242
- if (column) {
243
- sortProp.value = params.prop
244
- sortType.value = params.order;
245
- if (props.localSort) {
246
- tableDomRef.value?.sort(params.prop, params.order);
247
- }
248
- }
249
- }
250
-
251
- function handleResetFilterValue (column: IColumnConfig) {
252
- (column.filters || [])
253
- .filter((item): item is Exclude<FilterItem, IFilterSolt> => item.type !== 'slot')
254
- .forEach(
255
- (item) => {
256
- if (item.type === 'radio' || item.type === 'checkbox') {
257
- if (item.defaultValue) {
258
- filteredValue.value[item.prop] = item.defaultValue
259
- } else {
260
- filteredValue.value[item.prop] = item.type === 'radio' ? '' : []
261
- }
262
- } else if (item.type === 'doubleDatePicker' || item.type === 'monthDayPicker') {
263
- const [start, end] = item.prop
264
- filteredValue.value[start] = '';
265
- filteredValue.value[end] = '';
266
- } else {
267
- filteredValue.value[item.prop] = ''
268
- }
269
- }
270
- )
271
- }
272
-
273
- const handleHeaderOperationReset = async (column: IColumnConfig) => {
274
- if (
275
- sortProp.value &&
276
- (Array.isArray(column._sortable)
277
- ? column._sortable.some(v => v.prop === sortProp.value)
278
- : sortProp.value === column.prop)
279
- ) {
280
- clearSort();
281
- }
282
-
283
- // 合计
284
- summaryList.value = summaryList.value.filter(item => item !== column.prop);
285
-
286
- handleResetFilterValue(column)
287
- emitSearch();
288
- closeSortAndFilterPopover();
289
- await nextTick();
290
- tableDomRef.value?.doLayout();
291
- }
292
-
293
- const setSearchParams = (params: Record<string, any>) => {
294
- const _filteredValue = {};
295
-
296
- // 设置搜索和过滤参数时,如果使用 showingColumns 遍历,会导致通过外部设置未显示的列的搜索和过滤参数丢失
297
- [props.colorFilterConfig, ...props.columnConfig].forEach(column => {
298
- (column?.filters ?? [])
299
- .filter((item): item is Exclude<FilterItem, IFilterSolt> => item.type !== 'slot')
300
- .forEach(
301
- (item) => {
302
- if (item.type === 'doubleDatePicker' || item.type === 'monthDayPicker') {
303
- const [start, end] = item.prop
304
- _filteredValue[start] = params[start]
305
- _filteredValue[end] = params[end]
306
- } else if (item.type === 'checkbox') {
307
- _filteredValue[item.prop] = params[item.prop] ?? item.defaultValue ?? []
308
- } else {
309
- _filteredValue[item.prop] = params[item.prop] ?? ''
310
- }
311
- }
312
- )
313
- })
314
-
315
- filteredValue.value = { ...filteredValue.value, ..._filteredValue }
316
- }
317
-
318
- return {
319
- setSort,
320
- clearSort,
321
- setSearchParams,
322
- isColumnHeadActive,
323
- handleHeaderPopoverShow,
324
- handleSort,
325
- handleHeaderOperationConfirm,
326
- handleHeaderOperationReset,
327
- summaryList,
328
- tableSummaryMethod,
329
- filteredValue,
330
- showColumnHeadSortIcon,
331
- tempSortProp,
332
- tempFilteredValue,
333
- tempSummaryList,
334
- tempSortType,
335
- sortProp,
336
- isColumnFiltering,
337
- inSorting,
338
- }
339
- }
@@ -1,96 +0,0 @@
1
- import { Ref, ref } from "vue"
2
- import { IEmits, IProps } from "../types"
3
-
4
- interface IParams {
5
- emit: IEmits;
6
- pageSize: Ref<number>;
7
- props: IProps
8
- tableDomRef: Ref<any>;
9
- hasExpandRow: boolean
10
- }
11
-
12
- export function useDefaultOperation({ emit, pageSize, props, tableDomRef, hasExpandRow }: IParams) {
13
- const operationPopoverRef = ref<any>(null);
14
- const editingRowData = ref<Record<string, any>>({});
15
- const editingRowIndex = ref<number>(-1);
16
-
17
- const handleDelete = (row, index) => {
18
- emit('row-delete', {
19
- row,
20
- index,
21
- page: props.currentPage,
22
- size: pageSize.value
23
- })
24
- closeOperationPopover();
25
- }
26
-
27
- const closeOperationPopover = () => {
28
- operationPopoverRef.value?.forEach((item) => item?.doClose());
29
- }
30
-
31
- const closeAllExpandedRows = () => {
32
- if (!hasExpandRow) return
33
- tableDomRef.value?.data.forEach((item) => {
34
- tableDomRef.value?.toggleRowExpansion(item, false)
35
- })
36
- }
37
-
38
- const handleEdit = (scope) => {
39
- // 折叠所有展开的行
40
- closeAllExpandedRows();
41
- const { row, $index: index } = scope;
42
- editingRowData.value = { ...row };
43
- editingRowIndex.value = index;
44
- emit('row-edit', { row, index, page: props.currentPage, size: pageSize.value });
45
- closeOperationPopover();
46
- }
47
-
48
- const handleRowPinToTop = (scope) => {
49
- const { row, $index: index, store } = scope;
50
- const dataList = store.states.data;
51
- const newList = [
52
- ...dataList.slice(0, index),
53
- ...dataList.slice(index + 1)
54
- ];
55
- newList.unshift({ ...row, isPinned: true });
56
- store.states.data = newList;
57
- emit('row-pin-to-top', { row, rawIndex: index, page: props.currentPage, size: pageSize.value });
58
- closeOperationPopover();
59
- }
60
-
61
- const handleEditSave = (row) => {
62
- editingRowIndex.value = -1;
63
- const changedData = {}
64
- for (const key of Object.keys(row)) {
65
- if (row[key] !== editingRowData.value[key]) {
66
- changedData[key] = editingRowData.value[key]
67
- }
68
- }
69
-
70
- emit('row-edit-save', {
71
- page: props.currentPage,
72
- size: pageSize.value,
73
- row,
74
- changedData
75
- });
76
- editingRowData.value = {};
77
- }
78
-
79
- const handleEditCancel = (row) => {
80
- editingRowIndex.value = -1;
81
- editingRowData.value = {};
82
- emit('row-edit-cancel', { row, page: props.currentPage, size: pageSize.value });
83
- }
84
-
85
- return {
86
- operationPopoverRef,
87
- editingRowData,
88
- editingRowIndex,
89
- handleDelete,
90
- closeAllExpandedRows,
91
- handleEdit,
92
- handleEditSave,
93
- handleEditCancel,
94
- handleRowPinToTop
95
- }
96
- }