196 lines
4.5 KiB
Vue
196 lines
4.5 KiB
Vue
|
<template>
|
|||
|
<view class="test-page">
|
|||
|
<view class="test-content">
|
|||
|
<view class="test-title">TabBar图标测试</view>
|
|||
|
|
|||
|
<!-- 显示当前状态 -->
|
|||
|
<view class="status-info">
|
|||
|
<text>当前选中: {{ currentTab }}</text>
|
|||
|
<text>主题皮肤: {{ systemSkin }}</text>
|
|||
|
<text>购物车数量: {{ shopCarLength || 0 }}</text>
|
|||
|
</view>
|
|||
|
|
|||
|
<!-- 图标测试区域 -->
|
|||
|
<view class="icon-test">
|
|||
|
<view class="icon-section">
|
|||
|
<text class="section-title">首页图标测试</text>
|
|||
|
<view class="icon-row">
|
|||
|
<image src="@/static/images/one1.png" class="test-icon" />
|
|||
|
<image src="@/static/images/one2.png" class="test-icon" />
|
|||
|
<image src="@/static/images/one11.jpg" class="test-icon" />
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<view class="icon-section">
|
|||
|
<text class="section-title">会员专区图标测试</text>
|
|||
|
<view class="icon-row">
|
|||
|
<image src="@/static/images/special1.png" class="test-icon" />
|
|||
|
<image src="@/static/images/special2.png" class="test-icon" />
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<view class="icon-section">
|
|||
|
<text class="section-title">个人推广图标测试</text>
|
|||
|
<view class="icon-row">
|
|||
|
<image src="@/static/images/share-act.svg" class="test-icon" />
|
|||
|
<image src="@/static/images/share.svg" class="test-icon" />
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<view class="icon-section">
|
|||
|
<text class="section-title">购物车图标测试</text>
|
|||
|
<view class="icon-row">
|
|||
|
<image src="@/static/images/three1.png" class="test-icon" />
|
|||
|
<image src="@/static/images/three2.png" class="test-icon" />
|
|||
|
<image src="@/static/images/three11.jpg" class="test-icon" />
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<view class="icon-section">
|
|||
|
<text class="section-title">我的图标测试</text>
|
|||
|
<view class="icon-row">
|
|||
|
<image src="@/static/images/my_icon1.png" class="test-icon" />
|
|||
|
<image src="@/static/images/my_icon2.png" class="test-icon" />
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<!-- 主题切换按钮 -->
|
|||
|
<view class="theme-switcher">
|
|||
|
<button @click="switchTheme" class="theme-btn">
|
|||
|
切换主题 (当前: {{ systemSkin === 2 ? '绿色' : '默认' }})
|
|||
|
</button>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<!-- 使用修复后的TabBar -->
|
|||
|
<RaisedTabbar :current="currentTab" @change="handleTabChange" />
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
import RaisedTabbar from './raised-tabbar.vue'
|
|||
|
import { mapGetters } from 'vuex'
|
|||
|
|
|||
|
export default {
|
|||
|
name: 'TabbarTest',
|
|||
|
components: {
|
|||
|
RaisedTabbar,
|
|||
|
},
|
|||
|
data() {
|
|||
|
return {
|
|||
|
currentTab: 0,
|
|||
|
}
|
|||
|
},
|
|||
|
computed: {
|
|||
|
...mapGetters(['shopCarLength', 'user']),
|
|||
|
systemSkin() {
|
|||
|
return this.user?.skin || 0
|
|||
|
},
|
|||
|
},
|
|||
|
methods: {
|
|||
|
handleTabChange(index) {
|
|||
|
this.currentTab = index
|
|||
|
console.log('Tab切换到:', index)
|
|||
|
},
|
|||
|
switchTheme() {
|
|||
|
// 这里只是演示,实际项目中应该通过Vuex更新
|
|||
|
if (this.user) {
|
|||
|
this.$store.commit('updateUserSkin', this.systemSkin === 2 ? 0 : 2)
|
|||
|
}
|
|||
|
},
|
|||
|
},
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
.test-page {
|
|||
|
min-height: 100vh;
|
|||
|
background: #f8f9fa;
|
|||
|
padding-bottom: 100px;
|
|||
|
}
|
|||
|
|
|||
|
.test-content {
|
|||
|
padding: 40rpx;
|
|||
|
}
|
|||
|
|
|||
|
.test-title {
|
|||
|
font-size: 36rpx;
|
|||
|
font-weight: bold;
|
|||
|
text-align: center;
|
|||
|
color: #333;
|
|||
|
margin-bottom: 40rpx;
|
|||
|
}
|
|||
|
|
|||
|
.status-info {
|
|||
|
background: white;
|
|||
|
border-radius: 16rpx;
|
|||
|
padding: 30rpx;
|
|||
|
margin-bottom: 40rpx;
|
|||
|
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08);
|
|||
|
|
|||
|
text {
|
|||
|
display: block;
|
|||
|
font-size: 28rpx;
|
|||
|
color: #666;
|
|||
|
margin-bottom: 10rpx;
|
|||
|
|
|||
|
&:last-child {
|
|||
|
margin-bottom: 0;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.icon-test {
|
|||
|
background: white;
|
|||
|
border-radius: 16rpx;
|
|||
|
padding: 30rpx;
|
|||
|
margin-bottom: 40rpx;
|
|||
|
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08);
|
|||
|
}
|
|||
|
|
|||
|
.icon-section {
|
|||
|
margin-bottom: 40rpx;
|
|||
|
|
|||
|
&:last-child {
|
|||
|
margin-bottom: 0;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.section-title {
|
|||
|
font-size: 28rpx;
|
|||
|
font-weight: bold;
|
|||
|
color: #333;
|
|||
|
margin-bottom: 20rpx;
|
|||
|
display: block;
|
|||
|
}
|
|||
|
|
|||
|
.icon-row {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
gap: 20rpx;
|
|||
|
}
|
|||
|
|
|||
|
.test-icon {
|
|||
|
width: 60rpx;
|
|||
|
height: 60rpx;
|
|||
|
border: 2rpx solid #eee;
|
|||
|
border-radius: 8rpx;
|
|||
|
background: #f9f9f9;
|
|||
|
}
|
|||
|
|
|||
|
.theme-switcher {
|
|||
|
text-align: center;
|
|||
|
}
|
|||
|
|
|||
|
.theme-btn {
|
|||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|||
|
color: white;
|
|||
|
border: none;
|
|||
|
border-radius: 50rpx;
|
|||
|
padding: 20rpx 40rpx;
|
|||
|
font-size: 28rpx;
|
|||
|
font-weight: bold;
|
|||
|
}
|
|||
|
</style>
|