| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import { defineComponent, ref } from 'vue'
- import styles from './index.module.less'
- import IconMall from '../../images/icon-mall.png'
- import IconSearch from '../../images/icon-search.png'
- import IconCart from '../../images/icon-cart.png'
- import IconMore from '../../images/icon-more.png'
- import IconLocation from '../../images/icon-location.png'
- import IconOrder from '../../images/icon-order.png'
- import { Popover } from 'vant'
- import { postMessage } from '@/helpers/native-message'
- export default defineComponent({
- name: 'TheHomeHeader',
- emits: ['cart', 'more', 'search'],
- setup(props, { emit }) {
- const navBarHeight = ref(sessionStorage.getItem('navHeight'))
- const init = () => {
- // 设置是否显示导航栏 0 显示 1 不显示
- postMessage({ api: 'setBarStatus', content: { status: 0 } })
- if (navBarHeight.value) return
- postMessage({ api: 'getNavHeight' }, res => {
- const { content } = res as any
- const dpi = content.dpi || 2
- if (content.navHeight) {
- const navHeight = content.navHeight / dpi + ''
- sessionStorage.setItem('navHeight', navHeight)
- navBarHeight.value = navHeight
- }
- })
- }
- init()
- const popoverSlots = {
- reference: () => (
- <img class={styles.more} src={IconMore} onClick={() => emit('more')} />
- )
- }
- const popoverShow = ref(false)
- const actions = [
- { text: '我的订单', icon: IconLocation, url: '/goodsOrder' },
- { text: '我的地址', icon: IconOrder, url: '/' }
- ]
- return () => (
- <div class={styles.theHomeHeader}>
- <div style={{ height: navBarHeight.value + 'px' }}></div>
- <div class={styles.content}>
- <img class={styles.mall} src={IconMall} />
- <div class={styles.searchBox} onClick={() => emit('search')}>
- <img class={styles.iconSearch} src={IconSearch} />
- <span>搜索你喜欢的内容</span>
- </div>
- <img
- class={styles.cart}
- src={IconCart}
- onClick={() => emit('cart')}
- />
- <Popover
- placement="bottom-end"
- class={styles.popover}
- v-model:show={popoverShow.value}
- v-slots={popoverSlots}
- actions={actions}
- onSelect={action => emit('more', action)}
- ></Popover>
- </div>
- </div>
- )
- }
- })
|