<template> 
 | 
    <div class="header"> 
 | 
        <div class="header_x" style="height: 44px;"></div> 
 | 
        <div class="header_header" style="height: 44px;"> 
 | 
            <span><slot name="title"></slot></span> 
 | 
            <img @click="previousPage" v-if="isShow && currentPath !== '/logInAgain'" src="@/assets/icon/nav_ic_back@2x.png" alt=""> 
 | 
        </div> 
 | 
    </div> 
 | 
</template> 
 | 
  
 | 
<script setup lang="ts"> 
 | 
    import { defineProps, watch, ref } from 'vue' 
 | 
    import { useRouter, useRoute } from 'vue-router' 
 | 
  
 | 
    const router = useRouter() 
 | 
  
 | 
    const route = useRoute() 
 | 
  
 | 
    let currentPath = ref<string>('') 
 | 
  
 | 
    let isShow = ref<boolean>(false) 
 | 
  
 | 
    const props = defineProps({ 
 | 
        pathList: { 
 | 
            type: Array, 
 | 
            required: false, 
 | 
            default: [] 
 | 
        } 
 | 
    }) 
 | 
  
 | 
    // 返回上一页 
 | 
    const previousPage = () => { 
 | 
        router.go(-1) 
 | 
    } 
 | 
  
 | 
    // 监听路由是否需要显示返回按钮 
 | 
    watch(() => route.path, (path, oldPath) => { 
 | 
        let res = props.pathList.find(item => { 
 | 
            return item === path 
 | 
        }) 
 | 
        currentPath.value = route.path 
 | 
        isShow.value = !res; 
 | 
    }, { immediate: true }) 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
.header { 
 | 
    .header_x { 
 | 
        width: 100%; 
 | 
    } 
 | 
    .header_header { 
 | 
        width: 100%; 
 | 
        position: fixed; 
 | 
        top: 0; 
 | 
        left: 0; 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
        justify-content: center; 
 | 
        background: white; 
 | 
        z-index: 9; 
 | 
        img { 
 | 
            width: 48px; 
 | 
            height: 48px; 
 | 
            position: absolute; 
 | 
            left: 30px; 
 | 
            top: 50%; 
 | 
            transform: translate(0, -50%); 
 | 
        } 
 | 
        span { 
 | 
            font-size: 32px; 
 | 
            font-weight: 500; 
 | 
            color: #222222; 
 | 
        } 
 | 
    } 
 | 
} 
 | 
</style> 
 |