index-banner.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <template>
  2. <view class="shadow-card mx-30 bg-white overflow-hidden rounded-17 p-2">
  3. <ie-image :is-oss="true" src="/banner/index-banner-1.png" custom-class="w-full min-h-264 overflow-hidden"
  4. :round="15" />
  5. <view class="pt-24 pb-40 bg-white grid grid-cols-4 gap-y-32 justify-items-center">
  6. <view class="w-fit" v-for="item in validMenus" :key="item.name" @click="navigateTo(item)">
  7. <ie-image :is-oss="true" custom-class="w-auto h-82" :round="10" :src="item.icon" mode="heightFix" />
  8. <view class="text-26 text-fore-title">{{ item.name }}</view>
  9. </view>
  10. </view>
  11. </view>
  12. <view class="mx-30 mt-36">
  13. <ie-image :is-oss="true" src="/banner/index-banner-2.png" custom-class="w-full min-h-180 bg-back" :round="15" />
  14. </view>
  15. </template>
  16. <script lang="ts" setup>
  17. import { useTransferPage } from '@/hooks/useTransferPage';
  18. const { transferTo } = useTransferPage();
  19. import { useUserStore } from '@/store/userStore';
  20. import { Transfer } from '@/types';
  21. const userStore = useUserStore();
  22. type MenuItem = {
  23. name: string;
  24. icon: string;
  25. pageUrl: string;
  26. navigateType?: Transfer.TransferType;
  27. noLogin?: boolean
  28. visible?: boolean
  29. }
  30. const navigateTo = async (item: MenuItem) => {
  31. const { pageUrl, navigateType, noLogin } = item;
  32. if (!noLogin) {
  33. const isLogin = await userStore.checkLogin();
  34. if (isLogin) {
  35. transferTo(pageUrl, {
  36. type: navigateType || 'navigateTo',
  37. });
  38. };
  39. } else {
  40. transferTo(pageUrl, {
  41. type: navigateType || 'navigateTo',
  42. });
  43. }
  44. }
  45. const validMenus = computed(() => {
  46. const menus: MenuItem[] = [
  47. {
  48. name: '学习备考',
  49. icon: '/menu/menu-study.png',
  50. pageUrl: '/pagesStudy/pages/index/index',
  51. visible: !userStore.isAuditor,
  52. },
  53. {
  54. name: '志愿填报',
  55. icon: '/menu/menu-volunteer.png',
  56. pageUrl: '/pagesMain/pages/volunteer/volunteer',
  57. navigateType: 'switchTab',
  58. },
  59. {
  60. name: '找院校',
  61. icon: '/menu/menu-college.png',
  62. pageUrl: '/pagesOther/pages/college-library/index/index',
  63. },
  64. {
  65. name: '查专业',
  66. icon: '/menu/menu-major.png',
  67. pageUrl: '/pagesOther/pages/major/index/index',
  68. noLogin: true
  69. },
  70. {
  71. name: '看职业',
  72. icon: '/menu/menu-work.png',
  73. pageUrl: '/pagesOther/pages/vocation-library/index/index',
  74. noLogin: true
  75. },
  76. {
  77. name: '自我测评',
  78. icon: '/menu/menu-test.png',
  79. pageUrl: '/pagesOther/pages/test-center/index/index',
  80. },
  81. {
  82. name: '单招资讯',
  83. icon: '/menu/menu-news.png',
  84. pageUrl: '/pagesOther/pages/news/index/index',
  85. noLogin: true
  86. },
  87. // {
  88. // name: '专升本',
  89. // icon: '/menu/menu-upgrade.png',
  90. // pageUrl: '/pages/index/index',
  91. // }
  92. ]
  93. return menus.filter(item => item.visible !== false);
  94. });
  95. </script>
  96. <style lang="scss" scoped></style>