|
|
- <template>
-
- <view>
- <view class="tabs">
- <uv-tabs
- :list="tabs"
- :activeStyle="{
- 'font-family': 'PingFang SC',
- 'font-weight': 500,
- 'font-size': '28rpx',
- 'line-height': 1.5,
- 'color': '#FFFFFF',
- 'background-color': '#191919',
- 'border-radius': '34rpx',
- 'padding': '12rpx 32rpx',
- }"
- :inactiveStyle="{
- 'font-family': 'PingFang SC',
- 'font-weight': 400,
- 'font-size': '28rpx',
- 'line-height': 1.5,
- 'color': '#191919',
- 'background-color': '#E4E7EB',
- 'border-radius': '34rpx',
- 'padding': '12rpx 32rpx',
- }"
- lineWidth="0"
- lineHeight="0"
- :current="current"
- @click="onClickTab"
- ></uv-tabs>
- </view>
- <view v-if="list.length" class="content">
- <view v-for="item in list" :key="item.id">
- <productCard
- :data="item"
- size="small"
- ></productCard>
- </view>
- </view>
- <template v-else>
- <uv-empty mode="list"></uv-empty>
- </template>
- </view>
- </template>
-
- <script>
- import productCard from '@/components/product/productCard.vue'
-
- export default {
- components: {
- productCard,
- },
- props: {
- list: {
- type: Array,
- default() {
- return []
- }
- },
- },
- data() {
- return {
- tabs: [],
- current: 0,
- }
- },
- created() {
- this.fetchRecommend()
- },
- methods: {
- fetchRecommend() {
- // todo: fetch
- this.tabs = [
- { name: '全部' },
- { id: '1962342791093227522', name: '研学活动一', disabled: true, },
- ]
- },
- onClickTab(e) {
- this.current = 0
- const index = e.index
-
- if (index > 0) {
- this.$utils.navigateTo(`/pages_order/product/productDetail?id=${this.tabs[e.index].id}`)
- }
-
- this.$nextTick(() => {
- this.current = 0
- })
-
- setTimeout(() => {
- this.current = 0
- }, 800)
- },
- },
- }
- </script>
-
- <style scoped lang="scss">
- .tabs {
- width: calc(100% + 22px);
- transform: translateX(-11px);
- }
-
- .content {
- margin-top: 24rpx;
- display: grid;
- grid-template-columns: repeat(2, 1fr);
- gap: 16rpx;
- }
- </style>
|