Преглед на файлове

Merge branch 'master' of http://121.4.203.192:9000/mingxue/front

hare8999@163.com преди 3 години
родител
ревизия
b3c15ad31a

+ 18 - 0
src/api/webApi/career-course.js

@@ -122,3 +122,21 @@ export function evaluateType(params) {
     params: params
   })
 }
+
+// 排名筛选
+export function rankingFilter(params) {
+  return request({
+    url: '/front/university/getUniversitiesRankingFilter',
+    method: 'get',
+    params: params
+  })
+}
+
+// 排名列表
+export function universitiesRanking(params) {
+  return request({
+    url: '/front/university/getUniversitiesRanking',
+    method: 'get',
+    params: params
+  })
+}

+ 7 - 20
src/views/career/components/CollegesLine.vue

@@ -53,16 +53,10 @@
         <el-table-column prop="seat" label="专业最低分位次" align="center"></el-table-column>
         <el-table-column width="80" prop="numReal" label="录取人数" align="center"></el-table-column>
       </el-table>
-      <el-pagination
-        style="margin-top:10px;"
-        :page-sizes="[10,20,30,40,50,60,70,80,90,100]"
-        :page-size=tableParams.pageSize
-        layout="prev,pager,next,jumper,total,sizes"
-        :total="examRecordTotal"
-        @current-change="currentChange"
-        @size-change="sizeChange"
-      >
-      </el-pagination>
+      <pagination class="mt10" :total="examRecordTotal" :autoScroll="false" @pagination="getMarjorList"
+                  :page.sync="tableParams.pageNum"
+                  :limit.sync="tableParams.pageSize"
+      ></pagination>
     </div>
     <el-dialog :visible.sync="dialongParams.visible" width="80%">
       <select-university @changeUniversity="changeUniversity"></select-university>
