UseTable.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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, ColumnChangeParam, 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. function onChange() {
  32. console.log('onChange', arguments);
  33. }
  34. const [
  35. registerTable,
  36. {
  37. setLoading,
  38. setColumns,
  39. getColumns,
  40. getDataSource,
  41. reload,
  42. getPaginationRef,
  43. setPagination,
  44. getSelectRows,
  45. getSelectRowKeys,
  46. setSelectedRowKeys,
  47. clearSelectedRowKeys,
  48. },
  49. ] = useTable({
  50. canResize: true,
  51. title: 'useTable示例',
  52. titleHelpMessage: '使用useTable调用表格内方法',
  53. api: demoListApi,
  54. columns: getBasicColumns(),
  55. rowKey: 'id',
  56. showTableSetting: true,
  57. onChange,
  58. rowSelection: {
  59. type: 'checkbox',
  60. },
  61. onColumnsChange: (data: ColumnChangeParam[]) => {
  62. console.log('ColumnsChanged', data);
  63. },
  64. });
  65. function changeLoading() {
  66. setLoading(true);
  67. setTimeout(() => {
  68. setLoading(false);
  69. }, 1000);
  70. }
  71. function changeColumns() {
  72. setColumns(getBasicShortColumns());
  73. }
  74. function reloadTable() {
  75. setColumns(getBasicColumns());
  76. reload({
  77. page: 1,
  78. });
  79. }
  80. function getColumn() {
  81. createMessage.info('请在控制台查看!');
  82. console.log(getColumns());
  83. }
  84. function getTableData() {
  85. createMessage.info('请在控制台查看!');
  86. console.log(getDataSource());
  87. }
  88. function getPagination() {
  89. createMessage.info('请在控制台查看!');
  90. console.log(getPaginationRef());
  91. }
  92. function setPaginationInfo() {
  93. setPagination({
  94. current: 2,
  95. });
  96. reload();
  97. }
  98. function getSelectRowList() {
  99. createMessage.info('请在控制台查看!');
  100. console.log(getSelectRows());
  101. }
  102. function getSelectRowKeyList() {
  103. createMessage.info('请在控制台查看!');
  104. console.log(getSelectRowKeys());
  105. }
  106. function setSelectedRowKeyList() {
  107. setSelectedRowKeys(['0', '1', '2']);
  108. }
  109. function clearSelect() {
  110. clearSelectedRowKeys();
  111. }
  112. return {
  113. registerTable,
  114. changeLoading,
  115. changeColumns,
  116. reloadTable,
  117. getColumn,
  118. getTableData,
  119. getPagination,
  120. setPaginationInfo,
  121. getSelectRowList,
  122. getSelectRowKeyList,
  123. setSelectedRowKeyList,
  124. clearSelect,
  125. onChange,
  126. };
  127. },
  128. });
  129. </script>