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