br-dionysus 1.8.4 → 1.8.6
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/README.md +861 -88
- package/attributes.json +1 -1
- package/cypress/e2e/2-advanced-examples/actions.cy.js +3 -3
- package/cypress/e2e/2-advanced-examples/assertions.cy.js +2 -2
- package/cypress/e2e/2-advanced-examples/cypress_api.cy.js +5 -6
- package/cypress/e2e/2-advanced-examples/files.cy.js +1 -1
- package/cypress/e2e/2-advanced-examples/misc.cy.js +1 -1
- package/cypress/e2e/2-advanced-examples/navigation.cy.js +1 -1
- package/cypress/e2e/2-advanced-examples/network_requests.cy.js +22 -22
- package/cypress/e2e/2-advanced-examples/spies_stubs_clocks.cy.js +7 -7
- package/cypress/e2e/2-advanced-examples/storage.cy.js +8 -8
- package/cypress/e2e/2-advanced-examples/utilities.cy.js +15 -15
- package/dist/br-dionysus.es.js +4708 -4519
- package/dist/br-dionysus.umd.js +8 -8
- package/dist/index.css +1 -1
- package/dist/packages/Hook/useFormInline/useFormInline.d.ts +25 -0
- package/dist/packages/Hook/usePackageConfig/usePackageConfig.d.ts +1 -1
- package/dist/packages/MDialog/src/MDialog.vue.d.ts +1 -1
- package/dist/packages/MInline/src/MInline.vue.d.ts +7 -0
- package/dist/packages/MInputNumber/src/MInputNumber.vue.d.ts +2 -2
- package/dist/packages/MSelectTable/src/MSelectTable.vue.d.ts +2 -2
- package/dist/packages/MSelectTableV1/src/MSelectTableV1.vue.d.ts +3 -3
- package/dist/packages/MSelectV2/src/MSelectV2.vue.d.ts +1 -1
- package/dist/packages/MTableColumnSet/src/MTableColumnSet.vue.d.ts +1 -1
- package/dist/packages/MTableSuper/index.d.ts +4 -0
- package/dist/packages/MTableSuper/src/MTableSuper.vue.d.ts +11 -0
- package/dist/packages/MTableSuper/src/token.d.ts +23 -0
- package/dist/packages/MTableV2/src/MTableV2.vue.d.ts +7 -0
- package/dist/packages/Tool/slotsToData/slotsToData.d.ts +19 -0
- package/dist/packages/index.d.ts +1 -0
- package/package.json +1 -1
- package/packages/Hook/useFormInline/README.md +45 -0
- package/packages/Hook/useFormInline/demo.vue +141 -0
- package/packages/Hook/useFormInline/useFormInline.ts +60 -0
- package/packages/Hook/usePackageConfig/usePackageConfig.ts +1 -1
- package/packages/Hook/useTableConfig/demo.vue +1 -1
- package/packages/Hook/useTableConfig/useTableConfig.ts +10 -10
- package/packages/MDialog/src/MDialog.vue +12 -1
- package/packages/MInline/docs/README.md +7 -6
- package/packages/MInline/docs/demo.vue +16 -13
- package/packages/MInline/src/MInline.vue +127 -3
- package/packages/MInputNumber/docs/demo.vue +42 -2
- package/packages/MInputNumber/src/MInputNumber.vue +7 -7
- package/packages/MSelectTable/src/MSelectTable.vue +1 -1
- package/packages/MTable/src/MTable.vue +0 -32
- package/packages/MTableColumn/src/MTableColumn.vue +0 -41
- package/packages/MTableSuper/docs/README.md +48 -0
- package/packages/MTableSuper/docs/demo.vue +246 -0
- package/packages/MTableSuper/index.ts +10 -0
- package/packages/MTableSuper/src/MTableSuper.vue +140 -0
- package/packages/MTableSuper/src/token.ts +24 -0
- package/packages/MTableV2/docs/README.md +1 -0
- package/packages/MTableV2/docs/demo.vue +9 -7
- package/packages/MTableV2/src/MTableV2.vue +49 -5
- package/packages/SkinConfig/src/useSkin.ts +2 -2
- package/packages/Tool/slotsToData/README.md +26 -0
- package/packages/Tool/slotsToData/slotsToData.ts +38 -0
- package/packages/index.ts +3 -0
- package/packages/list.json +6 -0
- package/packages/typings/global.d.ts +2 -2
- package/src/router.ts +5 -0
- package/tags.json +1 -1
- package/web-types.json +1 -1
package/README.md
CHANGED
|
@@ -22,12 +22,16 @@
|
|
|
22
22
|
|
|
23
23
|
+ MTableColumnSet([表格头设置组件](#表格头设置组件))
|
|
24
24
|
|
|
25
|
+
+ MTableSuper([整合表格组件](#整合表格组件))
|
|
26
|
+
|
|
25
27
|
+ MTableV2([虚拟化表格](#虚拟化表格))
|
|
26
28
|
|
|
27
29
|
+ SkinConfig([皮肤设置](#皮肤设置))
|
|
28
30
|
|
|
29
31
|
+ TabPage([标签页组件](#标签页组件))
|
|
30
32
|
|
|
33
|
+
+ useFormInline([筛选项配置化-hook](#筛选项配置化-hook))
|
|
34
|
+
|
|
31
35
|
+ usePackageConfig([配置保存与获取-hook](#配置保存与获取-hook))
|
|
32
36
|
|
|
33
37
|
+ useRemainingSpace([计算获取剩余空间-hook](#计算获取剩余空间-hook))
|
|
@@ -308,38 +312,38 @@ const open3 = () => {
|
|
|
308
312
|
</el-input>
|
|
309
313
|
</el-form-item>
|
|
310
314
|
<el-form-item
|
|
311
|
-
label="
|
|
312
|
-
prop="
|
|
315
|
+
label="类型"
|
|
316
|
+
prop="type"
|
|
313
317
|
data-item
|
|
314
318
|
>
|
|
315
319
|
<el-input
|
|
316
|
-
v-model="formInline.
|
|
320
|
+
v-model="formInline.type"
|
|
317
321
|
clearable
|
|
318
|
-
placeholder="
|
|
322
|
+
placeholder="请输入类型"
|
|
319
323
|
>
|
|
320
324
|
</el-input>
|
|
321
325
|
</el-form-item>
|
|
322
326
|
<el-form-item
|
|
323
|
-
label="
|
|
324
|
-
prop="
|
|
327
|
+
label="地区"
|
|
328
|
+
prop="region"
|
|
325
329
|
data-item
|
|
326
330
|
>
|
|
327
331
|
<el-input
|
|
328
|
-
v-model="formInline.
|
|
332
|
+
v-model="formInline.region"
|
|
329
333
|
clearable
|
|
330
|
-
placeholder="
|
|
334
|
+
placeholder="请输入地区"
|
|
331
335
|
>
|
|
332
336
|
</el-input>
|
|
333
337
|
</el-form-item>
|
|
334
338
|
<el-form-item
|
|
335
|
-
label="
|
|
336
|
-
prop="
|
|
339
|
+
label="等级"
|
|
340
|
+
prop="level"
|
|
337
341
|
data-item
|
|
338
342
|
>
|
|
339
343
|
<el-input
|
|
340
|
-
v-model="formInline.
|
|
344
|
+
v-model="formInline.level"
|
|
341
345
|
clearable
|
|
342
|
-
placeholder="
|
|
346
|
+
placeholder="请输入等级"
|
|
343
347
|
>
|
|
344
348
|
</el-input>
|
|
345
349
|
</el-form-item>
|
|
@@ -365,7 +369,10 @@ import { reactive } from 'vue'
|
|
|
365
369
|
const formInline = reactive({
|
|
366
370
|
name: '',
|
|
367
371
|
code: '',
|
|
368
|
-
time: ''
|
|
372
|
+
time: '',
|
|
373
|
+
type: '',
|
|
374
|
+
region: '',
|
|
375
|
+
level: ''
|
|
369
376
|
})
|
|
370
377
|
</script>
|
|
371
378
|
|
|
@@ -380,15 +387,16 @@ const formInline = reactive({
|
|
|
380
387
|
|
|
381
388
|
### 2) Attributes
|
|
382
389
|
|
|
383
|
-
| 参数
|
|
384
|
-
|
|
385
|
-
| minWidth
|
|
386
|
-
| maxWidth
|
|
387
|
-
| size
|
|
390
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
391
|
+
|-----------|:-----:|:------:|:-------------------------:|:-------:|
|
|
392
|
+
| minWidth | 列最小宽度 | number | - | 200 |
|
|
393
|
+
| maxWidth | 列最大宽度 | number | - | 300 |
|
|
394
|
+
| size | 组件尺寸 | enum | large \| default \| small | default |
|
|
395
|
+
| configKey | 配置key | string | - | - |
|
|
388
396
|
|
|
389
397
|
### 2) Events
|
|
390
398
|
|
|
391
|
-
|
|
|
399
|
+
| 事件名 | 说明 | 参数 |
|
|
392
400
|
|--------|:----------------------:|:---------------:|
|
|
393
401
|
| switch | 当切换展开与折叠模式时触发,返回当前展开状态 | unfold(boolean) |
|
|
394
402
|
|
|
@@ -405,14 +413,54 @@ const formInline = reactive({
|
|
|
405
413
|
|
|
406
414
|
<template>
|
|
407
415
|
<div class="g-demo-m-input-number-box">
|
|
408
|
-
<m-input-number
|
|
416
|
+
<m-input-number
|
|
417
|
+
v-model="test"
|
|
418
|
+
@input="numberInput"
|
|
419
|
+
@change="numberChange"
|
|
420
|
+
></m-input-number>
|
|
421
|
+
<h5>对比组</h5>
|
|
422
|
+
<el-input-number
|
|
423
|
+
v-model="test2"
|
|
424
|
+
@input="numberInput2"
|
|
425
|
+
@change="numberChange2"
|
|
426
|
+
></el-input-number>
|
|
409
427
|
</div>
|
|
410
428
|
</template>
|
|
411
429
|
|
|
412
430
|
<script setup lang="ts">
|
|
413
|
-
import { ref } from 'vue'
|
|
431
|
+
import { ref, watch } from 'vue'
|
|
414
432
|
|
|
415
433
|
const test = ref<number>(0)
|
|
434
|
+
const numberInput = (val: number) => {
|
|
435
|
+
console.log('m1', val)
|
|
436
|
+
console.log('m2', test.value)
|
|
437
|
+
}
|
|
438
|
+
const numberChange = (val: number) => {
|
|
439
|
+
console.log('m3', val)
|
|
440
|
+
console.log('m4', test.value)
|
|
441
|
+
}
|
|
442
|
+
watch(
|
|
443
|
+
() => test.value,
|
|
444
|
+
() => {
|
|
445
|
+
console.log('m5', test.value)
|
|
446
|
+
}
|
|
447
|
+
)
|
|
448
|
+
|
|
449
|
+
const test2 = ref<number>(0)
|
|
450
|
+
const numberInput2 = (val: number) => {
|
|
451
|
+
console.log('e1', val)
|
|
452
|
+
console.log('e2', test2.value)
|
|
453
|
+
}
|
|
454
|
+
const numberChange2 = (val: number) => {
|
|
455
|
+
console.log('e3', val)
|
|
456
|
+
console.log('e4', test2.value)
|
|
457
|
+
}
|
|
458
|
+
watch(
|
|
459
|
+
() => test2.value,
|
|
460
|
+
() => {
|
|
461
|
+
console.log('e5', test2.value)
|
|
462
|
+
}
|
|
463
|
+
)
|
|
416
464
|
</script>
|
|
417
465
|
|
|
418
466
|
<style scoped>
|
|
@@ -1490,7 +1538,7 @@ const tableConfig = ref({
|
|
|
1490
1538
|
|
|
1491
1539
|
|
|
1492
1540
|
|
|
1493
|
-
|
|
1541
|
+
整合表格组件
|
|
1494
1542
|
=================
|
|
1495
1543
|
|
|
1496
1544
|
### 1) 基础用法
|
|
@@ -1501,55 +1549,242 @@ const tableConfig = ref({
|
|
|
1501
1549
|
|
|
1502
1550
|
<template>
|
|
1503
1551
|
<div class="g-box">
|
|
1504
|
-
<
|
|
1505
|
-
<
|
|
1552
|
+
<h3>基础功能</h3>
|
|
1553
|
+
<MTableSuper
|
|
1506
1554
|
:data="tableData"
|
|
1507
|
-
|
|
1508
|
-
:height="500"
|
|
1555
|
+
v-if="!tableData"
|
|
1509
1556
|
border
|
|
1510
|
-
|
|
1557
|
+
>
|
|
1558
|
+
<MTableColumn
|
|
1559
|
+
v-for="item in tableTitle"
|
|
1560
|
+
:key="item.prop"
|
|
1561
|
+
:prop="item.prop"
|
|
1562
|
+
:label="item.label"
|
|
1563
|
+
:align="item.align"
|
|
1564
|
+
:minWidth="item.minWidth"
|
|
1565
|
+
:className="item.className"
|
|
1566
|
+
:filters="item.filters"
|
|
1567
|
+
:headerAlign="item.headerAlign"
|
|
1568
|
+
:fixed="item.fixed"
|
|
1569
|
+
v-model:filtersValue="filtersValue"
|
|
1570
|
+
showOverflowTooltip
|
|
1571
|
+
></MTableColumn>
|
|
1572
|
+
</MTableSuper>
|
|
1573
|
+
<h3>带选择的表格</h3>
|
|
1574
|
+
<MTableSuper
|
|
1575
|
+
:data="tableData"
|
|
1576
|
+
border
|
|
1577
|
+
>
|
|
1578
|
+
<el-table-column
|
|
1579
|
+
fixed="left"
|
|
1580
|
+
type="selection"
|
|
1581
|
+
/>
|
|
1582
|
+
<el-table-column
|
|
1583
|
+
prop="name"
|
|
1584
|
+
label="名称"
|
|
1585
|
+
>
|
|
1586
|
+
<el-table-column
|
|
1587
|
+
prop="date"
|
|
1588
|
+
label="时间"
|
|
1589
|
+
></el-table-column>
|
|
1590
|
+
<el-table-column
|
|
1591
|
+
prop="address"
|
|
1592
|
+
label="地址"
|
|
1593
|
+
></el-table-column>
|
|
1594
|
+
</el-table-column>
|
|
1595
|
+
<MTableColumn
|
|
1596
|
+
v-for="item in tableTitle"
|
|
1597
|
+
:key="item.prop"
|
|
1598
|
+
:prop="item.prop"
|
|
1599
|
+
:label="item.label"
|
|
1600
|
+
:align="item.align"
|
|
1601
|
+
:minWidth="item.minWidth"
|
|
1602
|
+
:className="item.className"
|
|
1603
|
+
:filters="item.filters"
|
|
1604
|
+
:headerAlign="item.headerAlign"
|
|
1605
|
+
:fixed="item.fixed"
|
|
1606
|
+
v-model:filtersValue="filtersValue"
|
|
1607
|
+
showOverflowTooltip
|
|
1608
|
+
>
|
|
1609
|
+
</MTableColumn>
|
|
1610
|
+
</MTableSuper>
|
|
1611
|
+
<h3>展开列</h3>
|
|
1612
|
+
<MTableSuper
|
|
1613
|
+
v-if="!tableData"
|
|
1614
|
+
class="style.box"
|
|
1615
|
+
:data="tableData"
|
|
1616
|
+
border
|
|
1617
|
+
:filtersValue="filtersValue"
|
|
1618
|
+
scrollbarAlwaysOn
|
|
1511
1619
|
v-model:tableConfig="tableConfig"
|
|
1512
|
-
|
|
1513
|
-
|
|
1620
|
+
rowKey="id"
|
|
1621
|
+
tableConfigKey="tableConfigKey"
|
|
1622
|
+
@headerDragend="headerDragend"
|
|
1623
|
+
expandProp="sn"
|
|
1624
|
+
@privateExpandChange="privateExpandChange"
|
|
1625
|
+
>
|
|
1626
|
+
<el-table-column
|
|
1627
|
+
fixed="left"
|
|
1628
|
+
type="selection"
|
|
1629
|
+
/>
|
|
1630
|
+
<MTableColumn
|
|
1631
|
+
type="expand"
|
|
1632
|
+
width="1"
|
|
1633
|
+
>
|
|
1634
|
+
<template #default="props">
|
|
1635
|
+
<h1>index{{ props.index }}</h1>
|
|
1636
|
+
<h1>$index{{ props.$index }}</h1>
|
|
1637
|
+
<h1>测试</h1>
|
|
1638
|
+
</template>
|
|
1639
|
+
</MTableColumn>
|
|
1640
|
+
<MTableColumn
|
|
1641
|
+
v-for="item in tableTitle"
|
|
1642
|
+
:key="item.prop"
|
|
1643
|
+
:prop="item.prop"
|
|
1644
|
+
:label="item.label"
|
|
1645
|
+
:align="item.align"
|
|
1646
|
+
:minWidth="item.minWidth"
|
|
1647
|
+
:className="item.className"
|
|
1648
|
+
:filters="item.filters"
|
|
1649
|
+
:headerAlign="item.headerAlign"
|
|
1650
|
+
:fixed="item.fixed"
|
|
1651
|
+
v-model:filtersValue="filtersValue"
|
|
1652
|
+
showOverflowTooltip
|
|
1653
|
+
>
|
|
1654
|
+
</MTableColumn>
|
|
1655
|
+
</MTableSuper>
|
|
1656
|
+
<h3>树状表格</h3>
|
|
1657
|
+
<MTableSuper
|
|
1658
|
+
v-if="!tableData"
|
|
1659
|
+
class="style.box"
|
|
1660
|
+
:data="tableData"
|
|
1661
|
+
border
|
|
1662
|
+
@headerDragend="headerDragend"
|
|
1663
|
+
:filtersValue="filtersValue"
|
|
1664
|
+
scrollbarAlwaysOn
|
|
1665
|
+
v-model:tableConfig="tableConfig"
|
|
1666
|
+
rowKey="id"
|
|
1667
|
+
tableConfigKey="tableConfigKey"
|
|
1668
|
+
@expandChange="privateExpandChange"
|
|
1669
|
+
>
|
|
1670
|
+
<MTableColumn
|
|
1671
|
+
v-for="item in tableTitle"
|
|
1672
|
+
:key="item.prop"
|
|
1673
|
+
:prop="item.prop"
|
|
1674
|
+
:label="item.label"
|
|
1675
|
+
:align="item.align"
|
|
1676
|
+
:minWidth="item.minWidth"
|
|
1677
|
+
:className="item.className"
|
|
1678
|
+
:filters="item.filters"
|
|
1679
|
+
:headerAlign="item.headerAlign"
|
|
1680
|
+
:fixed="item.fixed"
|
|
1681
|
+
v-model:filtersValue="filtersValue"
|
|
1682
|
+
showOverflowTooltip
|
|
1683
|
+
>
|
|
1684
|
+
</MTableColumn>
|
|
1685
|
+
</MTableSuper>
|
|
1514
1686
|
</div>
|
|
1515
1687
|
</template>
|
|
1516
1688
|
|
|
1517
1689
|
<script setup lang="ts">
|
|
1518
1690
|
import { ref } from 'vue'
|
|
1519
|
-
import
|
|
1691
|
+
import { useTableConfig } from 'packages/index'
|
|
1692
|
+
import { MTableColumn } from 'packages/MTableColumn'
|
|
1693
|
+
|
|
1694
|
+
const privateExpandChange = (row: any, expandedRows: any[]) => {
|
|
1695
|
+
console.log('row', row)
|
|
1696
|
+
console.log('expandedRows', expandedRows)
|
|
1697
|
+
}
|
|
1698
|
+
|
|
1699
|
+
// const test = (data: any) => {
|
|
1700
|
+
// console.log('data', data)
|
|
1701
|
+
// }
|
|
1520
1702
|
|
|
1521
1703
|
const tableData = ref<any[]>([])
|
|
1522
|
-
const { tableTitle, tableConfig, filtersValue } =
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1704
|
+
const { tableTitle, headerDragend, tableConfig, filtersValue } = useTableConfig('MTableDemo', [{
|
|
1705
|
+
label: '序号',
|
|
1706
|
+
prop: 'sn',
|
|
1707
|
+
minWidth: 200
|
|
1708
|
+
// fixed: 'right'
|
|
1527
1709
|
}, {
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1710
|
+
label: '时间',
|
|
1711
|
+
prop: 'date',
|
|
1712
|
+
minWidth: 200
|
|
1713
|
+
// fixed: 'left'
|
|
1532
1714
|
}, {
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
width: 300
|
|
1715
|
+
label: '地址',
|
|
1716
|
+
prop: 'address',
|
|
1717
|
+
minWidth: 200
|
|
1537
1718
|
}, {
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
width: 300
|
|
1719
|
+
label: '名称',
|
|
1720
|
+
prop: 'name',
|
|
1721
|
+
minWidth: 200
|
|
1542
1722
|
}], tableData)
|
|
1723
|
+
console.log('tableTitle', tableTitle.value)
|
|
1543
1724
|
|
|
1544
|
-
const test = () => {
|
|
1545
|
-
filtersValue.value = {}
|
|
1546
|
-
}
|
|
1547
1725
|
tableData.value = [{
|
|
1548
1726
|
id: 1,
|
|
1549
|
-
sn:
|
|
1550
|
-
date: '
|
|
1551
|
-
|
|
1552
|
-
|
|
1727
|
+
sn: 1,
|
|
1728
|
+
date: '2016-05-03',
|
|
1729
|
+
name: 'Tom1',
|
|
1730
|
+
address: 'No. 189',
|
|
1731
|
+
tag: 'Home',
|
|
1732
|
+
pid: 0
|
|
1733
|
+
}, {
|
|
1734
|
+
id: 2,
|
|
1735
|
+
sn: 2,
|
|
1736
|
+
date: '2016-05-02',
|
|
1737
|
+
name: 'Tom2',
|
|
1738
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1739
|
+
tag: 'Office',
|
|
1740
|
+
pid: 0,
|
|
1741
|
+
children: [{
|
|
1742
|
+
id: 21,
|
|
1743
|
+
sn: 1,
|
|
1744
|
+
date: '2016-05-02',
|
|
1745
|
+
name: 'Tom21',
|
|
1746
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1747
|
+
tag: 'Office'
|
|
1748
|
+
}, {
|
|
1749
|
+
id: 22,
|
|
1750
|
+
sn: 2,
|
|
1751
|
+
date: '2016-05-02',
|
|
1752
|
+
name: 'Tom22',
|
|
1753
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1754
|
+
tag: 'Office'
|
|
1755
|
+
}]
|
|
1756
|
+
}, {
|
|
1757
|
+
id: 3,
|
|
1758
|
+
sn: 3,
|
|
1759
|
+
date: '2016-05-04',
|
|
1760
|
+
name: 'Tom3',
|
|
1761
|
+
address: 'No. 189',
|
|
1762
|
+
tag: 'Home',
|
|
1763
|
+
pid: 0
|
|
1764
|
+
}, {
|
|
1765
|
+
id: 4,
|
|
1766
|
+
sn: 4,
|
|
1767
|
+
date: '2016-05-01',
|
|
1768
|
+
name: 'Tom4',
|
|
1769
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1770
|
+
tag: 'Office',
|
|
1771
|
+
pid: 0
|
|
1772
|
+
}, {
|
|
1773
|
+
id: 5,
|
|
1774
|
+
sn: 5,
|
|
1775
|
+
date: '2016-05-05',
|
|
1776
|
+
name: 'Tom4',
|
|
1777
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1778
|
+
tag: 'Office',
|
|
1779
|
+
pid: 0
|
|
1780
|
+
}, {
|
|
1781
|
+
id: 6,
|
|
1782
|
+
sn: 6,
|
|
1783
|
+
date: '2016-06-01',
|
|
1784
|
+
name: 'Tom4',
|
|
1785
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1786
|
+
tag: 'Office',
|
|
1787
|
+
pid: 0
|
|
1553
1788
|
}]
|
|
1554
1789
|
</script>
|
|
1555
1790
|
|
|
@@ -1564,17 +1799,131 @@ tableData.value = [{
|
|
|
1564
1799
|
|
|
1565
1800
|
### 2) Attributes
|
|
1566
1801
|
|
|
1567
|
-
| 参数
|
|
1568
|
-
|
|
1569
|
-
|
|
|
1570
|
-
|
|
|
1571
|
-
|
|
|
1572
|
-
|
|
|
1802
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
1803
|
+
|----------------|-----------------------------|------------------|-----|-----------------------------------------------------|
|
|
1804
|
+
| data | 表格的数据 | Array | - | [ ] |
|
|
1805
|
+
| sole | 行的唯一值 | String , number | - | key |
|
|
1806
|
+
| filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | Function \| null | - | null |
|
|
1807
|
+
| expandProp | 展开图标列(如使用这个属性则必须存在rowKey属性) | string | - | '' |
|
|
1808
|
+
| tableConfigKey | 表格配置key | string | - | '' |
|
|
1809
|
+
| 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table.html |
|
|
1810
|
+
|
|
1811
|
+
## 要求
|
|
1812
|
+
|
|
1813
|
+
```
|
|
1814
|
+
sole 必须传递在表格数据内为唯一的值 如id key 等不会发生重复的关键字
|
|
1815
|
+
```
|
|
1816
|
+
|
|
1817
|
+
### 3) Events
|
|
1818
|
+
|
|
1819
|
+
| 方法名 | 说明 | 回调参数 |
|
|
1820
|
+
|---------------------|--------------------------------------|-----------------------------------------------------|
|
|
1821
|
+
| pasteData | 表格粘贴方法 | 共有2个参数,依次为粘贴动作的数据PasteAction ,表格原始数据tableData |
|
|
1822
|
+
| update:tableConfig | 表格配置更新 | \[tableConfig: TableConfig] |
|
|
1823
|
+
| privateExpandChange | expandProp模式下 当用户对某一行展开或者关闭的时候会触发该事件 | [row: any, expandedRows: any[]] |
|
|
1824
|
+
| 其余方法 | 参考el官网的table | https://element-plus.org/zh-CN/component/table.html |
|
|
1825
|
+
|
|
1826
|
+
### 4) PasteAction
|
|
1827
|
+
|
|
1828
|
+
| 参数 | 说明 | 类型 |
|
|
1829
|
+
|------------|----------------------------------------|--------|
|
|
1830
|
+
| editRow | 返回粘贴的对应行的原始数据 | Object |
|
|
1831
|
+
| editColumn | 返回粘贴时鼠标所在列的 表格prop值 | String |
|
|
1832
|
+
| arr | 返回粘贴时候处理之后的 数组信息 | Array |
|
|
1833
|
+
| rowIndex | 根据sole的值 去data内查找 当前操作的 粘贴行在data内的序号 | number |
|
|
1834
|
+
|
|
1835
|
+
|
|
1836
|
+
|
|
1837
|
+
|
|
1838
|
+
|
|
1839
|
+
虚拟化表格
|
|
1840
|
+
=================
|
|
1841
|
+
|
|
1842
|
+
### 1) 基础用法
|
|
1843
|
+
|
|
1844
|
+
|
|
1845
|
+
|
|
1846
|
+
```html
|
|
1847
|
+
|
|
1848
|
+
<template>
|
|
1849
|
+
<div class="g-box">
|
|
1850
|
+
<p @click="test">{{ tableConfig }}</p>
|
|
1851
|
+
<MTableV2
|
|
1852
|
+
:data="tableData"
|
|
1853
|
+
:columns="tableTitle"
|
|
1854
|
+
:height="500"
|
|
1855
|
+
border
|
|
1856
|
+
fixed
|
|
1857
|
+
v-model:tableConfig="tableConfig"
|
|
1858
|
+
tableConfigKey="MTableV2Demo"
|
|
1859
|
+
></MTableV2>
|
|
1860
|
+
</div>
|
|
1861
|
+
</template>
|
|
1862
|
+
|
|
1863
|
+
<script setup lang="ts">
|
|
1864
|
+
import { ref } from 'vue'
|
|
1865
|
+
import useTableV2Config from 'packages/Hook/useTableV2Config/useTableV2Config'
|
|
1866
|
+
|
|
1867
|
+
const tableData = ref<any[]>([])
|
|
1868
|
+
const { tableTitle, tableConfig, filtersValue } = useTableV2Config('MTableV2Demo', [{
|
|
1869
|
+
title: '序号',
|
|
1870
|
+
key: 'sn',
|
|
1871
|
+
dataKey: 'sn',
|
|
1872
|
+
width: 300
|
|
1873
|
+
}, {
|
|
1874
|
+
title: '时间',
|
|
1875
|
+
key: 'date',
|
|
1876
|
+
dataKey: 'date',
|
|
1877
|
+
width: 300
|
|
1878
|
+
}, {
|
|
1879
|
+
title: '地址',
|
|
1880
|
+
key: 'address',
|
|
1881
|
+
dataKey: 'address',
|
|
1882
|
+
width: 300
|
|
1883
|
+
}, {
|
|
1884
|
+
title: '名称',
|
|
1885
|
+
key: 'name',
|
|
1886
|
+
dataKey: 'name',
|
|
1887
|
+
width: 300
|
|
1888
|
+
}], tableData)
|
|
1889
|
+
|
|
1890
|
+
const test = () => {
|
|
1891
|
+
filtersValue.value = {}
|
|
1892
|
+
}
|
|
1893
|
+
for (let i = 0; i < 1000; i++) {
|
|
1894
|
+
tableData.value.push({
|
|
1895
|
+
id: i,
|
|
1896
|
+
sn: 'sn' + i,
|
|
1897
|
+
date: 'date' + i,
|
|
1898
|
+
address: 'address' + i,
|
|
1899
|
+
name: 'name' + i
|
|
1900
|
+
})
|
|
1901
|
+
}
|
|
1902
|
+
</script>
|
|
1903
|
+
|
|
1904
|
+
<style lang="scss" scoped>
|
|
1905
|
+
.g-box {
|
|
1906
|
+
max-width: 1000px;
|
|
1907
|
+
}
|
|
1908
|
+
</style>
|
|
1909
|
+
|
|
1910
|
+
|
|
1911
|
+
```
|
|
1912
|
+
|
|
1913
|
+
### 2) Attributes
|
|
1914
|
+
|
|
1915
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
1916
|
+
|--------------------|---------------------------------------------------|----------------------------|---------------------------|-----------------------------------------------------------------------------------|
|
|
1917
|
+
| size | 尺寸 | string | small \| large \| default | default |
|
|
1918
|
+
| data | 要在表中渲染的数据数组 | any[] | - | [] |
|
|
1919
|
+
| columns | 表格列配置 | TableV2Title[] | - | [] |
|
|
1920
|
+
| filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | FilterValue \| null | - | null |
|
|
1573
1921
|
| tableConfig | 表格配置 | TableConfig \| null | - | null |
|
|
1574
1922
|
| tableConfigKey | 表格配置key | string | - | '' |
|
|
1575
1923
|
| fixed | 单元格宽度是自适应还是固定 | boolean | - | false |
|
|
1576
1924
|
| estimatedRowHeight | 渲染动态的单元格的预估高度 | number \| null | - | null |
|
|
1577
1925
|
| headerHeight | Header 的高度由height设置。 如果传入数组,它会使 header row 等于数组长度 | number \| number[] \| null | - | null |
|
|
1926
|
+
| cellWidthAdaptive | 单元格宽度自适应 | boolean | - | false |
|
|
1578
1927
|
| 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table-v2.html#tablev2-%E5%B1%9E%E6%80%A7 |
|
|
1579
1928
|
|
|
1580
1929
|
### 3) Events
|
|
@@ -2343,6 +2692,8 @@ const list = ref<{ name: string, className: string }[]>([
|
|
|
2343
2692
|
|
|
2344
2693
|
## Hook列表
|
|
2345
2694
|
|
|
2695
|
+
+ useFormInline([筛选项配置化-hook](#筛选项配置化-hook))
|
|
2696
|
+
|
|
2346
2697
|
+ usePackageConfig([配置保存与获取-hook](#配置保存与获取-hook))
|
|
2347
2698
|
|
|
2348
2699
|
+ useRemainingSpace([计算获取剩余空间-hook](#计算获取剩余空间-hook))
|
|
@@ -2356,6 +2707,51 @@ const list = ref<{ name: string, className: string }[]>([
|
|
|
2356
2707
|
|
|
2357
2708
|
|
|
2358
2709
|
|
|
2710
|
+
筛选项配置化 hook
|
|
2711
|
+
=================
|
|
2712
|
+
|
|
2713
|
+
### 1) 基础用法
|
|
2714
|
+
|
|
2715
|
+
|
|
2716
|
+
|
|
2717
|
+
### 2) 所需参数
|
|
2718
|
+
|
|
2719
|
+
| 名称 | 描述 | 类型 | 可选值 | 默认值 |
|
|
2720
|
+
|-----------|---------------|---------------------------------|:---:|:----:|
|
|
2721
|
+
| configKey | 当前配置标识,即唯一key | string | - | '' |
|
|
2722
|
+
| data | 筛选条件关联key map | <T extends Record<string, any>> | - | - |
|
|
2723
|
+
| isConfig | 是否开启配置 | boolean | - | true |
|
|
2724
|
+
|
|
2725
|
+
### 2) 返回值
|
|
2726
|
+
|
|
2727
|
+
| 名称 | 描述 | 类型 |
|
|
2728
|
+
|----|-----|------------------------------------|
|
|
2729
|
+
| - | 返回值 | UseFormInlineReturnType<T> \| void |
|
|
2730
|
+
|
|
2731
|
+
#### 2.1) UseFormInlineReturnType
|
|
2732
|
+
|
|
2733
|
+
| 名称 | 描述 | 类型 |
|
|
2734
|
+
|-----------------|---------------|------------|
|
|
2735
|
+
| \[K in keyof T] | 筛选条件关联key map | T\[K] |
|
|
2736
|
+
| reset | 重置方法 | () => void |
|
|
2737
|
+
|
|
2738
|
+
### 3) 配置结构 FormInlineConfigType<T>
|
|
2739
|
+
|
|
2740
|
+
| 名称 | 描述 | 类型 |
|
|
2741
|
+
|--------------|------|---------|
|
|
2742
|
+
| sort | 排序 | number |
|
|
2743
|
+
| defaultValue | 默认值 | any |
|
|
2744
|
+
| show | 是否显示 | boolean |
|
|
2745
|
+
|
|
2746
|
+
|
|
2747
|
+
|
|
2748
|
+
|
|
2749
|
+
|
|
2750
|
+
|
|
2751
|
+
|
|
2752
|
+
|
|
2753
|
+
|
|
2754
|
+
|
|
2359
2755
|
配置保存与获取 hook
|
|
2360
2756
|
=================
|
|
2361
2757
|
|
|
@@ -2552,6 +2948,8 @@ const list = ref<{ name: string, className: string }[]>([
|
|
|
2552
2948
|
+ createHash([](#))
|
|
2553
2949
|
|
|
2554
2950
|
+ moneyFormat([](#))
|
|
2951
|
+
|
|
2952
|
+
+ slotsToData([](#))
|
|
2555
2953
|
|
|
2556
2954
|
|
|
2557
2955
|
对话框
|
|
@@ -2823,38 +3221,38 @@ const open3 = () => {
|
|
|
2823
3221
|
</el-input>
|
|
2824
3222
|
</el-form-item>
|
|
2825
3223
|
<el-form-item
|
|
2826
|
-
label="
|
|
2827
|
-
prop="
|
|
3224
|
+
label="类型"
|
|
3225
|
+
prop="type"
|
|
2828
3226
|
data-item
|
|
2829
3227
|
>
|
|
2830
3228
|
<el-input
|
|
2831
|
-
v-model="formInline.
|
|
3229
|
+
v-model="formInline.type"
|
|
2832
3230
|
clearable
|
|
2833
|
-
placeholder="
|
|
3231
|
+
placeholder="请输入类型"
|
|
2834
3232
|
>
|
|
2835
3233
|
</el-input>
|
|
2836
3234
|
</el-form-item>
|
|
2837
3235
|
<el-form-item
|
|
2838
|
-
label="
|
|
2839
|
-
prop="
|
|
3236
|
+
label="地区"
|
|
3237
|
+
prop="region"
|
|
2840
3238
|
data-item
|
|
2841
3239
|
>
|
|
2842
3240
|
<el-input
|
|
2843
|
-
v-model="formInline.
|
|
3241
|
+
v-model="formInline.region"
|
|
2844
3242
|
clearable
|
|
2845
|
-
placeholder="
|
|
3243
|
+
placeholder="请输入地区"
|
|
2846
3244
|
>
|
|
2847
3245
|
</el-input>
|
|
2848
3246
|
</el-form-item>
|
|
2849
3247
|
<el-form-item
|
|
2850
|
-
label="
|
|
2851
|
-
prop="
|
|
3248
|
+
label="等级"
|
|
3249
|
+
prop="level"
|
|
2852
3250
|
data-item
|
|
2853
3251
|
>
|
|
2854
3252
|
<el-input
|
|
2855
|
-
v-model="formInline.
|
|
3253
|
+
v-model="formInline.level"
|
|
2856
3254
|
clearable
|
|
2857
|
-
placeholder="
|
|
3255
|
+
placeholder="请输入等级"
|
|
2858
3256
|
>
|
|
2859
3257
|
</el-input>
|
|
2860
3258
|
</el-form-item>
|
|
@@ -2880,7 +3278,10 @@ import { reactive } from 'vue'
|
|
|
2880
3278
|
const formInline = reactive({
|
|
2881
3279
|
name: '',
|
|
2882
3280
|
code: '',
|
|
2883
|
-
time: ''
|
|
3281
|
+
time: '',
|
|
3282
|
+
type: '',
|
|
3283
|
+
region: '',
|
|
3284
|
+
level: ''
|
|
2884
3285
|
})
|
|
2885
3286
|
</script>
|
|
2886
3287
|
|
|
@@ -2895,15 +3296,16 @@ const formInline = reactive({
|
|
|
2895
3296
|
|
|
2896
3297
|
### 2) Attributes
|
|
2897
3298
|
|
|
2898
|
-
| 参数
|
|
2899
|
-
|
|
2900
|
-
| minWidth
|
|
2901
|
-
| maxWidth
|
|
2902
|
-
| size
|
|
3299
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
3300
|
+
|-----------|:-----:|:------:|:-------------------------:|:-------:|
|
|
3301
|
+
| minWidth | 列最小宽度 | number | - | 200 |
|
|
3302
|
+
| maxWidth | 列最大宽度 | number | - | 300 |
|
|
3303
|
+
| size | 组件尺寸 | enum | large \| default \| small | default |
|
|
3304
|
+
| configKey | 配置key | string | - | - |
|
|
2903
3305
|
|
|
2904
3306
|
### 2) Events
|
|
2905
3307
|
|
|
2906
|
-
|
|
|
3308
|
+
| 事件名 | 说明 | 参数 |
|
|
2907
3309
|
|--------|:----------------------:|:---------------:|
|
|
2908
3310
|
| switch | 当切换展开与折叠模式时触发,返回当前展开状态 | unfold(boolean) |
|
|
2909
3311
|
|
|
@@ -2920,14 +3322,54 @@ const formInline = reactive({
|
|
|
2920
3322
|
|
|
2921
3323
|
<template>
|
|
2922
3324
|
<div class="g-demo-m-input-number-box">
|
|
2923
|
-
<m-input-number
|
|
3325
|
+
<m-input-number
|
|
3326
|
+
v-model="test"
|
|
3327
|
+
@input="numberInput"
|
|
3328
|
+
@change="numberChange"
|
|
3329
|
+
></m-input-number>
|
|
3330
|
+
<h5>对比组</h5>
|
|
3331
|
+
<el-input-number
|
|
3332
|
+
v-model="test2"
|
|
3333
|
+
@input="numberInput2"
|
|
3334
|
+
@change="numberChange2"
|
|
3335
|
+
></el-input-number>
|
|
2924
3336
|
</div>
|
|
2925
3337
|
</template>
|
|
2926
3338
|
|
|
2927
3339
|
<script setup lang="ts">
|
|
2928
|
-
import { ref } from 'vue'
|
|
3340
|
+
import { ref, watch } from 'vue'
|
|
2929
3341
|
|
|
2930
3342
|
const test = ref<number>(0)
|
|
3343
|
+
const numberInput = (val: number) => {
|
|
3344
|
+
console.log('m1', val)
|
|
3345
|
+
console.log('m2', test.value)
|
|
3346
|
+
}
|
|
3347
|
+
const numberChange = (val: number) => {
|
|
3348
|
+
console.log('m3', val)
|
|
3349
|
+
console.log('m4', test.value)
|
|
3350
|
+
}
|
|
3351
|
+
watch(
|
|
3352
|
+
() => test.value,
|
|
3353
|
+
() => {
|
|
3354
|
+
console.log('m5', test.value)
|
|
3355
|
+
}
|
|
3356
|
+
)
|
|
3357
|
+
|
|
3358
|
+
const test2 = ref<number>(0)
|
|
3359
|
+
const numberInput2 = (val: number) => {
|
|
3360
|
+
console.log('e1', val)
|
|
3361
|
+
console.log('e2', test2.value)
|
|
3362
|
+
}
|
|
3363
|
+
const numberChange2 = (val: number) => {
|
|
3364
|
+
console.log('e3', val)
|
|
3365
|
+
console.log('e4', test2.value)
|
|
3366
|
+
}
|
|
3367
|
+
watch(
|
|
3368
|
+
() => test2.value,
|
|
3369
|
+
() => {
|
|
3370
|
+
console.log('e5', test2.value)
|
|
3371
|
+
}
|
|
3372
|
+
)
|
|
2931
3373
|
</script>
|
|
2932
3374
|
|
|
2933
3375
|
<style scoped>
|
|
@@ -4005,6 +4447,304 @@ const tableConfig = ref({
|
|
|
4005
4447
|
|
|
4006
4448
|
|
|
4007
4449
|
|
|
4450
|
+
整合表格组件
|
|
4451
|
+
=================
|
|
4452
|
+
|
|
4453
|
+
### 1) 基础用法
|
|
4454
|
+
|
|
4455
|
+
|
|
4456
|
+
|
|
4457
|
+
```html
|
|
4458
|
+
|
|
4459
|
+
<template>
|
|
4460
|
+
<div class="g-box">
|
|
4461
|
+
<h3>基础功能</h3>
|
|
4462
|
+
<MTableSuper
|
|
4463
|
+
:data="tableData"
|
|
4464
|
+
v-if="!tableData"
|
|
4465
|
+
border
|
|
4466
|
+
>
|
|
4467
|
+
<MTableColumn
|
|
4468
|
+
v-for="item in tableTitle"
|
|
4469
|
+
:key="item.prop"
|
|
4470
|
+
:prop="item.prop"
|
|
4471
|
+
:label="item.label"
|
|
4472
|
+
:align="item.align"
|
|
4473
|
+
:minWidth="item.minWidth"
|
|
4474
|
+
:className="item.className"
|
|
4475
|
+
:filters="item.filters"
|
|
4476
|
+
:headerAlign="item.headerAlign"
|
|
4477
|
+
:fixed="item.fixed"
|
|
4478
|
+
v-model:filtersValue="filtersValue"
|
|
4479
|
+
showOverflowTooltip
|
|
4480
|
+
></MTableColumn>
|
|
4481
|
+
</MTableSuper>
|
|
4482
|
+
<h3>带选择的表格</h3>
|
|
4483
|
+
<MTableSuper
|
|
4484
|
+
:data="tableData"
|
|
4485
|
+
border
|
|
4486
|
+
>
|
|
4487
|
+
<el-table-column
|
|
4488
|
+
fixed="left"
|
|
4489
|
+
type="selection"
|
|
4490
|
+
/>
|
|
4491
|
+
<el-table-column
|
|
4492
|
+
prop="name"
|
|
4493
|
+
label="名称"
|
|
4494
|
+
>
|
|
4495
|
+
<el-table-column
|
|
4496
|
+
prop="date"
|
|
4497
|
+
label="时间"
|
|
4498
|
+
></el-table-column>
|
|
4499
|
+
<el-table-column
|
|
4500
|
+
prop="address"
|
|
4501
|
+
label="地址"
|
|
4502
|
+
></el-table-column>
|
|
4503
|
+
</el-table-column>
|
|
4504
|
+
<MTableColumn
|
|
4505
|
+
v-for="item in tableTitle"
|
|
4506
|
+
:key="item.prop"
|
|
4507
|
+
:prop="item.prop"
|
|
4508
|
+
:label="item.label"
|
|
4509
|
+
:align="item.align"
|
|
4510
|
+
:minWidth="item.minWidth"
|
|
4511
|
+
:className="item.className"
|
|
4512
|
+
:filters="item.filters"
|
|
4513
|
+
:headerAlign="item.headerAlign"
|
|
4514
|
+
:fixed="item.fixed"
|
|
4515
|
+
v-model:filtersValue="filtersValue"
|
|
4516
|
+
showOverflowTooltip
|
|
4517
|
+
>
|
|
4518
|
+
</MTableColumn>
|
|
4519
|
+
</MTableSuper>
|
|
4520
|
+
<h3>展开列</h3>
|
|
4521
|
+
<MTableSuper
|
|
4522
|
+
v-if="!tableData"
|
|
4523
|
+
class="style.box"
|
|
4524
|
+
:data="tableData"
|
|
4525
|
+
border
|
|
4526
|
+
:filtersValue="filtersValue"
|
|
4527
|
+
scrollbarAlwaysOn
|
|
4528
|
+
v-model:tableConfig="tableConfig"
|
|
4529
|
+
rowKey="id"
|
|
4530
|
+
tableConfigKey="tableConfigKey"
|
|
4531
|
+
@headerDragend="headerDragend"
|
|
4532
|
+
expandProp="sn"
|
|
4533
|
+
@privateExpandChange="privateExpandChange"
|
|
4534
|
+
>
|
|
4535
|
+
<el-table-column
|
|
4536
|
+
fixed="left"
|
|
4537
|
+
type="selection"
|
|
4538
|
+
/>
|
|
4539
|
+
<MTableColumn
|
|
4540
|
+
type="expand"
|
|
4541
|
+
width="1"
|
|
4542
|
+
>
|
|
4543
|
+
<template #default="props">
|
|
4544
|
+
<h1>index{{ props.index }}</h1>
|
|
4545
|
+
<h1>$index{{ props.$index }}</h1>
|
|
4546
|
+
<h1>测试</h1>
|
|
4547
|
+
</template>
|
|
4548
|
+
</MTableColumn>
|
|
4549
|
+
<MTableColumn
|
|
4550
|
+
v-for="item in tableTitle"
|
|
4551
|
+
:key="item.prop"
|
|
4552
|
+
:prop="item.prop"
|
|
4553
|
+
:label="item.label"
|
|
4554
|
+
:align="item.align"
|
|
4555
|
+
:minWidth="item.minWidth"
|
|
4556
|
+
:className="item.className"
|
|
4557
|
+
:filters="item.filters"
|
|
4558
|
+
:headerAlign="item.headerAlign"
|
|
4559
|
+
:fixed="item.fixed"
|
|
4560
|
+
v-model:filtersValue="filtersValue"
|
|
4561
|
+
showOverflowTooltip
|
|
4562
|
+
>
|
|
4563
|
+
</MTableColumn>
|
|
4564
|
+
</MTableSuper>
|
|
4565
|
+
<h3>树状表格</h3>
|
|
4566
|
+
<MTableSuper
|
|
4567
|
+
v-if="!tableData"
|
|
4568
|
+
class="style.box"
|
|
4569
|
+
:data="tableData"
|
|
4570
|
+
border
|
|
4571
|
+
@headerDragend="headerDragend"
|
|
4572
|
+
:filtersValue="filtersValue"
|
|
4573
|
+
scrollbarAlwaysOn
|
|
4574
|
+
v-model:tableConfig="tableConfig"
|
|
4575
|
+
rowKey="id"
|
|
4576
|
+
tableConfigKey="tableConfigKey"
|
|
4577
|
+
@expandChange="privateExpandChange"
|
|
4578
|
+
>
|
|
4579
|
+
<MTableColumn
|
|
4580
|
+
v-for="item in tableTitle"
|
|
4581
|
+
:key="item.prop"
|
|
4582
|
+
:prop="item.prop"
|
|
4583
|
+
:label="item.label"
|
|
4584
|
+
:align="item.align"
|
|
4585
|
+
:minWidth="item.minWidth"
|
|
4586
|
+
:className="item.className"
|
|
4587
|
+
:filters="item.filters"
|
|
4588
|
+
:headerAlign="item.headerAlign"
|
|
4589
|
+
:fixed="item.fixed"
|
|
4590
|
+
v-model:filtersValue="filtersValue"
|
|
4591
|
+
showOverflowTooltip
|
|
4592
|
+
>
|
|
4593
|
+
</MTableColumn>
|
|
4594
|
+
</MTableSuper>
|
|
4595
|
+
</div>
|
|
4596
|
+
</template>
|
|
4597
|
+
|
|
4598
|
+
<script setup lang="ts">
|
|
4599
|
+
import { ref } from 'vue'
|
|
4600
|
+
import { useTableConfig } from 'packages/index'
|
|
4601
|
+
import { MTableColumn } from 'packages/MTableColumn'
|
|
4602
|
+
|
|
4603
|
+
const privateExpandChange = (row: any, expandedRows: any[]) => {
|
|
4604
|
+
console.log('row', row)
|
|
4605
|
+
console.log('expandedRows', expandedRows)
|
|
4606
|
+
}
|
|
4607
|
+
|
|
4608
|
+
// const test = (data: any) => {
|
|
4609
|
+
// console.log('data', data)
|
|
4610
|
+
// }
|
|
4611
|
+
|
|
4612
|
+
const tableData = ref<any[]>([])
|
|
4613
|
+
const { tableTitle, headerDragend, tableConfig, filtersValue } = useTableConfig('MTableDemo', [{
|
|
4614
|
+
label: '序号',
|
|
4615
|
+
prop: 'sn',
|
|
4616
|
+
minWidth: 200
|
|
4617
|
+
// fixed: 'right'
|
|
4618
|
+
}, {
|
|
4619
|
+
label: '时间',
|
|
4620
|
+
prop: 'date',
|
|
4621
|
+
minWidth: 200
|
|
4622
|
+
// fixed: 'left'
|
|
4623
|
+
}, {
|
|
4624
|
+
label: '地址',
|
|
4625
|
+
prop: 'address',
|
|
4626
|
+
minWidth: 200
|
|
4627
|
+
}, {
|
|
4628
|
+
label: '名称',
|
|
4629
|
+
prop: 'name',
|
|
4630
|
+
minWidth: 200
|
|
4631
|
+
}], tableData)
|
|
4632
|
+
console.log('tableTitle', tableTitle.value)
|
|
4633
|
+
|
|
4634
|
+
tableData.value = [{
|
|
4635
|
+
id: 1,
|
|
4636
|
+
sn: 1,
|
|
4637
|
+
date: '2016-05-03',
|
|
4638
|
+
name: 'Tom1',
|
|
4639
|
+
address: 'No. 189',
|
|
4640
|
+
tag: 'Home',
|
|
4641
|
+
pid: 0
|
|
4642
|
+
}, {
|
|
4643
|
+
id: 2,
|
|
4644
|
+
sn: 2,
|
|
4645
|
+
date: '2016-05-02',
|
|
4646
|
+
name: 'Tom2',
|
|
4647
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4648
|
+
tag: 'Office',
|
|
4649
|
+
pid: 0,
|
|
4650
|
+
children: [{
|
|
4651
|
+
id: 21,
|
|
4652
|
+
sn: 1,
|
|
4653
|
+
date: '2016-05-02',
|
|
4654
|
+
name: 'Tom21',
|
|
4655
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4656
|
+
tag: 'Office'
|
|
4657
|
+
}, {
|
|
4658
|
+
id: 22,
|
|
4659
|
+
sn: 2,
|
|
4660
|
+
date: '2016-05-02',
|
|
4661
|
+
name: 'Tom22',
|
|
4662
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4663
|
+
tag: 'Office'
|
|
4664
|
+
}]
|
|
4665
|
+
}, {
|
|
4666
|
+
id: 3,
|
|
4667
|
+
sn: 3,
|
|
4668
|
+
date: '2016-05-04',
|
|
4669
|
+
name: 'Tom3',
|
|
4670
|
+
address: 'No. 189',
|
|
4671
|
+
tag: 'Home',
|
|
4672
|
+
pid: 0
|
|
4673
|
+
}, {
|
|
4674
|
+
id: 4,
|
|
4675
|
+
sn: 4,
|
|
4676
|
+
date: '2016-05-01',
|
|
4677
|
+
name: 'Tom4',
|
|
4678
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4679
|
+
tag: 'Office',
|
|
4680
|
+
pid: 0
|
|
4681
|
+
}, {
|
|
4682
|
+
id: 5,
|
|
4683
|
+
sn: 5,
|
|
4684
|
+
date: '2016-05-05',
|
|
4685
|
+
name: 'Tom4',
|
|
4686
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4687
|
+
tag: 'Office',
|
|
4688
|
+
pid: 0
|
|
4689
|
+
}, {
|
|
4690
|
+
id: 6,
|
|
4691
|
+
sn: 6,
|
|
4692
|
+
date: '2016-06-01',
|
|
4693
|
+
name: 'Tom4',
|
|
4694
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4695
|
+
tag: 'Office',
|
|
4696
|
+
pid: 0
|
|
4697
|
+
}]
|
|
4698
|
+
</script>
|
|
4699
|
+
|
|
4700
|
+
<style lang="scss" scoped>
|
|
4701
|
+
.g-box {
|
|
4702
|
+
max-width: 1000px;
|
|
4703
|
+
}
|
|
4704
|
+
</style>
|
|
4705
|
+
|
|
4706
|
+
|
|
4707
|
+
```
|
|
4708
|
+
|
|
4709
|
+
### 2) Attributes
|
|
4710
|
+
|
|
4711
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
4712
|
+
|----------------|-----------------------------|------------------|-----|-----------------------------------------------------|
|
|
4713
|
+
| data | 表格的数据 | Array | - | [ ] |
|
|
4714
|
+
| sole | 行的唯一值 | String , number | - | key |
|
|
4715
|
+
| filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | Function \| null | - | null |
|
|
4716
|
+
| expandProp | 展开图标列(如使用这个属性则必须存在rowKey属性) | string | - | '' |
|
|
4717
|
+
| tableConfigKey | 表格配置key | string | - | '' |
|
|
4718
|
+
| 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table.html |
|
|
4719
|
+
|
|
4720
|
+
## 要求
|
|
4721
|
+
|
|
4722
|
+
```
|
|
4723
|
+
sole 必须传递在表格数据内为唯一的值 如id key 等不会发生重复的关键字
|
|
4724
|
+
```
|
|
4725
|
+
|
|
4726
|
+
### 3) Events
|
|
4727
|
+
|
|
4728
|
+
| 方法名 | 说明 | 回调参数 |
|
|
4729
|
+
|---------------------|--------------------------------------|-----------------------------------------------------|
|
|
4730
|
+
| pasteData | 表格粘贴方法 | 共有2个参数,依次为粘贴动作的数据PasteAction ,表格原始数据tableData |
|
|
4731
|
+
| update:tableConfig | 表格配置更新 | \[tableConfig: TableConfig] |
|
|
4732
|
+
| privateExpandChange | expandProp模式下 当用户对某一行展开或者关闭的时候会触发该事件 | [row: any, expandedRows: any[]] |
|
|
4733
|
+
| 其余方法 | 参考el官网的table | https://element-plus.org/zh-CN/component/table.html |
|
|
4734
|
+
|
|
4735
|
+
### 4) PasteAction
|
|
4736
|
+
|
|
4737
|
+
| 参数 | 说明 | 类型 |
|
|
4738
|
+
|------------|----------------------------------------|--------|
|
|
4739
|
+
| editRow | 返回粘贴的对应行的原始数据 | Object |
|
|
4740
|
+
| editColumn | 返回粘贴时鼠标所在列的 表格prop值 | String |
|
|
4741
|
+
| arr | 返回粘贴时候处理之后的 数组信息 | Array |
|
|
4742
|
+
| rowIndex | 根据sole的值 去data内查找 当前操作的 粘贴行在data内的序号 | number |
|
|
4743
|
+
|
|
4744
|
+
|
|
4745
|
+
|
|
4746
|
+
|
|
4747
|
+
|
|
4008
4748
|
虚拟化表格
|
|
4009
4749
|
=================
|
|
4010
4750
|
|
|
@@ -4059,13 +4799,15 @@ const { tableTitle, tableConfig, filtersValue } = useTableV2Config('MTableV2Demo
|
|
|
4059
4799
|
const test = () => {
|
|
4060
4800
|
filtersValue.value = {}
|
|
4061
4801
|
}
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4802
|
+
for (let i = 0; i < 1000; i++) {
|
|
4803
|
+
tableData.value.push({
|
|
4804
|
+
id: i,
|
|
4805
|
+
sn: 'sn' + i,
|
|
4806
|
+
date: 'date' + i,
|
|
4807
|
+
address: 'address' + i,
|
|
4808
|
+
name: 'name' + i
|
|
4809
|
+
})
|
|
4810
|
+
}
|
|
4069
4811
|
</script>
|
|
4070
4812
|
|
|
4071
4813
|
<style lang="scss" scoped>
|
|
@@ -4090,6 +4832,7 @@ tableData.value = [{
|
|
|
4090
4832
|
| fixed | 单元格宽度是自适应还是固定 | boolean | - | false |
|
|
4091
4833
|
| estimatedRowHeight | 渲染动态的单元格的预估高度 | number \| null | - | null |
|
|
4092
4834
|
| headerHeight | Header 的高度由height设置。 如果传入数组,它会使 header row 等于数组长度 | number \| number[] \| null | - | null |
|
|
4835
|
+
| cellWidthAdaptive | 单元格宽度自适应 | boolean | - | false |
|
|
4093
4836
|
| 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table-v2.html#tablev2-%E5%B1%9E%E6%80%A7 |
|
|
4094
4837
|
|
|
4095
4838
|
### 3) Events
|
|
@@ -4929,3 +5672,33 @@ const list = ref<{ name: string, className: string }[]>([
|
|
|
4929
5672
|
| repairZero | 末尾补到几位零 | number | - |
|
|
4930
5673
|
|
|
4931
5674
|
|
|
5675
|
+
|
|
5676
|
+
|
|
5677
|
+
## vue3的slots转json
|
|
5678
|
+
|
|
5679
|
+
### 1) 参数
|
|
5680
|
+
|
|
5681
|
+
| 参数 | 描述 | 类型 | 默认值 |
|
|
5682
|
+
|-------|-------------|--------|-----------|
|
|
5683
|
+
| slots | vue的slots对象 | Slots | - |
|
|
5684
|
+
| name | 插槽名 | string | 'default' |
|
|
5685
|
+
|
|
5686
|
+
### 2) 返参
|
|
5687
|
+
|
|
5688
|
+
| 参数 | 描述 | 类型 | 默认值 |
|
|
5689
|
+
|----|--------------|-------------------|-----|
|
|
5690
|
+
| - | 格式化后的slots数据 | SlotsToDataReturn | [] |
|
|
5691
|
+
|
|
5692
|
+
#### 2.1) SlotsToDataReturn
|
|
5693
|
+
| 参数 | 描述 | 类型 | 默认值 |
|
|
5694
|
+
|-------------------|--------------|-------------------------|-----|
|
|
5695
|
+
| SlotsToDataReturn | 格式化后的slots数据 | SlotsToDataReturnItem[] | [] |
|
|
5696
|
+
|
|
5697
|
+
#### 2.1) SlotsToDataReturn
|
|
5698
|
+
| 参数 | 描述 | 类型 | 默认值 |
|
|
5699
|
+
|----------|---------------|-----------------------------|-----|
|
|
5700
|
+
| name | 标签名 | string | - |
|
|
5701
|
+
| props | 组件标签上的props参数 | Record<string, any> \| null | - |
|
|
5702
|
+
| children | 子级 | SlotsToDataReturnItem[] | - |
|
|
5703
|
+
|
|
5704
|
+
|