@@ -109,32 +103,25 @@
       this.getMarjorYears()
     },
     methods: {
-      sizeChange(e){
-        this.tableParams.pageSize=e
-        this.getMarjorList()
-      },
-      currentChange(e){
-        //页数
-        this.tableParams.pageNum=e
-        this.getMarjorList()
-      },
       goDetails(id){
         this.$router.push({ name: 'UniversityDetail', params: { id: id } })
       },
       getMarjorList(){
-        this.loading=true
+
         const params={
           batch:this.formParams.marjorBatchsRes,
           pageNum:this.tableParams.pageNum,
           pageSize:this.tableParams.pageSize,
           type:this.formParams.typeRes,
           universityId:this.formParams.universityRes.id,
+          code:this.formParams.universityRes.code,
           year:this.formParams.year
         }
         if(!params.universityId){
           this.msgInfo('院校不能为空')
           return
         }
+        this.loading=true
         selectMarjorList(params).then(res=>{
           this.tableData=res.rows
           this.examRecordTotal=res.total

+ 1 - 1
src/views/career/components/FillMajor.vue

@@ -3,7 +3,7 @@
     <div class="top-title">(三)选择院校专业</div>
     <div class="content-box">
       <div class="content-title">
-        {{ currentUser.provinceName }}{{ year }}年{{ batchInfo.name }}学校志愿智能模拟
+        {{ currentUser.provinceName }}{{ year }}年学校志愿智能模拟({{ batchInfo.name }})
       </div>
       <div class="content-msg">
         您的预估高考成绩: {{ subject }}

+ 123 - 143
src/views/career/components/SelectUniversity.vue

@@ -1,179 +1,159 @@
 <template>
   <div class="selectUniversity" id="selectUniversity" ref="selectUniversity">
-    <!--上-->
     <div>
-      <el-row type="flex" align="middle">
-        <el-col :span="12">
-          <h1 class="title">选择院校</h1>
-        </el-col>
-        <el-col :span="12">
-          <div style="text-align: right;margin-bottom: 10px;" class="search">
-            <el-input style="width:80%;" suffix-icon=" " placeholder="请输入院校名称" v-model="tableParams.name" @keyup.enter.native="clickSuffix">
-           <span slot="suffix" @click="clickSuffix" style="cursor: pointer">
-            <i class="el-icon-search" style="margin-right: 10px;"></i>
-          </span>
-            </el-input>
-          </div>
-        </el-col>
-      </el-row>
-    </div>
-    <!--下-->
-    <div>
-        <el-row class="radioInput">
-          <el-radio-group v-model="tableParams.location" @change="getUniversityList()">
-            <el-radio-button label="">所有</el-radio-button>
-            <el-radio-button v-for="item in locations" :key="item" :label="item"
-                             style="margin-bottom:10px"></el-radio-button>
-          </el-radio-group>
-        </el-row>
+      <mx-search-group class="mb10" justify="space-between" :span="10" v-model="collegeName" placeholder="请输入院校名称"
+                       @search="clickSuffix"
+      >
+        <h1 class="title">选择院校</h1>
+      </mx-search-group>
+      <filter-form :filter="filter_form"></filter-form>
     </div>
+
     <div style="margin-top: 20px;">
-   <div>
-     <el-row :gutter="20">
-       <el-col  :span="6" v-for="item in tableData" :key="item.id">
-         <div @click="changeUniversity(item)" class="universityList">{{item.name}}</div>
-       </el-col>
-     </el-row>
-   </div>
-      <el-pagination
-        style="margin-top:10px;"
-        :page-sizes="[10,20,30,40,50,60,70,80,90,100]"
-        :page-size=tableParams.pageSize
-        layout="prev,pager,next,jumper,total,sizes"
-        :total="examRecordTotal"
-        @current-change="currentChange"
-        @size-change="sizeChange"
-      >
-      </el-pagination>
+      <div>
+        <el-row :gutter="20">
+          <el-col :span="6" v-for="item in tableData" :key="item.id">
+            <div @click="changeUniversity(item)" class="universityList">{{ item.name }}</div>
+          </el-col>
+        </el-row>
+      </div>
+      <pagination class="mt10" :total="total" :autoScroll="false" @pagination="getUniversityList"
+                  :page.sync="pageForm.pageNum"
+                  :limit.sync="pageForm.pageSize"
+      ></pagination>
     </div>
   </div>
 </template>
 
 <script>
-  import {mapState} from "vuex";
-  import {selectUniversityLocations,marjorSelectUniversityList} from '@/api/webApi/shiftLine'
-  export default {
-    name: "SelectUniversity",
-    data(){
-      return {
-        locations:[],
-        examRecordTotal:0,
-        tableParams:{
-          pageSize:20,
-          pageNum:1,
-          location:'',
-          name:'',
-        },
-        tableData:[]
-      }
-    },
-    computed: {
-      ...mapState({theme: (state) => state.settings.theme}),
-    },
-    watch: {
-      theme: {
-        immediate: true,
-        handler(val) {
-          this.$nextTick(() => {
-            this.$refs.selectUniversity.style.setProperty("--themeColor", val);
-          });
-        },
-      }
-    },
-    created() {
-      this.getUniversityLocations()
-      this.getUniversityList()
-    },
-    methods:{
-      changeUniversity(data){
-        this.$emit('changeUniversity',data)
-      },
-      getUniversityList(){
-        marjorSelectUniversityList(this.tableParams).then(res=>{
-          this.tableData=res.rows
-          this.examRecordTotal=res.total
-        })
+import { mapState } from 'vuex'
+import MxSearchGroup from '@/components/MxSearch/mx-search-group'
+import FilterForm from '@/views/career/components/FilterForm'
+import { selectUniversityList } from '@/api/webApi/career-course'
+
+export default {
+  name: 'SelectUniversity',
+  components: { MxSearchGroup,FilterForm },
+  data() {
+    return {
+      pageForm: {
+        pageSize: 20,
+        pageNum: 1,
       },
-      clickSuffix(){
-        this.getUniversityList()
+      collegeName:'',
+      total: 0,
+      filter_form:{
+        location:'',
+        natureTypeCN:'',
+        type:'',
+        level:'',
+        features:'',
+        name:''
       },
-      getUniversityLocations() {
-        selectUniversityLocations().then(res => {
-          this.locations = res.rows
+      tableData: []
+    }
+  },
+  computed: {
+    ...mapState({ theme: (state) => state.settings.theme })
+  },
+  watch: {
+    theme: {
+      immediate: true,
+      handler(val) {
+        this.$nextTick(() => {
+          this.$refs.selectUniversity.style.setProperty('--themeColor', val)
         })
-      },
-      sizeChange(e){
-        this.tableParams.pageSize=e
-        this.getUniversityList()
-      },
-      currentChange(e){
-        //页数
-        this.tableParams.pageNum=e
+      }
+    },
+    filter_form:{
+      immediate: true,
+      deep:true,
+      handler(val) {
         this.getUniversityList()
-      },
+      }
     }
+  },
+  methods: {
+    changeUniversity(data) {
+      this.$emit('changeUniversity', data)
+    },
+    getUniversityList() {
+      selectUniversityList({ ...this.pageForm,...this.filter_form }).then(res => {
+        this.tableData = res.rows
+        this.total = res.total
+      })
+    },
+    clickSuffix() {
+      this.filter_form.name = this.collegeName
+    },
   }
+}
 </script>
 
 <style scoped lang="scss">
-  #selectUniversity {
-    font-family: PingFangSC-Regular, PingFang SC;
+#selectUniversity {
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-weight: 400;
+  padding: 0 30px;
+
+  .title {
     font-weight: 400;
-    padding:0 30px;
-    .title{
-      font-weight: 400;
-      border-left: 6px solid var(--themeColor);
-      padding:5px 20px;
-      color:var(--themeColor);
-    }
-    .search{
-      .el-input {
-        .el-input__inner {
-          border-radius: 50px;
-        }
+    border-left: 6px solid var(--themeColor);
+    padding: 5px 20px;
+    color: var(--themeColor);
+  }
+
+  .search {
+    .el-input {
+      .el-input__inner {
+        border-radius: 50px;
       }
     }
-    .universityList{
-      background-color: var(--themeColor);
-      line-height: 60px;
-      margin-bottom: 10px;
-      text-align: center;
-    }
   }
 
+  .universityList {
+    background-color: var(--themeColor);
+    line-height: 60px;
+    margin-bottom: 10px;
+    text-align: center;
+  }
+}
+
 </style>
 
 <style lang="scss">
-  .selectUniversity {
-    .search{
-      .el-input {
-        .el-input__inner {
-          border-radius: 50px;
-        }
+.selectUniversity {
+  .search {
+    .el-input {
+      .el-input__inner {
+        border-radius: 50px;
       }
     }
-    .radioInput {
-      .el-radio {
-        .el-radio__input {
-          display: none;
-        }
+  }
+
+  .radioInput {
+    .el-radio {
+      .el-radio__input {
+        display: none;
       }
     }
+  }
 
-    .radioInput {
-      display: flex;
-      margin-top: 5px;
-      .el-radio-button .el-radio-button__inner {
-        border-radius: 4px !important;
-        border: none;
-        padding: 5px 10px !important;
-        font-weight: 400;
-        font-family: PingFangSC-Regular, PingFang SC;
-      }
+  .radioInput {
+    display: flex;
+    margin-top: 5px;
 
-      .el-radio-button__orig-radio:checked + .el-radio-button__inner {
-        box-shadow: none;
-      }
+    .el-radio-button .el-radio-button__inner {
+      border-radius: 4px !important;
+      border: none;
+      padding: 5px 10px !important;
+      font-weight: 400;
+      font-family: PingFangSC-Regular, PingFang SC;
+    }
+
+    .el-radio-button__orig-radio:checked + .el-radio-button__inner {
+      box-shadow: none;
     }
   }
+}
 </style>

+ 18 - 18
src/views/career/components/UniversitiesLine.vue

@@ -6,7 +6,7 @@
         <div>
           <span class="radiaTitle">录 取 年 份:</span>
         </div>
-        <el-radio-group v-model="universityParams.yearRes">
+        <el-radio-group v-model="universityParams.year">
           <el-radio-button v-for="item in years" :key="item" :label="item"
                            style="margin-bottom:10px"></el-radio-button>
         </el-radio-group>
@@ -16,7 +16,7 @@
         <div>
           <span class="radiaTitle">科 类:</span>
         </div>
-        <el-radio-group v-model="universityParams.typeRes">
+        <el-radio-group v-model="universityParams.type">
           <el-radio-button label="">所有</el-radio-button>
           <el-radio-button v-for="item in types" :key="item" :label="item"
                            style="margin-bottom:10px"></el-radio-button>
@@ -27,7 +27,7 @@
         <div>
           <span class="radiaTitle">层 次:</span>
         </div>
-        <el-radio-group v-model="universityParams.levelsRes">
+        <el-radio-group v-model="universityParams.level">
           <el-radio-button label="">所有</el-radio-button>
           <el-radio-button v-for="item in levels" :key="item" :label="item"
                            style="margin-bottom:10px"></el-radio-button>
@@ -38,7 +38,7 @@
         <div>
           <span class="radiaTitle">院校所在地:</span>
         </div>
-        <el-radio-group v-model="universityParams.locationsRes">
+        <el-radio-group v-model="universityParams.location">
           <el-radio-button v-for="item in locations" :key="item" :label="item"
                            style="margin-bottom:10px"></el-radio-button>
         </el-radio-group>
@@ -46,7 +46,7 @@
 
 
 
-    <!-- 表格数据 -->
+      <!-- 表格数据 -->
       <universities-line-table :universityParams="universityParams"></universities-line-table>
     </div>
   </div>
@@ -70,15 +70,15 @@
         types: [],
         years: [],
         universityParams: {
-          locationsRes: '',
-          levelsRes: '',
-          typeRes: '',
-          yearRes: ''
+          location: '',
+          level: '',
+          type: '',
+          year: ''
         }
       }
     },
     watch: {
-      'universityParams.yearRes': {
+      'universityParams.year': {
         immediate: false,
         handler(val) {
           console.log(val)
@@ -100,27 +100,27 @@
       },
       getUniversityLocations() {
         selectUniversityLocations().then(res => {
-          this.universityParams.locationsRes = res.rows[0]
+          this.universityParams.location = res.rows[0]
           this.locations = res.rows
         })
       },
       getUniversityLevels() {
         const params = {
-          // location: this.universityParams.locationsRes,
-          year: this.universityParams.yearRes,
+          // location: this.universityParams.locations,
+          year: this.universityParams.year,
         }
         selectUniversityLevels(params).then(res => {
-          // this.universityParams.levelsRes = res.rows[0]
+          // this.universityParams.level = res.rows[0]
           this.levels = res.rows
         })
       },
       getUniversityTypes() {
         const params = {
-          // location: this.universityParams.locationsRes,
-          year: this.universityParams.yearRes,
+          // location: this.universityParams.locations,
+          year: this.universityParams.year,
         }
         selectUniversityTypes(params).then(res => {
-          // this.universityParams.typeRes = res.rows[0]
+          // this.universityParams.type = res.rows[0]
           this.types = res.rows
         })
       },
@@ -131,7 +131,7 @@
           type: ''
         }
         selectUniversityYears(params).then(res => {
-          this.universityParams.yearRes = res.rows[0]
+          this.universityParams.year = res.rows[0]
           this.years = res.rows
           // this.$nextTick(_ => {
           //   this.getUniversityTypes()

+ 12 - 42
src/views/career/components/UniversitiesLineTable.vue

@@ -1,7 +1,6 @@
 <template>
   <div id="lineTable">
-    <mx-search-group class="mb10" justify="end" :span="6" v-model="tableParams.univerName" placeholder="搜索" @search="clickSuffix"
-    ></mx-search-group>
+
     <el-table :data="tableData" v-loading="tableLoading" border>
       <el-table-column prop="code" label="院校" align="center">
         <template slot-scope="scope">
@@ -15,21 +14,15 @@
       <el-table-column prop="level" label="层次" align="center"></el-table-column>
       <el-table-column prop="score" label="投档线" align="center"></el-table-column>
       <el-table-column
-        prop="batchName"
+        prop="seat"
         label="投档分位次"
       >
       </el-table-column>
     </el-table>
-    <el-pagination
-      style="margin-top:10px;"
-      :page-sizes="[10,20,30,40,50,60,70,80,90,100]"
-      :page-size=tableParams.pageSize
-      layout="prev,pager,next,jumper,total,sizes"
-      :total="examRecordTotal"
-      @current-change="currentChange"
-      @size-change="sizeChange"
-    >
-    </el-pagination>
+    <pagination class="mt10" :total="total" :autoScroll="false" @pagination="getUniversityList"
+                :page.sync="pageForm.pageNum"
+                :limit.sync="pageForm.pageSize"
+    ></pagination>
   </div>
 </template>
 
@@ -44,7 +37,8 @@ export default {
   },
   props: {
     universityParams: {
-      type: Object, default() {
+      type: Object,
+      default() {
         return {}
       }
     }
@@ -53,15 +47,11 @@ export default {
     return {
       tableLoading: '',
       examRecordTotal: 0,
-      tableParams: {
+      pageForm: {
         pageSize: 20,
         pageNum: 1,
-        level: '',
-        location: '',
-        type: '',
-        univerName: '',
-        year: ''
       },
+      total:0,
       tableData: []
     }
   },
@@ -70,41 +60,21 @@ export default {
       immediate: true,
       deep: true,
       handler(val) {
-        if ( val.locationsRes == ''  || val.yearRes == '' ) {
-          return
-        }
-        this.tableParams.level = val.levelsRes
-        this.tableParams.location = val.locationsRes
-        this.tableParams.type = val.typeRes
-        this.tableParams.year = val.yearRes
         this.getUniversityList()
       }
     }
   },
   methods: {
-    clickSuffix() {
-      this.getUniversityList()
-    },
     getUniversityList() {
       this.tableLoading = true
-      console.log(this.tableParams)
-      selectUniversityList(this.tableParams).then(res => {
+      selectUniversityList({ ...this.universityParams,...this.pageForm }).then(res => {
         console.log(res)
         this.tableData = res.rows
-        this.examRecordTotal = res.total
+        this.total = res.total
       }).finally(_ => {
         this.tableLoading = false
       })
     },
-    sizeChange(e) {
-      this.tableParams.pageSize = e
-      this.getUniversityList()
-    },
-    currentChange(e) {
-      //页数
-      this.tableParams.pageNum = e
-      this.getUniversityList()
-    },
     goDetails(id) {
       this.$router.push({ name: 'UniversityDetail', params: { id: id } })
     }

+ 19 - 123
src/views/career/plan/UniversitiesColleges.vue

@@ -1,5 +1,5 @@
 <template>
-  <div ref="UniversitiesColleges" class="app-container" v-loading="loading">
+  <div ref="UniversitiesColleges" class="app-container" >
     <el-card :style="{'background-image':backimg}" style="padding:30px;margin:10px 0;background-color:white;background-repeat: no-repeat;background-position: bottom right;">
       <p style="color:#A6A6A6;font-size:24px;font-weight:bold;">UNIVERSITIES AND COLLECGES</p>
       <p style="color:#414141;font-size:24px;font-weight:bold;">院校库</p>
@@ -7,82 +7,33 @@
     </el-card>
     <el-card style="background-color: #ffffff;font-size: 14px;padding:5px;">
       <div slot="header" class="radioInput" >
-        <span class="radioTitle" :class="filter_type == 'all'?'active' : ''">全部院校</span>
-        <span class="radioTitle" :class="filter_type == 'top'?'active' : ''">大学排名</span>
+        <span class="radioTitle" :class="filter_type == 'all'?'active' : ''" @click="filter_type= 'all'">全部院校</span>
+        <span class="radioTitle" :class="filter_type == 'top'?'active' : ''" @click="filter_type= 'top'">大学排名</span>
       </div>
-      <filter-form :filter="filter_form"></filter-form>
-      <mx-search-group justify="end"  v-model="collegeName" @search="clickSuffix">
-        <p>共 <span class="f-primary">{{pageForm.total}}</span> 条</p>
-      </mx-search-group>
-      <el-row class="mt10 ">
-        <div v-if="pageForm.total > 0">
-          <div class="list-wrap pl30">
-            <div class="list-item fx-row mb30" v-for="item in collegeList">
-              <div class="img" >
-                <img style="width: 100%;height: 100%" :src="item.logo" alt="">
-              </div>
-              <div class="info ml20">
-                <div class="college_name pointer f-333 f20 mb5" @click="toDetail(item)">{{item.name}}</div>
-                <div class="tags" v-if="item.features">
-                  <span class="mr5 el-tag el-tag--info el-tag--plain" v-for="feature in item.features.split(',')">{{ feature }}</span>
-                </div>
-                <div class="college-desc mt5 f14 f-666">
-                  <p>{{`${item.location} ${item.cityName} ${item.type} / ${item.natureTypeCN} / ${item.managerType} `}}</p>
-                </div>
-              </div>
-              <div class="heat f12 f-666">
-                <p>排名</p>
-                <p class="mt3">{{ `第${item.ranking}名 / 综合指数${item.comScore}` }}</p>
-              </div>
-              <div class="heat f12  f-666">
-                <p>热度</p>
-                <p class="mt3">{{ (item.hits/10000).toFixed(1) }}万</p>
-              </div>
-            </div>
-          </div>
-          <pagination class="mt10" :total="pageForm.total" :autoScroll="false" @pagination="onChangePage"
-                      :page.sync="pageForm.pageNum"
-                      :limit.sync="pageForm.pageSize"
-          ></pagination>
-        </div>
-
-        <evaluation-empty v-else shadow title="暂无数据"></evaluation-empty>
-      </el-row>
+      <keep-alive>
+        <all-university v-if="filter_type == 'all'"></all-university>
+      </keep-alive>
+      <keep-alive>
+        <rank-university v-if="filter_type == 'top'"></rank-university>
+      </keep-alive>
     </el-card>
   </div>
 </template>
 
 <script>
 import { mapState } from 'vuex';
-import UniversitiesTable from '@/views/career/components/UniversitiesTable';
-import FilterForm from '@/views/career/components/FilterForm';
-import { selectUniversityList } from '@/api/webApi/career-course'
-import MxSearchGroup from '@/components/MxSearch/mx-search-group'
+import AllUniversity from '@/views/career/plan/compoents/AllUniversity';
+import RankUniversity from '@/views/career/plan/compoents/RankUniversity';
 export default {
   name: "UniversitiesColleges",
-  components: { MxSearchGroup, UniversitiesTable,FilterForm },
+  components:{
+    AllUniversity,
+    RankUniversity
+  },
   data() {
     return {
       backimg: 'url(' + require('@/assets/images/career/icon_colleges.png') + ')',
-      filter_form:{
-        location:'',
-        natureTypeCN:'',
-        type:'',
-        level:'',
-        features:'',
-        name:''
-      },
-      filter_type:'all',
-      loading:false,
-      collegeName:'',
-      pageForm:{
-        pageSize:10,
-        pageNum:1,
-        total:0
-      },
-      filter_list:{},
-      collegeList:[],
-      headerFixed: true
+      filter_type:'all'
     }
   },
   computed: {
@@ -97,40 +48,9 @@ export default {
         })
       }
     },
-    filter_form:{
-      immediate: true,
-      deep:true,
-      handler(val) {
-          this.getUniversityList()
-      }
-    },
   },
   methods: {
-    toDetail(item) {
-      console.log(item)
-      this.$router.push({path:'/career/plan/UniversityDetail',query: {code:item.code}})
-    },
-    onChangePage(page) {
-      this.pageForm.pageSize = page.limit
-      this.pageForm.pageNum = page.page
-      this.getUniversityList()
-    },
-    clickSuffix() {
-      this.filter_form.name = this.collegeName
-    },
-    getUniversityList(){
-      this.loading = true
-      // console.log(params)
-      selectUniversityList({ ...this.filter_form,
-        pageNum:this.pageForm.pageNum,
-        pageSize:this.pageForm.pageSize,
-      }).then(res=>{
-        this.pageForm.total =res.total
-        this.collegeList =res.rows
-      }).finally(() => {
-        this.loading = false
-      })
-    },
+
   }
 }
 </script>
@@ -140,37 +60,16 @@ export default {
   background-color: var(--themeColor);
   margin-left: 0;
 }
-.heat{
-  width: 200px;
-  height: 72px;
-  padding-top: 22px;
-  color: #666;
-}
-.info{
-  width: 400px;
-}
-.img{
-  flex-shrink: 0;
-  width: 72px;
-  height: 72px;
-}
-.tags {
-  .el-tag{
-    height: 16px;
-    line-height: 16px;
-    font-size: 12px;
-    color: #909399;
-  }
-}
 .radioInput{
   background-color: #ffffff;
   padding:5px;
+  padding-left: 30px;
   .radioTitle{
     cursor: pointer;
     display: inline-block;
     width: 80px;
     font-size: 14px;
-    text-align: right;
+    text-align: center;
     &.active{
       color: #fff;
       border-radius: 4px ;
@@ -180,8 +79,5 @@ export default {
       background: #42b983;
     }
   }
-
 }
-
-
 </style>

+ 257 - 176
src/views/career/plan/UniversitiesDetail.vue

@@ -1,16 +1,19 @@
 <template>
-  <div ref="universityDetail" id="universityDetail" class="app-container">
+  <div ref="universityDetail" id="universityDetail" class="app-container" v-loading="loading">
     <el-row :gutter="10" class="mt20 mb30">
       <el-col :span="12" class="fx-row ai-center">
         <div class="mr30">
-          <img width="72px" height="72px" :src="baseInfo.logo" alt=""/>
+          <img class="pointer" @click="toWindow(baseInfo.url)" width="72px" height="72px" :src="baseInfo.logo" alt=""/>
         </div>
         <div>
           <span class="f28 ">{{ baseInfo.name }}</span>
           <div class="mt5 mb5">
-            <el-tag class="mr5" size="mini" v-for="item in baseInfo.features ? baseInfo.features.split(',') : []">{{ item }}</el-tag>
+            <el-tag class="mr5" size="mini" v-for="item in baseInfo.features ? baseInfo.features.split(',') : []">
+              {{ item }}
+            </el-tag>
           </div>
-          <span class="f14 f-666 ">{{`${baseInfo.location} ${baseInfo.cityName} ${baseInfo.type} / ${baseInfo.natureTypeCN} / ${baseInfo.managerType} `}}</span>
+          <span class="f14 f-666 "
+          >{{ `${baseInfo.location} ${baseInfo.cityName} ${baseInfo.type} / ${baseInfo.natureTypeCN} / ${baseInfo.managerType} ` }}</span>
         </div>
       </el-col>
       <el-col :span="12" class="text-right">
@@ -18,112 +21,148 @@
       </el-col>
     </el-row>
     <div>
-        <div class="tabs-wrap mb20">
-          <span class="tabs-item" @click="tabActive = 0" :class="{'bg-primary':tabActive == 0}">院校概况</span>
-          <span class="tabs-item" @click="tabActive = 1" :class="{'bg-primary':tabActive == 1}">招生简章</span>
-          <span class="tabs-item" @click="tabActive = 2" :class="{'bg-primary':tabActive == 2}">院校风采</span>
-        </div>
-        <div v-if="tabActive == 0">
-          <el-row  class="fx-row">
-            <el-col :span="8"> <img src="https://i6.youzy.cn/basiclib/college/images/10003-647784f7.jpg" width="100%" alt=""></el-col>
-            <el-col :span="16">
-              <div class="f14 f-666 text-center fx-row">
-                <el-col :span="24" v-for="item in iconList">
-                  <img width="50px" :src="item.img" :alt="item.desc">
-                  <p class="mt10">{{ item.value }}</p>
-                </el-col>
-                <el-col :span="24" >
-                  <img width="50px" src="https://pv4y-pc.youzy.cn/static/img/icon_shijian@2x.8463f33f.png" alt="">
-                  <p class="mt10">{{`${baseInfo.location} ${baseInfo.cityName}`}}</p>
-                </el-col>
-              </div>
-              <div class="mt10  pl10 f14">
+      <div class="tabs-wrap mb20">
+        <span class="tabs-item" @click="tabActive = 0" :class="{'bg-primary':tabActive == 0}">院校概况</span>
+        <span class="tabs-item" @click="tabActive = 1" :class="{'bg-primary':tabActive == 1}">招生简章</span>
+        <span class="tabs-item" @click="tabActive = 2" :class="{'bg-primary':tabActive == 2}">院校风采</span>
+      </div>
+      <div v-if="tabActive == 0">
+        <el-row class="fx-row">
+          <el-col :span="8">
+            <img  :src="baseInfo.bannerUrl" width="100%" alt="">
+          </el-col>
+          <el-col :span="16">
+            <div class="f14 f-666 text-center fx-row">
+              <el-col :span="24" v-for="item in iconList" v-if="Array.isArray(item.value) ? item.value.length : item.value">
+                  <div v-if="Array.isArray(item.value)">
+                    <img width="50px" :src="item.img" :alt="item.desc">
+                    <el-popover
+                      placement="bottom"
+                      trigger="hover"
+                    >
+                      <div>
+                        <p v-for="i in item.value">
+                          {{i.type}}  {{i.number}}个
+                        </p>
+                      </div>
+                      <p class="mt10" slot="reference">
+                        {{ `${item.value[0] ? item.value[0].number : ''} / ${item.value[1] ? item.value[1].number : ''} ` }}
+                        <i class="el-icon-question"></i>
+                      </p>
+
+                    </el-popover>
+                  </div>
+                  <div v-else>
+                    <img width="50px" :src="item.img" :alt="item.desc">
+                    <p class="mt10">{{ item.value }}</p>
+                  </div>
+              </el-col>
+            </div>
+            <div class="mt10  pl10 f14">
                 <span class="info-tips"> {{
                     baseInfo.introduction
                   }}</span>
-                <p class="text-right mr10"><el-button type="text" @click="dialogVisible = true">全部</el-button></p>
-              </div>
-            </el-col>
-          </el-row>
-          <div style="width:70%">
-            <div class="mt20"  v-if="formatProfessions.length">
-              <p class="format-tit">特色专业</p>
-              <mx-table border :propDefines="professionsProps" :rows="formatProfessions">
-                <template #tmp="{row}">
-                  <p class="major-wrap">
-                    <a v-for="item in row.majors" @click="toMajorDetail(item.code)">{{item.name}}</a>
-                  </p>
-                </template>
-              </mx-table>
-            </div>
-            <div class="mt20" v-if="Object.keys(subjects).length">
-              <p class="format-tit">重点学科</p>
-              <mx-table border :prop-defines="keySubjectProp" :rows="subjects.keySubjects">
-                <template #tmp="{row}">
-                  <p class="major-wrap">
-                    <span v-for="item in row.subjects">{{item}}</span>
-                  </p>
-                </template>
-              </mx-table>
+              <p class="text-right mr10">
+                <el-button type="text" @click="dialogVisible = true">全部</el-button>
+              </p>
             </div>
-            <div class="mt20" v-if="Object.keys(subjects).length">
-              <p class="format-tit">双一流学科</p>
-              <el-select v-model="activeSylId" placeholder="placeholder">
-                <el-option
-                  v-for="item in subjects.sylSubjectsGroup"
-                  :key="item.id"
-                  :label="item.evaluations"
-                  :value="item.id"
-                >
-                </el-option>
-              </el-select>
-              <mx-table border class="mt10" :prop-defines="activeSyl.col"   :rows="activeSyl.row">
-                <template #tmp="{row}">
-                  <p class="major-wrap">
-                    <span v-for="item in row.subjects">{{item}}</span>
-                  </p>
-                </template>
-              </mx-table>
-            </div>
-            <div class="mt20" v-if="subjectevaluates.length">
-              <p class="format-tit">学科评估</p>
-              <el-select v-model="evaluate_type" placeholder="placeholder">
-                <el-option
-                  v-for="item in evaluateTypes"
-                  :key="item.dictValue"
-                  :label="item.dictLabel"
-                  :value="item.dictValue"
-                >
-                </el-option>
-              </el-select>
-              <mx-table border class="mt10" :prop-defines="activeEvaluate.col" :rows="activeEvaluate.row">
-                <template #level="{row}">
-                  <p class="major-wrap" v-if="row.level.length">
-                    <span v-for="item in row.level">{{item.name}}{{item.level}}</span>
-                  </p>
-                  <p v-else>
-                    暂无数据
-                  </p>
-                </template>
-              </mx-table>
-            </div>
-            <div class="mt20">
-              <p class="format-tit">院系设置</p>
-              <mx-table border :propDefines="collegeProps" :rows="departments">
-                <template #tmp="{row}">
-                  <p class="major-wrap">
-                    <span v-for="item in row.departmentMajor">{{item.name}}</span>
-                  </p>
-                </template>
-              </mx-table>
+          </el-col>
+        </el-row>
+        <div style="width:70%">
+          <div class="mt20" v-if="formatProfessions.length">
+            <p class="format-tit">特色专业</p>
+            <mx-table border :propDefines="professionsProps" :rows="formatProfessions">
+              <template #tmp="{row}">
+                <p class="major-wrap">
+                  <a v-for="item in row.majors" @click="toMajorDetail(item.code)">{{ item.name }}</a>
+                </p>
+              </template>
+            </mx-table>
+          </div>
+          <div class="mt20" v-if="Object.keys(subjects).length">
+            <p class="format-tit">重点学科</p>
+            <mx-table border :prop-defines="keySubjectProp" :rows="subjects.keySubjects">
+              <template #tmp="{row}">
+                <p class="major-wrap">
+                  <span v-for="item in row.subjects">{{ item }}</span>
+                </p>
+              </template>
+            </mx-table>
+          </div>
+          <div class="mt20" v-if="Object.keys(activeSyl).length">
+            <p class="format-tit">双一流学科</p>
+            <el-select v-model="activeSylId" placeholder="placeholder">
+              <el-option
+                v-for="item in subjects.sylSubjectsGroup"
+                :key="item.id"
+                :label="item.evaluations"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+            <mx-table border class="mt10" :prop-defines="activeSyl.col" :rows="activeSyl.row">
+              <template #tmp="{row}">
+                <p class="major-wrap">
+                  <span v-for="item in row.subjects">{{ item }}</span>
+                </p>
+              </template>
+            </mx-table>
+          </div>
+          <div class="mt20" v-if="subjectevaluates.length">
+            <p class="format-tit">学科评估</p>
+            <el-select v-model="evaluate_type" placeholder="placeholder">
+              <el-option
+                v-for="item in evaluateTypes"
+                :key="item.dictValue"
+                :label="item.dictLabel"
+                :value="item.dictValue"
+              >
+              </el-option>
+            </el-select>
+            <mx-table border class="mt10" :prop-defines="activeEvaluate.col" :rows="activeEvaluate.row">
+              <template #level="{row}">
+                <p class="major-wrap" v-if="row.level.length">
+                  <span v-for="item in row.level">{{ item.name }}{{ item.level }}</span>
+                </p>
+                <p v-else>
+                  暂无数据
+                </p>
+              </template>
+            </mx-table>
+          </div>
+          <div class="mt20">
+            <p class="format-tit">院系设置</p>
+            <mx-table border :propDefines="collegeProps" :rows="departments">
+              <template #tmp="{row}">
+                <p class="major-wrap">
+                  <a @click="toMajorDetail(item.code)" v-for="item in row.departmentMajor">{{ item.name }}</a>
+                </p>
+              </template>
+            </mx-table>
+          </div>
+          <div class="mt20" v-if="employmentreports.length">
+            <p class="format-tit">就业报告</p>
+            <div class="list f-333">
+                <div class="list-item" v-for="item in employmentreports">
+                  <span class="url pointer" @click="toWindow(item.webSite)">{{item.title}}</span>
+                  <span class="url pointer" @click="toWindow(item.url)" v-if="item.url"><i class="el-icon-edit mr5" ></i>在线预览</span>
+                  <span class="pointer" v-if="item.url"  @click="toWindow(item.url)">下载附件</span>
+                </div>
             </div>
           </div>
 
         </div>
-        <!--  招生简章-->
+
+      </div>
+      <!--  招生简章-->
+      <keep-alive>
         <enroll-list :code="code" v-if="tabActive == 1"></enroll-list>
-        <!--  院校风采-->
-        <university-style  :code="code" v-if="tabActive == 2"></university-style>
+      </keep-alive>
+      <!--  院校风采-->
+      <keep-alive>
+        <university-style :code="code" v-if="tabActive == 2"></university-style>
+      </keep-alive>
+
     </div>
     <el-dialog
       :visible.sync="dialogVisible"
@@ -131,7 +170,7 @@
     >
       <span class="f20 f-666">{{ baseInfo.name }}院校介绍</span>
       <div>
-        {{baseInfo.introduction}}
+        {{ baseInfo.introduction }}
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
@@ -147,60 +186,62 @@ import { evaluateType, saveUniversitiesHits, selectUniversityDetail } from '@/ap
 
 export default {
   name: 'UniversityDetail',
-  components: {EnrollList,UniversityStyle},
+  components: { EnrollList, UniversityStyle },
   data() {
     return {
       tabActive: 0,
-      baseInfo:'',
-      departments:[],
+      baseInfo: '',
+      departments: [],
       dialogVisible: false,
-      professions:{},
-      subjectevaluates:[],
-      evaluateTypes:[],
-      evaluate_type:'',
-      professionsProps:{
+      professions: {},
+      subjectevaluates: [],
+      evaluateTypes: [],
+      evaluate_type: '',
+      employmentreports:[],
+      loading:false,
+      professionsProps: {
         level: {
-          label:'专业层次',
-          width:'200'
+          label: '专业层次',
+          width: '200'
         },
         count: {
-          label:'数量',
-          width:'100'
+          label: '数量',
+          width: '100'
         },
         majors: {
-          label:'专业',
+          label: '专业',
           slot: 'tmp',
-          align:"left"
-        },
+          align: 'left'
+        }
       },
-      subjects:'',
-      code:'',
+      subjects: '',
+      code: '',
       activeSylId: '',
-      collegeProps:{
+      collegeProps: {
         name: {
-          label:'学院',
-          width:'200'
+          label: '学院',
+          width: '200'
         },
         departmentMajor: {
-          label:'包含专业',
+          label: '包含专业',
           slot: 'tmp',
-          align:"left"
-        },
+          align: 'left'
+        }
       },
-      keySubjectProp:{
-        typeName:{
-          label:'类别',
-          width:'100'
-        },
-        subjects:{
-          label:'专业',
-          slot:'tmp',
-          align:'left'
+      keySubjectProp: {
+        typeName: {
+          label: '类别',
+          width: '100'
         },
-        category:{
-          label:'学科类别',
-          width:'100'
+        subjects: {
+          label: '专业',
+          slot: 'tmp',
+          align: 'left'
         },
+        category: {
+          label: '学科类别',
+          width: '100'
+        }
       }
     }
   },
@@ -211,7 +252,7 @@ export default {
     this.getEvaluateType()
   },
   computed: {
-    formatProfessions(){
+    formatProfessions() {
       const arr = []
       for (const key in this.professions) {
         console.log(key)
@@ -225,111 +266,134 @@ export default {
       return arr
     },
     activeEvaluate() {
-      const currentRow = this.subjectevaluates.filter(item => {return item.extTypeId == this.evaluate_type})
+      const currentRow = this.subjectevaluates.filter(item => {
+        return item.extTypeId == this.evaluate_type
+      })
       const row = {
         count: currentRow.length || '-',
-        level: currentRow,
+        level: currentRow
       }
       return {
         row: [row],
         col: {
-          count:{
-            label:'数量',
-            width:'100'
+          count: {
+            label: '数量',
+            width: '100'
           },
-          level:{
-            label:' 专业评级',
-            align:'left',
-            slot:'level'
+          level: {
+            label: ' 专业评级',
+            align: 'left',
+            slot: 'level'
           }
         }
       }
     },
     activeSyl() {
-      if(!Object.keys(this.subjects).length) return {}
+      if (!this.subjects.hasOwnProperty('sylSubjectsGroup')) return {}
       // const col = this.
-      const row = this.subjects.sylSubjectsGroup.find(item => {return item.id == this.activeSylId})
+      const row = this.subjects.sylSubjectsGroup.find(item => {
+        return item.id == this.activeSylId
+      })
       return {
         col: {
           subjectCount: {
-            label:'数量',
-            width: 100,
+            label: '数量',
+            width: 100
           },
           subjects: {
-            label:'学科',
-            slot:'tmp',
-            align:"left"
+            label: '学科',
+            slot: 'tmp',
+            align: 'left'
           },
           typeName: {
-            label:'类别',
-            width:'100'
+            label: '类别',
+            width: '100'
           }
         },
-        row:[row]
+        row: [row]
       }
     },
     iconList() {
-      const baseInfo  = this.baseInfo
+      const baseInfo = this.baseInfo
       return [
         {
           img: 'https://pv4y-pc.youzy.cn/static/img/icon_shijian@2x.8463f33f.png',
           value: `${baseInfo.createdYear}年`,
-          desc:'创办时间'
+          desc: '创办时间'
         },
         {
           img: 'https://pv4y-pc.youzy.cn/static/img/icon_shijian@2x.8463f33f.png',
           value: baseInfo.natureTypeCN,
-          desc:'办学类型'
+          desc: '办学类型'
         },
         {
           img: 'https://pv4y-pc.youzy.cn/static/img/icon_shijian@2x.8463f33f.png',
           value: baseInfo.type,
-          desc:'院校类型'
+          desc: '院校类型'
         },
         {
           img: 'https://pv4y-pc.youzy.cn/static/img/icon_shijian@2x.8463f33f.png',
           value: baseInfo.managerType,
-          desc:'所属部门'
+          desc: '所属部门'
         },
         {
           img: 'https://pv4y-pc.youzy.cn/static/img/icon_shijian@2x.8463f33f.png',
           value: baseInfo.level,
-          desc:'学历层次'
+          desc: '学历层次'
         },
         {
           img: 'https://pv4y-pc.youzy.cn/static/img/icon_shijian@2x.8463f33f.png',
           value: `${baseInfo.location} ${baseInfo.cityName}`,
-          desc:'所处地'
+          desc: '所处地'
+        },
+        {
+          img: 'https://pv4y-pc.youzy.cn/static/img/icon_shijian@2x.8463f33f.png',
+          value: baseInfo.pointsOfShuo,
+          desc: '硕士点',
+          type: 'arr'
+        },
+        {
+          img: 'https://pv4y-pc.youzy.cn/static/img/icon_shijian@2x.8463f33f.png',
+          value: baseInfo.pointsOfBo,
+          desc: '博士点',
+          type: 'arr'
         }
       ]
     }
   },
   watch: {},
   methods: {
+    toWindow(url) {
+      window.open(url,'_blank')
+    },
     getEvaluateType() {
-      evaluateType({code:this.code}).then(res => {
+      evaluateType({ code: this.code }).then(res => {
         this.evaluateTypes = res.data
         this.evaluate_type = res.data[0].dictValue
         console.log(res)
       })
     },
     toMajorDetail(code) {
-      this.$router.push({path:'/career/plan/MajorDetail',query:{code:code}})
+      this.$router.push({ path: '/career/plan/MajorDetail', query: { code: code } })
     },
     getHit() {
-      saveUniversitiesHits({code:this.code}).then(res => {
+      saveUniversitiesHits({ code: this.code }).then(res => {
         console.log(res)
       })
     },
     getDetail() {
-      selectUniversityDetail({code: this.code}).then(res => {
+      this.loading = true
+      selectUniversityDetail({ code: this.code }).then(res => {
         this.baseInfo = res.data.baseInfo
         this.departments = res.data.departments
         this.professions = res.data.professions
         this.subjects = res.data.subjects
         this.subjectevaluates = res.data.subjectevaluates
-        this.activeSylId = this.subjects.sylSubjectsGroup? this.subjects.sylSubjectsGroup[0].id : ''
+        this.employmentreports =res.data.employmentreports
+        this.activeSylId = this.subjects.sylSubjectsGroup ? this.subjects.sylSubjectsGroup[0].id : ''
         console.log(res)
+      }).finally(_=>{
+        this.loading = false
       })
     }
   }
@@ -341,6 +405,7 @@ export default {
   .tabs-wrap {
     border-bottom: 1px solid #42b983;
     height: 40px;
+
     .tabs-item {
       cursor: pointer;
       padding: 0 33px;
@@ -358,34 +423,50 @@ export default {
       }
     }
   }
-  .format-tit{
+
+  .format-tit {
     border-left: 4px solid #47C6A2;
     padding-left: 10px;
     margin-bottom: 20px;
     font-size: 20px;
   }
-  .info-tips{
-    overflow : hidden;
+
+  .info-tips {
+    overflow: hidden;
     text-overflow: ellipsis;
     display: -webkit-box;
     -webkit-line-clamp: 4;
     -webkit-box-orient: vertical;
     word-wrap: break-word;
   }
-  .major-wrap{
+  .list-item{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1px solid #f2f2f2;
+    font-size: 14px;
+    padding-bottom: 10px;
+    .url:hover{
+      color: #42b983;
+    }
+  }
+  .major-wrap {
     text-align: left;
-    span{
+
+    span {
       display: inline-block;
       margin-right: 20px;
       margin-top: 10px;
       margin-bottom: 10px;
     }
-    a{
+
+    a {
       display: inline-block;
       margin-right: 20px;
       margin-top: 10px;
       margin-bottom: 10px;
-      &:hover{
+
+      &:hover {
         color: #42b983;
       }
     }

+ 134 - 0
src/views/career/plan/compoents/AllUniversity.vue

@@ -0,0 +1,134 @@
+<template>
+  <div v-loading="loading">
+      <filter-form :filter="filter_form"></filter-form>
+      <mx-search-group justify="end"  v-model="collegeName" @search="clickSuffix">
+        <p>共 <span class="f-primary">{{pageForm.total}}</span> 条</p>
+      </mx-search-group>
+      <el-row class="mt10 ">
+        <div v-if="pageForm.total > 0">
+          <div class="list-wrap pl30">
+            <div class="list-item fx-row mb30" v-for="item in collegeList">
+              <div class="img" >
+                <img style="width: 100%;height: 100%" :src="item.logo" alt="">
+              </div>
+              <div class="info ml20">
+                <div class="college_name pointer f-333 f20 mb5" @click="toDetail(item)">{{item.name}}</div>
+                <div class="tags" v-if="item.features">
+                  <span class="mr5 el-tag el-tag--info el-tag--plain" v-for="feature in item.features.split(',')">{{ feature }}</span>
+                </div>
+                <div class="college-desc mt5 f14 f-666">
+                  <p>{{`${item.location} ${item.cityName} ${item.type} / ${item.natureTypeCN} / ${item.managerType} `}}</p>
+                </div>
+              </div>
+              <div class="heat f12 f-666">
+                <p>排名</p>
+                <p class="mt3">{{ `第${item.ranking}名 / 综合指数${item.comScore}` }}</p>
+              </div>
+              <div class="heat f12  f-666">
+                <p>热度</p>
+                <p class="mt3">{{ (item.hits/10000).toFixed(1) }}万</p>
+              </div>
+            </div>
+          </div>
+          <pagination class="mt10" :total="pageForm.total" :autoScroll="false" @pagination="onChangePage"
+                      :page.sync="pageForm.pageNum"
+                      :limit.sync="pageForm.pageSize"
+          ></pagination>
+        </div>
+        <evaluation-empty v-else shadow title="暂无数据"></evaluation-empty>
+      </el-row>
+  </div>
+</template>
+
+<script>
+import FilterForm from '@/views/career/components/FilterForm';
+import { selectUniversityList } from '@/api/webApi/career-course'
+import MxSearchGroup from '@/components/MxSearch/mx-search-group'
+export default {
+  components: { MxSearchGroup,FilterForm },
+  data() {
+    return {
+      filter_form:{
+        location:'',
+        natureTypeCN:'',
+        type:'',
+        level:'',
+        features:'',
+        name:''
+      },
+      loading:false,
+      collegeName:'',
+      pageForm:{
+        pageSize:10,
+        pageNum:1,
+        total:0
+      },
+      filter_list:{},
+      collegeList:[],
+    }
+  },
+  watch: {
+    filter_form:{
+      immediate: true,
+      deep:true,
+      handler(val) {
+        this.getUniversityList()
+      }
+    },
+  },
+  methods: {
+    toDetail(item) {
+      console.log(item)
+      this.$router.push({path:'/career/plan/UniversityDetail',query: {code:item.code}})
+    },
+    onChangePage(page) {
+      this.pageForm.pageSize = page.limit
+      this.pageForm.pageNum = page.page
+      this.getUniversityList()
+    },
+    clickSuffix() {
+      this.filter_form.name = this.collegeName
+    },
+    getUniversityList(){
+      this.loading = true
+      // console.log(params)
+      selectUniversityList({ ...this.filter_form,
+        pageNum:this.pageForm.pageNum,
+        pageSize:this.pageForm.pageSize,
+      }).then(res=>{
+        this.pageForm.total =res.total
+        this.collegeList =res.rows
+      }).finally(() => {
+        this.loading = false
+      })
+    },
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.heat{
+  width: 200px;
+  height: 72px;
+  padding-top: 22px;
+  color: #666;
+}
+.info{
+  width: 400px;
+}
+.img{
+  flex-shrink: 0;
+  width: 72px;
+  height: 72px;
+}
+.tags {
+  .el-tag{
+    height: 16px;
+    line-height: 16px;
+    font-size: 12px;
+    color: #909399;
+  }
+}
+
+
+</style>

+ 4 - 3
src/views/career/plan/compoents/EnrollList.vue

@@ -1,11 +1,11 @@
 <template>
-   <div v-loading="loading">
-     <div v-if="!showDetail">
+   <div >
+     <div v-if="!showDetail" v-loading="loading">
        <mx-search-group v-model="title" :span="8" placeholder="请输入内容" @search="getEnrollBrochure">
          <div class="f-666 f14 ml10">
            共 <span class="f-primary">{{ total }}</span>  条
          </div> </mx-search-group>
-       <div class="guide-list" >
+       <div class="guide-list" v-if="enrollList.length" >
          <el-row class="guid-item" v-for="item in enrollList">
            <el-col :span="20">
              <a class="f-333 f16 text-ellipsis" @click="toDetail(item)">
@@ -20,6 +20,7 @@
                      :limit.sync="pageForm.pageSize"
          ></pagination>
        </div>
+       <evaluation-empty class="mt20" v-else shadow title="暂无数据"></evaluation-empty>
      </div>
      <div v-else>
        <div class="jc-between fx-row ai-center mb20">

+ 211 - 0
src/views/career/plan/compoents/RankUniversity.vue

@@ -0,0 +1,211 @@
+<template>
+  <div  v-loading="loading">
+    <div class="filter">
+      <el-row class="radioInput">
+        <div>
+          <span class="radiaTitle">排名类型:</span>
+        </div>
+        <el-radio-group v-model="filter_form.type">
+          <el-radio-button v-for="item in filter_list.types" :key="item" :label="item" style="margin-bottom:10px"
+          ></el-radio-button>
+        </el-radio-group>
+      </el-row>
+      <el-row class="radioInput">
+        <div>
+          <span class="radiaTitle">排名年份:</span>
+        </div>
+        <el-radio-group v-model="filter_form.year">
+          <el-radio-button v-for="item in filter_list.years" :key="item" :label="item" style="margin-bottom:10px"
+          ></el-radio-button>
+        </el-radio-group>
+      </el-row>
+      <mx-search-group justify="end"  v-model="collegeName" @search="clickSuffix">
+        <p>共 <span class="f-primary">{{pageForm.total}}</span> 条</p>
+      </mx-search-group>
+    </div>
+    <el-row class="mt10 ">
+      <div v-if="pageForm.total > 0">
+        <div class="list-wrap pl30">
+          <div class="list-item fx-row mb30" v-for="item in collegeList">
+            <div class="img" >
+              <img style="width: 100%;height: 100%" :src="item.universities.logo" alt="">
+            </div>
+            <div class="info ml20">
+              <div class="college_name pointer f-333 f20 mb5" @click="toDetail(item)">{{item.collegeName}}</div>
+              <div class="tags" v-if="item.universities.features">
+                <span class="mr5 el-tag el-tag--info el-tag--plain" v-for="feature in item.universities.features.split(',')">{{ feature }}</span>
+              </div>
+              <div class="college-desc mt5 f14 f-666">
+                <p>{{`${item.universities.location} ${item.universities.cityName} ${item.universities.type} / ${item.universities.natureTypeCN} / ${item.universities.managerType} `}}</p>
+              </div>
+            </div>
+            <div class="heat f12 f-666">
+              <p>综合指数</p>
+              <p class="mt3">{{item.universities.comScore }}</p>
+            </div>
+            <div class="heat f12  f-666">
+              <p>热度</p>
+              <p class="mt3">{{ (item.universities.hits/10000).toFixed(1) }}万</p>
+            </div>
+          </div>
+        </div>
+        <pagination class="mt10" :total="pageForm.total" :autoScroll="false" @pagination="onChangePage"
+                    :page.sync="pageForm.pageNum"
+                    :limit.sync="pageForm.pageSize"
+        ></pagination>
+      </div>
+
+      <evaluation-empty v-else shadow title="暂无数据"></evaluation-empty>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState } from 'vuex';
+import { rankingFilter,universitiesRanking } from '@/api/webApi/career-course'
+import MxSearchGroup from '@/components/MxSearch/mx-search-group'
+export default {
+  components: { MxSearchGroup },
+  data() {
+    return {
+      filter_form:{
+        type:'',
+        year:'',
+        collegeName:''
+      },
+      loading:false,
+      pageForm:{
+        pageSize:10,
+        pageNum:1,
+        total:0
+      },
+      collegeName: '',
+      filter_list:{},
+      collegeList:[],
+    }
+  },
+  created() {
+    this.getRankingFilter()
+  },
+  watch: {
+    filter_form:{
+      immediate:false,
+      deep:true,
+      handler(val) {
+        console.log(111111111)
+        console.log(val)
+        this.getUniversitiesRanking()
+      }
+    },
+  },
+  methods: {
+    clickSuffix() {
+      this.filter_form.collegeName = this.collegeName
+    },
+     getRankingFilter() {
+       rankingFilter().then(res =>{
+        this.filter_list = res.data
+        this.filter_form.type = res.data.types[0]
+        this.filter_form.year = res.data.years[0]
+        console.log(res)
+      })
+    },
+    getUniversitiesRanking(){
+      this.loading = true
+      universitiesRanking({...this.filter_form, pageNum:this.pageForm.pageNum,
+        pageSize:this.pageForm.pageSize,}).then(res =>{
+          this.collegeList  =res.rows
+          this.pageForm.total = res.total
+        console.log(res)
+      }).finally(_=>{
+        this.loading = false
+      })
+    },
+    toDetail(item) {
+      console.log(item)
+      this.$router.push({path:'/career/plan/UniversityDetail',query: {code:item.collegeCode}})
+    },
+    onChangePage(page) {
+      this.pageForm.pageSize = page.limit
+      this.pageForm.pageNum = page.page
+      this.getUniversitiesRanking()
+    },
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.heat{
+  width: 200px;
+  height: 72px;
+  padding-top: 22px;
+  color: #666;
+}
+.info{
+  width: 400px;
+}
+.img{
+  flex-shrink: 0;
+  width: 72px;
+  height: 72px;
+}
+.tags {
+  .el-tag{
+    height: 16px;
+    line-height: 16px;
+    font-size: 12px;
+    color: #909399;
+  }
+}
+.radioInput ::v-deep {
+  display: flex;
+
+  .el-radio-button .el-radio-button__inner {
+    border-radius: 4px !important;
+    border: none;
+    padding: 5px 10px !important;
+    font-weight: 400;
+    font-family: PingFangSC-Regular, PingFang SC;
+  }
+
+  .el-radio-button__orig-radio:checked + .el-radio-button__inner {
+    box-shadow: none;
+  }
+
+  .radiaTitle {
+    display: inline-block;
+    width: 80px;
+    font-size: 14px;
+    text-align: right;
+    margin-top: 2px;
+    margin-right: 10px;
+  }
+}.radioInput ::v-deep {
+   display: flex;
+
+   .el-radio-button .el-radio-button__inner {
+     border-radius: 4px !important;
+     border: none;
+     padding: 5px 10px !important;
+     font-weight: 400;
+     font-family: PingFangSC-Regular, PingFang SC;
+   }
+
+   .el-radio-button__orig-radio:checked + .el-radio-button__inner {
+     box-shadow: none;
+   }
+
+   .radiaTitle {
+     display: inline-block;
+     width: 80px;
+     font-size: 14px;
+     text-align: right;
+     margin-top: 2px;
+     margin-right: 10px;
+   }
+ }
+.radioInput ::v-deep {
+  background-color: #ffffff;font-size: 14px;padding:5px;
+}
+
+</style>

+ 73 - 46
src/views/career/plan/compoents/UniversityStyle.vue

@@ -1,28 +1,43 @@
 <template>
   <div class="univerty" v-loading="loading">
     <!-- VR -->
-<!--    <div class="image-item">-->
-<!--      <div class="cover-image vr" >-->
-<!--          <div class="colleges-imgs-mask">-->
-<!--            <i class="iconfont icon-vr" style="font-size: 28px"></i>-->
-<!--          </div>-->
-<!--      </div>-->
-<!--      <p class="mt15 text-overflow-ellipsis f14 lh20">VR校园</p>-->
-<!--    </div>-->
-<!--    &lt;!&ndash; 视频 &ndash;&gt;-->
-<!--    <div class="image-item">-->
-<!--      <div class="cover-image video" >-->
-<!--        <div class="colleges-imgs-mask">-->
-<!--          <i class="iconfont icon-bofang" style="font-size: 28px"></i>-->
-<!--        </div>-->
-<!--      </div>-->
-<!--      <p class="mt15 text-overflow-ellipsis f14 lh20">清华大学</p>-->
-<!--    </div>-->
-<!--     图片列表-->
-    <div class="image-item" v-for="item in senceList">
-        <el-image class="cover-image"  fit="fill" :src="item.url" :preview-src-list="srcList"></el-image>
-      <p class="mt15 text-overflow-ellipsis f14 lh20">{{ item.description }}</p>
+    <!--    <div class="image-item">-->
+    <!--      <div class="cover-image vr" >-->
+    <!--          <div class="colleges-imgs-mask">-->
+    <!--            <i class="iconfont icon-vr" style="font-size: 28px"></i>-->
+    <!--          </div>-->
+    <!--      </div>-->
+    <!--      <p class="mt15 text-overflow-ellipsis f14 lh20">VR校园</p>-->
+    <!--    </div>-->
+    <!--    &lt;!&ndash; 视频 &ndash;&gt;-->
+    <!--    <div class="image-item">-->
+    <!--      <div class="cover-image video" >-->
+    <!--        <div class="colleges-imgs-mask">-->
+    <!--          <i class="iconfont icon-bofang" style="font-size: 28px"></i>-->
+    <!--        </div>-->
+    <!--      </div>-->
+    <!--      <p class="mt15 text-overflow-ellipsis f14 lh20">清华大学</p>-->
+    <!--    </div>-->
+    <!--     图片列表-->
+    <div class="image-wrap" v-if="senceList.length">
+      <div class="image-item" v-for="item in senceList">
+        <div v-if="item.type == 1" class="cover-image vr" @click="toVR(item.url)">
+          <el-image class="cover-image" fit="fill" :src="item.coverUrl"  ></el-image>
+          <p class="mt10 text-overflow-ellipsis f14 lh20">VR校园</p>
+          <div class="colleges-imgs-mask">
+            <i class="iconfont icon-vr" style="font-size: 28px"></i>
+          </div>
+        </div>
+        <div v-if="item.type == 3">
+          <el-image class="cover-image" fit="fill" :src="item.url" :preview-src-list="srcList"></el-image>
+          <p class="mt10 text-overflow-ellipsis f14 lh20">{{ item.description }}</p>
+        </div>
+
+      </div>
     </div>
+
+    <evaluation-empty class="mt20" v-else shadow title="暂无数据"></evaluation-empty>
+
   </div>
 </template>
 
@@ -31,10 +46,10 @@
 import { universitiesStyle } from '@/api/webApi/career-course'
 
 export default {
-  props:{
-    code:{
-      type:String || Number,
-      default:'',
+  props: {
+    code: {
+      type: String || Number,
+      default: ''
     }
   },
   created() {
@@ -43,46 +58,50 @@ export default {
   data() {
     return {
       senceList: [],
-      loading:false
+      loading: false
     }
   },
-  computed:{
+  computed: {
     srcList() {
-      if(!this.senceList.length) return []
-      return this.senceList.map(item => {
+      if (!this.senceList.length) return []
+      return this.senceList.filter(item => {
+          return item.type == 3
+      }).map(item => {
         return item.url
       })
     }
   },
-  methods:{
-    getUniversitiesStyle(){
+  methods: {
+    getUniversitiesStyle() {
       this.loading = true
-      universitiesStyle({code:this.code}).then(res =>{
+      universitiesStyle({ code: this.code }).then(res => {
         this.senceList = res.data
         console.log(res)
       })
-        .finally(_=>{
-        this.loading = false
-      })
+        .finally(_ => {
+          this.loading = false
+        })
+    },
+    toVR(url) {
+      window.open(url,"_blank");
     }
   }
 }
 </script>
 
 <style scoped lang="scss">
-.univerty{
-  overflow: hidden;
+.univerty {
+  overflow: auto;
 }
-.image-item:nth-of-type(5n) {
-  margin-right: 0;
-}
-.image-item{
+
+.image-item {
   width: 217px;
   cursor: pointer;
-  margin-right: 30px;
+  margin-right: 28px;
   margin-top: 20px;
   float: left;
   color: #333;
+
   .cover-image {
     width: 217px;
     height: 120px;
@@ -93,27 +112,35 @@ export default {
     position: relative;
     cursor: pointer;
   }
-  .vr{
+
+  .image-item:nth-of-type(5n) {
+    margin-right: 0;
+  }
+
+  .vr {
     background-image: url("http://toc.cn-bj.ufileos.com/media/files/20210414/9d02bb82.png");
   }
+
   .video {
     background-image: url("http://img1.youzy.cn/content/media/thumbs/p00176063.jpeg");
   }
+
   .colleges-imgs-mask {
     position: absolute;
     top: 0;
     left: 0;
     width: 217px;
     height: 120px;
-    background: rgba(0,0,0,.5);
+    background: rgba(0, 0, 0, .5);
     color: #fff;
     text-align: center;
     line-height: 120px;
     border-radius: 4px;
     overflow: hidden;
   }
-  &:hover{
-      color: #42b983;
+
+  &:hover {
+    color: #42b983;
   }
 }
 </style>

+ 6 - 1
src/views/career/zhiyuan/ShiftLine.vue

@@ -1,5 +1,5 @@
 <template>
-  <div style="padding:24px 8%;background-color:#f7f7f7;">
+  <div class="shiftLine">
     <el-tabs v-model="activeName" stretch>
       <el-tab-pane label="院校投档线" name="universities"></el-tab-pane>
       <el-tab-pane label="专业投档线" name="colleges"></el-tab-pane>
@@ -24,5 +24,10 @@
       }
     }
 </script>
+<style scoped>
+.shiftLine{
+  padding:20px 40px;
+}
+</style>
 
 

+ 20 - 11
src/views/career/zhiyuan/batch.vue

@@ -25,7 +25,7 @@
     </el-card>
     <el-card>
       <div>
-        <mx-condition ref="condition" :query-params="queryParams" @query="handleQuery"
+        <mx-condition ref="condition" :query-params="queryParams" :require-fields="requireFields" @query="handleQuery"
                       @invalid="handleInvalidQuery"></mx-condition>
       </div>
       <div class="content">
@@ -41,6 +41,7 @@
 import {  pckzxList } from "@/api/webApi/career-other";
 import MxCondition from '@/components/MxCondition/mx-condition'
 import Pagination from '@/components/Pagination/index'
+import { mapGetters } from 'vuex'
 export default {
   components:  {
     MxCondition,
@@ -52,32 +53,40 @@ export default {
         location: '',
         yearAdmission: '',
       },
+      requireFields:['location'],
       backimg:
         "url(" + require("@/assets/images/career/icon_colleges.png") + ")",
       batchData: [],
-      pageForm: { pageNum: 1, pageSize: 10, total: 0 },
+      pageForm: { pageNum: 1, pageSize: 20, total: 0 },
       propDefines: {
-        location: {
-          label: "地域",
-        },
         year: {
           label: "年份",
         },
+        location: {
+          label: "省市",
+        },
+
         typeName: {
-          label: "批次",
+          label: "批次/段",
+        },
+        course: {
+          label: "科目",
         },
-        score1: {
-          label: "文科",
+        score: {
+          label: "控制分数线",
         },
-        score2: {
-          label: "理科",
+        pressureRange: {
+          label: "压线分区间",
         },
       }
     };
   },
+  computed:{
+    ...mapGetters(['currentUser']),
+  },
   created() {
-    this.getYears();
     this.getBatchList();
+    this.queryParams.location = this.currentUser.provinceName
   },
   methods: {
     handleQuery() {

+ 65 - 126
src/views/career/zhiyuan/components/recommend.vue

@@ -2,73 +2,22 @@
   <div style="width: 80%; margin:0 auto">
     <div class="zhiyuan-filter">
       <div class="header">
-        <h3 class="f-666">您的选考科目为:<em>{{formSubject.firstSubject }}<em v-for="item in formSubject.lastSubject">,{{item}}</em> </em>, 请手动选择志愿</h3>
+        <h3 class="f-666">您的选考科目为:<em>{{ formSubject.firstSubject }}<em v-for="item in formSubject.lastSubject"
+        >,{{ item }}</em> </em>, 请手动选择志愿</h3>
       </div>
       <div class="filters">
-<!--        <div class="filter">-->
-<!--          <div class="filter_name">热门城市:</div>-->
-<!--          <div class="items fx-row">-->
-<!--            <div class="no_limited">-->
-<!--              &lt;!&ndash;  no_limited 隐藏 选中框  &ndash;&gt;-->
-<!--              <el-checkbox @change="change('city',$event)"  v-model="cityIsAll" >不限</el-checkbox>-->
-<!--            </div>-->
-<!--            <el-checkbox-group v-model="filter_form.checkedCities">-->
-<!--              <el-checkbox v-for="city in cities" :label="city" :key="city">{{city}}</el-checkbox>-->
-<!--            </el-checkbox-group>-->
-<!--          </div>-->
-<!--        </div>-->
-        <div class="filter">
-          <div class="filter_name">院校省份:</div>
-          <div class="items fx-row">
-            <div class="no_limited">
-              <el-checkbox @change="change('province',$event)"  v-model="isAll.province" >不限</el-checkbox>
-            </div>
-            <el-checkbox-group v-model="filter_form.provinces">
-              <el-checkbox v-for="provinces in filters.locations" :label="provinces" :key="provinces">{{provinces}}</el-checkbox>
-            </el-checkbox-group>
-          </div>
-        </div>
-        <div class="filter">
-          <div class="filter_name">专业类别:</div>
-          <div class="items fx-row">
-            <div class="no_limited">
-              <el-checkbox @change="change('major',$event)"  v-model="isAll.major" >不限</el-checkbox>
-            </div>
-            <el-radio-group v-model="filter_form.major">
-              <el-radio v-for="major in filters.marjors" :label="major.value" :key="major.value">{{major.label}}</el-radio>
-            </el-radio-group>
-          </div>
-        </div>
-        <div class="filter">
-          <div class="filter_name">院校类型:</div>
-          <div class="items fx-row">
-            <div class="no_limited">
-              <el-checkbox @change="change('type',$event)"  v-model="isAll.type" >不限</el-checkbox>
-            </div>
-            <el-checkbox-group v-model="filter_form.type">
-              <el-checkbox v-for="filter in filters.types" :label="filter" :key="filter">{{filter}}</el-checkbox>
-            </el-checkbox-group>
-          </div>
-        </div>
-        <div class="filter">
-          <div class="filter_name">院校特性:</div>
-          <div class="items fx-row">
-            <div class="no_limited">
-              <el-checkbox @change="change('feature',$event)"  v-model="isAll.feature" >不限</el-checkbox>
-            </div>
-            <el-checkbox-group v-model="filter_form.feature">
-              <el-checkbox v-for="feature in localFilters.features" :label="feature.value" :key="feature.value">{{feature.label}}</el-checkbox>
-            </el-checkbox-group>
-          </div>
-        </div>
+        <!-- 院校筛选条件 -->
+        <filter-form :filter="filter_form"></filter-form>
+        <!--其他筛选 -->
         <div class="filter">
           <div class="filter_name">推荐类型:</div>
           <div class="items fx-row">
             <div class="no_limited">
-              <el-checkbox @change="change('pick',$event)"  v-model="isAll.pickType" >不限</el-checkbox>
+              <el-checkbox @change="change('pick',$event)" v-model="isAll.pickType">不限</el-checkbox>
             </div>
             <el-radio-group v-model="filter_form.pickType">
-              <el-radio v-for="pick in localFilters.picks" :label="pick.value" :key="pick.value">{{pick.label}}</el-radio>
+              <el-radio v-for="pick in localFilters.picks" :label="pick.value" :key="pick.value">{{ pick.label }}
+              </el-radio>
             </el-radio-group>
           </div>
         </div>
@@ -77,106 +26,85 @@
     <div class="zhiyuan-list">
       <mx-table :propDefines="propDefines" :rows="rows"></mx-table>
     </div>
-    <!--    <span @click="close">关闭</span>-->
   </div>
 </template>
 <script>
 import { zytbFilter } from '@/api/webApi/webQue'
-
+import FilterForm from '@/views/career/components/FilterForm';
 export default {
-  props:{
+  props: {
     formSubject: {
       type: Object,
       default: {}
     },
     batch: {
       type: Object,
-      default:{}
+      default: {}
     }
   },
+  components:{
+    FilterForm
+  },
   data() {
     return {
-      filter_form: {
-        provinces: [],
-        major: '',
-        type:[],
-        feature:[],
-        pickType: ''
+      filter_form:{
+        location:'',
+        natureTypeCN:'',
+        type:'',
+        level:'',
+        features:'',
       },
       localFilters: {
-        features:[
-          {label: '一流大学建设高校',value:'ylxx'},
-          {label: '一流学科建设高校',value:'ylxk'},
-          {label: '研究生院',value:'yjsy'},
-          {label: '独立学院',value:'dlxy'},
-          {label: '民办高校',value:'mbgx'}
-        ],
-        picks:[
-          {label: '冲刺型',value:'0'},
-          {label: '稳妥型',value:'1'},
-          {label: '保守型',value:'2'},
-        ],
+        picks: [
+          { label: '冲刺型', value: '0' },
+          { label: '稳妥型', value: '1' },
+          { label: '保守型', value: '2' }
+        ]
       },
-      filters:{},
-      rows:[{}],
+      filters: {},
+      rows: [{}],
       propDefines: {
-        name:{
-          label:'院校名称'
+        name: {
+          label: '院校名称'
         },
-        local:{
-          label:'所在地'
+        local: {
+          label: '所在地'
         },
-        subject:{
-          label:'选科要求'
+        subject: {
+          label: '选科要求'
         },
-        count:{
-          label:'招生人数'
+        count: {
+          label: '招生人数'
         },
-        year:{
-          label:'年份'
+        year: {
+          label: '年份'
         },
-        action:{
-          label:'填报'
+        action: {
+          label: '填报'
         }
       }
     }
   },
   created() {
     this.$nextTick(_ => zytbFilter(this.batch.batch).then((res) => {
-      this.filters = res.data;
+      this.filters = res.data
     }))
   },
   computed: {
     isAll: {
       get() {
         return {
-          type: !this.filter_form.type.length,
           pickType: !this.filter_form.pickType,
-          feature: !this.filter_form.feature.length,
-          province: !this.filter_form.provinces.length,
-          major: !this.filter_form.major.length,
         }
       },
       set() {
       }
     }
   },
-  methods:{
-    change(val,$event) {
-      if($event) {
-        if(val == 'type') {
-          this.filter_form.type = []
-        }
-        if(val == 'province') {
-          this.filter_form.provinces = []
-        }
-        if(val == 'feature') {
-          this.filter_form.feature = []
-        }
-        if(val == 'major') {
-          this.filter_form.major = ''
-        }
-        if(val == 'pick') {
+  methods: {
+    change(val, $event) {
+      if ($event) {
+        if (val == 'pick') {
           this.filter_form.pickType = ''
         }
       }
@@ -189,11 +117,14 @@ export default {
 .more span {
   margin-right: 10px;
 }
-.filters{
-  padding: 0 20px;
+
+.filters {
+  padding: 10px 0px;
   border: 1px solid #eee;
+  margin-bottom: 20px;
 }
-.filter_name{
+
+.filter_name {
   box-sizing: border-box;
   width: 70px;
   font-size: 14px;
@@ -202,20 +133,25 @@ export default {
   padding: 6px 0 6px 0;
   margin-right: 10px;
 }
-.zhiyuan-filter .filters .filter .items .no_limited{
+
+.zhiyuan-filter .filters .filter .items .no_limited {
   margin-right: 10px;
 }
+
 .zhiyuan-filter .filters .filter .items .no_limited >>> .el-checkbox__input {
   display: none;
 }
-.filters .filter{
-  padding: 10px  0;
+
+.filters .filter {
+  padding: 10px 0;
   display: flex;
   border-bottom: 1px solid #eee;
 }
-.filters .filter:last-child{
+
+.filters .filter:last-child {
   border-bottom: 0;
 }
+
 .zhiyuan-filter .filters .filter >>> .el-checkbox, .zhiyuan-filter .filters .filter >>> .el-radio {
   -webkit-box-sizing: border-box;
   box-sizing: border-box;
@@ -223,15 +159,18 @@ export default {
   padding: 8px 8px;
   margin: 0;
 }
-em{
+
+em {
   font-weight: 400;
   font-style: normal;
 }
->>>  .el-input--medium .el-input__inner{
+
+>>> .el-input--medium .el-input__inner {
   height: 30px;
   line-height: 30px;
 }
->>> .el-input{
+
+>>> .el-input {
   width: 260px;
 }
 </style>

+ 26 - 9
src/views/career/zhiyuan/yfyd.vue

@@ -18,14 +18,21 @@
       </div>
     </el-card>
     <el-card>
-      <mx-search-group class="mb10" justify="end" :span="6" v-model="score" placeholder="请输入分数" @search="getList"
+      <mx-search-group class="mb10" justify="end" :span="6" v-model="scoreRank" placeholder="请输入分数或位次" @search="getList"
       ></mx-search-group>
-      <mx-condition ref="condition" :query-params="queryParams" @query="handleQuery"
+      <mx-condition ref="condition" :query-params="queryParams" :require-fields="requireFields" @query="handleQuery"
                     @invalid="handleInvalidQuery"
       ></mx-condition>
       <div class="content">
         <div class="table-wrap" v-loading="loading">
-          <mx-table :rows="batchData" :propDefines="propDefines"></mx-table>
+          <mx-table :rows="batchData" :propDefines="propDefines">
+            <template #rank="{row}">
+              <p>{{row.highestRank == row.lowestRank ? `${row.highestRank}` : `${row.highestRank}~${row.lowestRank}`}}</p>
+            </template>
+            <template #score="{row}">
+              <p>{{row.score == row.maxScore ? `${row.score}` : `${row.score}~${row.maxScore}`}}</p>
+            </template>
+          </mx-table>
         </div>
 
         <pagination :total="pageForm.total" :autoScroll="false" @pagination="onChangePage" :page.sync="pageForm.pageNum"
@@ -41,7 +48,7 @@ import { yfydList } from '@/api/webApi/career-other'
 import MxCondition from '@/components/MxCondition/mx-condition'
 import MxSearchGroup from '@/components/MxSearch/mx-search-group'
 import Pagination from '@/components/Pagination'
-
+import { mapGetters } from 'vuex'
 export default {
   components: {
     MxCondition,
@@ -56,11 +63,12 @@ export default {
         yfydYear: '',
         yfydMode: ''
       },
-      pageForm: { pageNum: 1, pageSize: 10, total: 0 },
+      requireFields:['yfydLocation'],
+      pageForm: { pageNum: 1, pageSize: 20, total: 0 },
       backimg:
         'url(' + require('@/assets/images/career/icon_colleges.png') + ')',
       batchData: [],
-      score: '',
+      scoreRank: '',
       propDefines: {
         location: {
           label: '地域'
@@ -72,7 +80,12 @@ export default {
           label: '科类'
         },
         score: {
-          label: '分数'
+          label: '分数',
+          slot:'score'
+        },
+        lowestRank: {
+          label: '位次',
+          slot:'rank'
         },
         num: {
           label: '人数'
@@ -84,10 +97,14 @@ export default {
     }
   },
   created() {
+    this.queryParams.yfydLocation = this.currentUser.provinceName
+  },
+  computed:{
+    ...mapGetters(['location','currentUser']),
   },
   methods: {
     getList() {
-      if (this.score == '') return
+      if (this.scoreRank == '') return
       this.getYfydList()
     },
     handleInvalidQuery() {
@@ -108,7 +125,7 @@ export default {
         year: this.queryParams.yfydYear,
         location: this.queryParams.yfydLocation,
         mode: this.queryParams.yfydMode,
-        score: this.score,
+        scoreRank: this.scoreRank,
         ...this.pageForm
       }).then((res) => {
         this.batchData = res.rows

+ 21 - 15
src/views/system/user/profile/round-select.vue

@@ -19,18 +19,22 @@
       </el-row>
     </el-card>
     <!--  自选专业 推荐专业  -->
-    <select-subject class="mt20" :evaluationMajors="evaluationMajors" :optionalMajors="optionalMajors"
-                    :list="activeModel ? activeModel.models : []"></select-subject>
-    <!--  选科报名表  -->
-    <el-card class="box-card mt20">
-      <template #header>
-        <elective-generation-steps v-if="selectObj" v-model="activeStep" :generation="generation"
-                                   disable-hidden-feature></elective-generation-steps>
-      </template>
-      <report-table v-if="activeModel&&activeModel.models" :generation="generation"
-                    :optional-majors="optionalMajors"></report-table>
-      <evaluation-empty v-else :shadow="false" :title="emptyTitle"></evaluation-empty>
-    </el-card>
+    <div v-if="allowSelect" >
+      <select-subject class="mt20" :evaluationMajors="evaluationMajors" :optionalMajors="optionalMajors"
+                      :list="activeModel ? activeModel.models : []"></select-subject>
+      <!--  选科报名表  -->
+      <el-card class="box-card mt20" >
+        <template #header>
+          <elective-generation-steps v-if="selectObj" :generation="generation"
+                                     disable-hidden-feature></elective-generation-steps>
+        </template>
+        <report-table v-if="activeModel&&activeModel.models" :generation="generation"
+                      :optional-majors="optionalMajors"></report-table>
+        <evaluation-empty v-else :shadow="false" :title="emptyTitle"></evaluation-empty>
+      </el-card>
+    </div>
+
+    <evaluation-empty v-else class="mt20" title="选科未开启"></evaluation-empty>
     <el-card class="mt20">
       <template #header>选科报告</template>
       <el-button v-if="false" @click="goReportDemo">选科报告1</el-button>
@@ -151,9 +155,6 @@ export default {
     try {
       this.loading = true
       this.loadStudentSelected()
-      this.loadStudentElectiveModels()
-      this.getOptionalMajors()
-      this.getRecommendMajor()
     } finally {
       this.loading = false
     }
@@ -193,6 +194,11 @@ export default {
         status.preferenceCount = res.data.preferenceCount || 3
         this.selectObj = res.data['selectResult']
         this.allowSelect = res.data.allowSelect
+        if(this.allowSelect){
+          this.loadStudentElectiveModels()
+          this.getOptionalMajors()
+          this.getRecommendMajor()
+        }
       })
     },
     goReportDemo() {