Explorar o código

院校库详情完善

shilipojs %!s(int64=2) %!d(string=hai) anos
pai
achega
e3e0ec526c

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

@@ -95,3 +95,20 @@ export function enrollBrochure(params) {
     params: params
   })
 }
+// 保存招生简章热度/点击
+export function saveEnrollBrochureHits(params) {
+  return request({
+    url: '/front/university/saveUniversitiesEnrollBrochureHits',
+    method: 'post',
+    params: params
+  })
+}
+
+// 获取学科评估类型
+export function evaluateType(params) {
+  return request({
+    url: '/system/dict/data/type/subject_evaluate_type',
+    method: 'get',
+    params: params
+  })
+}

+ 10 - 0
src/assets/icons/iconfont.css

@@ -5,6 +5,7 @@
   url('//at.alicdn.com/t/font_3452620_hlad1kb9yl.ttf?t=1654504100564') format('truetype');
 }
 
+
 .iconfont {
   font-family: "iconfont" !important;
   font-size: 16px;
@@ -13,6 +14,14 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-zitisuoxiao:before {
+  content: "\e60e";
+}
+
+.icon-zitifangda:before {
+  content: "\e60f";
+}
+
 .icon-bofang:before {
   content: "\e667";
 }
@@ -20,3 +29,4 @@
 .icon-vr:before {
   content: "\e70a";
 }
+

+ 25 - 0
src/views/career/plan/UniversitiesColleges.vue

@@ -6,6 +6,10 @@
       <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;">
+      <div slot="header" class="radioInput" >
+        <span class="radioTitle" :class="filter_type == 'all'?'active' : ''">全部院校</span>
+        <span class="radioTitle" :class="filter_type == 'top'?'active' : ''">大学排名</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>
@@ -68,6 +72,7 @@ export default {
         features:'',
         name:''
       },
+      filter_type:'all',
       loading:false,
       collegeName:'',
       pageForm:{
@@ -157,6 +162,26 @@ export default {
     color: #909399;
   }
 }
+.radioInput{
+  background-color: #ffffff;
+  padding:5px;
+  .radioTitle{
+    cursor: pointer;
+    display: inline-block;
+    width: 80px;
+    font-size: 14px;
+    text-align: right;
+    &.active{
+      color: #fff;
+      border-radius: 4px ;
+      border: none;
+      padding: 5px 10px ;
+      font-weight: 400;
+      background: #42b983;
+    }
+  }
+
+}
 
 
 </style>

+ 59 - 4
src/views/career/plan/UniversitiesDetail.vue

@@ -85,6 +85,28 @@
                 </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">
@@ -99,7 +121,7 @@
 
         </div>
         <!--  招生简章-->
-        <enroll-list v-if="tabActive == 1"></enroll-list>
+        <enroll-list :code="code" v-if="tabActive == 1"></enroll-list>
         <!--  院校风采-->
         <university-style v-if="tabActive == 2"></university-style>
     </div>
@@ -107,7 +129,7 @@
       :visible.sync="dialogVisible"
       width="70%"
     >
-      <span class="f20 f-666">北京大学院校介绍</span>
+      <span class="f20 f-666">{{ baseInfo.name }}院校介绍</span>
       <div>
         {{baseInfo.introduction}}
       </div>
@@ -121,7 +143,7 @@
 <script>
 import EnrollList from './compoents/EnrollList'
 import UniversityStyle from './compoents/UniversityStyle'
-import { saveUniversitiesHits, selectUniversityDetail } from '@/api/webApi/career-course'
+import { evaluateType, saveUniversitiesHits, selectUniversityDetail } from '@/api/webApi/career-course'
 
 export default {
   name: 'UniversityDetail',
@@ -133,6 +155,9 @@ export default {
       departments:[],
       dialogVisible: false,
       professions:{},
+      subjectevaluates:[],
+      evaluateTypes:[],
+      evaluate_type:'',
       professionsProps:{
         level: {
           label:'专业层次',
@@ -149,6 +174,7 @@ export default {
         },
       },
       subjects:'',
+      code:'',
       activeSylId: '',
       collegeProps:{
         name: {
@@ -182,6 +208,7 @@ export default {
     this.code = this.$route.query.code
     this.getHit()
     this.getDetail()
+    this.getEvaluateType()
   },
   computed: {
     formatProfessions(){
@@ -197,6 +224,27 @@ export default {
       }
       return arr
     },
+    activeEvaluate() {
+      const currentRow = this.subjectevaluates.filter(item => {return item.extTypeId == this.evaluate_type})
+      const row = {
+        count: currentRow.length || '-',
+        level: currentRow,
+      }
+      return {
+        row: [row],
+        col: {
+          count:{
+            label:'数量',
+            width:'100'
+          },
+          level:{
+            label:' 专业评级',
+            align:'left',
+            slot:'level'
+          }
+        }
+      }
+    },
     activeSyl() {
       if(!Object.keys(this.subjects).length) return {}
       // const col = this.
@@ -258,6 +306,13 @@ export default {
   },
   watch: {},
   methods: {
+    getEvaluateType() {
+      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}})
     },
@@ -272,7 +327,7 @@ export default {
         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 : ''
         console.log(res)
       })

+ 92 - 16
src/views/career/plan/compoents/EnrollList.vue

@@ -1,27 +1,103 @@
 <template>
-   <div>
-     <mx-search-group :span="8" placeholder="请输入内容">
-       <div class="f-666 f14 ml10">
-       共 <span class="f-primary">98</span>  条
-     </div> </mx-search-group>
-     <div class="guide-list">
-       <el-row class="guid-item" v-for="item in 10">
-         <el-col :span="20">
-           <a class="f-333 f16 text-ellipsis">
-             <span>清华大学2022年本科招生章程</span>
-           </a>
-         </el-col>
-         <el-col class="f-666 f14" :span="2">0 次浏览</el-col>
-         <el-col class="f-666 f14" :span="2">2022-06-06</el-col>
-       </el-row>
+   <div v-loading="loading">
+     <div v-if="!showDetail">
+       <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" >
+         <el-row class="guid-item" v-for="item in enrollList">
+           <el-col :span="20">
+             <a class="f-333 f16 text-ellipsis" @click="toDetail(item)">
+               <span>{{ item.title }}</span>
+             </a>
+           </el-col>
+           <el-col class="f-666 f14" :span="2">{{ item.hits }} 次浏览</el-col>
+           <el-col class="f-666 f14" :span="2">{{ item.createTime.split(' ')[0] }}</el-col>
+         </el-row>
+         <pagination v-if="total > 0" class="mt10" :total="total"  :autoScroll="false" @pagination="onChangePage"
+                     :page.sync="pageForm.pageNum"
+                     :limit.sync="pageForm.pageSize"
+         ></pagination>
+       </div>
+     </div>
+     <div v-else>
+       <div class="jc-between fx-row ai-center mb20">
+         <p class="f28 f-333 text-ellipsis">{{detailInfo.title}}</p>
+         <el-button plain round @click="showDetail= false">返回列表</el-button>
+       </div>
+       <div class="jc-between fx-row ai-center mb20 f-999 f14">
+         <div class="left">
+           <span class="mr30">来源:{{detailInfo.collegeName}}</span>
+           <span class="mr30">{{ detailInfo.hits }} 次浏览 </span>
+           <span>发布时间:{{ detailInfo.createTime.split(' ')[0] }}</span>
+         </div>
+         <div class="right">
+           <i class="iconfont icon-zitisuoxiao "></i>
+           <i class="iconfont icon-zitifangda"></i>
+         </div>
+       </div>
+       <div v-html="detailInfo.content">
+
+       </div>
      </div>
    </div>
 </template>
 
 <script>
 import MxSearchGroup from '@/components/MxSearch/mx-search-group'
+import { enrollBrochure, saveEnrollBrochureHits } from '@/api/webApi/career-course'
 export default {
-  components: { MxSearchGroup }
+  components: { MxSearchGroup },
+  props:{
+    code:{
+      type:String || Number,
+      default:'',
+    }
+  },
+  created() {
+    this.getEnrollBrochure()
+  },
+  data() {
+    return{
+      loading:false,
+      pageForm:{
+        pageSize:10,
+        pageNum:1,
+      },
+      title:'',
+      enrollList:[],
+      total:0,
+      showDetail:false,
+      detailInfo:{}
+    }
+  },
+  methods:{
+    getEnrollBrochure(){
+      this.loading = true
+      enrollBrochure({code:this.code,...this.pageForm,title:this.title}).then(res =>{
+        this.total = res.total
+        this.enrollList =  res.rows
+      }).finally(()=>{
+        this.loading = false
+      })
+    },
+    saveEnrollBrochureHits(id) {
+      saveEnrollBrochureHits({id:id}).then(res =>{
+        console.log(res)
+      })
+    },
+    toDetail(row) {
+      this.detailInfo =row
+      this.saveEnrollBrochureHits(row.id)
+      this.showDetail= true
+    },
+    onChangePage(page) {
+      this.pageForm.pageSize = page.limit
+      this.pageForm.pageNum = page.page
+      this.getEnrollBrochure()
+    }
+  }
 }
 </script>