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>
 |