@kyfe/ks-query-table 0.0.2 → 0.0.3

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 (75) hide show
  1. package/index.js +35386 -7
  2. package/package.json +7 -5
  3. package/query-table.common.js.map +1 -0
  4. package/query-table.css +1 -0
  5. package/query-table.umd.js +35396 -0
  6. package/query-table.umd.js.map +1 -0
  7. package/query-table.umd.min.js +11 -0
  8. package/query-table.umd.min.js.map +1 -0
  9. package/README.md +0 -45
  10. package/api/index.js +0 -12
  11. package/assets/horizontal-back.svg +0 -1
  12. package/components/pe-table/cell.js +0 -184
  13. package/components/pe-table/collapse.js +0 -334
  14. package/components/pe-table/empty.vue +0 -48
  15. package/components/pe-table/header.js +0 -328
  16. package/components/pe-table/images/abnormal.png +0 -0
  17. package/components/pe-table/images/empty.png +0 -0
  18. package/components/pe-table/images/fold.svg +0 -1
  19. package/components/pe-table/images/sort.svg +0 -1
  20. package/components/pe-table/images/sorting.svg +0 -1
  21. package/components/pe-table/images/unfold.svg +0 -1
  22. package/components/pe-table/index.vue +0 -837
  23. package/components/pe-table/load-more.js +0 -46
  24. package/components/pe-table/props/index.js +0 -183
  25. package/components/pe-table/row.vue +0 -118
  26. package/components/pe-table/scrollbar.js +0 -424
  27. package/components/pe-table/stretch-damping.js +0 -112
  28. package/components/pe-table/style/cell.less +0 -89
  29. package/components/pe-table/style/empty.less +0 -48
  30. package/components/pe-table/style/header.less +0 -141
  31. package/components/pe-table/style/index.less +0 -88
  32. package/components/pe-table/style/load-more.less +0 -61
  33. package/components/pe-table/style/row.less +0 -6
  34. package/components/pe-table/table-loading.vue +0 -119
  35. package/components/pe-table/table-total.vue +0 -53
  36. package/components/pe-table/utils/animate.js +0 -80
  37. package/components/pe-table/utils/columns.js +0 -290
  38. package/components/pe-table/utils/data.js +0 -12
  39. package/components/pe-table/utils/fixed.js +0 -69
  40. package/components/pe-table/utils/formatter.js +0 -327
  41. package/components/pe-table/utils/render-cells.js +0 -424
  42. package/components/pe-table/utils/slot.js +0 -28
  43. package/components/pe-table/utils/tools.js +0 -84
  44. package/components/pe-table/utils/touch-scroll.js +0 -417
  45. package/components/query-table/index.vue +0 -492
  46. package/components/query-table/mixins/column-mixin.js +0 -102
  47. package/components/query-table/mixins/column-setting.js +0 -143
  48. package/components/query-table/mixins/data-mixin.js +0 -502
  49. package/components/query-table/mixins/pagination-mixin.js +0 -25
  50. package/components/query-table/mixins/table-fixed.js +0 -111
  51. package/components/query-table/mixins/table-horizontal.js +0 -119
  52. package/components/table-horizontal.vue +0 -99
  53. package/components/table-pagination.vue +0 -32
  54. package/components/table-settings/assets/arrpw-up.svg +0 -1
  55. package/components/table-settings/assets/disabled-down.svg +0 -1
  56. package/components/table-settings/assets/disabled-up.svg +0 -1
  57. package/components/table-settings/assets/down.svg +0 -1
  58. package/components/table-settings/assets/up.svg +0 -1
  59. package/components/table-settings/index.less +0 -294
  60. package/components/table-settings/index.vue +0 -260
  61. package/components/table-settings/settings.vue +0 -479
  62. package/components/table-settings/test.js +0 -626
  63. package/components/table-settings//344/270/252/346/200/247/350/256/276/347/275/256.md +0 -0
  64. package/components/tooltip.js +0 -124
  65. package/hooks/use-cache-promise.js +0 -27
  66. package/hooks/use-column-config.js +0 -186
  67. package/hooks/use-encryption.js +0 -0
  68. package/hooks/use-generic-search.js +0 -95
  69. package/store/column-store.js +0 -0
  70. package/styles/table.less +0 -24
  71. package/utils/column.js +0 -36
  72. package/utils/config.js +0 -12
  73. package/utils/encryption.js +0 -32
  74. package/utils/http.js +0 -1
  75. package/utils/localStorage.js +0 -35
