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

选科查询---院校库

shilipojs преди 3 години
родител
ревизия
b71254b796

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

@@ -86,3 +86,12 @@ export function isNewCollegeExam(params) {
       params: params
   })
 }
+
+// 招生简章
+export function enrollBrochure(params) {
+  return request({
+    url: '/front/university/getUniversitiesEnrollBrochure',
+    method: 'get',
+    params: params
+  })
+}

+ 116 - 0
src/views/career/components/FilterForm.vue

@@ -0,0 +1,116 @@
+<template>
+  <div>
+    <el-row class="radioInput">
+      <div>
+        <span class="radiaTitle">院校省份:</span>
+      </div>
+      <el-radio-group v-model="filter.location">
+        <el-radio-button label="">所有</el-radio-button>
+        <el-radio-button v-for="item in filter_list.locations" :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.type">
+        <el-radio-button label="">所有</el-radio-button>
+        <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.features">
+        <el-radio-button label="">所有</el-radio-button>
+        <el-radio-button v-for="item in filter_list.features" :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.natureTypeCN">
+        <el-radio-button label="">所有</el-radio-button>
+        <el-radio-button v-for="item in filter_list.natureTypes" :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.level">
+        <el-radio-button label="">所有</el-radio-button>
+        <el-radio-button v-for="item in filter_list.levels" :key="item" :label="item" style="margin-bottom:10px"
+        ></el-radio-button>
+      </el-radio-group>
+    </el-row>
+  </div>
+</template>
+<script>
+import { universityFilters } from '@/api/webApi/career-course'
+
+export default {
+  props: {
+    filter: {
+      type: Object,
+      default: {}
+    }
+  },
+  created() {
+    this.getFilter()
+  },
+  data() {
+    return {
+      filter_list: {}
+    }
+  },
+  methods:{
+    getFilter() {
+      universityFilters().then(res => {
+        this.filter_list = res.data
+      })
+    },
+  }
+}
+</script>
+<style scoped lang="scss">
+.radioInput ::v-deep {
+  background-color: #ffffff;font-size: 14px;padding:5px;
+  .el-radio {
+    .el-radio__input {
+      display: none;
+    }
+  }
+}
+
+.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;
+  }
+}
+</style>

+ 2 - 2
src/views/career/components/MajorChoiceDialog.vue

@@ -22,10 +22,10 @@
               <el-checkbox-group v-model="selectCharacteristic">
                 <el-checkbox
                   class="check-box-item"
-                  :label="item.code"
+                  :label="item"
                   v-for="(item, index) in characteristicList"
                   :key="index"
-                  >{{ item.label }}</el-checkbox
+                  >{{ item }}</el-checkbox
                 >
               </el-checkbox-group>
             </div>

+ 7 - 99
src/views/career/plan/UniversitiesColleges.vue

@@ -6,51 +6,7 @@
       <hr class="layui-bg-orange" style="width:40px;height:4px;margin-top:10px;" />
     </el-card>
     <el-card style="background-color: #ffffff;font-size: 14px;padding:5px;">
