quanwei
2025-11-01 121b714d710cf3c865f4a1b5efe81abec11056d1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<template>
    <view class="" v-if="detail.is_auto!=0 && hasTab" @click.stop>
        <view class="foot-bottom"></view>
        <view class="foot-tavbar-container d-a-c" :style="'background:'+detail.backgroundColor || '' + ';' "
            v-if="detail.list!=''">
            <view class="item d-c-c" :class="{'active':item.link_url == getRoute()}" v-for="(item, index) in detail.list"
                :key="index" @click="tabBarFunc(item)">
                <view style="height: 0;width: 0;opacity: 0;">{{getRoute()}}</view>
                <view class="inner d-c-c d-c">
                    <image v-if="detail.type!=2" :src="item.link_url == getRoute()?item.selectedIconPath:item.iconPath"
                        mode="aspectFill">
                    </image>
                    <text v-if="detail.type!=1"
                        :style="item.link_url == getRoute()?'color:'+detail.textHoverColor+';':'color:'+detail.textColor+';'"
                        class="text-name">{{ item.text}}</text>
                </view>
            </view>
        </view>
    </view>
</template>
 
<script>
    export default {
        data() {
            return {
                /*当前选中*/
                activeTabber: '首页',
                /*打开直播菜单*/
                open_liveMenu: false,
                /*底部菜单*/
                detail: {},
                /*是否微信小程序*/
                platform: 'wx',
                hasTab: false
            };
        },
        watch: {
            // 'footTabberData': {
            //     handler(n, o) {
            //         if (n != o) {
            //             console.log('watch:' + n.active)
            //             this.activeTabber = n.active;
            //             if (uni.getStorageSync('TabBar').is_auto && uni.getStorageSync('TabBar').is_auto != 0) {
            //                 uni.hideTabBar()
            //             }
            //         }
            //     },
            //     deep: true,
            //     immediate: true
            // }
        },
        created() {
            let pages = getCurrentPages();
            if (pages.length) {
                let currentPage = pages[pages.length - 1];
                if (currentPage.route == 'pages/index/index') {
                    this.$store.commit('changefootTab', '首页');
                }
            }
            this.platform = this.getPlatform();
            this.detail = uni.getStorageSync('TabBar');
            // this.hasmenu();
            this.getData();
        },
        methods: {
            hasmenu() {
                let self = this;
                let curRoute = self.getRoute();
                let res = self.detail.list.some(item => {
                    if (item.link_url == curRoute) {
                        return true
                    }
                })
                self.hasTab = res;
                if (uni.getStorageSync('TabBar').is_auto && uni.getStorageSync('TabBar').is_auto != 0) {
                    uni.hideTabBar()
                }
            },
            getRoute() {
                let self = this;
                let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
                let curRoute = '/' + routes[routes.length - 1].route //获取当前页面路由
                if (curRoute == '/pages/diy-page/diy-page' || curRoute == '/pages/article/detail/detail') {
                    if (routes[routes.length - 1]['$page']) {
                        curRoute = routes[routes.length - 1]['$page'].fullPath
                    }
                }
                return curRoute
            },
            /*点击菜单*/
            tabBarFunc(e) {
                if (this.footTabberData.active == e.text) {
                    return
                }
                this.$store.commit('changefootTab', e.text);
                this.gotoPage(e.link_url);
            },
            /*获取首页分类*/
            getData() {
                let self = this;
                self._get('index/nav', {}, function(res) {
                    self.detail = res.data.vars.data;
 
                    uni.setStorageSync('TabBar', res.data.vars.data);
                    self.hasmenu();
                });
            },
 
        }
    };
</script>
 
<style lang="scss">
    .foot-bottom {
        width: 100%;
        height: 98rpx;
        padding-bottom: env(safe-area-inset-bottom);
    }
 
    .foot-tavbar-container {
        box-shadow: 0 0 6rpx 0 rgba(0, 0, 0, 0.3);
        position: fixed;
        right: 0;
        bottom: 0;
        left: 0;
        height: 98rpx;
        background: #FFFFFF;
        z-index: 90;
        padding-bottom: env(safe-area-inset-bottom);
    }
 
    .foot-tavbar-container .item {
        flex: 1;
        height: 98rpx;
    }
 
    .foot-tavbar-container .item.add-btn .inner {
        margin-bottom: 70rpx;
        width: 100rpx;
        height: 100rpx;
        border-radius: 50%;
        background: $dominant-color;
        box-shadow: 0 0 10rpx 0 rgba(232, 38, 100, .6);
    }
 
    .foot-tavbar-container image {
        width: 50rpx;
        height: 50rpx;
    }
 
    .foot-tavbar-container .text-name {
        font-size: 24rpx;
        color: #666666;
    }
 
    .foot-tavbar-container .item.active .text-name {
        color: #f8c341;
    }
</style>