123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <template>
- <view class="page-content
- bg-gradient-to-b from-primary-lighter to-bg bg-[length:100vw_170px] bg-no-repeat">
- <gradient-navbar/>
- <enroll-dashboard/>
- <mx-index-menus :data="pageConfig.menus" class="mt-[-50px]"/>
- <view class="mx-30 mt-30 mb-60 fx-col gap-40">
- <component v-for="block in pageConfig.blocks" v-bind="block" :is="blockMap[block.is]"/>
- </view>
- </view>
- </template>
- <script setup>
- import mxConst from "@/common/mxConst";
- import mxConfig from "@/common/mxConfig";
- import {onLoad, onShow} from '@dcloudio/uni-app'
- import {onMounted, ref, watchEffect} from 'vue';
- import {useEnvStore} from "@/hooks/useEnvStore";
- import {useTransfer} from "@/hooks/useTransfer";
- import {useUserStore} from "@/hooks/useUserStore";
- import {useTheme} from "@/hooks/useTheme";
- import {useProvidePageConfig} from "@/hooks/usePageConfigInjection";
- import {useProvidePageScroll} from "@/hooks/usePageScrollInjection";
- import GradientNavbar from "@/pages/index/components/gradient-navbar.vue";
- import EnrollDashboard from "@/pages/index/components/enroll-dashboard.vue";
- import CarouselBanner from "@/pages/index/components/carousel-banner.vue";
- import ScheduleSteps from "@/pages/index/components/schedule-steps.vue";
- import NewsTab from "@/pages/index/components/news-tab.vue";
- import NewsTop from "@/pages/index/components/news-top.vue";
- // 这里和vue2不太一样,vue2中import就能保证正常使用,但vue3中不能简单把component.is赋值为字符串
- const blockMap = {
- [CarouselBanner.name]: CarouselBanner,
- [ScheduleSteps.name]: ScheduleSteps,
- [NewsTab.name]: NewsTab,
- [NewsTop.name]: NewsTop
- }
- const {isLogin, isMobileBind, isScoreLocking} = useUserStore()
- const {isParent, isGuideRead} = useEnvStore()
- const {transferTo} = useTransfer()
- const {brands} = useTheme()
- const pageConfig = ref({})
- useProvidePageScroll()
- watchEffect(() => {
- const pageName = isParent.value ? 'Parent' : 'Index'
- pageConfig.value = useProvidePageConfig(pageName)
- })
- onLoad(() => {
- // 如果是从公众号进入本应用,隐藏底部的tab-bar,首页菜单将包含所有入口。
- if (isParent.value) uni.hideTabBar()
- })
- onShow(() => {
- if (!isGuideRead.value) {
- transferTo(mxConst.routes.guide)
- return
- }
- if (isLogin.value && !isMobileBind.value) {
- transferTo(mxConst.routes.bindMobile)
- return
- }
- if (isLogin.value && isScoreLocking.value) {
- uni.showModal({
- content: mxConfig.scoreLockingTips,
- showCancel: false,
- confirmText: '去修改分数',
- confirmColor: brands.primary,
- success: () => transferTo(mxConst.routes.basicInfo)
- })
- return
- }
- })
- onMounted(() => {
- // 这个挂钩可能是给wap2app用的,继续保留
- window.getPages = getPages
- })
- function getPages() {
- const pages = getCurrentPages();
- uni.postMessage({
- data: {
- pages: pages.length
- }
- });
- }
- </script>
- <style lang="scss" scoped>
- </style>
|