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