88 lines
1.6 KiB
Plaintext
88 lines
1.6 KiB
Plaintext
<template>
|
|
<view class="header">
|
|
<view class="header-left">
|
|
<text class="crumb" v-for="(item, index) in breadcrumb" :key="item.id">
|
|
{{ item.title }}
|
|
<text v-if="index < breadcrumb.length - 1" class="separator"> / </text>
|
|
</text>
|
|
</view>
|
|
|
|
<view class="header-right">
|
|
<view class="hbtn" @click="$emit('search')"><text>🔍</text></view>
|
|
<view class="hbtn" @click="$emit('refresh')"><text>⟳</text></view>
|
|
<view class="hbtn" @click="$emit('notify')">
|
|
<text>🔔</text>
|
|
<view class="dot" v-if="hasNotification"></view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script setup lang="uts">
|
|
defineProps<{
|
|
breadcrumb: Array<{id: string, title: string}>
|
|
hasNotification: boolean
|
|
}>()
|
|
|
|
defineEmits<{
|
|
(e:'search'): void
|
|
(e:'refresh'): void
|
|
(e:'notify'): void
|
|
}>()
|
|
</script>
|
|
|
|
<style>
|
|
.header{
|
|
height: 56px;
|
|
background:#fff;
|
|
border-bottom: 1px solid #eef2f7;
|
|
display:flex;
|
|
flex-direction:row;
|
|
align-items:center;
|
|
justify-content: space-between;
|
|
padding: 0 16px;
|
|
}
|
|
|
|
.header-left {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
}
|
|
|
|
.crumb {
|
|
color: #374151;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.separator {
|
|
color: #d1d5db;
|
|
margin: 0 8px;
|
|
}
|
|
|
|
.header-right{
|
|
display:flex;
|
|
flex-direction:row;
|
|
align-items:center;
|
|
gap: 10px;
|
|
}
|
|
.hbtn{
|
|
width: 34px;
|
|
height: 34px;
|
|
border-radius: 8px;
|
|
display:flex;
|
|
align-items:center;
|
|
justify-content:center;
|
|
background:#f6f7fb;
|
|
position: relative;
|
|
}
|
|
.dot{
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
background:#ff4d4f;
|
|
position:absolute;
|
|
top: 6px;
|
|
right: 6px;
|
|
}
|
|
</style>
|