You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.8 KiB

3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
  1. <template>
  2. <div>
  3. <!-- 这里放置标签切换的按钮 -->
  4. <el-button-group>
  5. <!-- 切换后状态显示 primary 样式否则是默认样式 -->
  6. <el-button
  7. :type="activeTab === 'add' ? 'primary' : 'default'"
  8. @click="goToAdd"
  9. >
  10. 新增消耗
  11. </el-button>
  12. <el-button
  13. :type="activeTab === 'detail' ? 'primary' : 'default'"
  14. @click="goToDetail"
  15. >
  16. 金币消耗明细
  17. </el-button>
  18. </el-button-group>
  19. <!-- 渲染子路由组件 -->
  20. <router-view></router-view>
  21. </div>
  22. </template>
  23. <script setup>
  24. import { ref, watch } from 'vue';
  25. import { useRouter, useRoute } from 'vue-router';
  26. const router = useRouter();// 获取路由实例
  27. const route = useRoute();// 获取当前路由信息
  28. // 定义响应式变量 activeTab 来跟踪当前激活的标签
  29. const activeTab = ref(route.name === 'coinConsumeDetail' ? 'detail' : 'add');
  30. //也就是说如果当前在coinConsumeDetail页面,那么就是detail,否则默认情况都展示add页面
  31. //此时获取到的路由信息是coinConsume,所以默认是add
  32. const goToAdd = () => {
  33. // 点击按钮时更新 activeTab 为 add
  34. activeTab.value = 'add';
  35. router.push({ name: 'addCoinConsume' });
  36. };
  37. const goToDetail = () => {
  38. // 点击按钮时更新 activeTab 为 detail
  39. activeTab.value = 'detail';
  40. router.push({ name: 'coinConsumeDetail' });
  41. };
  42. // 监听路由变化,更新 activeTab
  43. watch(() => route.name, (newName) => {
  44. if (newName === 'addCoinConsume') {
  45. activeTab.value = 'add';
  46. } else if (newName === 'coinConsumeDetail') {
  47. activeTab.value = 'detail';
  48. }
  49. });
  50. // 当进入父路由时,默认跳转到新增消耗页面
  51. if (route.name === 'coinConsume') {
  52. router.push({ name: 'addCoinConsume' });
  53. }
  54. </script>