|
|
|
@ -1,59 +1,79 @@ |
|
|
|
<template> |
|
|
|
<view class="page__view"> |
|
|
|
<view class="bg"> |
|
|
|
<image class="img" :src="configList.config_image_page_header" mode="scaleToFill"></image> |
|
|
|
<image class="img" src="@/static/image/bg-index.png" mode="widthFix"></image> |
|
|
|
<image class="bg-logo" src="@/static/image/bg-icon.png" mode="widthFix"></image> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 搜索栏 --> |
|
|
|
<view class="section search"> |
|
|
|
<uv-search v-model="keyword" placeholder="输入关键词搜索" bgColor="#FBFBFB" @custom="search" @search="search"> |
|
|
|
<template #prefix> |
|
|
|
<image class="search-icon" src="@/static/image/icon-search.png" mode="widthFix"></image> |
|
|
|
</template> |
|
|
|
</uv-search> |
|
|
|
</view> |
|
|
|
<view class="main"> |
|
|
|
|
|
|
|
<!-- 轮播图 --> |
|
|
|
<view class="section swiper"> |
|
|
|
<uv-swiper :list="bannerList" keyName="image" indicator indicatorMode="dot" indicatorActiveColor="#4883F9" indicatorInactiveColor="#FFFFFF" :height="swiperHeight"></uv-swiper> |
|
|
|
</view> |
|
|
|
<view class="flex section header"> |
|
|
|
<view> |
|
|
|
<view class="title">{{ configList.page_index_title }}</view> |
|
|
|
<view class="desc">{{ configList.page_index_desc }}</view> |
|
|
|
</view> |
|
|
|
<view class="flex icon"> |
|
|
|
<image class="img" :src="configList.config_logo" mode="widthFix"></image> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="section card" v-for="group in list" :key="group.id"> |
|
|
|
<view class="card-header"> |
|
|
|
<view class="card-header-title">{{ group.title }}</view> |
|
|
|
<!-- <view class="card-header-tag">JGYT</view> --> |
|
|
|
<!-- 搜索栏 --> |
|
|
|
<view class="section search"> |
|
|
|
<uv-search v-model="keyword" :showAction="false" placeholder="输入关键词搜索" placeholderColor="#B2B2B2" bgColor="#FFFFFF" @custom="search" @search="search"> |
|
|
|
<template #prefix> |
|
|
|
<view class="flex search-icon"> |
|
|
|
<image class="img" src="@/static/image/icon-search.png" mode="widthFix"></image> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
</uv-search> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="card-content"> |
|
|
|
<view class="card-item card-row" v-for="item in group.children" :key="item.id"> |
|
|
|
<view class="flex info"> |
|
|
|
<image class="info-icon" :src="item.image" mode="widthFix"></image> |
|
|
|
<view class="info-label">{{ item.title }}</view> |
|
|
|
</view> |
|
|
|
<button class="btn" @click="jumpToCategory(group.id, item.id, item.title, 'queryThesisList')">查看</button> |
|
|
|
</view> |
|
|
|
<!-- 轮播图 --> |
|
|
|
<view class="section swiper"> |
|
|
|
<uv-swiper :list="bannerList" keyName="image" indicator indicatorMode="dot" indicatorActiveColor="#FFFFFF" indicatorInactiveColor="#6851A7" height="240rpx"></uv-swiper> |
|
|
|
</view> |
|
|
|
|
|
|
|
</view> |
|
|
|
<view class="section card" v-for="group in list" :key="group.id"> |
|
|
|
<view class="card-header"> |
|
|
|
<view class="card-header-title">{{ group.title }}</view> |
|
|
|
<image class="card-header-icon" src="@/static/image/icon-triangle-down.png" mode="widthFix"></image> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="card-content"> |
|
|
|
<view class="card-item card-row" v-for="item in group.children" :key="item.id"> |
|
|
|
<view class="flex info"> |
|
|
|
<image class="info-icon" :src="item.image" mode="widthFix"></image> |
|
|
|
<view class="info-label">{{ item.title }}</view> |
|
|
|
</view> |
|
|
|
<button class="flex btn" @click="jumpToCategory(group.id, item.id, item.title, 'queryThesisList')"> |
|
|
|
<view>查看</view> |
|
|
|
<image class="btn-icon" src="@/static/image/icon-arrow-right.png" mode="widthFix"></image> |
|
|
|
</button> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="section card" v-for="group in list2" :key="group.id"> |
|
|
|
<view class="card-header"> |
|
|
|
<view class="card-header-title">{{ group.title }}</view> |
|
|
|
<!-- <view class="card-header-tag">JGYT</view> --> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="card-content"> |
|
|
|
<view class="card-box"> |
|
|
|
<view class="card-item info" v-for="item in group.children" :key="item.id" @click="jumpToCategory(group.id, item.id, item.title, 'queryThesisTwoList')"> |
|
|
|
<image class="info-icon" :src="item.image" mode="widthFix"></image> |
|
|
|
<view class="info-label">{{ item.title }}</view> |
|
|
|
<view class="section card" v-for="group in list2" :key="group.id"> |
|
|
|
<view class="card-header"> |
|
|
|
<view class="card-header-title">{{ group.title }}</view> |
|
|
|
<image class="card-header-icon" src="@/static/image/icon-triangle-down.png" mode="widthFix"></image> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="card-content"> |
|
|
|
<view class="card-box"> |
|
|
|
<view class="card-item info" v-for="item in group.children" :key="item.id" @click="jumpToCategory(group.id, item.id, item.title, 'queryThesisTwoList')"> |
|
|
|
<image class="info-icon" :src="item.image" mode="widthFix"></image> |
|
|
|
<view class="info-label">{{ item.title }}</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
</view> |
|
|
|
|
|
|
|
</view> |
|
|
|
<tabber select="home" /> |
|
|
|
|
|
|
|
<tabber select="home" /> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
|
@ -70,14 +90,9 @@ |
|
|
|
bannerList: [], |
|
|
|
list: [], |
|
|
|
list2: [], |
|
|
|
swiperHeight: '239rpx', |
|
|
|
} |
|
|
|
}, |
|
|
|
onLoad() { |
|
|
|
|
|
|
|
const windowWidth = uni.getSystemInfoSync().windowWidth |
|
|
|
this.swiperHeight = `${(windowWidth - 18) * 239 / 714}px` |
|
|
|
|
|
|
|
this.fetchBanner() |
|
|
|
this.getData() |
|
|
|
}, |
|
|
|
@ -127,94 +142,152 @@ |
|
|
|
|
|
|
|
<style scoped lang="scss"> |
|
|
|
.page__view { |
|
|
|
padding-bottom: 182rpx; |
|
|
|
/deep/ .tabbar-box { |
|
|
|
height: 0; |
|
|
|
padding: 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.header { |
|
|
|
padding-top: calc(var(--status-bar-height) + 40rpx); |
|
|
|
justify-content: space-between; |
|
|
|
|
|
|
|
.title { |
|
|
|
font-size: 44rpx; |
|
|
|
font-weight: 600; |
|
|
|
color: #6851A7; |
|
|
|
} |
|
|
|
|
|
|
|
.desc { |
|
|
|
font-size: 18rpx; |
|
|
|
font-weight: 500; |
|
|
|
color: #808080; |
|
|
|
} |
|
|
|
|
|
|
|
.icon { |
|
|
|
// margin-top: 16rpx; |
|
|
|
width: 62rpx; |
|
|
|
height: 62rpx; |
|
|
|
border: 2rpx solid #A3A2C5; |
|
|
|
border-radius: 50%; |
|
|
|
overflow: hidden; |
|
|
|
|
|
|
|
.img { |
|
|
|
width: 50rpx; |
|
|
|
height: auto; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.bg { |
|
|
|
width: 100%; |
|
|
|
height: 264rpx; |
|
|
|
width: 100vw; |
|
|
|
height: auto; |
|
|
|
|
|
|
|
.img { |
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
|
height: auto; |
|
|
|
} |
|
|
|
|
|
|
|
&-logo { |
|
|
|
position: absolute; |
|
|
|
top: 0; |
|
|
|
right: 0; |
|
|
|
width: 342rpx; |
|
|
|
height: auto; |
|
|
|
opacity: 0.3; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.main { |
|
|
|
position: absolute; |
|
|
|
top: 0; |
|
|
|
left: 0; |
|
|
|
width: 100vw; |
|
|
|
padding-bottom: 182rpx; |
|
|
|
box-sizing: border-box; |
|
|
|
} |
|
|
|
|
|
|
|
.section { |
|
|
|
margin: 0 18rpx 0 18rpx; |
|
|
|
margin: 0 38rpx 24rpx 38rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.search { |
|
|
|
width: calc(100% - 20rpx * 2); |
|
|
|
width: calc(100% - 38rpx * 2); |
|
|
|
height: 48rpx; |
|
|
|
background-color: #FFFFFF; |
|
|
|
border-radius: 37rpx; |
|
|
|
padding: 13rpx 0 13rpx 18rpx; |
|
|
|
box-sizing: border-box; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
overflow: hidden; |
|
|
|
box-shadow: 2rpx 2rpx 9rpx 0 rgba($color: #C5C5C5, $alpha: 0.75); |
|
|
|
|
|
|
|
/deep/ .uv-search__content { |
|
|
|
padding: 0; |
|
|
|
border: none; |
|
|
|
} |
|
|
|
|
|
|
|
/deep/ .uv-search__action { |
|
|
|
color: $uni-color; |
|
|
|
padding: 10rpx 18rpx; |
|
|
|
} |
|
|
|
/deep/ .uv-search__content__input { |
|
|
|
margin-left: 18rpx; |
|
|
|
} |
|
|
|
|
|
|
|
&-icon { |
|
|
|
width: 26rpx; |
|
|
|
height: auto; |
|
|
|
padding: 18rpx 10rpx 18rpx 18rpx; |
|
|
|
background: rgba($color: #E8DBF3, $alpha: 0.8); |
|
|
|
|
|
|
|
.img { |
|
|
|
width: 30rpx; |
|
|
|
height: auto; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.swiper { |
|
|
|
margin-top: 29rpx; |
|
|
|
margin-bottom: 26rpx; |
|
|
|
border-radius: 25rpx; |
|
|
|
border-radius: 10rpx; |
|
|
|
overflow: hidden; |
|
|
|
|
|
|
|
/deep/ .uv-swiper-indicator__wrapper__dot { |
|
|
|
width: 15rpx; |
|
|
|
height: 15rpx; |
|
|
|
width: 25rpx; |
|
|
|
height: 5rpx; |
|
|
|
border-radius: 4rpx; |
|
|
|
margin: 0 4rpx; |
|
|
|
} |
|
|
|
|
|
|
|
/deep/ .uv-swiper-indicator__wrapper__dot--active { |
|
|
|
width: 15rpx; |
|
|
|
width: 25rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.card { |
|
|
|
margin-bottom: 35rpx; |
|
|
|
width: calc(100% - 20rpx * 2); |
|
|
|
width: calc(100% - 38rpx * 2); |
|
|
|
box-sizing: border-box; |
|
|
|
padding-bottom: 45rpx; |
|
|
|
background-image: linear-gradient(164deg,#cfecfe 88rpx, #fcfdfe 176rpx); |
|
|
|
border: 3rpx solid #FFFFFF; |
|
|
|
border-radius: 25rpx; |
|
|
|
box-shadow: 0px 3rpx 6rpx 0rpx rgba(0,0,0,0.16); |
|
|
|
background: linear-gradient(to right, rgba($color: #C8C3FD, $alpha: 0.14), rgba($color: #E2DDFF, $alpha: 0.14)); |
|
|
|
border-radius: 10rpx; |
|
|
|
box-shadow: 4rpx 4rpx 6rpx 0rpx rgba(0,0,0,0.15); |
|
|
|
|
|
|
|
&-header { |
|
|
|
position: relative; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
column-gap: 23rpx; |
|
|
|
width: 100%; |
|
|
|
padding: 25rpx 30rpx 27rpx 30rpx; |
|
|
|
box-sizing: border-box; |
|
|
|
padding: 46rpx 0 17rpx 33rpx; |
|
|
|
overflow: hidden; |
|
|
|
|
|
|
|
&-title { |
|
|
|
font-size: 42rpx; |
|
|
|
font-weight: 800; |
|
|
|
color: #000000; |
|
|
|
font-size: 34rpx; |
|
|
|
font-weight: 700; |
|
|
|
color: #4D4D4D; |
|
|
|
} |
|
|
|
|
|
|
|
&-tag { |
|
|
|
position: absolute; |
|
|
|
top: -40rpx; |
|
|
|
right: 12rpx; |
|
|
|
font-size: 156rpx; |
|
|
|
font-weight: 800; |
|
|
|
color: rgba(255,255,255,0.3); |
|
|
|
&-icon { |
|
|
|
width: 32rpx; |
|
|
|
height: auto; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
&-content { |
|
|
|
padding: 0 30rpx; |
|
|
|
padding: 0 32rpx; |
|
|
|
box-sizing: border-box; |
|
|
|
} |
|
|
|
|
|
|
|
@ -223,23 +296,24 @@ |
|
|
|
align-items: center; |
|
|
|
justify-content: flex-start; |
|
|
|
column-gap: 50rpx; |
|
|
|
padding: 26rpx 28rpx; |
|
|
|
padding: 14rpx 28rpx; |
|
|
|
box-sizing: border-box; |
|
|
|
background: #f3f6fd; |
|
|
|
border-radius: 28rpx; |
|
|
|
box-shadow: 0rpx 3rpx 6rpx 0rpx rgba(0,0,0,0.16); |
|
|
|
background: linear-gradient(to right, rgba($color: #E2DDFF, $alpha: 0.26), rgba($color: #C8C3FD, $alpha: 0.26)); |
|
|
|
// background: rgba($color: #E2DDFF, $alpha: 0.26); |
|
|
|
border-radius: 10rpx; |
|
|
|
box-shadow: 4rpx 4rpx 6rpx 0rpx rgba($color: #626266, $alpha: 0.15); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.info { |
|
|
|
|
|
|
|
&-icon { |
|
|
|
width: 80rpx; |
|
|
|
width: 54rpx; |
|
|
|
height: auto; |
|
|
|
} |
|
|
|
|
|
|
|
&-label { |
|
|
|
font-size: 32rpx; |
|
|
|
font-size: 26rpx; |
|
|
|
font-weight: 400; |
|
|
|
color: #000000; |
|
|
|
} |
|
|
|
@ -247,23 +321,29 @@ |
|
|
|
|
|
|
|
&-row { |
|
|
|
justify-content: space-between; |
|
|
|
padding: 15rpx 35rpx; |
|
|
|
padding: 14rpx 30rpx 14rpx 42rpx; |
|
|
|
|
|
|
|
& + & { |
|
|
|
margin-top: 33rpx; |
|
|
|
margin-top: 28rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.info { |
|
|
|
column-gap: 33rpx; |
|
|
|
column-gap: 35rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.btn { |
|
|
|
padding: 7rpx 30rpx; |
|
|
|
font-size: 28rpx; |
|
|
|
column-gap: 12rpx; |
|
|
|
padding: 8rpx 24rpx 8rpx 26rpx; |
|
|
|
font-size: 20rpx; |
|
|
|
font-weight: 400; |
|
|
|
color: #4883F9; |
|
|
|
color: #6851A7; |
|
|
|
background: #FFFFFF; |
|
|
|
border-radius: 27rpx; |
|
|
|
border-radius: 20rpx; |
|
|
|
|
|
|
|
&-icon { |
|
|
|
width: 22rpx; |
|
|
|
height: auto; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|