| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 | 
							- <template>
 
-   <view
 
-     class="navbar"
 
-     :class="{'gradientBgc': !noBgColor}"
 
-     :style="{
 
-       'height': height + 'px',
 
-       'line-height': height + 'px',
 
-     }"
 
-   >
 
-     <view class="navbar-box" :style="{'paddingTop': statusBarHeight + 'px', 'height': height ? (height - statusBarHeight) + 'px' : '100%'}">
 
-       <image 
 
-         v-if="showLogo" 
 
-         src="https://minio.menduner.com/dev/8ddece1d3a3203164f57a5126b31464565be6858eb5d3af776ce3ac2512ad30c.png" 
 
-         class="navbar-box-logo" 
 
-         :style="{'height': defaultLogoHeight + 'px'}"
 
-       ></image>
 
-       <view v-else class="nav-box-title" :style="{'height': height ? (height - statusBarHeight) + 'px' : '100%'}">
 
-         <uni-icons 
 
-           v-if="!textLeft" 
 
-           :type="pages && pages.length > 1 ? 'icon-left' : 'icon-shouye'" 
 
-           size="23" 
 
-           class="ss-m-l-20" 
 
-           color="#0E100F" 
 
-           @tap="goBack"
 
-           custom-prefix="iconfont"
 
-         ></uni-icons>
 
-         <view class="title-text" :class="[{'text-left': textLeft}, {'text-center': !textLeft}]">{{ title }}</view>
 
-       </view>
 
-     </view>
 
-   </view>
 
- </template>
 
- <script setup>
 
- import { ref } from 'vue'
 
- import { onLoad } from '@dcloudio/uni-app'
 
- defineProps({
 
-   title: {
 
-     type: String,
 
-     default: '门墩儿'
 
-   },
 
-   showLogo: {
 
-     type: Boolean,
 
-     default: false
 
-   },
 
-   // 是否需要渐变背景
 
-   noBgColor: {
 
-     type: Boolean,
 
-     default: false
 
-   },
 
-   // 标题所在位置
 
-   textLeft: {
 
- 	  type: Boolean,
 
- 	  default: true
 
-   }
 
- })
 
- const defaultLogoHeight = 33
 
- const navbarHeight = ref(0)
 
- const statusBarHeight = ref(0)
 
- const height = ref(0)
 
- const pages = ref([])
 
- onLoad(async () => {
 
-   pages.value = getCurrentPages() // 获取当前页面栈的实例数组
 
-   try {
 
-     const systemInfo = uni.getSystemInfoSync()
 
-     statusBarHeight.value = systemInfo.statusBarHeight
 
-     const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
 
-     // 计算导航栏高度
 
-     navbarHeight.value = menuButtonInfo.height + 2 * (menuButtonInfo.top - statusBarHeight.value) + statusBarHeight.value
 
-     // 确保导航栏高度不小于 logo 高度 + 10
 
-     if (navbarHeight.value < defaultLogoHeight + 10) {
 
-       navbarHeight.value = defaultLogoHeight + 10
 
-     }
 
-     height.value = navbarHeight.value < defaultLogoHeight ? (defaultLogoHeight + 10) : navbarHeight.value + 10
 
- 	  await new Promise((resolve, reject) => {
 
- 	    uni.setStorage({
 
- 	      key: 'navbarHeight',
 
- 	      data: height.value,
 
- 	      success: resolve,
 
- 	      fail: reject
 
- 	    })
 
- 	  })
 
-   } catch (error) {
 
-     console.error('获取系统信息或菜单按钮信息时出错:', error)
 
-   }
 
- })
 
- // 返回上一页或首页
 
- const goBack = () => {
 
-   if (pages.value.length > 1) {
 
-     uni.navigateBack({
 
-       delta: 1,
 
-       fail: () => {
 
-         console.error('返回上一页失败,尝试跳转到首页')
 
-         uni.reLaunch({
 
-           url: '/pages/index/position',
 
-           fail: (err) => {
 
-             console.error('跳转到首页也失败:', err)
 
-             uni.showToast({
 
-               title: '导航失败,请稍后重试',
 
-               icon: 'none'
 
-             })
 
-           }
 
-         })
 
-       }
 
-     })
 
-   } else {
 
-     uni.reLaunch({
 
-       url: '/pages/index/position',
 
-       fail: (err) => {
 
-         console.error('重新加载首页失败:', err)
 
-         uni.showToast({
 
-           title: '重新加载首页失败',
 
-           icon: 'none'
 
-         })
 
-       }
 
-     })
 
-   }
 
- }
 
- </script>
 
- <style scoped lang="scss">
 
- .gradientBgc {
 
-   background: linear-gradient(180deg, #9bfece, #BCFEDE);
 
- }
 
- .navbar {
 
-   position: fixed;
 
-   top: 0;
 
-   left: 0;
 
-   width: 100%;
 
-   z-index: 999;
 
-   &-box {
 
-     position: relative;
 
-     width: 100%;
 
-     &-logo {
 
-       position: absolute;
 
-       left: 10px;
 
-       width: 156.85rpx;
 
-     }
 
-   }
 
- }
 
- .nav-box-title {
 
-   position: relative;
 
-   width: 100%;
 
-   display: flex;
 
-   align-items: center;
 
-   .title-text {
 
-     position: absolute;
 
-     width: 158px;
 
-     height: 51px;
 
-     line-height: 51px;
 
-     color: #0E100F;
 
-     font-style: normal;
 
-     text-transform: none;
 
-   }
 
- }
 
- .text-left {
 
- 	left: 15px;
 
- 	font-family: MiSans-Semibold;
 
- 	font-weight: 600;
 
- 	font-size: 38rpx;
 
- }
 
- .text-center {
 
- 	left: 50%;
 
- 	transform: translateX(-50%);
 
- 	font-family: MiSans-Medium;
 
- 	font-size: 33rpx;
 
- }
 
- </style>
 
 
  |