Prechádzať zdrojové kódy

选科设置---大数据选科分析数据

shilipojs 3 rokov pred
rodič
commit
cf655191c5

+ 10 - 0
src/api/webApi/selection.js

@@ -162,3 +162,13 @@ export function calculateFaculties(data) {
     data
   })
 }
+
+// 选科大数据分析
+export function getSelectCourseBigdata(params) {
+  return request({
+    url: 'front/selectCourse/bigdata/getSelectCourseBigdata',
+    method: 'get',
+    params
+  })
+}
+

+ 7 - 2
src/views/career/subject/subjectChoice.vue

@@ -159,6 +159,10 @@
       course1:{
         type: String,
         default: ''
+      },
+      year: {
+        type: Number,
+        default: ''
       }
     },
     components : {
@@ -176,7 +180,7 @@
           levels:["本科","专科"]
         },
         // 选中条件
-        selected: { years:[], sciences:[[],[]], locations:"", types:"", features:"", levels:"" },
+        selected: { years:'', sciences:[[],[]], locations:"", types:"", features:"", levels:"" },
         pageNum: 1,
         pageSize: 20,
         total: 0,
@@ -229,6 +233,7 @@
     created() {
       this.selected.sciences[0] = this.course0 ? [this.course0] : []
       this.selected.sciences[1] = this.course1? this.course1.split(',') :[]
+      this.selected.years = this.year
       if(this.course0 && this.course1) this.httpGetXkcxList()
       this.getYears();
       this.getUniversity();
@@ -239,7 +244,7 @@
       getYears() {
         xkcxYears().then((res) => {
           this.form.years = res.data || [];
-          this.selected.years = this.form.years[0]
+          this.selected.years = this.selected.years ||  this.form.years[0]
         });
       },
       // 取其他条件清单

+ 42 - 0
src/views/permission/components/group-query-dialog.vue

@@ -0,0 +1,42 @@
+<template>
+  <el-dialog
+    append-to-body
+    v-if="dialogVisible"
+    title="选科大数据分析"
+    :visible.sync="dialogVisible"
+    width="70%"
+  >
+    <group-subject-query :level="level" :year="year"></group-subject-query>
+    <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
+      </span>
+  </el-dialog>
+</template>
+<script>
+import GroupSubjectQuery from'./group-subject-query'
+export default {
+  name: 'GroupQueryDialog',
+  components: {
+    GroupSubjectQuery
+  },
+  data() {
+    return{
+      level: '', // zhuan ben
+      year: '',
+      dialogVisible: false
+    }
+  },
+  methods: {
+    open(year, level) {
+      this.dialogVisible= true
+      this.level  = level
+      this.year = year
+    },
+    handleClose() {
+
+    }
+  }
+}
+</script>
+<style scoped>
+</style>

+ 112 - 0
src/views/permission/components/group-subject-query.vue

@@ -0,0 +1,112 @@
+<template>
+  <div>
+    <div v-if="Object.keys(model).length > 0">
+       <h3>{{`${year}年${model.location}省选科大数据分析`}}</h3>
+       <el-row class="mb20" :gutter="10">
+         <el-col class="f14" :span="col.span" v-for="col in cols">
+           <p class="pb10" style="border-bottom: 1px solid #ebeef5;"> {{col.label}}</p>
+           <p class="f20 f-333 pt10 pb10"> {{col.value}}</p>
+           <p class="f16"> {{col.subValue}}</p>
+         </el-col>
+       </el-row>
+      <mx-table :prop-defines="propDefines" :rows="model.majorCombine">
+          <template #groupInfo="{row}">
+            <div >
+              <span >{{row.name}}</span >
+              <el-progress style="width:70%;float: right" :text-inside="true" :stroke-width="24" :percentage="row.percent" status="success"></el-progress>
+            </div>
+
+          </template>
+      </mx-table>
+    </div>
+    <div v-else>
+      暂无数据
+    </div>
+  </div>
+</template>
+<script>
+import { getSelectCourseBigdata } from '@/api/webApi/selection'
+
+export default {
+  name: 'GroupSubjectQuery',
+  props: {
+    level:{
+      type: String,
+      default: ''
+    },
+    year:{
+      type: Number,
+      default: ''
+    }
+  },
+  data() {
+    return{
+      model: {},
+      propDefines:{
+       index:{
+         label: '序号',
+         type: 'index'
+       },
+        name:{
+          label: '选科组合',
+          slot: 'groupInfo'
+        },
+        count:{
+          label: '匹配专业',
+          width:'100px',
+        },
+        percentview:{
+          label: '匹配率',
+          width:'100px',
+        },
+      }
+
+    }
+  },
+  computed: {
+    cols(){
+      if(!this.model) return []
+      const cols = [
+        {
+          label: '院校',
+          span: 3,
+          value: this.model.countcollege
+        },
+        {
+          label: '专业',
+          span: 3,
+          value: this.model.countmajor
+        }
+      ]
+      this.model.majorSubject.forEach(item => {
+         cols.push(
+           {
+             label: item.name,
+             value: item.count,
+             span: 2,
+             subValue: item.percentview
+           }
+         )
+      })
+      return cols
+    }
+  },
+  created() {
+    console.log(111111111111111)
+    this.getList()
+  },
+  methods: {
+    getList() {
+      getSelectCourseBigdata({
+        year: this.year,
+        eduLevel:this.level
+      }).then(res => {
+        this.model = res.data || {}
+          console.log(res)
+      })
+    }
+  }
+}
+</script>
+<style scoped>
+</style>

+ 13 - 5
src/views/permission/components/steps/round-setting-group.vue

@@ -81,7 +81,10 @@
       <round-score-query :setting-model="settingModel" :group-model-index="groupModelIndex"
                          :group-model="groupModel" :default-group-id="scoreQueryGroupId"></round-score-query>
     </el-dialog>
+    <!--  查看专业  -->
     <choose-subject-dialog ref="chooseDialog"></choose-subject-dialog>
+    <!--  选科大数据分析  -->
+    <group-query-dialog ref="groupQueryDialog"></group-query-dialog>
   </div>
 </template>
 
@@ -93,9 +96,9 @@ import FacultyForms from '@/views/permission/components/steps/fauclty/faculty-fo
 import RoundModelConvert from '../round-model-convert'
 import { calculateFaculties, generateFaculties } from '@/api/webApi/selection'
 import FacultyResult from '@/views/permission/components/steps/fauclty/faculty-result'
-
+import GroupQueryDialog from'../group-query-dialog'
 export default {
-  components: { FacultyResult, FacultyForms, RoundScoreQuery,ChooseSubjectDialog },
+  components: { FacultyResult, FacultyForms, RoundScoreQuery,ChooseSubjectDialog,GroupQueryDialog },
   mixins: [selectTranslateMixin, RoundModelConvert],
   name: 'round-setting-group',
   props: {
@@ -273,17 +276,22 @@ export default {
       }))
     },
     handleView(row, key) {
-      console.log(row,key)
       if (key == 'scoreQuery') {
         this.scoreQueryGroupId = row.groupId
         this.scoreQueryVisible = true
       }
-
+      console.log(row,key)
+      if(key == 'dataQuery') {
+        const year = this.settingModel.year
+        this.$refs.groupQueryDialog.open(year)
+      }
       if(key == 'majorQuery') {
         // 打开选科弹窗
         const course0 = this.translateCourse0(row.groupId)
         const course1 = this.translateCourse1(row.groupId)
-        this.$refs.chooseDialog.open(course0, course1)
+        console.log(year)
+        const year = this.settingModel.year
+        this.$refs.chooseDialog.open(course0, course1,year)
       }
     }
   }

+ 4 - 2
src/views/system/user/profile/components/choose-subject-dialog.vue

@@ -6,7 +6,7 @@
       :visible.sync="dialogVisible"
       width="70%"
     >
-      <subject-choice :course0="course0" :course1="course1" ></subject-choice>
+      <subject-choice :course0="course0" :course1="course1" :year="year" ></subject-choice>
       <span slot="footer" class="dialog-footer">
         <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
       </span>
@@ -22,12 +22,14 @@ export default {
     return{
       dialogVisible:false,
       course0: '',
+      year: '',
       course1: '',
     }
   },
   methods: {
-    open(course0, course1) {
+    open(course0, course1,year) {
       this.dialogVisible = true
+      this.year = year
       this.course0 = course0
       this.course1 = course1
     },