Browse Source

elective - student - component arguments reference adjust

hare8999@163.com 2 years ago
parent
commit
bcee8c61a3

+ 0 - 1
src/views/system/user/profile/components/groups-match.vue

@@ -26,7 +26,6 @@ export default {
   },
   computed: {
     formatList() {
-      console.log()
       if (!this.reports.length) return []
       return this.reports.map(item => {
         let tempProp = {}

+ 15 - 24
src/views/system/user/profile/components/report-table.vue

@@ -127,7 +127,8 @@ export default {
 
   props: {
     generation: Object,
-    readonly: Boolean // 校长端不允许操作
+    readonly: Boolean, // 校长端不允许操作
+    optionalMajors: { type: Array, default: () => [] }
   },
   components: {
     OverUnderBadge,
@@ -154,7 +155,6 @@ export default {
       activeStep: '',
       regInfo: '',
       prevPreferences: [1], // 选科前一轮报名的group
-      optionalMajors: [],
       dialogVisible: false,
       selectedList: [],
       singleList: [], // 单志愿列表
@@ -164,12 +164,12 @@ export default {
   computed: {
     flagShow() {
       return (this.generation.current == 3 && this.generation.active == 3) ||
-        (this.generation.current == 5 && this.generation.active == 5)||
+        (this.generation.current == 5 && this.generation.active == 5) ||
         (this.generation.current == 5 && this.generation.active == 7)
     },
     aiShow() {
       const active = this.generation.active
-      if (active == 3 || active == 5 ) return true
+      if (active == 3 || active == 5) return true
       return false
     },
     resolveTablePrefix() {
@@ -246,23 +246,14 @@ export default {
 
     formatRows() {
       if (!this.optionalMajors) return []
-      if (!this.generation.status?.groupIds) return []
-      const generationModels = this.generation.activeModels.find(item => item.generation == this.generation.active).models
-      return this.generation.status.groupIds.split(',').map(groupId => {
-        const row = generationModels.find(item => item.groupId == groupId)
+      if (!this.generation.roundGroups?.length) return []
+      if (!this.generation.activeModels?.length) return []
+      const generationModels = this.generation.activeModels.last()?.models || []
+      return this.generation.roundGroups.map(rg => {
+        const row = generationModels.find(item => item.groupId == rg.groupId) || {}
         row.allowSelectTips = row.allowSelect ? '报名中' : row.disabledReason || '无法报名'
-        row.subjects = this.optionalMajors.filter(college => {
-          if (college.matchedGroupIds.indexOf(row.groupId) != -1) return college.majorCategoryName
-        }).map(item => item.majorCategoryName)
-        console.log(row.subjects)
-        row.colleges = this.optionalMajors.filter(college => {
-          if (college.matchedGroupIds.indexOf(row.groupId) != -1) return college.majorCategoryName
-        }).map(item => {
-          return {
-            college: item.collegeName,
-            major: item.majorCategoryName
-          }
-        })
+        const matchedMajors = this.optionalMajors.filter(college => college.matchedGroupIds.includes(row.groupId))
+
         return {
           groupId: row.groupId,
           groupName: row.groupName,
@@ -271,8 +262,8 @@ export default {
           classCount: row.classCount,
           personCount: row.personCount,
           allowSelectTips: row.allowSelectTips,
-          colleges: row.colleges,
-          subjects: row.subjects,
+          colleges: matchedMajors.map(m => ({ college: m.collegeName, major: m.majorCategoryName })),
+          subjects: matchedMajors.map(m => m['majorCategoryName']),
           allowSelect: row.allowSelect
         }
       })
@@ -314,10 +305,10 @@ export default {
       this.$refs.esignDialog.open()
     },
     toSelect(row) {
-      const preferenceCount =this.generation.status.preferenceCount
+      const preferenceCount = this.generation.status.preferenceCount
       const count = this.formatRows.reduce((prev, cur) => {
         return prev += cur.selected ? 1 : 0
-      },0)
+      }, 0)
       console.log(count)
       if (count >= preferenceCount) {
         this.$message.warning(`最多选择${preferenceCount}个志愿`)

+ 18 - 110
src/views/system/user/profile/round-select.vue

@@ -4,17 +4,11 @@
       <template #header>选科信息</template>
       <el-row :gutter="20">
         <el-col :span="12">
-          <el-form ref="form" v-if="selectObj" :model="form" :rules="rule" label-position="right" label-width="80px">
+          <el-form ref="form" v-if="selectObj" label-position="right" label-width="80px">
             <el-form-item label="选科轮次" class="form-item-readonly">{{ selectObj.year }}{{ selectObj.name }}
             </el-form-item>
             <el-form-item label="选科时间" class="form-item-readonly">{{ selectObj.beginTime }} 至 {{ selectObj.endTime }}
             </el-form-item>
-            <!--<el-form-item label="选科状态" class="form-item-readonly">-->
-            <!--未选择/已选择<span class="f-red">缺字段</span>-->
-            <!--</el-form-item>-->
-            <!--<el-form-item label="AI选科" class="form-item-readonly">-->
-            <!--进入/查看<span class="f-red">缺字段</span>-->
-            <!--</el-form-item>-->
           </el-form>
         </el-col>
         <el-col :span="12" style="vertical-align: center">
@@ -26,71 +20,14 @@
     </el-card>
     <!--  自选专业 推荐专业  -->
     <select-subject class="mt20" :evaluationMajors="evaluationMajors" :optionalMajors="optionalMajors"
-                    :list="generation.currentGenerationModels"
-    ></select-subject>
+                    :list="roundGroups"></select-subject>
     <!--  选科报名表  -->
     <el-card class="box-card mt20">
       <template #header>
-        <elective-generation-steps v-if="allowSelect" v-model="activeStep" :generation="generation"
+        <elective-generation-steps v-if="selectObj" v-model="activeStep" :generation="generation"
                                    disable-hidden-feature></elective-generation-steps>
       </template>
-      <report-table ref="reportRef" :generation="generation"></report-table>
-    </el-card>
-
-    <el-card shadow="hover" class="mt20">
-      <template #header>意向选科</template>
-      <el-row :gutter="20">
-        <el-col :span="12">
-          <el-card shadow="hover">
-            <template #header>
-              <div class="fx-row fx-bet-cen">
-                <div>专业选科</div>
-                <div>
-                  <el-button type="primary" plain size="small" round>点击进入</el-button>
-                </div>
-              </div>
-            </template>
-            <div>介绍文案、测评结果</div>
-          </el-card>
-        </el-col>
-        <el-col :span="12">
-          <el-card shadow="hover">
-            <template #header>
-              <div class="fx-row fx-bet-cen">
-                <div>组合选科</div>
-                <div>
-                  <el-button type="primary" plain size="small" round>点击进入</el-button>
-                </div>
-              </div>
-            </template>
-            <div>介绍文案、测评结果</div>
-          </el-card>
-        </el-col>
-      </el-row>
-    </el-card>
-    <el-card shadow="hover" class="mt20">
-      <template #header>选科报名</template>
-      <div class="fx-column">
-        <div v-if="!allowSelect" class="mb30">
-          <span class="f-red">*</span>
-          当前时段未开启选科
-        </div>
-        <el-form ref="form" v-if="selectObj" :model="form" :rules="rule" label-position="right" label-width="80px">
-          <el-form-item label="选科轮次" class="form-item-readonly">{{ selectObj.year }}{{ selectObj.name }}</el-form-item>
-          <el-form-item label="选科时间" class="form-item-readonly">{{ selectObj.beginTime }} 至 {{ selectObj.endTime }}
-          </el-form-item>
-          <el-form-item prop="groupId" label="选科组合">
-            <el-radio-group v-model="form.groupId" :disabled="!allowSelect">
-              <el-radio v-for="(opt,idx) in selectGroupOptions" :key="idx" :label="opt.value">{{ opt.text }}
-              </el-radio>
-            </el-radio-group>
-          </el-form-item>
-          <div class="fx-row fx-cen-cen mt20" v-if="allowSelect">
-            <el-button v-loading="submitting" type="primary" @click="handleSubmit" style="width: 150px" round>保存
-            </el-button>
-          </div>
-        </el-form>
-      </div>
+      <report-table :generation="generation" :optional-majors="optionalMajors"></report-table>
     </el-card>
     <el-card shadow="hover" class="mt20">
       <template #header>选科通知</template>
@@ -134,31 +71,18 @@ export default {
         src: '9fca0b997b8346ce8c3ce69feaf89294',
         aliIdType: 2
       },
+      //
       optionalMajors: [],
       evaluationMajors: [],
-      form: {
-        groupId: ''
-      },
-      rule: {
-        groupId: [{
-          required: true,
-          message: '选科组合必填'
-        }]
-      },
       //
       selectObj: null,
       allowSelect: false,
-      submitting: false,
-      propData: {},
       stepOptions: config.electiveGenerationOptions,
       activeStep: '',
       generationModels: []
     }
   },
   computed: {
-    currentGenerationModels() {
-
-    },
     currentOpt() {
       /// 当前进程代对应的配置项,可能没有值
       return Object.values(this.stepOptions).find(opt => opt.value == this.selectObj.currentGeneration)
@@ -172,9 +96,20 @@ export default {
       /// 当前选中的进程代,可能没有值
       return this.generationModels.filter(gm => gm.generation <= this.activeOpt.value)
     },
+    roundGroups() {
+      if (!this.selectObj?.groupIds) return []
+      if (!this.generationModels.length) return []
+      const currentModels = this.generationModels.last().models
+      return this.selectObj.groupIds?.split(',').map(groupId => {
+        const matched = currentModels.find(m => m.groupId == groupId) || {}
+        return ({
+          ...matched,
+          groupId: groupId
+        })
+      }) || []
+    },
     generation() {
       if (!this.selectObj) return {}
-      const generationModels = this.generationModels
       return {
         // generation key value
         hiddenGenerations: [],
@@ -183,7 +118,7 @@ export default {
         currentOpt: this.currentOpt,
         active: this.activeOpt?.value,
         activeOpt: this.activeOpt,
-        currentGenerationModels: generationModels[generationModels.length-1].models,
+        roundGroups: this.roundGroups,
         status: {
           ...this.selectObj,
           roundName: this.selectObj.name || ''
@@ -191,15 +126,6 @@ export default {
         models: this.generationModels,
         activeModels: this.activeModels
       }
-    },
-    stepChange(key) {
-      console.log(key)
-    },
-    selectGroupOptions() {
-      return this.selectObj.groupList?.map(g => ({
-        text: g.name,
-        value: g.groupId
-      })) || []
     }
   },
   mounted() {
@@ -212,7 +138,6 @@ export default {
     getStudentElectiveModels() {
       getStudentElectiveModels().then(res => {
         this.generationModels = res.data
-        this.mode = res.data
       })
     },
     getRecommendMajor() {
@@ -220,12 +145,9 @@ export default {
         this.evaluationMajors = res.data
       })
     },
-
     getOptionalMajors() {
       getOptionalMajors().then(res => {
-        console.log(res)
         this.optionalMajors = res.data.reverse().splice(0, 6)
-        this.$refs.reportRef.initOption(this.optionalMajors)
       })
     },
     loadStudentSelected() {
@@ -238,20 +160,6 @@ export default {
         selectStatus.groupIds = '1,2,3,4,5,6'
         this.selectObj = selectStatus
         this.allowSelect = res.data.allowSelect
-        this.form.groupId = this.selectObj?.groupId
-
-      })
-    },
-    handleSubmit() {
-      this.$refs.form.validate((valid) => {
-        if (!valid) return
-        this.submitting = true
-        saveStudentSelected({
-          groupId: this.form.groupId
-        }).then(res => {
-          this.msgSuccess('保存成功')
-          this.loadStudentSelected()
-        }).finally(() => this.submitting = false)
       })
     }
   }