index.vue 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <PageWrapper title="标签页操作示例">
  3. <CollapseContainer title="在下面输入框输入文本,切换后回来内容会保存">
  4. <a-alert banner message="该操作不会影响页面标题,仅修改Tab标题" />
  5. <div class="mt-2 flex flex-grow-0">
  6. <a-button class="mr-2" @click="setTabTitle" type="primary"> 设置Tab标题 </a-button>
  7. <a-input placeholder="请输入" v-model:value="title" class="mr-4 w-12" />
  8. </div>
  9. </CollapseContainer>
  10. <CollapseContainer class="mt-4" title="标签页操作">
  11. <a-button class="mr-2" @click="closeAll"> 关闭所有 </a-button>
  12. <a-button class="mr-2" @click="closeLeft"> 关闭左侧 </a-button>
  13. <a-button class="mr-2" @click="closeRight"> 关闭右侧 </a-button>
  14. <a-button class="mr-2" @click="closeOther"> 关闭其他 </a-button>
  15. <a-button class="mr-2" @click="closeCurrent"> 关闭当前 </a-button>
  16. <a-button class="mr-2" @click="refreshPage"> 刷新当前 </a-button>
  17. </CollapseContainer>
  18. <CollapseContainer class="mt-4" title="标签页复用超出限制自动关闭(使用场景: 动态路由)">
  19. <a-button v-for="index in 6" :key="index" class="mr-2" @click="toDetail(index)">
  20. 打开{{ index }}详情页
  21. </a-button>
  22. </CollapseContainer>
  23. </PageWrapper>
  24. </template>
  25. <script lang="ts" setup>
  26. import { ref } from 'vue';
  27. import { useGo } from '/@/hooks/web/usePage';
  28. import { useTabs } from '/@/hooks/web/useTabs';
  29. import { useMessage } from '/@/hooks/web/useMessage';
  30. import { Input, Alert } from 'ant-design-vue';
  31. import { PageWrapper } from '/@/components/Page';
  32. import { CollapseContainer } from '/@/components/Container';
  33. const AInput = Input;
  34. const AAlert = Alert;
  35. defineOptions({
  36. name: 'TabsDemo',
  37. });
  38. const go = useGo();
  39. const title = ref('');
  40. const { closeAll, closeLeft, closeRight, closeOther, closeCurrent, refreshPage, setTitle } =
  41. useTabs();
  42. const { createMessage } = useMessage();
  43. function setTabTitle() {
  44. if (title.value) {
  45. setTitle(title.value);
  46. } else {
  47. createMessage.error('请输入要设置的Tab标题!');
  48. }
  49. }
  50. function toDetail(index: number) {
  51. go(`/feat/tabs/detail/${index}`);
  52. }
  53. </script>