UseTable.vue 4.3 KB

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