|
|
|
<template>
|
|
|
|
<view class="productSort">
|
|
|
|
<skeleton v-if="showSkeleton" ref="skeleton" loading="chiaroscuro" selector="skeleton" bgcolor="#FFF"></skeleton>
|
|
|
|
<!-- 顶部主页 -->
|
|
|
|
<view class="head_box" :style="[{height:CustomBar + 'px'}]">
|
|
|
|
<cu-custom :isBack="true">
|
|
|
|
<block slot="backText">
|
|
|
|
<text class="nav-title shopro-selector-rect">首页</text>
|
|
|
|
</block>
|
|
|
|
</cu-custom>
|
|
|
|
</view>
|
|
|
|
<!-- tab选项卡 -->
|
|
|
|
<TabNav :tabList="tabList" @tabItemClick="tabItemClick"></TabNav>
|
|
|
|
<!-- 活动板块 -->
|
|
|
|
<ActivateList :list="activateList" @itemClick="itemClick" v-if="tabActive == 0">
|
|
|
|
</ActivateList>
|
|
|
|
<!-- 赛事板块 -->
|
|
|
|
<ActivateList :list="activateList" @itemClick="itemClick" :showDesc="true" :showAuth="false" v-if="tabActive == 1">
|
|
|
|
</ActivateList>
|
|
|
|
<!-- 专家列表 -->
|
|
|
|
<ExpertList :list="expertList" v-if="tabActive == 2" ref="uReadMore"></ExpertList>
|
|
|
|
<u-loadmore :status="status" :marginTop="30" />
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import {
|
|
|
|
getIndexData,
|
|
|
|
getActivityList,
|
|
|
|
getListExperts
|
|
|
|
} from "@/api/home"
|
|
|
|
import {
|
|
|
|
trim
|
|
|
|
} from "@/utils"
|
|
|
|
import {
|
|
|
|
mapGetters
|
|
|
|
} from 'vuex'
|
|
|
|
|
|
|
|
import skeleton from '@/components/quick-skeleton/quick-skeleton'
|
|
|
|
import tabNav from './components/tabNav.vue'
|
|
|
|
import ActivateList from './components/activateList.vue'
|
|
|
|
import ExpertList from './components/expertList.vue'
|
|
|
|
export default {
|
|
|
|
components: {
|
|
|
|
skeleton,
|
|
|
|
tabNav,
|
|
|
|
ActivateList,
|
|
|
|
ExpertList
|
|
|
|
},
|
|
|
|
computed: mapGetters(['userInfo']),
|
|
|
|
props: {},
|
|
|
|
data: function() {
|
|
|
|
return {
|
|
|
|
CustomBar: this.CustomBar,
|
|
|
|
StatusBar: this.StatusBar,
|
|
|
|
showSkeleton: false,
|
|
|
|
tabActive: 0,
|
|
|
|
tabList: [{
|
|
|
|
name: '活动'
|
|
|
|
}, {
|
|
|
|
name: '比赛'
|
|
|
|
}, {
|
|
|
|
name: '专家'
|
|
|
|
}],
|
|
|
|
activateList: [],
|
|
|
|
matchList: [],
|
|
|
|
expertList: [1, 2, 3],
|
|
|
|
status: 'nomore',
|
|
|
|
page: 0,
|
|
|
|
size: 10
|
|
|
|
};
|
|
|
|
},
|
|
|
|
onShareAppMessage() {
|
|
|
|
return {
|
|
|
|
title: '湖北省艺术设计协会',
|
|
|
|
path: '/pages/home/index',
|
|
|
|
success(res) {
|
|
|
|
uni.showToast({
|
|
|
|
title: '分享成功',
|
|
|
|
})
|
|
|
|
},
|
|
|
|
fail(res) {
|
|
|
|
uni.showToast({
|
|
|
|
title: '分享失败',
|
|
|
|
icon: 'none',
|
|
|
|
})
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
computed: {},
|
|
|
|
onReady: function() {
|
|
|
|
const that = this;
|
|
|
|
},
|
|
|
|
mounted: function() {
|
|
|
|
this.getIndexData()
|
|
|
|
},
|
|
|
|
onReachBottom() {
|
|
|
|
if (this.isLoad) {
|
|
|
|
this.page = this.page + 1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onPullDownRefresh() {
|
|
|
|
this.getIndexData()
|
|
|
|
// wx.showNavigationBarLoading();
|
|
|
|
},
|
|
|
|
onPageScroll(e) {
|
|
|
|
if (e.scrollTop > 60) {
|
|
|
|
this.isFixed = true;
|
|
|
|
} else {
|
|
|
|
this.isFixed = false;
|
|
|
|
};
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
getIndexData() {
|
|
|
|
uni.showLoading({
|
|
|
|
title: '正在加载...'
|
|
|
|
})
|
|
|
|
if (this.tabActive == 0 || this.tabActive == 1) {
|
|
|
|
getActivityList({
|
|
|
|
page: this.page,
|
|
|
|
size: this.size,
|
|
|
|
}).then(res => {
|
|
|
|
this.activateList = res.data.content
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
getListExperts({
|
|
|
|
page: this.page,
|
|
|
|
size: this.size,
|
|
|
|
}).then(res => {
|
|
|
|
this.expertList = res.data.content
|
|
|
|
this.$nextTick(() => {
|
|
|
|
this.$refs.uReadMore.$refs.uReadMore.forEach((item) => item.init())
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
uni.hideLoading()
|
|
|
|
uni.stopPullDownRefresh()
|
|
|
|
},
|
|
|
|
tabItemClick(val) {
|
|
|
|
console.log(val)
|
|
|
|
this.tabActive = val
|
|
|
|
this.getIndexData()
|
|
|
|
// console.log(val)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
<style lang="less">
|
|
|
|
.productSort {
|
|
|
|
position: relative;
|
|
|
|
}
|
|
|
|
|
|
|
|
.nav-title {
|
|
|
|
font-size: 38rpx;
|
|
|
|
font-weight: 500;
|
|
|
|
color: #06050A;
|
|
|
|
margin-left: 20rpx;
|
|
|
|
line-height: 40px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.cuIcon-back {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
</style>
|