UseTable.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <template>
  2. <div class="p-4">
  3. <div class="mb-4">
  4. <a-button class="mr-2" @click="reloadTable">还原</a-button>
  5. <a-button class="mr-2" @click="changeLoading">开启loading</a-button>
  6. <a-button class="mr-2" @click="changeColumns">更改Columns</a-button>
  7. <a-button class="mr-2" @click="getColumn">获取Columns</a-button>
  8. <a-button class="mr-2" @click="getTableData">获取表格数据</a-button>
  9. <a-button class="mr-2" @click="setPaginationInfo">跳转到第2页</a-button>
  10. </div>
  11. <div class="mb-4">
  12. <a-button class="mr-2" @click="getSelectRowList">获取选中行</a-button>
  13. <a-button class="mr-2" @click="getSelectRowKeyList">获取选中行Key</a-button>
  14. <a-button class="mr-2" @click="setSelectedRowKeyList">设置选中行</a-button>
  15. <a-button class="mr-2" @click="clearSelect">清空选中行</a-button>
  16. <a-button class="mr-2" @click="getPagination">获取分页信息</a-button>
  17. </div>
  18. <BasicTable @register="registerTable" />
  19. </div>
  20. </template>
  21. <script lang="ts">
  22. import { defineComponent } from 'vue';
  23. import { BasicTable, useTable } from '/@/components/Table';
  24. import { getBasicColumns, getBasicShortColumns } from './tableData';
  25. import { useMessage } from '/@/hooks/web/useMessage';
  26. import { demoListApi } from '/@/api/demo/table';
  27. export default defineComponent({
  28. components: { BasicTable },
  29. setup() {
  30. const { createMessage } = useMessage();
  31. const [
  32. registerTable,
  33. {
  34. setLoading,
  35. setColumns,
  36. getColumns,
  37. getDataSource,
  38. reload,
  39. getPaginationRef,
  40. setPagination,
  41. getSelectRows,
  42. getSelectRowKeys,
  43. setSelectedRowKeys,
  44. clearSelectedRowKeys,
  45. },
  46. ] = useTable({
  47. canResize: false,
  48. title: 'useTable示例',
  49. titleHelpMessage: '使用useTable调用表格内方法',
  50. api: demoListApi,
  51. columns: getBasicColumns(),
  52. rowKey: 'id',
  53. rowSelection: {
  54. type: 'checkbox',
  55. },
  56. });
  57. function changeLoading() {
  58. setLoading(true);
  59. setTimeout(() => {
  60. setLoading(false);
  61. }, 1000);
  62. }
  63. function changeColumns() {
  64. setColumns(getBasicShortColumns());
  65. }
  66. function reloadTable() {
  67. setColumns(getBasicColumns());
  68. reload({
  69. page: 1,
  70. });
  71. }
  72. function getColumn() {
  73. createMessage.info('请在控制台查看!');
  74. console.log(getColumns());
  75. }
  76. function getTableData() {
  77. createMessage.info('请在控制台查看!');
  78. console.log(getDataSource());
  79. }
  80. function getPagination() {
  81. createMessage.info('请在控制台查看!');
  82. console.log(getPaginationRef());
  83. }
  84. function setPaginationInfo() {
  85. setPagination({
  86. current: 2,
  87. });
  88. reload();
  89. }
  90. function getSelectRowList() {
  91. createMessage.info('请在控制台查看!');
  92. console.log(getSelectRows());
  93. }
  94. function getSelectRowKeyList() {
  95. createMessage.info('请在控制台查看!');
  96. console.log(getSelectRowKeys());
  97. }
  98. function setSelectedRowKeyList() {
  99. setSelectedRowKeys(['0', '1', '2']);
  100. }
  101. function clearSelect() {
  102. clearSelectedRowKeys();
  103. }
  104. return {
  105. registerTable,
  106. changeLoading,
  107. changeColumns,
  108. reloadTable,
  109. getColumn,
  110. getTableData,
  111. getPagination,
  112. setPaginationInfo,
  113. getSelectRowList,
  114. getSelectRowKeyList,
  115. setSelectedRowKeyList,
  116. clearSelect,
  117. };
  118. },
  119. });
  120. </script>