|
|
@ -2,11 +2,11 @@ |
|
|
|
<view class="page__view"> |
|
|
|
|
|
|
|
<!-- 导航栏 --> |
|
|
|
<navbar :title="title" leftClick @leftClick="$utils.navigateBack" bgColor="#4883F9" color="#FFFFFF" /> |
|
|
|
<navbar :title="details.title" leftClick @leftClick="$utils.navigateBack" bgColor="#4883F9" color="#FFFFFF" /> |
|
|
|
|
|
|
|
<!-- 轮播图 --> |
|
|
|
<view class="swiper"> |
|
|
|
<uv-swiper :list="bannerList" keyName="image" :autoplay="bannerList.length" :indicator="bannerList.length" indicatorMode="dot" indicatorActiveColor="#4883F9" indicatorInactiveColor="#FFFFFF" height="424rpx"></uv-swiper> |
|
|
|
<uv-swiper :list="bannerList" keyName="image" :autoplay="bannerList.length > 1" :indicator="bannerList.length > 1" indicatorMode="dot" indicatorActiveColor="#4883F9" indicatorInactiveColor="#FFFFFF" height="424rpx"></uv-swiper> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 发表全流程辅导 --> |
|
|
@ -14,11 +14,7 @@ |
|
|
|
<view class="section-header">发表全流程辅导</view> |
|
|
|
<view class="section-content paragraph process"> |
|
|
|
<view class="paragraph"> |
|
|
|
<view class="flex difficulty"> |
|
|
|
<view>难度</view> |
|
|
|
<uv-rate :value="process.difficulty" size="28rpx" activeColor="#4883F9" :allowHalf="true" :minCount="0.5" readonly></uv-rate> |
|
|
|
</view> |
|
|
|
<view>{{ process.content }}</view> |
|
|
|
<uv-parse :content="details.process"></uv-parse> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -31,9 +27,9 @@ |
|
|
|
</view> |
|
|
|
<view class="section-content direction"> |
|
|
|
<view class="table"> |
|
|
|
<view class="table-row" v-for="row in direction" :key="row.id"> |
|
|
|
<view class="table-row" v-for="row in details.educationTargetList" :key="row.id"> |
|
|
|
<view class="table-cell">{{ row.title }}</view> |
|
|
|
<view class="table-cell">{{ row.desc }}</view> |
|
|
|
<view class="table-cell">{{ row.description }}</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -46,18 +42,18 @@ |
|
|
|
<view>师资介绍</view> |
|
|
|
</view> |
|
|
|
<view class="section-content teachers"> |
|
|
|
<view class="card" v-for="item in teachers" :key="item.id"> |
|
|
|
<view class="card" v-for="item in details.educationTeacherList" :key="item.id"> |
|
|
|
<view class="info"> |
|
|
|
<view class="title"> |
|
|
|
<view class="name">{{ item.name }}</view> |
|
|
|
<view class="name">{{ item.title }}</view> |
|
|
|
<view class="label"> |
|
|
|
<view class="label-text">{{ item.label }}</view> |
|
|
|
<view class="label-text">{{ item.career }}</view> |
|
|
|
<view class="label-line"></view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="tag"> |
|
|
|
<image class="tag-icon" src="@/static/image/icon-degree.png" mode="widthFix"></image> |
|
|
|
<vie>{{ item.degree }}</vie> |
|
|
|
<vie>{{ item.qualification }}</vie> |
|
|
|
</view> |
|
|
|
<view class="desc"> |
|
|
|
<view>专业经历:</view> |
|
|
@ -79,12 +75,9 @@ |
|
|
|
</view> |
|
|
|
<view class="section-content"> |
|
|
|
<view class="table"> |
|
|
|
<view class="table-row" v-for="row in course" :key="row.id"> |
|
|
|
<view class="table-cell"> |
|
|
|
<view>{{ row.title }}</view> |
|
|
|
<view>{{ `(共${row.length}课时)` }}</view> |
|
|
|
</view> |
|
|
|
<view class="table-cell">{{ row.desc }}</view> |
|
|
|
<view class="table-row" v-for="row in details.educationCourseList" :key="row.id"> |
|
|
|
<view class="table-cell">{{ row.title }}</view> |
|
|
|
<view class="table-cell">{{ row.description }}</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -98,7 +91,7 @@ |
|
|
|
</view> |
|
|
|
<view class="section-content target-audience"> |
|
|
|
<view class="paragraph"> |
|
|
|
{{ targetAudience }} |
|
|
|
<uv-parse :content="details.suit"></uv-parse> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -110,19 +103,19 @@ |
|
|
|
<view>期刊推荐</view> |
|
|
|
</view> |
|
|
|
<view class="section-content journal"> |
|
|
|
<view class="box" v-for="item in journal" :key="item.id"> |
|
|
|
<view class="box" v-for="item in details.educationPeriodicalList" :key="item.id"> |
|
|
|
<view class="card"> |
|
|
|
<view class="top"> |
|
|
|
<view class="pic"> |
|
|
|
<image class="img" :src="item.image" mode="aspectFill"></image> |
|
|
|
</view> |
|
|
|
<view class="info"> |
|
|
|
<view class="name">{{ item.name }}</view> |
|
|
|
<view class="desc">{{ item.desc }}</view> |
|
|
|
<view class="name">{{ item.title }}</view> |
|
|
|
<view class="desc">{{ item.shortTitle }}</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="main"> |
|
|
|
{{ item.intro }} |
|
|
|
{{ item.description }} |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -136,7 +129,7 @@ |
|
|
|
<view>附加材料</view> |
|
|
|
</view> |
|
|
|
<view class="section-content attachment"> |
|
|
|
<view class="flex file" v-for="item in attachment" :key="item.id"> |
|
|
|
<view class="flex file" v-for="item in details.educationDocumentList" :key="item.id"> |
|
|
|
<view class="file-info"> |
|
|
|
<template v-if="item.type == 'pdf'"> |
|
|
|
<image class="file-icon" src="@/static/image/icon-pdf.png" mode="widthFix"></image> |
|
|
@ -145,11 +138,11 @@ |
|
|
|
<image class="file-icon" src="@/static/image/icon-word.png" mode="widthFix"></image> |
|
|
|
</template> |
|
|
|
<view class="file-detail"> |
|
|
|
<view class="title">{{ item.name }}</view> |
|
|
|
<view class="desc">{{ `${item.type} ${item.size}MB` }}</view> |
|
|
|
<view class="title">{{ item.title }}</view> |
|
|
|
<view class="desc">{{ `${getFileType(item.document)} ${item.size || '-'}MB` }}</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<button class="btn" @click="downloadFile(item.url)">下载</button> |
|
|
|
<button class="btn" @click="downloadFile(item.document)">下载</button> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -160,31 +153,34 @@ |
|
|
|
export default { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
title: '', |
|
|
|
bannerList: [], |
|
|
|
process: {}, |
|
|
|
direction: [], |
|
|
|
teachers: [], |
|
|
|
course: [], |
|
|
|
targetAudience: '', |
|
|
|
journal: [], |
|
|
|
attachment: [], |
|
|
|
details: {}, |
|
|
|
} |
|
|
|
}, |
|
|
|
onLoad({ thesisId }) { |
|
|
|
this.getData(thesisId) |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
bannerList() { |
|
|
|
const { image } = this.details || {} |
|
|
|
return (image || '').split(',').map(url => ({ image: url })) |
|
|
|
} |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
async getData(thesisId) { |
|
|
|
|
|
|
|
try { |
|
|
|
// todo |
|
|
|
await this.$fetch('queryThesisById', { thesisId }) |
|
|
|
this.details = await this.$fetch('queryThesisById', { thesisId }) |
|
|
|
} catch (err) { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
getFileType(fileName) { |
|
|
|
const pdfReg = /(.pdf)$/g |
|
|
|
// const officeReg = /(doc|docx|ppt|pptx|xls|xlsx)$/g |
|
|
|
|
|
|
|
return pdfReg.test(fileName) ? 'pdf' : '' |
|
|
|
}, |
|
|
|
downloadFile(url) { |
|
|
|
console.log('downloadFile', url) |
|
|
|
uni.downloadFile({ |
|
|
@ -219,6 +215,8 @@ |
|
|
|
|
|
|
|
.swiper { |
|
|
|
margin: 20rpx 18rpx 32rpx 18rpx; |
|
|
|
border-radius: 25rpx; |
|
|
|
overflow: hidden; |
|
|
|
|
|
|
|
/deep/ .uv-swiper-indicator__wrapper__dot { |
|
|
|
width: 15rpx; |
|
|
@ -389,7 +387,7 @@ |
|
|
|
} |
|
|
|
|
|
|
|
.pic { |
|
|
|
padding: 48rpx 9rpx 48rpx 0; |
|
|
|
margin: 48rpx 9rpx 48rpx 0; |
|
|
|
width: 253rpx; |
|
|
|
height: 345rpx; |
|
|
|
border-radius: 127rpx; |
|
|
@ -409,7 +407,7 @@ |
|
|
|
} |
|
|
|
|
|
|
|
.pic { |
|
|
|
padding: 48rpx 0 48rpx 9rpx; |
|
|
|
margin: 48rpx 0 48rpx 9rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -449,6 +447,25 @@ |
|
|
|
.info { |
|
|
|
height: 181rpx; |
|
|
|
padding: 0 14rpx 0 266rpx; |
|
|
|
|
|
|
|
.name { |
|
|
|
padding-left: 6rpx; |
|
|
|
font-size: 32rpx; |
|
|
|
font-weight: 700; |
|
|
|
color: #000000; |
|
|
|
} |
|
|
|
|
|
|
|
.desc { |
|
|
|
margin-top: 24rpx; |
|
|
|
font-size: 28rpx; |
|
|
|
font-weight: 700; |
|
|
|
color: #707070; |
|
|
|
overflow: hidden; |
|
|
|
text-overflow: ellipsis; |
|
|
|
display:-webkit-box; //作为弹性伸缩盒子模型显示。 |
|
|
|
-webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列 |
|
|
|
-webkit-line-clamp:3; //显示的行 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|