web-base-h5/components/cl-tabbar.vue

205 lines
4.3 KiB
Vue
Raw Normal View History

2025-03-23 09:29:40 +08:00
<template>
<view>
2025-07-22 09:12:50 +08:00
<u-tabbar
:value="current ? current : 0"
:fixed="true"
:placeholder="false"
:border="false"
:safeAreaInsetBottom="true"
inactiveColor="#666666"
activeColor="#333333"
>
<u-tabbar-item name="index" @click="handleClick" :text="'首页'">
2025-07-22 09:12:50 +08:00
<image
class="u-page__item__slot-icon"
slot="active-icon"
src="@/static/images/one1.png"
></image>
<image
class="u-page__item__slot-icon"
slot="inactive-icon"
src="@/static/images/one2.png"
></image>
2025-03-23 09:29:40 +08:00
</u-tabbar-item>
<u-tabbar-item
@click="handleClick"
v-if="!newShareMember"
:text="'个人推广'"
name="share"
>
2025-07-22 09:12:50 +08:00
<image
class="u-page__item__slot-icon"
slot="active-icon"
src="@/static/images/share-act.svg"
></image>
<image
class="u-page__item__slot-icon"
slot="inactive-icon"
src="@/static/images/share.svg"
></image>
2025-03-23 09:29:40 +08:00
</u-tabbar-item>
2025-07-22 09:12:50 +08:00
<u-tabbar-item
@click="handleClick"
:text="'购物车'"
:badge="shopCarLength"
name="shoppingCar"
>
2025-07-22 09:12:50 +08:00
<image
class="u-page__item__slot-icon"
slot="active-icon"
src="@/static/images/three1.png"
></image>
<image
class="u-page__item__slot-icon"
slot="inactive-icon"
src="@/static/images/three2.png"
></image>
2025-03-23 09:29:40 +08:00
</u-tabbar-item>
<u-tabbar-item @click="handleClick" :text="'我的'" name="mine">
2025-07-22 09:12:50 +08:00
<image
class="u-page__item__slot-icon"
slot="active-icon"
src="@/static/images/fore1.png"
></image>
<image
class="u-page__item__slot-icon"
slot="inactive-icon"
src="@/static/images/fore2.png"
></image>
2025-03-23 09:29:40 +08:00
</u-tabbar-item>
</u-tabbar>
</view>
</template>
<script>
2025-07-22 09:12:50 +08:00
import { mapGetters } from 'vuex'
2025-03-23 09:29:40 +08:00
export default {
props: {
current: String,
2025-03-23 09:29:40 +08:00
},
data() {
return {
2025-10-29 09:50:57 +08:00
newShareMember: false,
currentTab: 0,
2025-03-23 09:29:40 +08:00
list: [
{
text: '首页',
2025-03-23 09:29:40 +08:00
path: 'pages/index/index',
name: 'index',
2025-03-23 09:29:40 +08:00
},
2025-07-22 09:12:50 +08:00
{
text: '个人推广',
path: 'pages/mine/share/index',
name: 'share',
2025-07-22 09:12:50 +08:00
},
2025-03-23 09:29:40 +08:00
{
text: '购物车',
2025-03-23 09:29:40 +08:00
path: 'pages/shoppingCar/index',
name: 'shoppingCar',
2025-03-23 09:29:40 +08:00
},
2025-03-23 09:29:40 +08:00
{
text: '我的',
2025-03-23 09:29:40 +08:00
path: 'pages/mine/index',
name: 'mine',
2025-03-23 09:29:40 +08:00
},
],
}
},
computed: {
...mapGetters(['shopCarLength', 'user']),
systemSkin() {
2025-07-22 09:12:50 +08:00
return this.user?.skin || 0
},
2025-03-23 09:29:40 +08:00
},
mounted() {
this.newShareMember = uni.getStorageSync('User')?.loginType !== 0
if (this.newShareMember) {
this.list.splice(1, 1)
}
},
2025-03-23 09:29:40 +08:00
methods: {
tabbarChange(e) {
uni.switchTab({
url: '/' + this.list[e].path,
})
},
handleClick(tab) {
const index = this.list.findIndex(item => item.name === tab)
if (index === -1) {
return
}
uni.switchTab({
url: '/' + this.list[index].path,
})
},
2025-03-23 09:29:40 +08:00
},
}
</script>
<style lang="scss">
.u-page__item__slot-icon {
width: 20px;
height: 20px;
}
2025-03-23 09:29:40 +08:00
.u-page__item__slot-icon1 {
width: 35px;
height: 35px;
// margin-bottom: 20px
}
2025-03-23 09:29:40 +08:00
.u-page__item__slot-icon2 {
width: 35px;
height: 35px;
// margin-bottom: 20px
}
.greenEd {
::v-deep .u-tabbar__content {
background: linear-gradient(to bottom, #fff, #b6fdda);
2025-03-23 09:29:40 +08:00
}
::v-deep .u-tabbar__content__item-wrapper {
2025-07-22 09:12:50 +08:00
height: 80px;
2025-03-23 09:29:40 +08:00
}
::v-deep .u-tabbar-item {
2025-03-23 09:29:40 +08:00
// margin-bottom: 30px;
}
}
2025-07-22 09:12:50 +08:00
/* iPhone安全区域适配 */
/* 绿色主题的安全区域适配 */
.greenEd {
::v-deep .u-tabbar__content {
background: linear-gradient(to bottom, #fff, #b6fdda);
/* 绿色主题的安全区域背景 */
&::after {
background: #b6fdda;
}
}
}
/* 针对不同屏幕尺寸的优化 */
@media screen and (max-height: 667px) {
/* iPhone SE等小屏设备 */
::v-deep .u-tabbar__content__item-wrapper {
height: 70px;
}
}
@media screen and (min-height: 812px) {
/* iPhone X及以上机型 */
::v-deep .u-tabbar__content__item-wrapper {
height: 80px;
}
}
2025-03-23 09:29:40 +08:00
</style>