yitisheng-mini-app/pages/zyb/school/detail.vue

585 lines
18 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<script>
import ApiConstant from "@/common/ApiConstant";
import Request from '@/common/request'
import StaticConstant from "@/common/StaticConstant";
import ImagesConstant from "@/common/ImagesConstant";
// 路径自行修改
let request = new Request()
export default {
computed: {
ImagesConstant() {
return ImagesConstant
}
},
data() {
return {
culturalScore: '',//我的文化分
professionalScore: '',//我的专业分
category: '文科',//
schoolInfo: {},//学校信息
schoolCode: '',//学校编码
collectStatus: false,
collectIndex: 0,
tabs: [{id: 'jbjs', name: '基本介绍'}, {id: 'zlxx', name: '招录信息'}, {id: 'kszy', name: '开设专业'}],
tab: 'zlxx',
scrollLeft: 0,
chartData: {},
opts: {
color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4", "#ea7ccc"],
padding: [5, 5, 5, 5],
enableScroll: false,
extra: {
pie: {
activeOpacity: 0.5,
activeRadius: 10,
offsetAngle: 0,
labelWidth: 15,
border: true,
borderWidth: 3,
borderColor: "#FFFFFF"
}
}
},
fsxIndex: 0,//分数线选择
tdxIndex: 0,//投档线选择
majorList: [],//
professionalCategoryIndex: 0,//批次专业选择
professionalCategoryList: StaticConstant.professionalCategoryList,//
historyScoreControlLineList: [],//批次线数据
}
},
onShow() {
},
onLoad(e) {
if (e.schoolCode) {
this.schoolCode = e.schoolCode;
}
// this.schoolCode = '2090'
this.getSchoolDetailInfo()
let scoreInfo = uni.getStorageSync('scoreInfo')
if (scoreInfo) {
this.culturalScore = scoreInfo.culturalScore
this.professionalScore = scoreInfo.professionalScore
this.category = scoreInfo.cognitioPolyclinic
}
},
methods: {
goto(e){
uni.navigateTo({
url: e
})
},
swichMenu(id) {
this.currentTab = id
console.log(id)
// 滑动swiper后每个选项距离其父元素最左侧的距离
this.scrollLeft = 0;
for (let i = 0; i < id; i++) {
this.scrollLeft += 60
console.log(this.scrollLeft, 60, id)
}
},
/*获取专业详情*/
getSchoolDetailInfo() {
let that = this
request.get(ApiConstant.School.schoolInfo, {
schoolCode: this.schoolCode,
}).then(r => {
console.log(r)
if (r.success) {
that.schoolInfo = r.result
//判断是否收藏了
that.checkCollect()
//加载 男女比例
this.loadManData()
//获取院校开设专业
this.getSchoolMajorList()
//加载 批次线
this.getHistoryList()
}
}).catch(err => {
}).finally(() => {
});
},
//收藏院校
collect() {
let collectSchoolList = uni.getStorageSync('collectSchoolList')
console.log(collectSchoolList)
if (collectSchoolList === undefined || collectSchoolList === null || collectSchoolList === '') {
collectSchoolList = []
}
if (this.collectStatus === true) {
//取消收藏
//获取 收藏的学校列表中当前的index
this.checkCollect()
this.collectStatus = false
//移除
collectSchoolList.splice(this.collectIndex, 1)
} else {
//收藏
this.collectStatus = true
collectSchoolList.push(this.schoolInfo)
}
uni.setStorageSync('collectSchoolList', collectSchoolList)
},
//判断收藏按钮
checkCollect() {
let collectSchoolList = uni.getStorageSync('collectSchoolList')
if (collectSchoolList === undefined || collectSchoolList === null || collectSchoolList === '') {
collectSchoolList = []
}
//遍历 缓存中 收藏的学校列表
for (let i = 0; i < collectSchoolList.length; i++) {
if (collectSchoolList[i].id === this.schoolInfo.id) {
// 有收藏这个
this.collectStatus = true
this.collectIndex = i
}
}
},
//加载男女生饼图
loadManData() {
//模拟从服务器获取数据时的延时
setTimeout(() => {
//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
let res = {
series: [
{
data: [{"name": "男生", "value": this.schoolInfo.maleRatio}, {
"name": "女生", "value": this.schoolInfo.femaleRatio
}]
}
]
};
this.chartData = JSON.parse(JSON.stringify(res));
}, 500);
},
//获取历年批次线
getHistoryList() {
request.get(ApiConstant.Score.historyScoreControlLineList, {
professionalCategory: this.professionalCategoryList[this.professionalCategoryIndex].value,
category: this.category,
pageSize: 999
}).then(res => {
if (res.success) {
this.historyScoreControlLineList = res.result.records
}
}).catch(err => {
}).finally(() => {
});
},
getSchoolMajorList(){
request.get(ApiConstant.Major.schoolMajorList, {
cognitioPolyclinic: this.category,
schoolCode: this.schoolCode
}).then(res => {
if (res.success) {
this.majorList = res.result
}
}).catch(err => {
}).finally(() => {
});
},
//选择批次线下拉
bindPickerPcxChange(e) {
this.professionalCategoryIndex = e.detail.value
this.getHistoryList()
},
//选择投档线下拉
bindPickerTdxChange(e) {
this.tdxIndex = e.detail.value
},
//选择录取分数线下拉
bindPicker_lqMajorChange(e) {
this.fsxIndex = e.detail.value
},
}
}
</script>
<template>
<!--头部-->
<view class="head">
<view class="schoolHead">
<view class="uni-flex flex">
<view class="flex-item-17 padding30">
<image :src="schoolInfo.schoolIcon" style="width: 128rpx;height: 128rpx" mode="aspectFill"/>
</view>
<view class="flex-item-6" style="margin: 30rpx 0">
<view class="flex" style="padding-bottom: 20rpx;height: 30rpx;line-height: 30rpx">
<text class="schoolName">{{ schoolInfo.schoolName }}</text>
</view>
<view class="flex" style="padding-bottom: 20rpx;height: 30rpx;line-height: 30rpx">
<text class="schoolNature" v-if="schoolInfo.schoolNature">{{ schoolInfo.schoolNature }}</text>
<text class="institutionType" v-if="schoolInfo.institutionType">{{ schoolInfo.institutionType }}类</text>
</view>
<view style="display: flex;padding: 0;line-height: 30rpx">
<view class="tags">
<view class="tag" v-for="(tag,i) in schoolInfo.tagsList" :key="i">
<text>{{ tag }}</text>
</view>
</view>
</view>
<view class="flex">
<text class="address" v-if="schoolInfo.street">{{ schoolInfo.street }}</text>
</view>
</view>
<view class="flex-item-15">
<view>
<text :class="collectStatus?'collectBtn collectBtn-active':'collectBtn'" plain="true" @click="collect">
收藏
</text>
</view>
</view>
</view>
<my-menu :tab="tab" :tab-list="tabs"/>
</view>
</view>
<!--学校概括-->
<view class="m-card padding20 margin20" v-if="tab === 'jbjs'">
<uni-section title="学校介绍" type="line">
<view class="padding20">
<view class="content">
<mote-lines-divide :dt="schoolInfo.baseInfo" :line="3" expandtext="展开" foldhint="收起"/>
</view>
</view>
</uni-section>
<uni-section title="国家特色专业" type="line">
<view class="padding20">
<view class="other-item">{{ schoolInfo.gjtszy }}</view>
</view>
</uni-section>
<uni-section title="省特色专业" type="line">
<view class="padding20">
<view class="other-item">{{ schoolInfo.stszy }}</view>
</view>
</uni-section>
<uni-section title="男女比例" type="line">
<view class="charts-box padding20">
<qiun-data-charts type="pie" :opts="opts" :chartData="chartData"/>
</view>
</uni-section>
<uni-section title="其他信息" type="line">
<view class="padding20">
<view class="other-item" v-if="schoolInfo.schoolWebsiteAddress">
<text class="b">官方网址:</text>
<uni-link v-if="schoolInfo.schoolWebsiteAddress" :href="schoolInfo.schoolWebsiteAddress"
:text="schoolInfo.schoolWebsiteAddress"></uni-link>
</view>
<view class="other-item" v-if="schoolInfo.schoolPhone">
<text class="b">招生电话:</text>
{{ schoolInfo.schoolPhone }}
</view>
<view class="other-item" v-if="schoolInfo.street">
<text class="b">校区地址:</text>
{{ schoolInfo.street }}
</view>
</view>
</uni-section>
</view>
<!--招录信息-->
<view v-if="tab ==='zlxx'">
<!--我的成绩-->
<view class="m-card padding20 margin20">
<view class="flex padding20">
<view class="flex-item-5">
我的成绩:文化分:
<text class="red">{{ culturalScore || '-' }}</text>
</view>
<view class="flex-item-5">
专业分:
<text class="orange">{{ professionalScore || '-' }}</text>
</view>
</view>
</view>
<!--招生章程-->
<view class="m-card padding20 margin20">
<uni-section title="招生章程" type="line">
</uni-section>
</view>
<!--批次线-->
<view class="m-card padding20 margin20" v-if="false">
<uni-section title="批次线" type="line">
<view style="position: relative;bottom: 75rpx;float: right" class="flex-item-6">
<picker @change="bindPickerPcxChange" :value="professionalCategoryIndex" :range="professionalCategoryList"
range-key="value">
<view class="uni-input font-size-mini" style="float: right">
{{ professionalCategoryList[professionalCategoryIndex].value }}
<image :src="ImagesConstant.keyboard.arrowDown2" class="icon50 marginCenter"
style="vertical-align: middle"/>
</view>
</picker>
</view>
<view class="historyScoreLineList slateGray">
<view class="hsl-item" v-for="(item,index) in historyScoreControlLineList" :key="index">
<view class="other-item">
<text>批次:</text>
<text>{{ item.batch }}</text>
</view>
<view class="other-item right-item">
<text>文化分:</text>
<text v-if="item.culturalScore">{{ item.culturalScore }}</text>
</view>
<view class="other-item">
<text>{{ item.professionalCategory }}{{ item.year }}年</text>
</view>
<view class="other-item right-item">
<text>专业分:</text>
<text v-if="item.specialScore">{{ item.specialScore }}</text>
</view>
</view>
</view>
</uni-section>
</view>
<!--历年投档线-->
<!-- <view class="m-card padding20 margin20">
<uni-section title="历年投档线" type="line">
<view style="position: relative;bottom: 75rpx;float: right" class="flex-item-6" v-if="majorList && majorList.length>0">
<picker @change="bindPickerTdxChange" :value="tdxIndex" :range="majorList" range-key="majorName">
<view class="uni-input font-size-mini" style="float: right">{{ majorList[tdxIndex].majorName }}
<image :src=ImagesConstant.keyboard.arrowDown2 class="icon50 marginCenter"
style="vertical-align: middle"/>
</view>
</picker>
</view>
<view class="historyScoreLineList slateGray" v-if="majorList && majorList.length>0">
<view class="hsl-item" v-for="(item,index) in majorList[tdxIndex].historyMajorEnrollList" :key="index">
<view class="other-item">
<text>批次:</text>
<text>{{ item.batch }}</text>
</view>
<view class="other-item right-item">
<text>{{ item.year }}</text>
</view>
<view class="other-item">
<text>备注:-</text>
</view>
<view class="other-item">
<text>投档方式:</text>
<text>{{ item.rulesEnrollProbability || '未公布' }}</text>
</view>
<view class="other-item">
<text>投档公式:</text>
<text>{{ item.probabilityOperator || '未公布' }}</text>
</view>
<view class="other-item">
<text>投档分数:</text>
<text class="blue">未公布</text>
</view>
<view class="other-item">
<text>考试类型:统考</text>
</view>
</view>
</view>
</uni-section>
</view>-->
<!--录取分数线-->
<view class="m-card padding20 margin20">
<uni-section title="录取分数线" type="line">
<view style="position: relative;bottom: 75rpx;float: right" class="flex-item-6" v-if="majorList && majorList.length>0">
<picker @change="bindPicker_lqMajorChange" :value="fsxIndex" :range="majorList" range-key="majorName">
<view class="uni-input font-size-mini" style="float: right">{{ majorList[fsxIndex].majorName }}
<image :src="ImagesConstant.keyboard.arrowDown2" class="icon50 marginCenter"
style="vertical-align: middle"/>
</view>
</picker>
</view>
<view class="historyScoreLineList slateGray" v-if="majorList && majorList.length>0">
<view class="hsl-item" v-for="(item,index) in majorList[fsxIndex].historyMajorEnrollList" :key="index">
<view class="other-item">
批次
<text>{{ item.batch }}</text>
</view>
<view class="other-item right-item">
<text>{{ item.year }}</text>
</view>
<view class="other-item">
<text>备注</text>
<text>{{ item.detail || '-' }}</text>
</view>
<view class="other-item">
<text>录取方式</text>
<text>{{ item.rulesEnrollProbability || '未公布' }}</text>
</view>
<view class="other-item">
<text>录取公式</text>
<text>{{ item.probabilityOperator || '未公布' }}</text>
</view>
<view class="other-item">
<text>录取分数</text>
<text class="blue">{{ item.admissionLine || '未公布' }}</text>
</view>
<view class="other-item">
<text>考试类型</text>
<text>统考</text>
</view>
</view>
</view>
</uni-section>
</view>
</view>
<!--开设专业-->
<view v-if="tab ==='kszy'">
<!--开设专业-->
<view class="m-card padding20 margin20">
<uni-section title="开设专业" type="line">
<view class="historyScoreLineList slateGray" v-if="majorList && majorList.length>0">
<view class="hsl-item" :class="index===0?'not-border':''" v-for="(item,index) in majorList" :key="index" @click="goto('/pages/zyb/major/detail?majorCode='+item.majorCode)">
<view class="other-item">
<text>{{ item.majorName }}</text>
</view>
<view class="other-item right-item">
<image :src="ImagesConstant.keyboard.arrowRight" class="icon50"/>
</view>
</view>
</view>
</uni-section>
</view>
</view>
</template>
<!-- 使用scroll-view实现tabs滑动切换 -->
<!--<scroll-view class="top-menu-view" scroll-x="true" scroll-with-animation :scroll-left="scrollLeft">
<view class="menu-topic-view" v-for="(item,index) in tabs" :id="'tabNum'+item.id" :key="index" @click="swichMenu(index)">
<view :class="currentTab===index ? 'menu-topic-act' : 'menu-topic'">
<text class="menu-topic-text">{{ item.name }}</text>
<view class="menu-topic-bottom">
<view class="menu-topic-bottom-color"></view>
</view>
</view>
</view>
</scroll-view>-->
<style scoped lang="scss">
/*头部部分*/
.head {
background-color: white;
min-height: 300rpx;
border-bottom: 1rpx solid #4975fd;
border-radius: 0 0 30rpx 30rpx;
}
/*顶部学校名称图片地址 信息*/
.schoolHead {
background-color: white;
min-height: 200rpx;
/*院校名称*/
.schoolName {
font-size: 30rpx;
}
/*办学性质*/
.schoolNature {
color: #e2bf44;
margin-right: 10rpx;
font-size: 25rpx;
}
/*院校类型*/
.institutionType {
color: #b4b4b4;
margin: 0 10rpx;
font-size: 25rpx;
}
/*属性标签*/
.tags {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.tags .tag {
line-height: 30rpx;
font-size: 25rpx;
color: #acadba;
border: 3rpx solid #acadba;
border-radius: 8rpx;
padding: 5rpx;
margin: 0 10rpx 10rpx 0;
}
.address {
font-size: 25rpx;
color: $uni-bg-color-mask;
}
/*收藏按钮*/
.collectBtn {
position: relative;
top: 25rpx;
font-size: 25rpx !important;
border: 1rpx solid $uni-bg-color-mask;
padding: 6rpx 20rpx;
border-radius: 8rpx;
transition: 0.3s;
}
/*机或者的收藏按钮*/
.collectBtn-active {
background-color: #3d76fd;
border: 1rpx solid #3d76fd;
color: white;
}
}
/*其他信息*/
.other-item {
display: block;
font-size: 26rpx;
line-height: 40rpx;
.b {
font-weight: 600;
}
}
.right-item {
position: relative;
bottom: 40rpx;
float: right;
}
/*学校介绍 点击展开更多*/
.content-close {
max-height: 300rpx;
text {
height: 300rpx;
}
}
/*录取分数线*/
.historyScoreLineList {
padding: 20rpx;
.hsl-item {
padding: 20rpx 0;
border-top: 4rpx solid #f2f2f2;
}
}
.uni-input {
height: 40rpx;
line-height: 40rpx;
}
/* 请根据实际需求修改父元素尺寸组件自动识别宽高 */
.charts-box {
padding: 20rpx;
margin: 0 auto;
width: 80%;
height: 200px;
}
.content {
/*font-size: 24rpx;
text-indent:48rpx;*/
}
</style>