<template>
  <view class="tabbar-container">
    <block>
      <!-- 针对中间的导航栏  通过true来判断控制类名和样式 -->
      <view class="tabbar-item" v-for="(item, index) in tabbarList" :class="[item.centerItem ? 'center-item' : '']" @click="changeItem(item)" :key="index">
        <view class="item-top">
          <image class="img" :src="currentItem == item.id ? item.selectIcon:item.icon"></image>
        </view>
        <!-- 通过三元判断控制类名 达到控制选中和未选中的样式 -->
        <view class="item-bottom" :class="[currentItem == item.id ? 'item-active' : '']">
          <text>{{ item.text }}</text>
        </view>
      </view>
    </block>
  </view>
</template>

<script>
// 组件的书写符合easycom规范 无需引入直接使用
export default {
  props: {
    currentPage: {
      type: Number,
      default: 0
    }
  },
  data () {
    return {
      currentItem: 0,
      tabbarList: [
        {
          id: 0,
          path: '/pages/index/index',
          icon: '/static/indexA.png',
          selectIcon: '/static/indexB.png',
          text: '首页',
          centerItem: false
        },
        {
          id: 1,
          path: '',
          icon: '/static/sweep.png',
          selectIcon: '',
          text: '扫一扫',
          // 通过类名class控制样式大小
          centerItem: true
        },
        {
          id: 2,
          path: '/pages/person/person',
          icon: '/static/personB.png',
          selectIcon: '/static/personA.png',
          text: '我的',
          centerItem: false
        }
      ]
    }
  },
  mounted () {
    this.currentItem = this.currentPage
  },
  methods: {
	changeItem (item) {
		if(item.centerItem){
			this.scanQRCode();
			return
		}
		uni.switchTab({
			url: item.path
		})
	},
	scanQRCode(){
		uni.scanCode({
			success: (res) => {
			  console.log('扫码结果：' + res.result);
			  uni.showModal({
				title: '扫码结果',
				content: res.result,
				showCancel: false
			  });
			},
			fail: (err) => {
			  console.error('扫码失败：' + err);
			  uni.showToast({
				title: '扫码失败',
				icon: 'none'
			  });
			}
		});
	}
  }
};
</script>
<style lang="scss" scope>
view {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}
.tabbar-container::before{
	content: '';
	position: absolute;
	left: 10%;
	top: 0;
	z-index: 10;
	height: 1px;
	width: 80%;
	background-image: linear-gradient(90deg, $uni-border-color-default, $uni-color-primary 50%, $uni-border-color-default);
	background-size: 100% 1px;
	background-repeat:no-repeat;
	z-index: 1;
}
.tabbar-container {
  position: fixed;
  bottom: 0rpx;
  left: 0rpx;
  width: 100%;
  height: 110rpx;
  display: flex;
  align-items: center;
  padding: 5rpx 0;
  color: $uni-text-color-grey;
  background: $uni-border-color-default;
  box-shadow: 0 2px 4px $uni-border-shadow-color-default;
  
  /* 针对tabbar的统一处理 */
  .tabbar-item {
    width: 33.33%;
    height: 100rpx;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    .item-top {
      width: 70rpx;
      height: 70rpx;
      padding: 10rpx;
      image {
        width: 100%;
        height: 100%;
      }
    }
    // 未被选中的导航栏字体
    .item-bottom {
      font-size: 12px;
      width: 100%;
    }
    // 被选中的导航栏字体
    .item-active {
      color: $uni-text-color-inverse;
    }
  }

  // 最中间的tabbar导航栏
  .center-item {
    display: block;
    position: relative;
	z-index: 20;
    .item-top {
      flex-shrink: 0;
      width: 100rpx;
      height: 100rpx;
      position: absolute;
      top: -60rpx;
      left: calc(50% - 50rpx);
      border-radius: 50%;
      box-shadow: 0 2px 4px $uni-border-shadow-color-default;
	  padding: 0;
	  display: flex;
	  align-items: center;
	  justify-content: center;
	  border: 2px solid $uni-text-color-inverse;
	  .img{
		width: 100%;
		height: 100%;
		border-radius: 50%;
	  }
    }
    .item-bottom {
      position: absolute;
      bottom: 5rpx;
    }
    .item-active {
      position: absolute;
      bottom: 5rpx;
      color: $uni-text-color-inverse;
    }
  }
}
</style>
