Browse Source

显示调整

hare8999@163.com 2 years ago
parent
commit
ecb8408192

+ 43 - 35
src/views/elective/dispatch/components/dispatch-table.vue

@@ -1,6 +1,6 @@
 <template>
   <el-row>
-    <mx-table  :propDefines="propDefines" :rows="displayRows">
+    <mx-table :propDefines="propDefines" :rows="displayRows">
       <template #classCount="{row,$index}">
         <el-input-number size="mini" v-model="row.classCount" @change="classCountChange(row,$index)" :min="0"
                          :disabled="row.classCount != 0" label="label"
@@ -19,10 +19,11 @@
       </template>
       <template #className="{row}">
         <div v-if="row.groupClass.length">
-          <span  class="btn-class" @click="toDetail(row,item.classId)" v-for="item in row.groupClass">{{item.className}}</span>
+          <span class="btn-class" @click="toDetail(row,item.classId)"
+                v-for="item in row.groupClass">{{ item.className }}</span>
         </div>
         <div v-else>
-          <span ></span>
+          <span></span>
         </div>
       </template>
       <!-- 班级调整 -->
@@ -45,7 +46,7 @@
         </el-button>
       </template>
     </mx-table>
-    <edit-group :year="round.year"  ref="editDialog"></edit-group>
+    <edit-group :year="round.year" ref="editDialog"></edit-group>
     <class-adjust ref="adjustDialog"></class-adjust>
   </el-row>
 </template>
@@ -61,21 +62,21 @@ export default {
   components: {
     EditGroup,
     SetClasscount,
-    ClassAdjust,
+    ClassAdjust
   },
-  mixins: [MxClassTreeTranslateMixin, MxSelectTranslateMixin,MxTransferMixin],
+  mixins: [MxClassTreeTranslateMixin, MxSelectTranslateMixin, MxTransferMixin],
   props: {
     loading: {
       type: Boolean,
-      default: false,
+      default: false
     },
     round: {
       type: Object,
-      default: {},
+      default: {}
     },
     settings: {
       type: Array,
-      default: [],
+      default: []
     }
   },
   data() {
@@ -106,13 +107,13 @@ export default {
           label: '人数'
         },
         proportion: {
-          label: '男女比例',
+          label: '男女比例'
         },
         adjust: {
           label: '操作',
           width: 200,
           slot: 'adjust'
-        },
+        }
       }
     }
   },
@@ -123,26 +124,32 @@ export default {
       // if (!this.settings.length) return []
       if (!this.round.groupList) return []
       const rows = this.round.roundGroups.map(rg => ({
-          groupId: rg.groupId,
-          roundId: this.round.roundId,
-          groupName: this.translateGroup(rg.groupId),
-          number: this.round.enrollGroupCount[rg.groupId] || 0, // 录取人数
-          classCount: rg.classCount, // 班级数
-          expectedCount: this.settings.filter(item => item.groupId == rg.groupId).map(item => item.expectedCount).toString(),
-          groupClass: this.settings
-            .filter(item => item.groupId == rg.groupId)
-            .map(item => {
-              return {
-                classId: item.classId,
-                className: this.getClassName(item.classId)
-              }
-            })
-        }))
+        groupId: rg.groupId,
+        roundId: this.round.roundId,
+        groupName: this.translateGroup(rg.groupId),
+        number: this.round.enrollGroupCount[rg.groupId] || 0, // 录取人数
+        classCount: rg.classCount, // 班级数
+        expectedCount: this.settings.filter(item => item.groupId == rg.groupId).map(item => item.expectedCount).toString(),
+        groupClass: this.settings
+          .filter(item => item.groupId == rg.groupId)
+          .map(item => {
+            return {
+              classId: item.classId,
+              className: this.getClassName(item.classId)
+            }
+          })
+      }))
       console.log('displayRows computed:', rows)
       return rows
     }
   },
