123 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Vue
		
	
	
	
<!--
 | 
						|
 * @Descripttion: 
 | 
						|
 * @version: 
 | 
						|
 * @Author: kBank
 | 
						|
 * @Date: 2022-11-21 16:46:09
 | 
						|
-->
 | 
						|
<template>
 | 
						|
  <view>
 | 
						|
    <view class="navBar"
 | 
						|
          :style="{height: navBarHeight+ 'px',background: backColor}">
 | 
						|
      <!-- 返回 -->
 | 
						|
      <view class="left-btn"
 | 
						|
            v-if="isBack"
 | 
						|
            :style="{marginTop: jn.top + 3+'px',left:jnRight + 'px'}"
 | 
						|
            @tap="toBack()">
 | 
						|
        <view class="left_item"
 | 
						|
              :style="{width: jn.height+ 'px',height: jn.height+ 'px'}">
 | 
						|
          <u-icon name="arrow-left"
 | 
						|
                  size="14"
 | 
						|
                  color="#333"></u-icon>
 | 
						|
        </view>
 | 
						|
      </view>
 | 
						|
      <view class="left-btn"
 | 
						|
            v-else>
 | 
						|
 | 
						|
      </view>
 | 
						|
      <!-- title -->
 | 
						|
      <view class="title"
 | 
						|
            :style="{marginTop: jn.top + 3+ 'px',lineHeight:jn.height+ 'px',}">
 | 
						|
        {{title}}
 | 
						|
      </view>
 | 
						|
      <view class="right-btn">
 | 
						|
        <slot name="rightBtn"></slot>
 | 
						|
      </view>
 | 
						|
    </view>
 | 
						|
    <view v-if="isKong"
 | 
						|
          :style="{height: navBarHeight+ 'px'}"></view>
 | 
						|
  </view>
 | 
						|
</template>
 | 
						|
 | 
						|
<script>
 | 
						|
export default {
 | 
						|
  name: 'navBar',
 | 
						|
  props: {
 | 
						|
    // 标题
 | 
						|
    title: {
 | 
						|
      type: String,
 | 
						|
      default: 'title',
 | 
						|
    },
 | 
						|
    // 背景色
 | 
						|
    backColor: {
 | 
						|
      type: String,
 | 
						|
      default: '#fcb71e',
 | 
						|
    },
 | 
						|
    // 是否显示返回
 | 
						|
    isBack: {
 | 
						|
      type: Boolean,
 | 
						|
      default: false,
 | 
						|
    },
 | 
						|
    // 是否占文档流
 | 
						|
    isKong: {
 | 
						|
      type: Boolean,
 | 
						|
      default: true,
 | 
						|
    },
 | 
						|
  },
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      navBarHeight: 40,
 | 
						|
      jn: {},
 | 
						|
      jnRight: '',
 | 
						|
    }
 | 
						|
  },
 | 
						|
  mounted() {
 | 
						|
    // 胶囊位置
 | 
						|
    let btnInfo = uni.getMenuButtonBoundingClientRect()
 | 
						|
    // 手机信息
 | 
						|
    let mobileInfo = uni.getSystemInfoSync()
 | 
						|
 | 
						|
    this.jn = btnInfo
 | 
						|
    this.navBarHeight = btnInfo.top + btnInfo.height + 8
 | 
						|
    this.jnRight = mobileInfo.windowWidth - btnInfo.right
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    toBack() {
 | 
						|
      let pages = getCurrentPages()
 | 
						|
      let prevPage = pages[pages.length - 1]
 | 
						|
      // 分享进来
 | 
						|
      if (prevPage.route == 'pages/index/goodsDetails/index') {
 | 
						|
        uni.switchTab({ url: '/pages/index/index' })
 | 
						|
      } else {
 | 
						|
        uni.navigateBack()
 | 
						|
      }
 | 
						|
    },
 | 
						|
  },
 | 
						|
}
 | 
						|
</script>
 | 
						|
 | 
						|
<style lang="scss" scoped>
 | 
						|
.navBar {
 | 
						|
  position: fixed;
 | 
						|
  width: 100%;
 | 
						|
  display: flex;
 | 
						|
  /* align-items: center; */
 | 
						|
  justify-content: space-between;
 | 
						|
  color: #333;
 | 
						|
  z-index: 9999;
 | 
						|
}
 | 
						|
.left-btn {
 | 
						|
  position: relative;
 | 
						|
  .left_item {
 | 
						|
    position: absolute;
 | 
						|
    background: #fff;
 | 
						|
    border-radius: 50%;
 | 
						|
    display: flex;
 | 
						|
    align-items: center;
 | 
						|
    justify-content: center;
 | 
						|
  }
 | 
						|
}
 | 
						|
.title {
 | 
						|
  font-size: 28rpx;
 | 
						|
  font-weight: 600;
 | 
						|
}
 | 
						|
</style> |