-      <el-row class="radioInput">
-        <div>
-          <span class="radiaTitle">院校省份:</span>
-        </div>
-        <el-radio-group v-model="filter_form.location">
-          <el-radio-button label="">所有</el-radio-button>
-          <el-radio-button v-for="item in filter_list.locations" :key="item" :label="item" style="margin-bottom:10px"></el-radio-button>
-        </el-radio-group>
-      </el-row>
-      <el-row class="radioInput" style="background-color: #ffffff;font-size: 14px;padding:5px;">
-        <div>
-          <span class="radiaTitle">院校类型:</span>
-        </div>
-        <el-radio-group v-model="filter_form.type">
-          <el-radio-button label="">所有</el-radio-button>
-          <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" style="background-color: #ffffff;font-size: 14px;padding:5px;">
-        <div>
-          <span class="radiaTitle">院校层次:</span>
-        </div>
-        <el-radio-group v-model="filter_form.features">
-          <el-radio-button label="">所有</el-radio-button>
-          <el-radio-button v-for="item in filter_list.features" :key="item" :label="item" style="margin-bottom:10px"></el-radio-button>
-        </el-radio-group>
-      </el-row>
-      <el-row class="radioInput" style="background-color: #ffffff;font-size: 14px;padding:5px;">
-        <div>
-          <span class="radiaTitle">学历层次:</span>
-        </div>
-        <el-radio-group v-model="filter_form.level">
-          <el-radio-button label="">所有</el-radio-button>
-          <el-radio-button v-for="item in filter_list.levels" :key="item" :label="item" style="margin-bottom:10px"></el-radio-button>
-        </el-radio-group>
-      </el-row>
-      <el-row class="radioInput"  style="background-color: #ffffff;font-size: 14px;padding:5px;">
-        <div>
-          <span class="radiaTitle">办学类型:</span>
-        </div>
-        <el-radio-group v-model="filter_form.natureTypeCN">
-          <el-radio-button label="">所有</el-radio-button>
-          <el-radio-button v-for="item in filter_list.natureTypes" :key="item" :label="item" style="margin-bottom:10px"></el-radio-button>
-        </el-radio-group>
-      </el-row>
+      <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>
@@ -95,11 +51,12 @@
 <script>
 import { mapState } from 'vuex';
 import UniversitiesTable from '@/views/career/components/UniversitiesTable';
