123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <!--
- * @Author: your name
- * @Date: 2021-01-07 09:49:29
- * @LastEditTime: 2021-11-01 14:08:55
- * @LastEditors: Please set LastEditors
- * @Description: In User Settings Edit
- * @FilePath: \vue3-element-admin\src\App.vue
- -->
- <template>
- <!-- <router-view v-slot="{ Component }">
- <keep-alive exclude="GardenReport">
- <component :is="Component" />
- </keep-alive>
- </router-view> -->
- <router-view v-slot="{ Component }">
- <keep-alive v-if="route.meta && route.meta.keepAlive">
- <component :is="Component" />
- </keep-alive>
- <component v-else :is="Component" />
- </router-view>
- <Tabbar class="tabbar" route fixed v-show="showTab" active-color="#2199F8" inactive-color="#898989">
- <tabbar-item replace to="/home" v-if="curRole == 0">
- <span>农场监测</span>
- <template #icon="props">
- <img
- :src="
- props.active
- ? require('@/assets/img/tab_bar/home-active.png')
- : require('@/assets/img/tab_bar/home.png')
- "
- />
- </template>
- </tabbar-item>
- <!-- 专家 -->
- <tabbar-item replace to="/farm_manage" v-if="curRole == 1">
- <span>农场管理</span>
- <template #icon="props">
- <img
- :src="
- props.active
- ? require('@/assets/img/tab_bar/home-active.png')
- : require('@/assets/img/tab_bar/home.png')
- "
- />
- </template>
- </tabbar-item>
- <tabbar-item replace to="/task_condition" v-if="curRole == 2">
- <span>农情需求</span>
- <template #icon="props">
- <img
- :src="
- props.active
- ? require('@/assets/img/tab_bar/service-active.png')
- : require('@/assets/img/tab_bar/service.png')
- "
- />
- </template>
- </tabbar-item>
- <tabbar-item replace to="/plan" v-if="curRole != 2">
- <span>农事方案</span>
- <template #icon="props">
- <img
- :src="
- props.active
- ? require('@/assets/img/tab_bar/farm-active.png')
- : require('@/assets/img/tab_bar/farm.png')
- "
- />
- </template>
- </tabbar-item>
- <tabbar-item replace to="/message" v-if="curRole == 0">
- <span>农资农服</span>
- <template #icon="props">
- <img
- :src="
- props.active
- ? require('@/assets/img/tab_bar/service-active.png')
- : require('@/assets/img/tab_bar/service.png')
- "
- />
- </template>
- </tabbar-item>
- <tabbar-item replace to="/user" v-if="curRole != 0">
- <span>用户管理</span>
- <template #icon="props">
- <img
- :src="
- props.active
- ? require('@/assets/img/tab_bar/user-active.png')
- : require('@/assets/img/tab_bar/user.png')
- "
- />
- </template>
- </tabbar-item>
- <tabbar-item replace to="/mine">
- <span>个人中心</span>
- <template #icon="props">
- <img
- :src="
- props.active
- ? require('@/assets/img/tab_bar/mine-active.png')
- : require('@/assets/img/tab_bar/mine.png')
- "
- />
- </template>
- </tabbar-item>
- </Tabbar>
- <!-- 开启底部安全区适配 -->
- <number-keyboard safe-area-inset-bottom />
- </template>
- <script setup>
- import { NumberKeyboard } from "vant";
- import { Tabbar, TabbarItem } from "vant";
- import { nextTick, watch, onMounted, ref } from "vue";
- import { useRoute, useRouter } from "vue-router";
- import { useStore } from "vuex";
- // import {NH,NF,NZ,EXPERT} from "@/common/user_role";
- const store = useStore();
- const route = useRoute();
- const router = useRouter();
- // 首页loading加载完才显示底部导航栏
- const showTab = ref(false);
- // 0: 农户, 1: 专家, 2:农资农服
- const curRole = ref(2);
- let tabBarHeight = 0;
- onMounted(() => {
- setTimeout(() => {
- if (route.meta.showTabbar) {
- showTab.value = true;
- }
- nextTick(() => {
- const tabBarElement = document.querySelector(".van-tabbar");
- if (tabBarElement) {
- tabBarHeight = tabBarElement.offsetHeight;
- localStorage.setItem("tabBarHeight", tabBarHeight);
- store.commit("home/SET_TAB_BAR_HEIGHT", tabBarHeight);
- }
- });
- }, 500);
- });
- watch(
- () => route.name,
- (newName, oldName) => {
- // 在这里执行你的自定义逻辑
- showTab.value = false;
- if (route.meta.showTabbar) {
- showTab.value = true;
- }
- nextTick(() => {
- const tabBarElement = document.querySelector(".van-tabbar");
- if (tabBarElement) {
- tabBarHeight = tabBarElement.offsetHeight;
- localStorage.setItem("tabBarHeight", tabBarHeight);
- store.commit("home/SET_TAB_BAR_HEIGHT", tabBarHeight);
- }
- });
- },
- { immediate: false }
- );
- </script>
- <style lang="scss" scoped>
- .tabbar {
- position: fixed;
- pointer-events: all;
- z-index: 9999;
- }
- </style>
|