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