|  | @@ -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
 |