br-dionysus 1.8.3 → 1.8.5
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 +656 -52
- 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 +3597 -3492
- package/dist/br-dionysus.umd.js +8 -8
- package/dist/index.css +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/index.d.ts +1 -0
- package/package.json +1 -1
- package/packages/Hook/useTableConfig/demo.vue +1 -1
- package/packages/Hook/useTableConfig/useTableConfig.ts +9 -9
- package/packages/MDialog/src/MDialog.vue +12 -1
- 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 +52 -8
- 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,6 +22,8 @@
|
|
|
22
22
|
|
|
23
23
|
+ MTableColumnSet([表格头设置组件](#表格头设置组件))
|
|
24
24
|
|
|
25
|
+
+ MTableSuper([整合表格组件](#整合表格组件))
|
|
26
|
+
|
|
25
27
|
+ MTableV2([虚拟化表格](#虚拟化表格))
|
|
26
28
|
|
|
27
29
|
+ SkinConfig([皮肤设置](#皮肤设置))
|
|
@@ -1490,7 +1492,7 @@ const tableConfig = ref({
|
|
|
1490
1492
|
|
|
1491
1493
|
|
|
1492
1494
|
|
|
1493
|
-
|
|
1495
|
+
整合表格组件
|
|
1494
1496
|
=================
|
|
1495
1497
|
|
|
1496
1498
|
### 1) 基础用法
|
|
@@ -1501,55 +1503,242 @@ const tableConfig = ref({
|
|
|
1501
1503
|
|
|
1502
1504
|
<template>
|
|
1503
1505
|
<div class="g-box">
|
|
1504
|
-
<
|
|
1505
|
-
<
|
|
1506
|
+
<h3>基础功能</h3>
|
|
1507
|
+
<MTableSuper
|
|
1506
1508
|
:data="tableData"
|
|
1507
|
-
|
|
1508
|
-
:height="500"
|
|
1509
|
+
v-if="!tableData"
|
|
1509
1510
|
border
|
|
1510
|
-
|
|
1511
|
+
>
|
|
1512
|
+
<MTableColumn
|
|
1513
|
+
v-for="item in tableTitle"
|
|
1514
|
+
:key="item.prop"
|
|
1515
|
+
:prop="item.prop"
|
|
1516
|
+
:label="item.label"
|
|
1517
|
+
:align="item.align"
|
|
1518
|
+
:minWidth="item.minWidth"
|
|
1519
|
+
:className="item.className"
|
|
1520
|
+
:filters="item.filters"
|
|
1521
|
+
:headerAlign="item.headerAlign"
|
|
1522
|
+
:fixed="item.fixed"
|
|
1523
|
+
v-model:filtersValue="filtersValue"
|
|
1524
|
+
showOverflowTooltip
|
|
1525
|
+
></MTableColumn>
|
|
1526
|
+
</MTableSuper>
|
|
1527
|
+
<h3>带选择的表格</h3>
|
|
1528
|
+
<MTableSuper
|
|
1529
|
+
:data="tableData"
|
|
1530
|
+
border
|
|
1531
|
+
>
|
|
1532
|
+
<el-table-column
|
|
1533
|
+
fixed="left"
|
|
1534
|
+
type="selection"
|
|
1535
|
+
/>
|
|
1536
|
+
<el-table-column
|
|
1537
|
+
prop="name"
|
|
1538
|
+
label="名称"
|
|
1539
|
+
>
|
|
1540
|
+
<el-table-column
|
|
1541
|
+
prop="date"
|
|
1542
|
+
label="时间"
|
|
1543
|
+
></el-table-column>
|
|
1544
|
+
<el-table-column
|
|
1545
|
+
prop="address"
|
|
1546
|
+
label="地址"
|
|
1547
|
+
></el-table-column>
|
|
1548
|
+
</el-table-column>
|
|
1549
|
+
<MTableColumn
|
|
1550
|
+
v-for="item in tableTitle"
|
|
1551
|
+
:key="item.prop"
|
|
1552
|
+
:prop="item.prop"
|
|
1553
|
+
:label="item.label"
|
|
1554
|
+
:align="item.align"
|
|
1555
|
+
:minWidth="item.minWidth"
|
|
1556
|
+
:className="item.className"
|
|
1557
|
+
:filters="item.filters"
|
|
1558
|
+
:headerAlign="item.headerAlign"
|
|
1559
|
+
:fixed="item.fixed"
|
|
1560
|
+
v-model:filtersValue="filtersValue"
|
|
1561
|
+
showOverflowTooltip
|
|
1562
|
+
>
|
|
1563
|
+
</MTableColumn>
|
|
1564
|
+
</MTableSuper>
|
|
1565
|
+
<h3>展开列</h3>
|
|
1566
|
+
<MTableSuper
|
|
1567
|
+
v-if="!tableData"
|
|
1568
|
+
class="style.box"
|
|
1569
|
+
:data="tableData"
|
|
1570
|
+
border
|
|
1571
|
+
:filtersValue="filtersValue"
|
|
1572
|
+
scrollbarAlwaysOn
|
|
1511
1573
|
v-model:tableConfig="tableConfig"
|
|
1512
|
-
|
|
1513
|
-
|
|
1574
|
+
rowKey="id"
|
|
1575
|
+
tableConfigKey="tableConfigKey"
|
|
1576
|
+
@headerDragend="headerDragend"
|
|
1577
|
+
expandProp="sn"
|
|
1578
|
+
@privateExpandChange="privateExpandChange"
|
|
1579
|
+
>
|
|
1580
|
+
<el-table-column
|
|
1581
|
+
fixed="left"
|
|
1582
|
+
type="selection"
|
|
1583
|
+
/>
|
|
1584
|
+
<MTableColumn
|
|
1585
|
+
type="expand"
|
|
1586
|
+
width="1"
|
|
1587
|
+
>
|
|
1588
|
+
<template #default="props">
|
|
1589
|
+
<h1>index{{ props.index }}</h1>
|
|
1590
|
+
<h1>$index{{ props.$index }}</h1>
|
|
1591
|
+
<h1>测试</h1>
|
|
1592
|
+
</template>
|
|
1593
|
+
</MTableColumn>
|
|
1594
|
+
<MTableColumn
|
|
1595
|
+
v-for="item in tableTitle"
|
|
1596
|
+
:key="item.prop"
|
|
1597
|
+
:prop="item.prop"
|
|
1598
|
+
:label="item.label"
|
|
1599
|
+
:align="item.align"
|
|
1600
|
+
:minWidth="item.minWidth"
|
|
1601
|
+
:className="item.className"
|
|
1602
|
+
:filters="item.filters"
|
|
1603
|
+
:headerAlign="item.headerAlign"
|
|
1604
|
+
:fixed="item.fixed"
|
|
1605
|
+
v-model:filtersValue="filtersValue"
|
|
1606
|
+
showOverflowTooltip
|
|
1607
|
+
>
|
|
1608
|
+
</MTableColumn>
|
|
1609
|
+
</MTableSuper>
|
|
1610
|
+
<h3>树状表格</h3>
|
|
1611
|
+
<MTableSuper
|
|
1612
|
+
v-if="!tableData"
|
|
1613
|
+
class="style.box"
|
|
1614
|
+
:data="tableData"
|
|
1615
|
+
border
|
|
1616
|
+
@headerDragend="headerDragend"
|
|
1617
|
+
:filtersValue="filtersValue"
|
|
1618
|
+
scrollbarAlwaysOn
|
|
1619
|
+
v-model:tableConfig="tableConfig"
|
|
1620
|
+
rowKey="id"
|
|
1621
|
+
tableConfigKey="tableConfigKey"
|
|
1622
|
+
@expandChange="privateExpandChange"
|
|
1623
|
+
>
|
|
1624
|
+
<MTableColumn
|
|
1625
|
+
v-for="item in tableTitle"
|
|
1626
|
+
:key="item.prop"
|
|
1627
|
+
:prop="item.prop"
|
|
1628
|
+
:label="item.label"
|
|
1629
|
+
:align="item.align"
|
|
1630
|
+
:minWidth="item.minWidth"
|
|
1631
|
+
:className="item.className"
|
|
1632
|
+
:filters="item.filters"
|
|
1633
|
+
:headerAlign="item.headerAlign"
|
|
1634
|
+
:fixed="item.fixed"
|
|
1635
|
+
v-model:filtersValue="filtersValue"
|
|
1636
|
+
showOverflowTooltip
|
|
1637
|
+
>
|
|
1638
|
+
</MTableColumn>
|
|
1639
|
+
</MTableSuper>
|
|
1514
1640
|
</div>
|
|
1515
1641
|
</template>
|
|
1516
1642
|
|
|
1517
1643
|
<script setup lang="ts">
|
|
1518
1644
|
import { ref } from 'vue'
|
|
1519
|
-
import
|
|
1645
|
+
import { useTableConfig } from 'packages/index'
|
|
1646
|
+
import { MTableColumn } from 'packages/MTableColumn'
|
|
1647
|
+
|
|
1648
|
+
const privateExpandChange = (row: any, expandedRows: any[]) => {
|
|
1649
|
+
console.log('row', row)
|
|
1650
|
+
console.log('expandedRows', expandedRows)
|
|
1651
|
+
}
|
|
1652
|
+
|
|
1653
|
+
// const test = (data: any) => {
|
|
1654
|
+
// console.log('data', data)
|
|
1655
|
+
// }
|
|
1520
1656
|
|
|
1521
1657
|
const tableData = ref<any[]>([])
|
|
1522
|
-
const { tableTitle, tableConfig, filtersValue } =
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1658
|
+
const { tableTitle, headerDragend, tableConfig, filtersValue } = useTableConfig('MTableDemo', [{
|
|
1659
|
+
label: '序号',
|
|
1660
|
+
prop: 'sn',
|
|
1661
|
+
minWidth: 200
|
|
1662
|
+
// fixed: 'right'
|
|
1527
1663
|
}, {
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1664
|
+
label: '时间',
|
|
1665
|
+
prop: 'date',
|
|
1666
|
+
minWidth: 200
|
|
1667
|
+
// fixed: 'left'
|
|
1532
1668
|
}, {
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
width: 300
|
|
1669
|
+
label: '地址',
|
|
1670
|
+
prop: 'address',
|
|
1671
|
+
minWidth: 200
|
|
1537
1672
|
}, {
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
width: 300
|
|
1673
|
+
label: '名称',
|
|
1674
|
+
prop: 'name',
|
|
1675
|
+
minWidth: 200
|
|
1542
1676
|
}], tableData)
|
|
1677
|
+
console.log('tableTitle', tableTitle.value)
|
|
1543
1678
|
|
|
1544
|
-
const test = () => {
|
|
1545
|
-
filtersValue.value = {}
|
|
1546
|
-
}
|
|
1547
1679
|
tableData.value = [{
|
|
1548
1680
|
id: 1,
|
|
1549
|
-
sn:
|
|
1550
|
-
date: '
|
|
1551
|
-
|
|
1552
|
-
|
|
1681
|
+
sn: 1,
|
|
1682
|
+
date: '2016-05-03',
|
|
1683
|
+
name: 'Tom1',
|
|
1684
|
+
address: 'No. 189',
|
|
1685
|
+
tag: 'Home',
|
|
1686
|
+
pid: 0
|
|
1687
|
+
}, {
|
|
1688
|
+
id: 2,
|
|
1689
|
+
sn: 2,
|
|
1690
|
+
date: '2016-05-02',
|
|
1691
|
+
name: 'Tom2',
|
|
1692
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1693
|
+
tag: 'Office',
|
|
1694
|
+
pid: 0,
|
|
1695
|
+
children: [{
|
|
1696
|
+
id: 21,
|
|
1697
|
+
sn: 1,
|
|
1698
|
+
date: '2016-05-02',
|
|
1699
|
+
name: 'Tom21',
|
|
1700
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1701
|
+
tag: 'Office'
|
|
1702
|
+
}, {
|
|
1703
|
+
id: 22,
|
|
1704
|
+
sn: 2,
|
|
1705
|
+
date: '2016-05-02',
|
|
1706
|
+
name: 'Tom22',
|
|
1707
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1708
|
+
tag: 'Office'
|
|
1709
|
+
}]
|
|
1710
|
+
}, {
|
|
1711
|
+
id: 3,
|
|
1712
|
+
sn: 3,
|
|
1713
|
+
date: '2016-05-04',
|
|
1714
|
+
name: 'Tom3',
|
|
1715
|
+
address: 'No. 189',
|
|
1716
|
+
tag: 'Home',
|
|
1717
|
+
pid: 0
|
|
1718
|
+
}, {
|
|
1719
|
+
id: 4,
|
|
1720
|
+
sn: 4,
|
|
1721
|
+
date: '2016-05-01',
|
|
1722
|
+
name: 'Tom4',
|
|
1723
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1724
|
+
tag: 'Office',
|
|
1725
|
+
pid: 0
|
|
1726
|
+
}, {
|
|
1727
|
+
id: 5,
|
|
1728
|
+
sn: 5,
|
|
1729
|
+
date: '2016-05-05',
|
|
1730
|
+
name: 'Tom4',
|
|
1731
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1732
|
+
tag: 'Office',
|
|
1733
|
+
pid: 0
|
|
1734
|
+
}, {
|
|
1735
|
+
id: 6,
|
|
1736
|
+
sn: 6,
|
|
1737
|
+
date: '2016-06-01',
|
|
1738
|
+
name: 'Tom4',
|
|
1739
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
1740
|
+
tag: 'Office',
|
|
1741
|
+
pid: 0
|
|
1553
1742
|
}]
|
|
1554
1743
|
</script>
|
|
1555
1744
|
|
|
@@ -1564,18 +1753,132 @@ tableData.value = [{
|
|
|
1564
1753
|
|
|
1565
1754
|
### 2) Attributes
|
|
1566
1755
|
|
|
1567
|
-
| 参数
|
|
1568
|
-
|
|
1569
|
-
|
|
|
1570
|
-
|
|
|
1571
|
-
|
|
|
1572
|
-
|
|
|
1573
|
-
|
|
|
1574
|
-
|
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1756
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
1757
|
+
|----------------|-----------------------------|------------------|-----|-----------------------------------------------------|
|
|
1758
|
+
| data | 表格的数据 | Array | - | [ ] |
|
|
1759
|
+
| sole | 行的唯一值 | String , number | - | key |
|
|
1760
|
+
| filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | Function \| null | - | null |
|
|
1761
|
+
| expandProp | 展开图标列(如使用这个属性则必须存在rowKey属性) | string | - | '' |
|
|
1762
|
+
| tableConfigKey | 表格配置key | string | - | '' |
|
|
1763
|
+
| 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table.html |
|
|
1764
|
+
|
|
1765
|
+
## 要求
|
|
1766
|
+
|
|
1767
|
+
```
|
|
1768
|
+
sole 必须传递在表格数据内为唯一的值 如id key 等不会发生重复的关键字
|
|
1769
|
+
```
|
|
1770
|
+
|
|
1771
|
+
### 3) Events
|
|
1772
|
+
|
|
1773
|
+
| 方法名 | 说明 | 回调参数 |
|
|
1774
|
+
|---------------------|--------------------------------------|-----------------------------------------------------|
|
|
1775
|
+
| pasteData | 表格粘贴方法 | 共有2个参数,依次为粘贴动作的数据PasteAction ,表格原始数据tableData |
|
|
1776
|
+
| update:tableConfig | 表格配置更新 | \[tableConfig: TableConfig] |
|
|
1777
|
+
| privateExpandChange | expandProp模式下 当用户对某一行展开或者关闭的时候会触发该事件 | [row: any, expandedRows: any[]] |
|
|
1778
|
+
| 其余方法 | 参考el官网的table | https://element-plus.org/zh-CN/component/table.html |
|
|
1779
|
+
|
|
1780
|
+
### 4) PasteAction
|
|
1781
|
+
|
|
1782
|
+
| 参数 | 说明 | 类型 |
|
|
1783
|
+
|------------|----------------------------------------|--------|
|
|
1784
|
+
| editRow | 返回粘贴的对应行的原始数据 | Object |
|
|
1785
|
+
| editColumn | 返回粘贴时鼠标所在列的 表格prop值 | String |
|
|
1786
|
+
| arr | 返回粘贴时候处理之后的 数组信息 | Array |
|
|
1787
|
+
| rowIndex | 根据sole的值 去data内查找 当前操作的 粘贴行在data内的序号 | number |
|
|
1788
|
+
|
|
1789
|
+
|
|
1790
|
+
|
|
1791
|
+
|
|
1792
|
+
|
|
1793
|
+
虚拟化表格
|
|
1794
|
+
=================
|
|
1795
|
+
|
|
1796
|
+
### 1) 基础用法
|
|
1797
|
+
|
|
1798
|
+
|
|
1799
|
+
|
|
1800
|
+
```html
|
|
1801
|
+
|
|
1802
|
+
<template>
|
|
1803
|
+
<div class="g-box">
|
|
1804
|
+
<p @click="test">{{ tableConfig }}</p>
|
|
1805
|
+
<MTableV2
|
|
1806
|
+
:data="tableData"
|
|
1807
|
+
:columns="tableTitle"
|
|
1808
|
+
:height="500"
|
|
1809
|
+
border
|
|
1810
|
+
fixed
|
|
1811
|
+
v-model:tableConfig="tableConfig"
|
|
1812
|
+
tableConfigKey="MTableV2Demo"
|
|
1813
|
+
></MTableV2>
|
|
1814
|
+
</div>
|
|
1815
|
+
</template>
|
|
1816
|
+
|
|
1817
|
+
<script setup lang="ts">
|
|
1818
|
+
import { ref } from 'vue'
|
|
1819
|
+
import useTableV2Config from 'packages/Hook/useTableV2Config/useTableV2Config'
|
|
1820
|
+
|
|
1821
|
+
const tableData = ref<any[]>([])
|
|
1822
|
+
const { tableTitle, tableConfig, filtersValue } = useTableV2Config('MTableV2Demo', [{
|
|
1823
|
+
title: '序号',
|
|
1824
|
+
key: 'sn',
|
|
1825
|
+
dataKey: 'sn',
|
|
1826
|
+
width: 300
|
|
1827
|
+
}, {
|
|
1828
|
+
title: '时间',
|
|
1829
|
+
key: 'date',
|
|
1830
|
+
dataKey: 'date',
|
|
1831
|
+
width: 300
|
|
1832
|
+
}, {
|
|
1833
|
+
title: '地址',
|
|
1834
|
+
key: 'address',
|
|
1835
|
+
dataKey: 'address',
|
|
1836
|
+
width: 300
|
|
1837
|
+
}, {
|
|
1838
|
+
title: '名称',
|
|
1839
|
+
key: 'name',
|
|
1840
|
+
dataKey: 'name',
|
|
1841
|
+
width: 300
|
|
1842
|
+
}], tableData)
|
|
1843
|
+
|
|
1844
|
+
const test = () => {
|
|
1845
|
+
filtersValue.value = {}
|
|
1846
|
+
}
|
|
1847
|
+
for (let i = 0; i < 1000; i++) {
|
|
1848
|
+
tableData.value.push({
|
|
1849
|
+
id: i,
|
|
1850
|
+
sn: 'sn' + i,
|
|
1851
|
+
date: 'date' + i,
|
|
1852
|
+
address: 'address' + i,
|
|
1853
|
+
name: 'name' + i
|
|
1854
|
+
})
|
|
1855
|
+
}
|
|
1856
|
+
</script>
|
|
1857
|
+
|
|
1858
|
+
<style lang="scss" scoped>
|
|
1859
|
+
.g-box {
|
|
1860
|
+
max-width: 1000px;
|
|
1861
|
+
}
|
|
1862
|
+
</style>
|
|
1863
|
+
|
|
1864
|
+
|
|
1865
|
+
```
|
|
1866
|
+
|
|
1867
|
+
### 2) Attributes
|
|
1868
|
+
|
|
1869
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
1870
|
+
|--------------------|---------------------------------------------------|----------------------------|---------------------------|-----------------------------------------------------------------------------------|
|
|
1871
|
+
| size | 尺寸 | string | small \| large \| default | default |
|
|
1872
|
+
| data | 要在表中渲染的数据数组 | any[] | - | [] |
|
|
1873
|
+
| columns | 表格列配置 | TableV2Title[] | - | [] |
|
|
1874
|
+
| filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | FilterValue \| null | - | null |
|
|
1875
|
+
| tableConfig | 表格配置 | TableConfig \| null | - | null |
|
|
1876
|
+
| tableConfigKey | 表格配置key | string | - | '' |
|
|
1877
|
+
| fixed | 单元格宽度是自适应还是固定 | boolean | - | false |
|
|
1878
|
+
| estimatedRowHeight | 渲染动态的单元格的预估高度 | number \| null | - | null |
|
|
1879
|
+
| headerHeight | Header 的高度由height设置。 如果传入数组,它会使 header row 等于数组长度 | number \| number[] \| null | - | null |
|
|
1880
|
+
| cellWidthAdaptive | 单元格宽度自适应 | boolean | - | false |
|
|
1881
|
+
| 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table-v2.html#tablev2-%E5%B1%9E%E6%80%A7 |
|
|
1579
1882
|
|
|
1580
1883
|
### 3) Events
|
|
1581
1884
|
|
|
@@ -4005,6 +4308,304 @@ const tableConfig = ref({
|
|
|
4005
4308
|
|
|
4006
4309
|
|
|
4007
4310
|
|
|
4311
|
+
整合表格组件
|
|
4312
|
+
=================
|
|
4313
|
+
|
|
4314
|
+
### 1) 基础用法
|
|
4315
|
+
|
|
4316
|
+
|
|
4317
|
+
|
|
4318
|
+
```html
|
|
4319
|
+
|
|
4320
|
+
<template>
|
|
4321
|
+
<div class="g-box">
|
|
4322
|
+
<h3>基础功能</h3>
|
|
4323
|
+
<MTableSuper
|
|
4324
|
+
:data="tableData"
|
|
4325
|
+
v-if="!tableData"
|
|
4326
|
+
border
|
|
4327
|
+
>
|
|
4328
|
+
<MTableColumn
|
|
4329
|
+
v-for="item in tableTitle"
|
|
4330
|
+
:key="item.prop"
|
|
4331
|
+
:prop="item.prop"
|
|
4332
|
+
:label="item.label"
|
|
4333
|
+
:align="item.align"
|
|
4334
|
+
:minWidth="item.minWidth"
|
|
4335
|
+
:className="item.className"
|
|
4336
|
+
:filters="item.filters"
|
|
4337
|
+
:headerAlign="item.headerAlign"
|
|
4338
|
+
:fixed="item.fixed"
|
|
4339
|
+
v-model:filtersValue="filtersValue"
|
|
4340
|
+
showOverflowTooltip
|
|
4341
|
+
></MTableColumn>
|
|
4342
|
+
</MTableSuper>
|
|
4343
|
+
<h3>带选择的表格</h3>
|
|
4344
|
+
<MTableSuper
|
|
4345
|
+
:data="tableData"
|
|
4346
|
+
border
|
|
4347
|
+
>
|
|
4348
|
+
<el-table-column
|
|
4349
|
+
fixed="left"
|
|
4350
|
+
type="selection"
|
|
4351
|
+
/>
|
|
4352
|
+
<el-table-column
|
|
4353
|
+
prop="name"
|
|
4354
|
+
label="名称"
|
|
4355
|
+
>
|
|
4356
|
+
<el-table-column
|
|
4357
|
+
prop="date"
|
|
4358
|
+
label="时间"
|
|
4359
|
+
></el-table-column>
|
|
4360
|
+
<el-table-column
|
|
4361
|
+
prop="address"
|
|
4362
|
+
label="地址"
|
|
4363
|
+
></el-table-column>
|
|
4364
|
+
</el-table-column>
|
|
4365
|
+
<MTableColumn
|
|
4366
|
+
v-for="item in tableTitle"
|
|
4367
|
+
:key="item.prop"
|
|
4368
|
+
:prop="item.prop"
|
|
4369
|
+
:label="item.label"
|
|
4370
|
+
:align="item.align"
|
|
4371
|
+
:minWidth="item.minWidth"
|
|
4372
|
+
:className="item.className"
|
|
4373
|
+
:filters="item.filters"
|
|
4374
|
+
:headerAlign="item.headerAlign"
|
|
4375
|
+
:fixed="item.fixed"
|
|
4376
|
+
v-model:filtersValue="filtersValue"
|
|
4377
|
+
showOverflowTooltip
|
|
4378
|
+
>
|
|
4379
|
+
</MTableColumn>
|
|
4380
|
+
</MTableSuper>
|
|
4381
|
+
<h3>展开列</h3>
|
|
4382
|
+
<MTableSuper
|
|
4383
|
+
v-if="!tableData"
|
|
4384
|
+
class="style.box"
|
|
4385
|
+
:data="tableData"
|
|
4386
|
+
border
|
|
4387
|
+
:filtersValue="filtersValue"
|
|
4388
|
+
scrollbarAlwaysOn
|
|
4389
|
+
v-model:tableConfig="tableConfig"
|
|
4390
|
+
rowKey="id"
|
|
4391
|
+
tableConfigKey="tableConfigKey"
|
|
4392
|
+
@headerDragend="headerDragend"
|
|
4393
|
+
expandProp="sn"
|
|
4394
|
+
@privateExpandChange="privateExpandChange"
|
|
4395
|
+
>
|
|
4396
|
+
<el-table-column
|
|
4397
|
+
fixed="left"
|
|
4398
|
+
type="selection"
|
|
4399
|
+
/>
|
|
4400
|
+
<MTableColumn
|
|
4401
|
+
type="expand"
|
|
4402
|
+
width="1"
|
|
4403
|
+
>
|
|
4404
|
+
<template #default="props">
|
|
4405
|
+
<h1>index{{ props.index }}</h1>
|
|
4406
|
+
<h1>$index{{ props.$index }}</h1>
|
|
4407
|
+
<h1>测试</h1>
|
|
4408
|
+
</template>
|
|
4409
|
+
</MTableColumn>
|
|
4410
|
+
<MTableColumn
|
|
4411
|
+
v-for="item in tableTitle"
|
|
4412
|
+
:key="item.prop"
|
|
4413
|
+
:prop="item.prop"
|
|
4414
|
+
:label="item.label"
|
|
4415
|
+
:align="item.align"
|
|
4416
|
+
:minWidth="item.minWidth"
|
|
4417
|
+
:className="item.className"
|
|
4418
|
+
:filters="item.filters"
|
|
4419
|
+
:headerAlign="item.headerAlign"
|
|
4420
|
+
:fixed="item.fixed"
|
|
4421
|
+
v-model:filtersValue="filtersValue"
|
|
4422
|
+
showOverflowTooltip
|
|
4423
|
+
>
|
|
4424
|
+
</MTableColumn>
|
|
4425
|
+
</MTableSuper>
|
|
4426
|
+
<h3>树状表格</h3>
|
|
4427
|
+
<MTableSuper
|
|
4428
|
+
v-if="!tableData"
|
|
4429
|
+
class="style.box"
|
|
4430
|
+
:data="tableData"
|
|
4431
|
+
border
|
|
4432
|
+
@headerDragend="headerDragend"
|
|
4433
|
+
:filtersValue="filtersValue"
|
|
4434
|
+
scrollbarAlwaysOn
|
|
4435
|
+
v-model:tableConfig="tableConfig"
|
|
4436
|
+
rowKey="id"
|
|
4437
|
+
tableConfigKey="tableConfigKey"
|
|
4438
|
+
@expandChange="privateExpandChange"
|
|
4439
|
+
>
|
|
4440
|
+
<MTableColumn
|
|
4441
|
+
v-for="item in tableTitle"
|
|
4442
|
+
:key="item.prop"
|
|
4443
|
+
:prop="item.prop"
|
|
4444
|
+
:label="item.label"
|
|
4445
|
+
:align="item.align"
|
|
4446
|
+
:minWidth="item.minWidth"
|
|
4447
|
+
:className="item.className"
|
|
4448
|
+
:filters="item.filters"
|
|
4449
|
+
:headerAlign="item.headerAlign"
|
|
4450
|
+
:fixed="item.fixed"
|
|
4451
|
+
v-model:filtersValue="filtersValue"
|
|
4452
|
+
showOverflowTooltip
|
|
4453
|
+
>
|
|
4454
|
+
</MTableColumn>
|
|
4455
|
+
</MTableSuper>
|
|
4456
|
+
</div>
|
|
4457
|
+
</template>
|
|
4458
|
+
|
|
4459
|
+
<script setup lang="ts">
|
|
4460
|
+
import { ref } from 'vue'
|
|
4461
|
+
import { useTableConfig } from 'packages/index'
|
|
4462
|
+
import { MTableColumn } from 'packages/MTableColumn'
|
|
4463
|
+
|
|
4464
|
+
const privateExpandChange = (row: any, expandedRows: any[]) => {
|
|
4465
|
+
console.log('row', row)
|
|
4466
|
+
console.log('expandedRows', expandedRows)
|
|
4467
|
+
}
|
|
4468
|
+
|
|
4469
|
+
// const test = (data: any) => {
|
|
4470
|
+
// console.log('data', data)
|
|
4471
|
+
// }
|
|
4472
|
+
|
|
4473
|
+
const tableData = ref<any[]>([])
|
|
4474
|
+
const { tableTitle, headerDragend, tableConfig, filtersValue } = useTableConfig('MTableDemo', [{
|
|
4475
|
+
label: '序号',
|
|
4476
|
+
prop: 'sn',
|
|
4477
|
+
minWidth: 200
|
|
4478
|
+
// fixed: 'right'
|
|
4479
|
+
}, {
|
|
4480
|
+
label: '时间',
|
|
4481
|
+
prop: 'date',
|
|
4482
|
+
minWidth: 200
|
|
4483
|
+
// fixed: 'left'
|
|
4484
|
+
}, {
|
|
4485
|
+
label: '地址',
|
|
4486
|
+
prop: 'address',
|
|
4487
|
+
minWidth: 200
|
|
4488
|
+
}, {
|
|
4489
|
+
label: '名称',
|
|
4490
|
+
prop: 'name',
|
|
4491
|
+
minWidth: 200
|
|
4492
|
+
}], tableData)
|
|
4493
|
+
console.log('tableTitle', tableTitle.value)
|
|
4494
|
+
|
|
4495
|
+
tableData.value = [{
|
|
4496
|
+
id: 1,
|
|
4497
|
+
sn: 1,
|
|
4498
|
+
date: '2016-05-03',
|
|
4499
|
+
name: 'Tom1',
|
|
4500
|
+
address: 'No. 189',
|
|
4501
|
+
tag: 'Home',
|
|
4502
|
+
pid: 0
|
|
4503
|
+
}, {
|
|
4504
|
+
id: 2,
|
|
4505
|
+
sn: 2,
|
|
4506
|
+
date: '2016-05-02',
|
|
4507
|
+
name: 'Tom2',
|
|
4508
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4509
|
+
tag: 'Office',
|
|
4510
|
+
pid: 0,
|
|
4511
|
+
children: [{
|
|
4512
|
+
id: 21,
|
|
4513
|
+
sn: 1,
|
|
4514
|
+
date: '2016-05-02',
|
|
4515
|
+
name: 'Tom21',
|
|
4516
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4517
|
+
tag: 'Office'
|
|
4518
|
+
}, {
|
|
4519
|
+
id: 22,
|
|
4520
|
+
sn: 2,
|
|
4521
|
+
date: '2016-05-02',
|
|
4522
|
+
name: 'Tom22',
|
|
4523
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4524
|
+
tag: 'Office'
|
|
4525
|
+
}]
|
|
4526
|
+
}, {
|
|
4527
|
+
id: 3,
|
|
4528
|
+
sn: 3,
|
|
4529
|
+
date: '2016-05-04',
|
|
4530
|
+
name: 'Tom3',
|
|
4531
|
+
address: 'No. 189',
|
|
4532
|
+
tag: 'Home',
|
|
4533
|
+
pid: 0
|
|
4534
|
+
}, {
|
|
4535
|
+
id: 4,
|
|
4536
|
+
sn: 4,
|
|
4537
|
+
date: '2016-05-01',
|
|
4538
|
+
name: 'Tom4',
|
|
4539
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4540
|
+
tag: 'Office',
|
|
4541
|
+
pid: 0
|
|
4542
|
+
}, {
|
|
4543
|
+
id: 5,
|
|
4544
|
+
sn: 5,
|
|
4545
|
+
date: '2016-05-05',
|
|
4546
|
+
name: 'Tom4',
|
|
4547
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4548
|
+
tag: 'Office',
|
|
4549
|
+
pid: 0
|
|
4550
|
+
}, {
|
|
4551
|
+
id: 6,
|
|
4552
|
+
sn: 6,
|
|
4553
|
+
date: '2016-06-01',
|
|
4554
|
+
name: 'Tom4',
|
|
4555
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
4556
|
+
tag: 'Office',
|
|
4557
|
+
pid: 0
|
|
4558
|
+
}]
|
|
4559
|
+
</script>
|
|
4560
|
+
|
|
4561
|
+
<style lang="scss" scoped>
|
|
4562
|
+
.g-box {
|
|
4563
|
+
max-width: 1000px;
|
|
4564
|
+
}
|
|
4565
|
+
</style>
|
|
4566
|
+
|
|
4567
|
+
|
|
4568
|
+
```
|
|
4569
|
+
|
|
4570
|
+
### 2) Attributes
|
|
4571
|
+
|
|
4572
|
+
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
4573
|
+
|----------------|-----------------------------|------------------|-----|-----------------------------------------------------|
|
|
4574
|
+
| data | 表格的数据 | Array | - | [ ] |
|
|
4575
|
+
| sole | 行的唯一值 | String , number | - | key |
|
|
4576
|
+
| filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | Function \| null | - | null |
|
|
4577
|
+
| expandProp | 展开图标列(如使用这个属性则必须存在rowKey属性) | string | - | '' |
|
|
4578
|
+
| tableConfigKey | 表格配置key | string | - | '' |
|
|
4579
|
+
| 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table.html |
|
|
4580
|
+
|
|
4581
|
+
## 要求
|
|
4582
|
+
|
|
4583
|
+
```
|
|
4584
|
+
sole 必须传递在表格数据内为唯一的值 如id key 等不会发生重复的关键字
|
|
4585
|
+
```
|
|
4586
|
+
|
|
4587
|
+
### 3) Events
|
|
4588
|
+
|
|
4589
|
+
| 方法名 | 说明 | 回调参数 |
|
|
4590
|
+
|---------------------|--------------------------------------|-----------------------------------------------------|
|
|
4591
|
+
| pasteData | 表格粘贴方法 | 共有2个参数,依次为粘贴动作的数据PasteAction ,表格原始数据tableData |
|
|
4592
|
+
| update:tableConfig | 表格配置更新 | \[tableConfig: TableConfig] |
|
|
4593
|
+
| privateExpandChange | expandProp模式下 当用户对某一行展开或者关闭的时候会触发该事件 | [row: any, expandedRows: any[]] |
|
|
4594
|
+
| 其余方法 | 参考el官网的table | https://element-plus.org/zh-CN/component/table.html |
|
|
4595
|
+
|
|
4596
|
+
### 4) PasteAction
|
|
4597
|
+
|
|
4598
|
+
| 参数 | 说明 | 类型 |
|
|
4599
|
+
|------------|----------------------------------------|--------|
|
|
4600
|
+
| editRow | 返回粘贴的对应行的原始数据 | Object |
|
|
4601
|
+
| editColumn | 返回粘贴时鼠标所在列的 表格prop值 | String |
|
|
4602
|
+
| arr | 返回粘贴时候处理之后的 数组信息 | Array |
|
|
4603
|
+
| rowIndex | 根据sole的值 去data内查找 当前操作的 粘贴行在data内的序号 | number |
|
|
4604
|
+
|
|
4605
|
+
|
|
4606
|
+
|
|
4607
|
+
|
|
4608
|
+
|
|
4008
4609
|
虚拟化表格
|
|
4009
4610
|
=================
|
|
4010
4611
|
|
|
@@ -4059,13 +4660,15 @@ const { tableTitle, tableConfig, filtersValue } = useTableV2Config('MTableV2Demo
|
|
|
4059
4660
|
const test = () => {
|
|
4060
4661
|
filtersValue.value = {}
|
|
4061
4662
|
}
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4663
|
+
for (let i = 0; i < 1000; i++) {
|
|
4664
|
+
tableData.value.push({
|
|
4665
|
+
id: i,
|
|
4666
|
+
sn: 'sn' + i,
|
|
4667
|
+
date: 'date' + i,
|
|
4668
|
+
address: 'address' + i,
|
|
4669
|
+
name: 'name' + i
|
|
4670
|
+
})
|
|
4671
|
+
}
|
|
4069
4672
|
</script>
|
|
4070
4673
|
|
|
4071
4674
|
<style lang="scss" scoped>
|
|
@@ -4090,6 +4693,7 @@ tableData.value = [{
|
|
|
4090
4693
|
| fixed | 单元格宽度是自适应还是固定 | boolean | - | false |
|
|
4091
4694
|
| estimatedRowHeight | 渲染动态的单元格的预估高度 | number \| null | - | null |
|
|
4092
4695
|
| headerHeight | Header 的高度由height设置。 如果传入数组,它会使 header row 等于数组长度 | number \| number[] \| null | - | null |
|
|
4696
|
+
| cellWidthAdaptive | 单元格宽度自适应 | boolean | - | false |
|
|
4093
4697
|
| 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table-v2.html#tablev2-%E5%B1%9E%E6%80%A7 |
|
|
4094
4698
|
|
|
4095
4699
|
### 3) Events
|