Browse Source

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

hare8999@163.com 2 years ago
parent
commit
82daa1b6fc

+ 1 - 1
mock/modules/elective-dispatch.js

@@ -34,7 +34,7 @@ module.exports = [
         msg: 'success',
         data: {
           '405': {
-            headteacherCode: '72b034d5ee7642ae90af044098f524ff',  // 老师用户ID
+            headteacherCode: '01cb6829eb9e4e7d95064a5a6d6174e8',  // 老师用户ID
             nickName: '王铭传' // 老师称乎
           },
           '406': {

+ 40 - 3
src/api/webApi/elective/dispatch.js

@@ -83,11 +83,48 @@ export function getClass(params) {
 //   })
 // }
 
-// 班主任分班settings   mock
-export function getHeadteacherDispatchSettings(params) {
+// 获取班主任分班settings
+export function getTeacherSettings(params) {
   return request({
-    url: '/mock/front/dispatch/getHeadteacherDispatchSettings',
+    url: '/front/elective/classes/teacher/settings',
     method: 'get',
     params
   })
 }
+
+// 维持所有原班级班主任
+export function keepAllOfTeacher(params) {
+  return request({
+    url: '/front/elective/classes/teacher/keep',
+    method: 'post',
+    params
+  })
+}
+
+// 保存班主任分班settings
+export function saveTeacherSettings(params) {
+  return request({
+    url: '/front/elective/classes/teacher/settings',
+    method: 'post',
+    params
+  })
+}
+
+// 获取当前学生分班或者班主任分班设置
+export function publish(params) {
+  return request({
+    url: '/front/elective/classes/publish',
+    method: 'get',
+    params
+  })
+}
+
+// 分配完毕后发布,锁定分班流程,与班主任分班共享设置时间
+export function lockPublish(params) {
+  return request({
+    url: '/front/elective/classes/publish',
+    method: 'post',
+    params
+  })
+}
+// getDispatchSharedSetting

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

@@ -1,6 +1,6 @@
 <template>
   <div class="fill-batch">
-    <div class="top-title">()选择填报批次</div>
+    <div class="top-title">()选择填报批次</div>
     <div class="input-box">
       <div class="input-title">
         您的预估高考成绩: {{ subject }}

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

@@ -1,6 +1,6 @@
 <template>
   <div class="fill-batch">
-    <div class="top-title">()选择院校专业</div>
+    <div class="top-title">()选择院校专业</div>
     <div class="content-box">
       <div class="content-title">
         {{ currentUser.provinceName }}{{ year }}年{{ batchInfo.name }}学校志愿智能模拟

+ 5 - 1
src/views/career/components/FillScore.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="fill-score">
-    <div class="top-title">()输入高考的成绩</div>
+    <div class="top-title">()输入高考的成绩</div>
     <div class="input-box">
       <div class="input-item">
         <div class="item-label">科目:</div>
@@ -32,11 +32,15 @@
         <div class="item-msg">当前为估分模拟,不需填写排名</div>
       </div>
     </div>
+    <simulate-notice></simulate-notice>
   </div>
 </template>
 
 <script>
+import SimulateNotice from '@/views/career/components/SimulateNotice'
+
 export default {
+  components:{SimulateNotice},
   name: "FillScore",
   data: () => {
     return {

+ 6 - 2
src/views/career/components/NewFillScore.vue

@@ -1,6 +1,6 @@
 <template>
-  <div class="fill-score" style="margin:0 20%;">
-    <div class="top-title">()输入高考的成绩</div>
+  <div class="fill-score" >
+    <div class="top-title">()输入高考的成绩</div>
     <div class="input-box">
       <div class="input-item">
         <div class="item-label">科目:</div>
@@ -42,11 +42,15 @@
         <div class="item-msg">当前为估分模拟,不需填写排名</div>
       </div>
     </div>
+    <simulate-notice></simulate-notice>
   </div>
 </template>
 
 <script>
+import SimulateNotice from '@/views/career/components/SimulateNotice'
+
 export default {
+  components:{SimulateNotice},
   name: "NewFillScore",
   data: () => {
     return {

+ 7 - 6
src/views/career/components/SimulateNotice.vue

@@ -1,11 +1,12 @@
 <template>
   <div class="notice">
-    <div style="text-align: center">
-      <h2 style="font-size: 2em; font-weight: 400" :style="{ color: theme }">
-        (一)高考志愿模拟填报须知
-      </h2>
-    </div>
-    <div style="margin-top: 50px">
+<!--    <div style="text-align: center">-->
+<!--      <h2 style="font-size: 2em; font-weight: 400" :style="{ color: theme }">-->
+<!--        (一)高考志愿模拟填报须知-->
+<!--      </h2>-->
+<!--    </div>-->
+    <p>填报须知</p>
+    <div class="mt20">
       <ul>
         <li>
           目前系统为非正式志愿模拟填报阶段,您可输入不同分数进行多次志愿智能模拟,找准自己的目标院校和专业。

+ 5 - 0
src/views/career/components/UniversitiesLineTable.vue

@@ -14,6 +14,11 @@
       <el-table-column prop="type" label="科类" align="center"></el-table-column>
       <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"
+        label="投档分位次"
+      >
+      </el-table-column>
     </el-table>
     <el-pagination
       style="margin-top:10px;"

+ 17 - 21
src/views/career/zhiyuan/SimulatedVolunteer.vue

@@ -19,12 +19,11 @@
       <div style="min-height: 400px; font-family: PingFangSC-Regular, PingFang SC, Helvetica, serif;">
         <!-- <component :is="isComponent"></component> -->
         <div class="list-page">
-          <simulate-notice v-if="active == 1"></simulate-notice>
-          <component :is="isNewCollegeEntranceExam ? 'NewFillScore' : 'FillScore'" ref="score" :isDisIndex="isDisIndex" v-if="active == 2"></component>
-          <fill-batch @onFillIn="onFillIn" ref="batch" :zytbBatchesList="zytbBatchesList" :subject="curSubject" :isNewCollegeEntranceExam="isNewCollegeEntranceExam" :firstSubject="firstSubject" :lastSubject="lastSubject" :score="curScore" v-if="active == 3"></fill-batch>
-          <fill-major ref="major" :batch="curBatch" :batchInfo="curBatchInfo" :subject="curSubject" :score="curScore" :isNewCollegeEntranceExam="isNewCollegeEntranceExam" :firstSubject="firstSubject" :lastSubject="lastSubject" :year="curBatchInfo.year" v-if="active == 4"></fill-major>
+          <component :is="isNewCollegeEntranceExam ? 'NewFillScore' : 'FillScore'" ref="score" :isDisIndex="isDisIndex" v-if="active == 1"></component>
+          <fill-batch @onFillIn="onFillIn" ref="batch" :zytbBatchesList="zytbBatchesList" :subject="curSubject" :isNewCollegeEntranceExam="isNewCollegeEntranceExam" :firstSubject="firstSubject" :lastSubject="lastSubject" :score="curScore" v-if="active == 2"></fill-batch>
+          <fill-major ref="major" :batch="curBatch" :batchInfo="curBatchInfo" :subject="curSubject" :score="curScore" :isNewCollegeEntranceExam="isNewCollegeEntranceExam" :firstSubject="firstSubject" :lastSubject="lastSubject" :year="curBatchInfo.year" v-if="active == 3"></fill-major>
 
-          <div class="success-complete" v-if="active == 5">
+          <div class="success-complete" v-if="active == 4">
             <div class="text">填报完成</div>
             <img src="@/assets/images/career/icon_data.png" alt="" />
             <div style="margin-top: 20px">
@@ -35,11 +34,11 @@
       </div>
       <el-divider></el-divider>
       <!--      底部按钮-->
-      <div style="text-align: center; margin-top: 30px" v-if="active != 5">
+      <div style="text-align: center; margin-top: 30px" v-if="active != 4">
         <el-button @click="goVolunteerList">查看记录</el-button>
         <el-button type="primary" @click="toBackPage" :disabled="active == 1">上一步</el-button>
-        <el-button type="primary" v-if="active < 3" :disabled="active == 5" @click="nextStep">下一步</el-button>
-        <el-button type="primary" v-if="active >= 3" @click="saveData()">保存志愿</el-button>
+        <el-button type="primary" v-if="active < 2" :disabled="active == 4" @click="nextStep">下一步</el-button>
+        <el-button type="primary" v-if="active >= 2" @click="saveData()">保存志愿</el-button>
       </div>
     </div>
   </div>
@@ -70,11 +69,11 @@ export default {
       firstSubject: "",
       lastSubject: [],
       topStep: [
-        { index: 1, label: "填报须知" },
-        { index: 2, label: "高考分数" },
-        { index: 3, label: "填报批次" },
-        { index: 4, label: "院校专业" },
-        { index: 5, label: "保存志愿" },
+        // { index: 1, label: "填报须知" },
+        { index: 1, label: "高考分数" },
+        { index: 2, label: "填报批次" },
+        { index: 3, label: "院校专业" },
+        { index: 4, label: "保存志愿" },
       ],
     };
   },
@@ -104,7 +103,7 @@ export default {
     onFillIn(item) {
       this.curBatch = item.batch;
       this.curBatchInfo = item;
-      this.active = 4;
+      this.active = 3;
     },
     onChangeInputScore(e) {
       console.log(e);
@@ -135,7 +134,7 @@ export default {
         mode: this.curSubject || [this.firstSubject, ...this.lastSubject].toString(),
         score: this.curScore,
       };
-      if (this.active == 4) {
+      if (this.active == 3) {
         let wishe = [];
         let dataList = this.$refs.major.dataList;
         let len = dataList.length;
@@ -173,19 +172,16 @@ export default {
     },
     httpSave(req) {
       zytbSave(req).then((res) => {
-        this.active = 5;
+        this.active = 4;
       });
     },
     nextStep() {
       let self = this;
-      if (this.active >= 5) {
+      if (this.active >= 4) {
         return;
       }
       switch (this.active) {
         case 1:
-          self.active = 2;
-          break;
-        case 2:
           let score = self.$refs.score;
           if (this.isNewCollegeEntranceExam) {
             //console.log(111111111);
@@ -214,7 +210,7 @@ export default {
             return;
           }
           this.httpzytbBatches(() => {
-            self.active = 3;
+            self.active = 2;
           });
           break;
       }

+ 38 - 9
src/views/elective/master/components/choose-class.vue

@@ -10,18 +10,20 @@
       </el-radio-group>
     </div>
     <span slot="footer" class="dialog-footer">
-      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button @click="onClose">取 消</el-button>
       <el-button type="primary" @click="confirm">确 定</el-button>
     </span>
   </el-dialog>
 </template>
 <script>
 import MxClassTreeTranslateMixin from '@/components/Cache/modules/mx-classTree-translate-mixin'
+import { saveTeacherSettings } from '@/api/webApi/elective/dispatch'
 
 export default{
   props: {
     year:'',
-    headteacherSettings: {} // 已经被选择的
+    roundId: '',
+    headTeacherSettings: {} // 已经被选择的
   },
   mixins: [MxClassTreeTranslateMixin],
   data() {
@@ -41,17 +43,44 @@ export default{
   },
   methods: {
     confirm() {
-      this.activeClass.newClassId =  this.value
-      this.activeClass.newClassName =  this.getClassName(this.value)
-      this.activeClass.newMasterId =  this.activeClass.prevMasterId
-      this.activeClass.newMasterName =  this.activeClass.prevMasterName
+      // 判断是否重复?
+      // const headTeacherSettings = Object.values(this.headTeacherSettings)
+      // if(this.headteacherSettings.keys())
+      // this.saveTeacherSettings()
+      // this.onClose()
+      if(this.isRepeat()) {
+        this.$message.warning(`${this.activeClass.headteacherName}已分配给新班级`)
+        return
+      }
+      this.saveTeacherSettings()
+      this.onClose()
+      console.log(this.isRepeat())
+    },
+    isRepeat() {
+      // 判断是否重复?
+      const headTeacherSettings = this.headTeacherSettings
+      const format = Object.values(headTeacherSettings)
+      const activeClass =this.activeClass
+      const flag = format.some(item => { return item.customerCode == activeClass.headteacherCode})
+      return flag
+    },
+    onClose() {
       this.dialogVisible = false
     },
+    saveTeacherSettings() {
+      saveTeacherSettings({
+        roundId: this.roundId,
+        classId: this.value,
+        customerCode:this.activeClass.headteacherCode || ''
+      }).then(res => {
+        this.$parent.handleQuery()
+        console.log(res)
+      })
+    },
     enable(row){
-      console.log(row)
-      const headteacherSettings = this.headteacherSettings
+      const headTeacherSettings = this.headTeacherSettings
       const activeClass  = this.activeClass
-      return Object.keys(headteacherSettings).findIndex(item => item == row.classId) != -1 && activeClass.classId != row.classId
+      return Object.keys(headTeacherSettings).findIndex(item => item == row.classId) != -1 && activeClass.classId != row.classId
     },
     init(row){
       this.dialogVisible = true

+ 42 - 3
src/views/elective/master/components/choose-master-teacher.vue

@@ -3,24 +3,63 @@
     :visible.sync="dialogVisible"
     width="80%"
   >
-    <teacher-manage></teacher-manage>
+    <teacher-manage :selectMode="true" v-model="selectedCode" :headTeacherSettings="headTeacherSettings"></teacher-manage>
     <span slot="footer" class="dialog-footer">
       <el-button @click="dialogVisible = false">取 消</el-button>
-      <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
+      <el-button type="primary" @click="onConfirm">确 定</el-button>
     </span>
   </el-dialog>
 </template>
 <script>
+import { saveTeacherSettings } from '@/api/webApi/elective/dispatch'
 import TeacherManage from '@/views/permission/teacher-manage'
 export default  {
   name: 'ChooseMasterTeacher',
   components: {
     TeacherManage
   },
+  props: {
+    roundId: '',
+    headTeacherSettings: {}
+  },
   data() {
     return {
-      dialogVisible: false
+      dialogVisible: false,
+      selectedCode: '',
+      activeModels: ''
     }
+  },
+  methods: {
+    init(row) {
+      this.dialogVisible = true
+      this.activeModels = row
+      this.selectedCode =  row.headteacherCode || row.newHeadteacherCode
+    },
+    isRepeat() {
+      // 判断是否重复?
+      const headTeacherSettings = this.headTeacherSettings
+      const format = Object.values(headTeacherSettings)
+      const flag = format.some(item => { return item.customerCode == this.selectedCode})
+      return flag
+    },
+    onConfirm(){
+      if(this.isRepeat()) {
+        this.$message.warning(`该老师已分配给新班级`)
+        return
+      }
+      console.log(this.isRepeat())
+      this.saveTeacherSettings()
+    },
+    saveTeacherSettings() {
+      saveTeacherSettings({
+        roundId: this.roundId,
+        classId: this.activeModels.newClassId || this.activeModels.classId,
+        customerCode:this.selectedCode || ''
+      }).then(res => {
+        this.$parent.handleQuery()
+        this.dialogVisible =false
+      })
+    },
   }
 }
 </script>

+ 48 - 18
src/views/elective/master/index.vue

@@ -16,8 +16,8 @@
             <el-popover
               placement="bottom"
               trigger="click">
-              <span class="btn-green mr5" @click="changeMaster">班主任</span>
-              <span  class="btn-green" @click="changeClass(row)">班级</span>
+              <span class="btn-green mr5" @click="changeMaster(row)">班主任</span>
+              <span  class="btn-green" v-if="!!row.headteacherName" @click="changeClass(row)">班级</span>
 
               <el-button type="primary" slot="reference" size="mini">更换</el-button>
             </el-popover>
@@ -29,12 +29,12 @@
       </div>
       <evaluation-empty v-else-if="!queryParams.roundId" shadow title="当前学年没有班主任选班数据"></evaluation-empty>
     </el-card>
-    <choose-master-teacher ref="chooseMasterTeacher"></choose-master-teacher>
-    <choose-class ref="chooseClass" :year="queryParams.year" :headteacherSettings="headteacherSettings"></choose-class>
+    <choose-master-teacher ref="chooseMasterTeacher" :roundId="queryParams.roundId" :headTeacherSettings="headteacherSettings"></choose-master-teacher>
+    <choose-class :roundId="queryParams.roundId" ref="chooseClass" :year="queryParams.year" :headTeacherSettings="headteacherSettings"></choose-class>
   </div>
 </template>
 <script>
-import {getHeadteacherDispatchSettings} from  '@/api/webApi/elective/dispatch'
+import {getTeacherSettings,keepAllOfTeacher,publish,saveTeacherSettings} from  '@/api/webApi/elective/dispatch'
 import ChooseMasterTeacher from './components/choose-master-teacher'
 import classTreeMixin from '@/components/Cache/modules/mx-classTree-translate-mixin'
 import ChooseClass from './components/choose-class'
@@ -92,50 +92,80 @@ export default  {
       return this.classTree.find(item => {
         return item.year == this.queryParams.year
       })?.classList.map(item => {
-        console.log(headteacherSettings.hasOwnProperty(item.classId))
+        // console.log(headteacherSettings.hasOwnProperty(item.classId))
         item.year = this.queryParams.year
+        item.newClassId = headteacherSettings.hasOwnProperty(item.classId) ? item.classId : ''    // 新班级Id
         item.newClassName = headteacherSettings.hasOwnProperty(item.classId) ? this.getClassName(item.classId) : ''    // 新班级名称
         item.newHeadteacherName = headteacherSettings.hasOwnProperty(item.classId) ? headteacherSettings[item.classId].nickName  : ''    // 新班主任名称
+        item.newHeadteacherCode = headteacherSettings.hasOwnProperty(item.classId) ? headteacherSettings[item.classId].customerCode  : ''    // 新班主任code
         return item
       })
     }
   },
   methods: {
+    getPublish() {
+      publish({
+        roundId:this.queryParams.roundId
+      }).then(res => {
+         console.log(res)
+      })
+    },
     async keepAll() {
       if(Object.keys(this.headteacherSettings).length > 0) {
         await this.$confirm(`一键维持原班级会覆盖您之前的设置,是否继续?`)
+        this.keepAllOfTeacher()
       }else {
         await this.$confirm(`是否一键维持原班级?`)
+        this.keepAllOfTeacher()
       }
-
       // 维持原班级
     },
     getHeadteacherSettings() {
-      getHeadteacherDispatchSettings().then(res => {
+      getTeacherSettings({
+        roundId: this.queryParams.roundId
+      }).then(res => {
         console.log(res.data)
-        this.headteacherSettings  =res.data
+        this.headteacherSettings  = res.data
+      })
+    },
+    keepAllOfTeacher() {
+      keepAllOfTeacher({
+        roundId:this.queryParams.roundId
+      }).then(res => {
+         // 维持班级后刷新
+         this.getHeadteacherSettings()
       })
     },
     send() {
-      const isSend = this.rows.filter(item => {
-         return item.newClassId != 0
-      }).length ==  this.rows.length
-      console.log(isSend)
-      if(!isSend) {
+      if(true) {
         this.$message.warning('还有班级未分配')
         return
       }
 
     },
-    cancel(row){
-
+    async cancel(row){
+      console.log(row)
+      if(!row.newHeadteacherCode) {
+        this.$message.warning('请先设定新班级')
+        return
+      }
+      await this.$confirm(`是否取消?`)
+      saveTeacherSettings({
+        roundId: this.queryParams.roundId,
+        classId: row.newClassId,
+      }).then(res => {
+        this.$message.success('取消成功')
+        this.handleQuery()
+        console.log(res)
+      })
     },
     handleQuery() {
       // 获取班主任 settings
       this.getHeadteacherSettings()
+      this.getPublish()
     },
-    changeMaster(){
-      this.$refs.chooseMasterTeacher.dialogVisible = true
+    changeMaster(row){
+      this.$refs.chooseMasterTeacher.init(row)
     },
     changeClass(row) {
       this.$refs.chooseClass.init(row)

+ 12 - 1
src/views/permission/components/mx-teacher-info.vue

@@ -15,6 +15,9 @@
       <i class="el-icon-success active" v-if="selected"></i>
       <!--<i class="el-icon-success" v-else></i>-->
     </div>
+    <div class="icon-wrap2 f12" >
+      {{selecedClassName}}
+    </div>
   </el-card>
 </template>
 
@@ -22,6 +25,10 @@
 export default {
   name: 'mx-teacher-info',
   props: {
+    selecedClassName: {
+      type: String | Number,
+      default: ''
+    },
     selectMode: {
       type: Boolean,
       default: false
@@ -66,7 +73,11 @@ export default {
   cursor: pointer;
   top: 8px;
 }
-
+.icon-wrap2{
+  position: absolute;
+  left: 8px;
+  top: 8px;
+}
 .active {
   color: #42b983;
 }

+ 17 - 0
src/views/permission/teacher-manage.vue

@@ -13,6 +13,7 @@
                 <el-col :span="6" v-for="(item,index) in group.headteachers" :key="index" class="mb12">
                   <mx-teacher-info :avatar="item.avatar" :name="item.nickName" content-height="90px"
                                    :select-mode="selectMode" :selected="item.localSelected"
+                                   :selecedClassName="item.selecedClassName"
                                    :classes="intersectGradeClass(item.headteacherClassNames, group.grade).toString()"
                                    @click.native="setTeacherSelected(item)">
                   </mx-teacher-info>
@@ -25,6 +26,7 @@
                 <el-col :span="6" v-for="(item,index) in group.teachers" :key="index" class="mb12">
                   <mx-teacher-info content-height="90px" :avatar="item.avatar" :name="item.nickName"
                                    :subjects="item.subjectNames.toString()"
+                                   :selecedClassName="item.selecedClassName"
                                    :select-mode="selectMode" :selected="item.localSelected"
                                    :classes="intersectGradeClass(item.classNames, group.grade).toString()"
                                    @click.native="setTeacherSelected(item)">
@@ -64,6 +66,10 @@ export default {
       type: Boolean,
       default: false
     },
+    headTeacherSettings: {
+      type: Object,
+      default: {}
+    },
     selectedCode: {
       type: String | Number,
       default: ''
@@ -88,6 +94,7 @@ export default {
       if (this.selectMode && this.dataList.length) {
         this.dataList.forEach(user => {
           // 本地字段,强制进入双向绑定
+          this.$set(user, 'selecedClassName', this.isSelecedClassName(user))
           this.$set(user, 'localSelected', user.customerCode == this.selectedCode)
         })
       }
@@ -95,6 +102,16 @@ export default {
     }
   },
   methods: {
+    isSelecedClassName(row) {
+      const settingsValue = Object.values(this.headTeacherSettings)
+      const headTeacherSettings = this.headTeacherSettings
+      for (const key in headTeacherSettings) {
+        if(headTeacherSettings[key].headteacherCode ==  row.customerCode) {
+          return this.getClassName(key)
+        }
+      }
+      return ''
+    },
     handleInvalidQuery() {
       this.dataList = []
     },

+ 0 - 3
src/views/videocourse/video_course.vue

@@ -137,11 +137,8 @@ export default {
   data() {
     return {
       input: "",
-      videoList: [],
-      grade: [],
       typeActive: 0,
       videoType: [],
-      input: "",
       form: {
         course: "", // 科目
         subject: "", // 大类