RefTable.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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
  20. :canResize="false"
  21. title="RefTable示例"
  22. titleHelpMessage="使用Ref调用表格内方法"
  23. ref="tableRef"
  24. :api="api"
  25. :columns="columns"
  26. rowKey="id"
  27. :rowSelection="{ type: 'checkbox' }"
  28. />
  29. </div>
  30. </template>
  31. <script lang="ts">
  32. import { defineComponent, ref, unref } from 'vue';
  33. import { BasicTable, TableActionType } from '/@/components/Table';
  34. import { getBasicColumns, getBasicShortColumns } from './tableData';
  35. import { useMessage } from '/@/hooks/web/useMessage';
  36. import { demoListApi } from '/@/api/demo/table';
  37. export default defineComponent({
  38. components: { BasicTable },
  39. setup() {
  40. const tableRef = ref<Nullable<TableActionType>>(null);
  41. const { createMessage } = useMessage();
  42. function getTableAction() {
  43. const tableAction = unref(tableRef);
  44. if (!tableAction) {
  45. throw new Error('tableAction is null');
  46. }
  47. return tableAction;
  48. }
  49. function changeLoading() {
  50. getTableAction().setLoading(true);
  51. setTimeout(() => {
  52. getTableAction().setLoading(false);
  53. }, 1000);
  54. }
  55. function changeColumns() {
  56. getTableAction().setColumns(getBasicShortColumns());
  57. }
  58. function reloadTable() {
  59. getTableAction().setColumns(getBasicColumns());
  60. getTableAction().reload({
  61. page: 1,
  62. });
  63. }
  64. function getColumn() {
  65. createMessage.info('请在控制台查看!');
  66. console.log(getTableAction().getColumns());
  67. }
  68. function getTableData() {
  69. createMessage.info('请在控制台查看!');
  70. console.log(getTableAction().getDataSource());
  71. }
  72. function getTableRawData() {
  73. createMessage.info('请在控制台查看!');
  74. console.log(getTableAction().getRawDataSource());
  75. }
  76. function getPagination() {
  77. createMessage.info('请在控制台查看!');
  78. console.log(getTableAction().getPaginationRef());
  79. }
  80. function setPaginationInfo() {
  81. getTableAction().setPagination({
  82. current: 2,
  83. });
  84. getTableAction().reload();
  85. }
  86. function getSelectRowList() {
  87. createMessage.info('请在控制台查看!');
  88. console.log(getTableAction().getSelectRows());
  89. }
  90. function getSelectRowKeyList() {
  91. createMessage.info('请在控制台查看!');
  92. console.log(getTableAction().getSelectRowKeys());
  93. }
  94. function setSelectedRowKeyList() {
  95. getTableAction().setSelectedRowKeys(['0', '1', '2']);
  96. }
  97. function clearSelect() {
  98. getTableAction().clearSelectedRowKeys();
  99. }
  100. return {
  101. tableRef,
  102. api: demoListApi,
  103. columns: getBasicColumns(),
  104. changeLoading,
  105. changeColumns,
  106. reloadTable,
  107. getColumn,
  108. getTableData,
  109. getTableRawData,
  110. getPagination,
  111. setPaginationInfo,
  112. getSelectRowList,
  113. getSelectRowKeyList,
  114. setSelectedRowKeyList,
  115. clearSelect,
  116. };
  117. },
  118. });
  119. </script>