index.tsx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import ColHeader from '@/components/col-header'
  2. import { Divider, Icon, Image, Sticky, Swipe, SwipeItem, Tab, Tabs } from 'vant'
  3. import { defineComponent } from 'vue'
  4. import HotGoods from './components/hot-goods'
  5. import MenuList from './components/menu-list'
  6. import TabList from './components/tab-list'
  7. import styles from './index.module.less'
  8. import { useElementSize } from '@vueuse/core'
  9. import iconShopCart from './images/icon-shop-cart.png'
  10. export default defineComponent({
  11. name: 'shop-mall',
  12. data() {
  13. return {
  14. height: 'auto' as any
  15. }
  16. },
  17. mounted() {
  18. const { height } = useElementSize((this as any).$refs.headers)
  19. this.height = height
  20. },
  21. methods: {
  22. onSearch() {}
  23. },
  24. render() {
  25. return (
  26. <div style={{ overflow: 'hidden' }}>
  27. <div ref="headers">
  28. <ColHeader
  29. border={false}
  30. background="linear-gradient(#59e5d5, 30%, #f6f8f9)"
  31. v-slots={{
  32. right: () => (
  33. <div class={styles['icon-shop-cart']}>
  34. <span class={styles.dot}>12</span>
  35. <Icon name={iconShopCart} size={24} />
  36. </div>
  37. )
  38. }}
  39. />
  40. </div>
  41. <Swipe
  42. class={styles.swipe}
  43. autoplay={3000}
  44. showIndicators={false}
  45. lazyRender
  46. >
  47. <SwipeItem>
  48. <Image
  49. class={styles.swipeItemImg}
  50. src={'https://daya.ks3-cn-beijing.ksyun.com/202204/T3unJeA.png'}
  51. fit="cover"
  52. />
  53. </SwipeItem>
  54. <SwipeItem>
  55. <Image
  56. class={styles.swipeItemImg}
  57. src={'https://daya.ks3-cn-beijing.ksyun.com/202204/T3unJeA.png'}
  58. fit="cover"
  59. />
  60. </SwipeItem>
  61. </Swipe>
  62. <MenuList />
  63. <HotGoods />
  64. <Tabs
  65. shrink
  66. lineWidth={25}
  67. background={'#f6f8f9'}
  68. color="var(--van-primary)"
  69. class={styles.tabs}
  70. sticky
  71. offsetTop={this.height}
  72. lazyRender
  73. >
  74. <Tab title="全部商品">
  75. <TabList />
  76. </Tab>
  77. <Tab title="全部商品">
  78. <TabList />
  79. </Tab>
  80. <Tab title="全部商品">
  81. <TabList />
  82. </Tab>
  83. <Tab title="全部商品">
  84. <TabList />
  85. </Tab>
  86. <Tab title="全部商品">
  87. <TabList />
  88. </Tab>
  89. <Tab title="全部商品">
  90. <TabList />
  91. </Tab>
  92. <Tab title="全部商品">
  93. <TabList />
  94. </Tab>
  95. <Tab title="全部商品">
  96. <TabList />
  97. </Tab>
  98. </Tabs>
  99. </div>
  100. )
  101. }
  102. })