-  inject: ['parentQuery'],
+  inject: {
+    parentQuery: {
+      default: function() {
+        // do nothing
+      }
+    }
+  },
   methods: {
     openEditDialog(row) {
       if (!row.classCount) {
@@ -155,21 +162,22 @@ export default {
     adjust(row) {
       // 调整 未分班不可调整
       const filterSettings = this.settings.filter(item => item.groupId == row.groupId)
-      if(filterSettings.length == 0){
+      if (filterSettings.length == 0) {
         this.$message.warning('未分班不可调整')
         return
       }
-      this.$refs.adjustDialog.open(row,this.settings.filter(item => item.groupId == row.groupId))
+      this.$refs.adjustDialog.open(row, this.settings.filter(item => item.groupId == row.groupId))
     },
-    toDetail(row,classId ='') {
+    toDetail(row, classId = '') {
       const filterSettings = this.settings.filter(item => item.groupId == row.groupId)
-      if(filterSettings.length == 0){
+      if (filterSettings.length == 0) {
         this.$message.warning('该组合还未设定班级')
         return
       }
       console.log(classId)
-      const params = {group: row,classId:classId,groupIds: (this.round.groupIds &&this.round.groupIds.split(','))||[],
-      parentQuery: this.parentQuery
+      const params = {
+        group: row, classId: classId, groupIds: (this.round.groupIds && this.round.groupIds.split(',')) || [],
+        parentQuery: this.parentQuery
       }
       const path = '/elective/dispatch/detail'
       this.transferTo(path, params)
@@ -193,9 +201,9 @@ export default {
 }
 </script>
 <style scoped>
-.btn-class{
+.btn-class {
   margin-right: 10px;
   cursor: pointer;
-  border-bottom:1px solid #42b983;
+  border-bottom: 1px solid #42b983;
 }
 </style>

+ 38 - 27
src/views/system/user/profile/components/esign-dialog.vue

@@ -15,13 +15,13 @@
       />
       <span slot="footer" class="dialog-footer fx-row jc-end">
 <!--           <el-popover-->
-<!--             placement="top-start"-->
-<!--             title="协议"-->
-<!--             width="200"-->
-<!--             trigger="click"-->
-<!--             content="协议内容">-->
-<!--             <el-button slot="reference">协议</el-button>-->
-<!--        </el-popover>-->
+        <!--             placement="top-start"-->
+        <!--             title="协议"-->
+        <!--             width="200"-->
+        <!--             trigger="click"-->
+        <!--             content="协议内容">-->
+        <!--             <el-button slot="reference">协议</el-button>-->
+        <!--        </el-popover>-->
 
         <div>
           <el-button @click="handleGenerate" type="primary">保存</el-button>
@@ -34,19 +34,26 @@
 </template>
 <script>
 import { submitElectiveModels, saveEsign, getStudentElectiveModels } from '@/api/webApi/elective/selected-subject'
+
 export default {
   data() {
     return {
       selectedList: [],
       dialogVisible: false, // 弹框是否开启
       lineWidth: 3, // 画笔的线条粗细
-      lineColor: "#000000", // 画笔的颜色
-      bgColor: "", // 画布的背景颜色
-      base64Img: "", // 最终画布生成的base64图片
-      isCrop: false, // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
-    };
+      lineColor: '#000000', // 画笔的颜色
+      bgColor: '', // 画布的背景颜色
+      base64Img: '', // 最终画布生成的base64图片
+      isCrop: false // 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分
+    }
+  },
+  inject: {
+    'refreshData': {
+      default: function() {
+        // do nothing
+      }
+    }
   },
-  inject: ['loadStudentSelected','getStudentElectiveModels'],
   methods: {
     open(selectedList) {
       this.selectedList = selectedList
@@ -54,21 +61,21 @@ export default {
     },
     // 清空画板
     handleReset() {
-      this.$refs.esign.reset();
+      this.$refs.esign.reset()
     },
     saveELective() {
       submitElectiveModels({
-        models:this.selectedList,
+        models: this.selectedList
         // esign:this.base64Img
       }).then(res => {
-        if(res.code == 200) {
+        if (res.code == 200) {
           this.dialogVisible = false
           this.$message.success('报名成功')
           this.loadStudentSelected()
           this.getStudentElectiveModels()
         }
 
-          console.log(res)
+        console.log(res)
       })
     },
     // 生成签字图
@@ -77,26 +84,25 @@ export default {
         .generate() // 使用生成器调用把签字的图片转换成为base64图片格式
         .then((res) => {
           console.log(this.selectedList)
-          this.base64Img = res;
+          this.base64Img = res
           this.saveELective()
           // 在这里向后端发请求把转换后的base64文件传给后端,后端接收以后再转换成图片做静态图片存储
           // 当然也可以把base64转成流文件blob格式的,类似上传给后端这样,具体哪种方式看后端要求
-          console.log(this.resultImg);
+          console.log(this.resultImg)
         })
         .catch((err) => {
           // 画布没有签字时会执行这里提示一下
           this.$message({
-            type: "warning",
-            message: "请先签名",
-          });
+            type: 'warning',
+            message: '请先签名'
+          })
           return
-        });
-
+        })
 
-      this.dialogVisible = true;
-    },
+      this.dialogVisible = true
+    }
   }
-};
+}
 </script>
 
 <style lang="scss" scoped>
@@ -104,24 +110,29 @@ export default {
   width: 100%;
   height: 100%;
   padding: 60px;
+
   .checkMan {
     width: 400px;
     height: 360px;
     text-align: center;
     border: 1px solid #e9e9e9;
     padding-top: 40px;
+
     h2 {
       margin-bottom: 20px;
     }
+
     .el-button {
       margin-bottom: 20px;
     }
+
     img {
       width: 100%;
       height: 200px;
     }
   }
 }
+
 ::v-deep .el-dialog__body {
   // 设置一下签字区域的虚线边框
   .mySign {

+ 7 - 1
src/views/system/user/profile/components/report-table.vue

@@ -161,7 +161,13 @@ export default {
     ChooseSubjectDialog,
     AiDialog
   },
-  inject: ['loadStudentSelected', 'getStudentElectiveModels'],
+  inject: {
+    'refreshData': {
+      default: function() {
+        // do nothing
+      }
+    }
+  },
   mixins: [
     MxSelectTranslate,
     PrimaryResolverMixins,

+ 14 - 5
src/views/system/user/profile/round-select.vue

@@ -27,7 +27,8 @@
         <elective-generation-steps v-if="selectObj" v-model="activeStep" :generation="generation"
                                    disable-hidden-feature></elective-generation-steps>
       </template>
-      <report-table v-if="generation.active <= generation.current" :generation="generation" :optional-majors="optionalMajors">
+      <report-table v-if="generation.active <= generation.current" :generation="generation"
+                    :optional-majors="optionalMajors">
         <template #header-prefix>
           <el-button circle icon="el-icon-refresh" @click="refresh" class="mr30"></el-button>
         </template>
@@ -65,8 +66,7 @@ export default {
   provide() {
     return {
       optionalMajors: this.getOptionalMajors,
-      loadStudentSelected: this.loadStudentSelected,
-      getStudentElectiveModels: this.getStudentElectiveModels,
+      refreshData: this.refreshData
     }
   },
   components: { SelectSubject, TestResult, TestEntry, ReportTable, ElectiveGenerationSteps },
@@ -92,7 +92,7 @@ export default {
   },
   computed: {
     emptyTitle() {
-      if(!this.activeOpt) return
+      if (!this.activeOpt) return
       return this.activeOpt.title + '还未开启'
     },
     currentOpt() {
@@ -148,13 +148,22 @@ export default {
     this.getRecommendMajor()
   },
   methods: {
+    refreshData() {
+      this.loading = true
+      try {
+        this.loadStudentSelected()
+        this.getStudentElectiveModels()
+      } finally {
+        this.loading = false
+      }
+    },
     getStudentElectiveModels() {
       this.loading = true
       getStudentElectiveModels().then(res => {
         this.generationModels = res.data.map(item => {
           item.selectedList = item.models.filter(model => {
             return model.selected
-          }).sort((prev,cur) => {
+          }).sort((prev, cur) => {
             return prev.selectedRank - cur.selectedRank
           })
           return item