-import { selectUniversityList, universityFilters } from '@/api/webApi/career-course'
+import FilterForm from '@/views/career/components/FilterForm';
+import { selectUniversityList } from '@/api/webApi/career-course'
 import MxSearchGroup from '@/components/MxSearch/mx-search-group'
 export default {
   name: "UniversitiesColleges",
-  components: { MxSearchGroup, UniversitiesTable },
+  components: { MxSearchGroup, UniversitiesTable,FilterForm },
   data() {
     return {
       backimg: 'url(' + require('@/assets/images/career/icon_colleges.png') + ')',
@@ -142,15 +99,6 @@ export default {
           this.getUniversityList()
       }
     },
-    'universityParams.locationsRes': {
-      handler(val) {
-        this.universityParams.name = ''
-        this.univerName = ''
-      }
-    }
-  },
-  created() {
-    this.getFilter()
   },
   methods: {
     toDetail(item) {
@@ -163,12 +111,7 @@ export default {
       this.getUniversityList()
     },
     clickSuffix() {
-      this.filter_form.name = this.univerName
-    },
-    getFilter() {
-      universityFilters().then(res => {
-        this.filter_list = res.data
-      })
+      this.filter_form.name = this.collegeName
     },
     getUniversityList(){
       this.loading = true
@@ -202,6 +145,7 @@ export default {
   width: 400px;
 }
 .img{
+  flex-shrink: 0;
   width: 72px;
   height: 72px;
 }
@@ -213,42 +157,6 @@ export default {
     color: #909399;
   }
 }
-.radioInput ::v-deep {
-  .el-radio {
-    .el-radio__input {
-      display: none;
-    }
-  }
-}
-.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;
-  }
-}
-// 吸顶
-.issFixed{
-  position: absolute;
-  top: 0px;
-  background: #fff;
-  left: 0px;
-  right: 0px;
-  z-index: 4;
 
-}
+
 </style>

+ 97 - 10
src/views/career/plan/UniversitiesDetail.vue

@@ -14,7 +14,7 @@
         </div>
       </el-col>
       <el-col :span="12" class="text-right">
-        <el-button plain round>返回</el-button>
+        <el-button plain round @click="$router.go(-1)">返回</el-button>
       </el-col>
     </el-row>
     <div>
@@ -41,33 +41,56 @@
                 <span class="info-tips"> {{
                     baseInfo.introduction
                   }}</span>
-                <p class="text-right mr10"><el-button type="text">全部</el-button></p>
+                <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" >
+            <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">{{item.name}}</a>
+                    <a v-for="item in row.majors" @click="toMajorDetail(item.code)">{{item.name}}</a>
                   </p>
                 </template>
               </mx-table>
             </div>
-            <div class="mt20">
+            <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">
+            <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">
               <p class="format-tit">院系设置</p>
               <mx-table border :propDefines="collegeProps" :rows="departments">
                 <template #tmp="{row}">
                   <p class="major-wrap">
-                    <a v-for="item in row.departmentMajor">{{item.name}}</a>
+                    <span v-for="item in row.departmentMajor">{{item.name}}</span>
                   </p>
                 </template>
               </mx-table>
@@ -80,7 +103,18 @@
         <!--  院校风采-->
         <university-style v-if="tabActive == 2"></university-style>
     </div>
-
+    <el-dialog
+      :visible.sync="dialogVisible"
+      width="70%"
+    >
+      <span class="f20 f-666">北京大学院校介绍</span>
+      <div>
+        {{baseInfo.introduction}}
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -97,6 +131,7 @@ export default {
       tabActive: 0,
       baseInfo:'',
       departments:[],
+      dialogVisible: false,
       professions:{},
       professionsProps:{
         level: {
@@ -109,10 +144,12 @@ export default {
         },
         majors: {
           label:'专业',
-          slot: 'tmp'
+          slot: 'tmp',
+          align:"left"
         },
       },
       subjects:'',
+      activeSylId: '',
       collegeProps:{
         name: {
           label:'学院',
@@ -120,7 +157,23 @@ export default {
         },
         departmentMajor: {
           label:'包含专业',
-          slot: 'tmp'
+          slot: 'tmp',
+          align:"left"
+        },
+      },
+      keySubjectProp:{
+        typeName:{
+          label:'类别',
+          width:'100'
+        },
+        subjects:{
+          label:'专业',
+          slot:'tmp',
+          align:'left'
+        },
+        category:{
+          label:'学科类别',
+          width:'100'
         },
       }
     }
@@ -144,6 +197,29 @@ export default {
       }
       return arr
     },
+    activeSyl() {
+      if(!Object.keys(this.subjects).length) return {}
+      // const col = this.
+      const row = this.subjects.sylSubjectsGroup.find(item => {return item.id == this.activeSylId})
+      return {
+        col: {
+          subjectCount: {
+            label:'数量',
+            width: 100,
+          },
+          subjects: {
+            label:'学科',
+            slot:'tmp',
+            align:"left"
+          },
+          typeName: {
+            label:'类别',
+            width:'100'
+          }
+        },
+        row:[row]
+      }
+    },
     iconList() {
       const baseInfo  = this.baseInfo
       return [
@@ -182,6 +258,9 @@ export default {
   },
   watch: {},
   methods: {
+    toMajorDetail(code) {
+      this.$router.push({path:'/career/plan/MajorDetail',query:{code:code}})
+    },
     getHit() {
       saveUniversitiesHits({code:this.code}).then(res => {
         console.log(res)
@@ -193,6 +272,8 @@ export default {
         this.departments = res.data.departments
         this.professions = res.data.professions
         this.subjects = res.data.subjects
+
+        this.activeSylId = this.subjects.sylSubjectsGroup? this.subjects.sylSubjectsGroup[0].id : ''
         console.log(res)
       })
     }
@@ -238,6 +319,12 @@ export default {
   }
   .major-wrap{
     text-align: left;
+    span{
+      display: inline-block;
+      margin-right: 20px;
+      margin-top: 10px;
+      margin-bottom: 10px;
+    }
     a{
       display: inline-block;
       margin-right: 20px;

+ 9 - 6
src/views/career/plan/new-major-detail.vue

@@ -25,12 +25,15 @@
       </el-col>
       <el-col :span="18">
         <div >
-          <el-card style="color: #5E5E5E;" ref="navBar">
-            <el-breadcrumb separator-class="el-icon-arrow-right">
-              <el-breadcrumb-item :to="{ path: '/index' }">首页</el-breadcrumb-item>
-              <el-breadcrumb-item :to="{ path: '/new-gaokao/three/ProfessLib'}">专业库</el-breadcrumb-item>
-              <el-breadcrumb-item>专业详情</el-breadcrumb-item>
-            </el-breadcrumb>
+          <el-card style="color: #5E5E5E;" ref="navBar" >
+            <div class="fx-row jc-between ai-center">
+              <el-breadcrumb separator-class="el-icon-arrow-right">
+                <el-breadcrumb-item :to="{ path: '/index' }">首页</el-breadcrumb-item>
+                <el-breadcrumb-item :to="{ path: '/new-gaokao/three/ProfessLib'}">专业库</el-breadcrumb-item>
+                <el-breadcrumb-item>专业详情</el-breadcrumb-item>
+              </el-breadcrumb>
+              <el-button plain round @click="$router.go(-1)">返回</el-button>
+            </div>
           </el-card>
           <div class="mt20 header-content pd20">
             <p class="f28 f-333 mb20">{{ majorDetail.name || '' }}</p>

+ 27 - 97
src/views/career/subject/subjectChoice.vue

@@ -4,7 +4,7 @@
         <div>
           <el-row class="radioInput">
             <div>
-              <span class="radiaTitle">年份</span>
+              <span class="radiaTitle">年份:</span>
             </div>
             <el-radio-group v-model="selected.years" @change="yearChange">
               <el-radio-button
@@ -17,7 +17,7 @@
           </el-row>
           <el-row class="radioInput radioScience">
             <div>
-              <span class="radiaTitle">首选科目</span>
+              <span class="radiaTitle">首选科目:</span>
             </div>
             <el-checkbox-group v-model="selected.sciences[0]" @change="onScienceChanged" size="mini" :max="1">
               <el-checkbox-button v-for="item in form.sciences[0]" :key="item" :label="item">
@@ -33,78 +33,9 @@
               </el-checkbox-button>
             </el-checkbox-group>
           </el-row>
-          <el-row class="radioInput">
-            <div>
-              <span class="radiaTitle">院校地区:</span>
-            </div>
-            <el-radio-group v-model="selected.locations" @change="locationChange">
-              <el-radio-button label="">所有</el-radio-button>
-              <el-radio-button
-                v-for="item in form.locations"
-                :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="selected.types" @change="typeChange">
-              <el-radio-button label="">所有</el-radio-button>
-              <el-radio-button
-                v-for="item in form.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="selected.features" @change="featureChange">
-              <el-radio-button label="">所有</el-radio-button>
-              <el-radio-button
-                v-for="item in form.features"
-                :key="item"
-                :label="item"
-                style="margin-bottom: 10px"
-              >{{item}}</el-radio-button>
-            </el-radio-group>
-          </el-row>
-          <el-row class="radioInput">
-            <div>
-              <span class="radiaTitle">层次:</span>
-            </div>
-            <el-radio-group v-model="selected.levels" @change="levelChange">
-              <el-radio-button label="">所有</el-radio-button>
-              <el-radio-button
-                v-for="item in form.levels"
-                :key="item"
-                :label="item"
-                style="margin-bottom: 10px"
-              ></el-radio-button>
-            </el-radio-group>
-          </el-row>
+          <filter-form :filter="filter_form"></filter-form>
         </div>
         <div class="content">
-<!--          <div class="xkcx-input-box">-->
-<!--            <div class="search_header">-->
-<!--              <input-->
-<!--                placeholder="请输入内容"-->
-<!--                v-model="keyword"-->
-<!--                @keyup.enter="httpGetXkcxList()"-->
-<!--              />-->
-<!--              <img-->
-<!--                src="@/assets/images/icon_search2.png"-->
-<!--                alt=""-->
-<!--                @click="httpGetXkcxList()"-->
-<!--              />-->
-<!--            </div>-->
-<!--          </div>-->
           <mx-search-group class="mb10" justify="end" :span="12" v-model="keyword" placeholder="请输入内容" @search="httpGetXkcxList"
           ></mx-search-group>
           <div class="concerned-college-container" v-loading="loading">
@@ -149,7 +80,7 @@
   import { universityFilters } from '@/api/webApi/career-course'
   import {collectAdd, collectRemove, xkcxlist, xkcxYears,saveSelectCourse} from "@/api/webApi/webQue";
   import MxSearchGroup from "@/components/MxSearch/mx-search-group";
-
+  import FilterForm from '@/views/career/components/FilterForm';
   export default {
     props: {
       course0:{
@@ -170,21 +101,25 @@
       }
     },
     components : {
-      MxSearchGroup
+      MxSearchGroup,
+      FilterForm
     },
     data() {
       return {
         // 初始条件
         form: {
           years: [],
-          sciences: [["物理", "历史"],["化学", "生物", "政治", "地理"]],
-          locations: ["湖南", "湖北"],
-          types: ["综合", "工科", "农业", "林业"],
-          features:[ "双一流", "985", "211"],
-          levels:["本科","专科"]
+          sciences: [["物理", "历史"],["化学", "生物", "政治", "地理"]]
+        },
+        filter_form:{
+          location:'',
+          natureTypeCN:'',
+          type:'',
+          level:'',
+          features:'',
         },
         // 选中条件
-        selected: { years:'', sciences:[[],[]], locations:"", types:"", features:"", levels:"" },
+        selected: { years:'', sciences:[[],[]]},
         pageNum: 1,
         pageSize: 20,
         total: 0,
@@ -236,6 +171,14 @@
         },
       };
     },
+    watch:{
+      filter_form:{
+        deep:true,
+        handler(val) {
+          this.httpGetXkcxList()
+        }
+      },
+    },
     created() {
       this.selected.sciences[0] = this.course0 ? [this.course0] : []
       this.selected.sciences[1] = this.course1? this.course1.split(',') :[]
@@ -269,18 +212,6 @@
       onScienceChanged(value) {
         this.httpGetXkcxList();
       },
-      locationChange(value) {
-        this.httpGetXkcxList();
-      },
-      typeChange(value) {
-        this.httpGetXkcxList();
-      },
-      featureChange(value) {
-        this.httpGetXkcxList();
-      },
-      levelChange(value) {
-        this.httpGetXkcxList();
-      },
       // 查询结果
       httpGetXkcxList() {
         if (this.selected.sciences[0].length<1 || this.selected.sciences[1].length<2) return;
@@ -288,14 +219,11 @@
         //console.log(this.selected);return;
         this.loading = true
         xkcxlist({
-          level:this.selected.levels.toString(),
           keyword: this.keyword,
           course0: this.selected.sciences[0].toString(),
           course1: this.selected.sciences[1].toString(),
-          locations: this.selected.locations.toString(),
-          ts: this.selected.features.toString(),
-          types: this.selected.types.toString(),
           year: this.selected.years.toString(),
+          ...this.filter_form,
           pageNum: this.pageNum,
           marjors: [],
           pageSize: this.pageSize,
@@ -408,6 +336,7 @@
 }
 
 .radioInput {
+  background-color: #ffffff;font-size: 14px;padding:5px;
   .el-radio {
     .el-radio__input {
       display: none;
@@ -435,10 +364,11 @@
   }
   .radiaTitle {
     display: inline-block;
-    width: 130px;
+    width: 80px;
     font-size: 14px;
     text-align: right;
     margin-top: 2px;
+    margin-right: 10px;
   }
 }
 .radioInput02 {