@@ -1,479 +0,0 @@
1
- <template>
2
- <div :class="{'pe-table-setting-popup': true, 'fixed-head': fixedHead}">
3
- <div class="pe-table-setting__wrapper">
4
- <div class="pe-table-setting__header">
5
- <div class="pe-table-setting__header__title-wrap">
6
- <span class="pe-table-setting__header__title">表头编辑</span>
7
- <span class="pe-table-setting__header__title-desc">可拖动排序</span>
8
- </div>
9
- <div class="pe-table-setting__header__table-title">
10
- <span class="pe-table-setting__field-sort">序号</span>
11
- <span class="pe-table-setting__field-title">指标名称</span>
12
- <span class="pe-table-setting__switch">显示/隐藏</span>
13
- <span class="pe-table-setting__up">上移</span>
14
- <span class="pe-table-setting__down">下移</span>
15
- </div>
16
- </div>
17
- <div :class="{'pe-table-setting__list-wrapper': true, 'fixed-head': fixedHead}">
18
- <ul class="pe-table-setting__list">
19
- <draggable v-model="columns"
20
- draggable=".draggable-li"
21
- :delay="delay"
22
- @start="isDraggable = true"
23
- @end="isDraggable = false"
24
- @change="draggableChange">
25
- <li v-for="(column, index) of columns"
26
- :key="column.key"
27
- :class="{ 'draggable-li':! column.fixed }">
28
- <div :class="{ 'parent-col': true, 'active': activeIndex === index }">
29
- <span class="list_item__field-sort">
30
- <ks-field v-model="column.sortNum"
31
- :border="true"
32
- :disabled="!!column.fixed"
33
- type="digit"
34
- :ref="'field' + index"
35
- @input="validateInput($event, column, index)"
36
- @focus="sortFocus($event, column)"
37
- @blur="sortNumBlur($event, column.sortNum, index, column)"
38
- @keyup.enter="sortNumBlur($event, column.sortNum, index)"
39
- />
40
- </span>
41
- <span :class="{'list_item__field-title': true, 'expand': !!column.collapseKeys}"
42
- @click="(e)=>{expandClick(column,e)}">
43
- <span class="" >{{ column.label2 || column.label }}</span>
44
- <span v-show="column.expandCols && column.expandCols.length">
45
- <span class="arrow up"
46
- v-show="column.collapsed" />
47
- <span class="arrow down"
48
- v-show="!column.collapsed" />
49
- </span>
50
- </span>
51
- <span class="list_item__switch">
52
- <ks-switch size="12"
53
- :disabled="column.disabled"
54
- @change="switchChange($event, column, column)"
55
- v-model="column.show" />
56
- </span>
57
- <span class="list_item__up"
58
- @click="itemUp(columns, index, column, 'first')">
59
- <span :class="{ disabled: disabledItemUp(columns, index, column, 'first') }"></span>
60
- </span>
61
- <span class="list_item__down"
62
- @click="itemDown(columns, index, column, 'first')">
63
- <span :class="{ disabled: disabledItemDown(columns, index, column, 'first') }"></span>
64
- </span>
65
- </div>
66
- <draggable v-show="column.collapsed && !isDraggable"
67
- v-model="column.expandCols"
68
- @change="expandColsDraggableChange"
69
- @start="childDraggable = true"
70
- @end="childDraggable = false"
71
- draggable=".expand-col-box"
72
- :delay="delay"
73
- >
74
- <div v-for="(expandItem, expandIndex) in column.expandCols"
75
- :key="expandItem.key"
76
- class="expand-col-box">
77
- <div class="expand-col">
78
- <span class="list_item__field-sort"></span>
79
- <span :class="{ 'list_item__field-title': true, expand: !!expandItem.collapseKeys || expandItem.isExpand }" @touch.stop @click="showPopover">
80
- <span >{{ expandItem.label }}</span>
81
- </span>
82
- <span class="list_item__switch">
83
- <ks-switch size="12"
84
- :disabled="expandItem.disabled"
85
- v-model="expandItem.show"
86
- @change="switchChange($event, column, expandItem)" />
87
- </span>
88
- <span class="list_item__up"
89
- @click="itemUp(column.expandCols, expandIndex, expandItem)">
90
- <span :class="{ disabled: disabledItemUp(column.expandCols, expandIndex, expandItem) }"></span>
91
- </span>
92
- <span class="list_item__down"
93
- @click="itemDown(column.expandCols, expandIndex, expandItem)">
94
- <span :class="{ disabled: disabledItemDown(column.expandCols, expandIndex, expandItem) }"></span>
95
- </span>
96
- </div>
97
- <draggable v-show="expandItem.expandCols && !childDraggable"
98
- v-model="expandItem.expandCols"
99
- draggable=".child-expand-col"
100
- @change="expandColsDraggableChange"
101
- :delay="delay">
102
- <div v-for="(cExpandItem, cExpandIndex) in expandItem.expandCols"
103
- :key="cExpandItem.key + cExpandIndex"
104
- class="child-expand-col">
105
- <span class="list_item__field-sort"></span>
106
- <span class="list_item__field-title expand" @touch.stop @click="showPopover">
107
- {{ cExpandItem.label }}
108
- </span>
109
- <span class="list_item__switch">
110
- <ks-switch size="12"
111
- :disabled="cExpandItem.disabled"
112
- v-model="cExpandItem.show"
113
- @change="switchChange($event, column, cExpandItem, expandItem)" />
114
- </span>
115
- <span class="list_item__up"
116
- @click="itemUp(expandItem.expandCols, cExpandIndex, null, 'expand')">
117
- <span :class="{ disabled: disabledItemUp(expandItem.expandCols, cExpandIndex, null, 'expand') }"></span>
118
- </span>
119
- <span class="list_item__down"
120
- @click="itemDown(expandItem.expandCols, cExpandIndex, null, 'expand')">
121
- <span :class="{ disabled: disabledItemDown(expandItem.expandCols, cExpandIndex, null, 'expand') }"></span>
122
- </span>
123
- </div>
124
- </draggable>
125
- </div>
126
- </draggable>
127
- </li>
128
- </draggable>
129
- </ul>
130
- </div>
131
- </div>
132
- </div>
133
- </template>
134
-
135
- <script>
136
- import cloneDeep from 'lodash/cloneDeep'
137
- import draggable from 'vuedraggable'
138
- import tippy from 'tippy.js';
139
- import './index.less'
140
-
141
- export default {
142
- title: 'tableSettings',
143
- components: {
144
- draggable,
145
- },
146
- props: {
147
- tableColumns: {
148
- type: Array,
149
- default: () => {
150
- return []
151
- },
152
- },
153
- fixedHead: {
154
- type: Boolean,
155
- default: true,
156
- },
157
- },
158
- data() {
159
- return {
160
- delay: 200,
161
- columns: [],
162
- activeIndex: -1,
163
- hideColumns: [],
164
- isDraggable: false,
165
- childDraggable: false,
166
- }
167
- },
168
- computed: {
169
- fixedColLength() {
170
- return this.columns.filter(v => v.fixed).length
171
- },
172
- },
173
- // watch: {
174
- // columns: {
175
- // deep: true,
176
- // handler(val) {
177
- // console.log(val)
178
- // },
179
- // },
180
- // },
181
- methods: {
182
- parseStyleValue (value) {
183
- const parsed = parseFloat(value);
184
- return isNaN(parsed) ? 0 : parsed; // 如果解析失败,默认返回 0
185
- },
186
- showPopover(event) {
187
- const element = event.currentTarget;
188
- const range = document.createRange();
189
- range.selectNodeContents(element);
190
- const textWidth = range.getBoundingClientRect().width;
191
- const style = window.getComputedStyle(element);
192
- const clientWidth = element.clientWidth - this.parseStyleValue(style.paddingLeft) - this.parseStyleValue(style.paddingRight);
193
- if (textWidth > clientWidth) {
194
- tippy(element, {
195
- content: element.innerText,
196
- placement: 'top',
197
- theme: 'light',
198
- appendTo: document.body,
199
- offset: [0,-4],
200
- hideOnClick: true, // 点击任何地方都会关闭
201
- interactive: true, // 允许与弹窗交互
202
- trigger: 'manual', // 手动触发
203
- onShow(instance) {
204
- // 点击外部关闭的处理
205
- const handleClickOutside = (e) => {
206
- if (!instance.popper.contains(e.target) && e.target !== element) {
207
- instance.hide();
208
- }
209
- };
210
-
211
- document.addEventListener('touchstart', handleClickOutside);
212
-
213
- instance._clickOutsideHandler = handleClickOutside;
214
- },
215
- onHide(instance) {
216
- // 移除事件监听
217
- document.removeEventListener('touchstart', instance._clickOutsideHandler);
218
- },
219
- onClickOutside(instance) {
220
- instance.hide();
221
- }
222
- }).show();
223
- }
224
- },
225
- validateInput(val, column, index) {
226
- let _val = val.replace(/[^\d]*/g, '')
227
- column.sortNum = _val
228
- this.$refs['field' + index][0].$el.querySelector('input').value = _val
229
- },
230
- sortFocus(e, column) {
231
- e.target.value = ''
232
- column.sortNum = ''
233
- },
234
- expandClick(column,e) {
235
- this.showPopover(e)
236
- column.collapsed = !column.collapsed
237
- this.$forceUpdate()
238
- },
239
- switchChange(status, col, curCol, parentCol) {
240
- if (curCol.expandCols && curCol.expandCols.length) {
241
- curCol.expandCols.forEach(v => {
242
- v.show = status
243
- if (v.expandCols) {
244
- v.expandCols.forEach(e => {
245
- e.show = status
246
- })
247
- }
248
- })
249
- }
250
- if (status) {
251
- // 一级表头同时打开
252
- col.show = true
253
- if (parentCol) {
254
- // 父级表头打开
255
- parentCol.show = true
256
- }
257
- }
258
- this.$emit('change', [...this.getData()])
259
- },
260
- disabledItemUp(cols, oldIndex, column, type) {
261
- const { fixed, collapseKeys, isExpand } = column || {}
262
- if (fixed) {
263
- return true
264
- } else if ((oldIndex - this.fixedColLength === 0 && type === 'first') || oldIndex == 0) {
265
- if (type === 'first') {
266
- // 一级表头
267
- return true
268
- } else if (!!collapseKeys || isExpand || type === 'expand') {
269
- // 伸缩列
270
- return true
271
- } else {
272
- // 二级表头
273
- return true
274
- }
275
- } else {
276
- return false
277
- }
278
- },
279
- disabledItemDown(columns, index, column, type) {
280
- const { fixed, collapseKeys, isExpand } = column || {}
281
- if (fixed) {
282
- return true
283
- } else if (index === columns.length - 1) {
284
- if (type === 'first') {
285
- // 一级表头
286
- return true
287
- } else if (!!collapseKeys || isExpand || type === 'expand') {
288
- // 伸缩列
289
- return true
290
- } else {
291
- // 二级表头
292
- return true
293
- }
294
- } else {
295
- return false
296
- }
297
- },
298
- itemUp(cols, oldIndex, column, type) {
299
- const { fixed, collapseKeys, isExpand } = column || {}
300
- if (fixed) {
301
- return this.$toast('当前为固定列,无法移动')
302
- } else if ((oldIndex - this.fixedColLength === 0 && type === 'first') || oldIndex == 0) {
303
- if (type === 'first') {
304
- // 一级表头
305
- return this.$toast('当前为第一列,无法上移')
306
- } else if (!!collapseKeys || isExpand || type === 'expand') {
307
- // 伸缩列
308
- return this.$toast('已为子表头的第一列,无法上移')
309
- } else {
310
- // 二级表头
311
- return this.$toast('已为二级表头的第一列,无法上移')
312
- }
313
- }
314
- cols.splice(oldIndex - 1, 0, cols.splice(oldIndex, 1)[0])
315
- this.resetSortNum()
316
- },
317
- itemDown(cols, oldIndex, column, type) {
318
- const { fixed, collapseKeys, isExpand } = column || {}
319
- if (fixed) {
320
- return this.$toast('当前为固定列,无法移动')
321
- } else if (oldIndex === cols.length - 1) {
322
- if (type === 'first') {
323
- // 一级表头
324
- return this.$toast('当前为最后一列,无法下移')
325
- } else if (!!collapseKeys || isExpand || type === 'expand') {
326
- // 伸缩列
327
- return this.$toast('已为子表头的最后一列,无法下移')
328
- } else {
329
- // 二级表头
330
- return this.$toast('已为二级表头的最后一列,无法下移')
331
- }
332
- }
333
- cols.splice(oldIndex + 1, 0, cols.splice(oldIndex, 1)[0])
334
- this.resetSortNum()
335
- },
336
- sortNumBlur(e, newIndex, oldIndex, column) {
337
- if (!newIndex) {
338
- e.target.value = oldIndex + this.fixedColLength
339
- column.sortNum = oldIndex + this.fixedColLength
340
- return
341
- }
342
- let _newIndex = newIndex <= this.fixedColLength ? this.fixedColLength + 1 : newIndex
343
- this.columns.splice(_newIndex - 1, 0, this.columns.splice(oldIndex, 1)[0])
344
- this.resetSortNum()
345
- // 暂时不激活
346
- // this.activeIndex = _newIndex - 1
347
- },
348
- draggableChange() {
349
- this.resetSortNum()
350
- },
351
- expandColsDraggableChange() {
352
- this.$forceUpdate()
353
- },
354
- formatColumns(val) {
355
- let _columns = val || this.tableColumns
356
- this.hideColumns = _columns.filter(v => v.isHide)
357
- this.columns = []
358
- let allCollapseKeys = []
359
- _columns.forEach(v => {
360
- // 只有一级且 有展开列
361
- if (v.collapseKeys && v.collapseKeys.length) {
362
- v.expandCols = []
363
- // v.collapsed = true
364
- // 找到需要展开的列
365
- v.collapseKeys.forEach(cKey => {
366
- let collapseItem = _columns.find(t => t.key === cKey)
367
- if (collapseItem) {
368
- allCollapseKeys.push(collapseItem.key)
369
- if (!v.expandCols.some(e => e.key === collapseItem.key)) {
370
- collapseItem.isExpand = true
371
- v.expandCols.push(collapseItem)
372
- }
373
- }
374
- })
375
- }
376
- // 处理children
377
- if (v.children && v.children.length) {
378
- v.expandCols = []
379
- v.collapsed = true
380
- v.hasChildren = true
381
- // 当前子级下的所有展开列
382
- v.children.allCollapseKeys = []
383
- v.children.forEach(children => {
384
- if (children.collapseKeys && children.collapseKeys.length) {
385
- // 先追加到二级
386
- v.expandCols.push(children)
387
- children.expandCols = []
388
- // v.collapsed = true
389
- // 找到需要二级需要展开收起的列
390
- children.collapseKeys.forEach(cKey => {
391
- let collapseItem = v.children.find(t => t.key === cKey)
392
- if (collapseItem) {
393
- v.children.allCollapseKeys.push(collapseItem.key)
394
- if (!children.expandCols.some(e => e.key === collapseItem.key)) {
395
- collapseItem.isExpand = true
396
- children.expandCols.push(collapseItem)
397
- }
398
- }
399
- })
400
- } else {
401
- if (!v.children.allCollapseKeys.includes(children.key)) {
402
- v.expandCols.push(children)
403
- }
404
- }
405
- })
406
- }
407
- // 非收起列
408
- if (!allCollapseKeys.includes(v.key) && !v.isHide) {
409
- this.columns.push(v)
410
- }
411
- })
412
- this.resetSortNum()
413
- },
414
- resetSortNum() {
415
- this.columns = this.columns.map((v, index) => {
416
- v.sortNum = index + 1
417
- return v
418
- })
419
- this.$emit('change', [...this.getData()])
420
- },
421
- getData() {
422
- let currentColumns = []
423
- let _columns = cloneDeep(this.columns)
424
- _columns.forEach(v => {
425
- // 防止展开列重复添加
426
- if (!currentColumns.some(c => c.key === v.key)) {
427
- currentColumns.push(v)
428
- }
429
- // 处理一级的展开列
430
- if (v.collapseKeys) {
431
- v.$collapseKeys = []
432
- v.expandCols.forEach(eItem => {
433
- if (v.collapseKeys.includes(eItem.key)) {
434
- currentColumns.push(eItem)
435
- v.$collapseKeys.push(eItem.key)
436
- }
437
- })
438
- v.collapseKeys = v.$collapseKeys
439
- delete v.expandCols
440
- delete v.$collapseKeys
441
- } else if (v.children && v.children.length) {
442
- v.$children = []
443
- let c_expandCols = v.expandCols
444
- c_expandCols.forEach(c_item => {
445
- if (c_item.collapseKeys) {
446
- // 二级展开列
447
- c_item.$collapseKeys = []
448
- // 追加自己
449
- v.$children.push(c_item)
450
- c_item.expandCols.forEach(c_item_e => {
451
- // 追加展开列
452
- if (c_item.collapseKeys.includes(c_item_e.key)) {
453
- v.$children.push(c_item_e)
454
- c_item.$collapseKeys.push(c_item_e.key)
455
- }
456
- })
457
- c_item.collapseKeys = c_item.$collapseKeys
458
- delete c_item.$collapseKeys
459
- delete c_item.expandCols
460
- } else {
461
- v.$children.push(c_item)
462
- }
463
- })
464
- v.children = v.$children
465
- delete v.expandCols
466
- delete v.$children
467
- }
468
- })
469
- return [...this.hideColumns, ...currentColumns]
470
- },
471
- },
472
- created() {
473
- // this.formatColumns()
474
- },
475
- }
476
- </script>
477
-
478
- <style>
479
- </style>