浏览代码

ai分析报告--all-single

shilipojs 2 年之前
父节点
当前提交
a1b1049590

+ 1 - 1
src/views/elective/select/components/elective-ai-analysis-dialog.vue

@@ -27,7 +27,7 @@ export default {
     }
   },
   methods: {
-    open(rows) {
+    open() {
       this.dialogVisible = true
     },
     toReport(type) {

+ 83 - 61
src/views/elective/select/components/elective-ai-report-dialog.vue

@@ -7,58 +7,57 @@
     width="70%"
   >
     <div>
-      <div v-if="Object.keys(reportInfo).length > 0">
-        <p>点评:</p>
-        <div class="mt10 mb10">
-          <div class="fx-row" style="align-items: center">1,
-            <p v-html="admissionInfo"></p>
-            <span>,学校现在所开设的六种科目,</span> 现有
-            <span class="f-primary">
-              {{ canSign.map(item => item.groupName).join(',') }}
-            </span>您可以报名
+      <div class="mb10" >
+        <p class="mb5">1,报名情况:</p>
+        <elective-enroll-info :isFormReport="true" :generation="generation"
+                              :enroll-status="enrollStatus"
+        >
+          <span>,学校现在所开设的 {{ reportInfo.length }} 种科目,</span> 现有
+          <span class="f-primary">
+                        {{ canSign.map(item => item.groupName).join(',') }}
+          </span>您可以报名
+        </elective-enroll-info>
+      </div>
+      <div class="mt10" v-if="aiType == 'single' && !singleRow.allowSelect">
+        <span class="f-red">{{ singleRow.groupName }} </span>不可报名
+      </div>
+      <div v-else>
+        <div class="mb10">
+          <p class="mb5">2,专业符合情况:</p>
+          <div class="mb5" v-for="item in canSign" v-if="!singleRow || singleRow.groupId == item.groupId">
+            <span class="f-primary mr5"> {{ item.groupName }}:</span>
+            <div style="display: inline" v-if="item.colleges.length > 0">
+              <span class="mr5" v-for="college in item.colleges">{{ `${college.major}(${college.college})` }},</span>
+              符合您的专业要求;
+            </div>
+            <p style="display: inline" class="f-red" v-else>您的自选专业没有符合该组合的</p>
           </div>
         </div>
-        <div class="mt10" v-if="aiType == 'single' && !singleRow.allowSelect">
-          {{ singleRow.groupName }}不可报名
-        </div>
-        <div v-else>
-          <div class="mb10">
-            <p>2,专业符合情况:</p>
-            <div class="mb5" v-for="item in canSign">
-              <span class="f-primary mr5"> {{ item.groupName }}:</span>
-              <div style="display: inline" v-if="item.colleges.length > 0">
-                <span class="mr5" v-for="college in item.colleges">{{ `${college.major}(${college.college})` }},</span>
-                符合您的专业要求;
-              </div>
-              <p style="display: inline" class="f-red" v-else>您的自选专业没有符合该组合的</p>
-
-            </div>
+        <div class="mb10">
+          <p class="mb5">3,成绩情况:</p>
+          <div v-for="(item,index) in canSign" v-if="!singleRow || singleRow.groupId == item.groupId">
+            <span>{{ item.groupName }} : </span>成绩{{ item.scoreSumGroup }} <span class="f-primary" v-if="index == 0"> *成绩最优</span>
           </div>
-          <div class="mb10">
-            <p>3,成绩情况:</p>
-            <div v-for="(item,index) in canSign">
-              <span>{{ item.groupName }} : </span>成绩{{ item.scoreSumGroup }} <span class="f-primary" v-if="index == 0"> *成绩最优</span>
+        </div>
+        <div class="mb10">
+          <p class="mb5">4,录取分析:</p>
+          <div v-for="(item,index) in canSign" class="mb10">
+            <div v-if="!singleRow || singleRow.groupId == item.groupId">
+              <p>{{ item.groupName }} : 成绩{{ item.scoreSumGroup }}<span class="f-primary" v-if="index == 0"
+              > (成绩最优组合)</span>
+              </p>
+              <p>
+                在补录学生{{ tipsModel.countNumber }}人中该组合成绩最优学生有{{ item.bestInIndicator }}人,该组合计划人数为{{
+                  item.groupIndicator
+                }}
+                您在该<span v-if="index == 0">最优</span>组合中排名{{ item.rankInBest }},您可以被该组合录取。您的成绩符合该组合。<span
+                v-if="item.colleges.length == 0"
+              >(自选专业不符合)</span>
+                <span v-if="index == 0">按照成绩优先原则,系统推荐您报该组合。</span>
+                <span v-else>您如果不填写系统推荐您的最优组合,您也可以报该组合。</span>
+              </p>
             </div>
-          </div>
-          <div class="mb10">
-            <p class="mb10">4,录取分析:</p>
-            <div v-for="(item,index) in canSign" class="mb10">
-              <div v-if="!singleRow || singleRow.groupId == item.groupId">
-                <p>{{ item.groupName }} : 成绩{{ item.scoreSumGroup }}<span class="f-primary" v-if="index == 0"> (补录成绩最优组合)</span>
-                </p>
-                <p>
-                  在补录学生{{ tipsModel.countNumber }}人中该组合成绩最优学生有{{ item.bestInIndicator }}人,该组合计划人数为{{
-                    item.groupIndicator
-                  }}
-                  您在该<span v-if="index == 0">最优</span>组合中排名{{ item.rankInBest }},您可以被该组合录取。您的成绩符合该组合。<span
-                  v-if="item.colleges.length == 0"
-                >(自选专业不符合)</span>
-                  <span v-if="index == 0">按照成绩优先原则,系统推荐您报该组合。</span>
-                  <span v-else>您如果不填写系统推荐您的最优组合,您也可以报该组合。</span>
-                </p>
-              </div>
 
-            </div>
           </div>
         </div>
       </div>
@@ -70,21 +69,50 @@
 </template>
 <script>
 import MxSelectTranslateMixin from '@/components/Cache/modules/mx-select-translate-mixin.js'
+import ElectiveEnrollInfo from '@/views/elective/select/components/elective-enroll-info'
+import ElectiveToolsMixin from '@/views/elective/select/components/elective-tools-mixins'
 
 export default {
   name: 'elective-ai-report-dialog',
-  mixins: [MxSelectTranslateMixin],
+  mixins: [MxSelectTranslateMixin, ElectiveToolsMixin],
+  components: { ElectiveEnrollInfo },
   props: {
-    admissionInfo: {
-      type: String,
-      default: ''
-    },
-    reportInfo: {
-      type: Array,
+    generation: {
+      type: Object,
       default: {}
     }
   },
+  data() {
+    return {
+      dialogVisible: false,
+      singleRow: {}
+    }
+  },
   computed: {
+    enrollStatus() {
+      const enrolledGroup = this.generation.activeModel.models?.find(this.isGroupEnrolled)
+      if (enrolledGroup) {
+        let enrolledModel = this.generation.activeModel
+        do {
+          const matched = enrolledModel.models?.find(this.isGroupEnrolled)
+          if (matched
+            && matched.groupId == enrolledGroup.groupId
+            && enrolledModel.selectedList.includes(matched)) {
+            return {
+              enrolledGroup,
+              enrolledModel
+            }
+          }
+          enrolledModel = enrolledModel.prevModel
+        }
+        while (enrolledModel)
+      }
+      return { enrolledGroup, enrolledModel: null }
+    },
+    reportInfo() {
+      if (!this.generation) return {}
+      return this.generation.activeModel.models
+    },
     tipsModel() {
       const countNumber = this.canSign.reduce((prev, cur) => {
         return prev + cur.groupIndicator
@@ -95,18 +123,12 @@ export default {
       }
     },
     canSign() {
-      if (!this.reportInfo.length) return []
+      // if (!this.reportInfo.length) return []
       return this.reportInfo.filter(item => {
         return item.allowSelect
       }).sort((prev, next) => prev.scoreSumGroup < next.scoreSumGroup ? 1 : -1)
     }
   },
-  data() {
-    return {
-      dialogVisible: false,
-      singleRow: {}
-    }
-  },
   methods: {
     init(type, row) {
       this.aiType = type

+ 1 - 1
src/views/elective/select/components/elective-ai-table.vue

@@ -17,7 +17,7 @@
         <el-button @click="toReport('single',row)">查看</el-button>
       </template>
     </mx-table>
-    <elective-ai-report-dialog v-if="true" ref="aiReportDialog" :reportInfo="generation.activeModel.models"></elective-ai-report-dialog>
+    <elective-ai-report-dialog v-if="true" ref="aiReportDialog" :generation="generation"></elective-ai-report-dialog>
   </div>
 </template>
 <script>

+ 3 - 2
src/views/elective/select/components/elective-enroll-info.vue

@@ -33,13 +33,14 @@
     <template v-if="enableSelect">
       现有以下标黄组合可以重新报名
     </template>
+    <slot></slot>
   </p>
 </template>
 
 <script>
 export default {
   name: 'elective-enroll-info',
-  props: ['generation', 'enrollStatus'],
+  props: ['generation', 'enrollStatus','isFormReport'],
   computed: {
     enrolled() {
       return !!this.enrollStatus?.enrolledGroup
@@ -58,7 +59,7 @@ export default {
     enableSelect() {
       return !this.enrolled &&
         this.generation.active == this.generation.current &&
-        !this.generation.activeOpt.decisionMaking
+        !this.generation.activeOpt.decisionMaking && !this.isFormReport
     }
   },
   methods: {

+ 1 - 1
src/views/elective/select/components/elective-table.vue

@@ -151,7 +151,7 @@ export default {
     },
     toAiAnalysis() {
       // AI 分析 跳转
-      this.$refs.aiDialog.open(this.formatRows)
+      this.$refs.aiDialog.open()
     }
   }
 }