elective-ai-report-dialog.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <template>
  2. <el-dialog
  3. append-to-body
  4. v-if="dialogVisible"
  5. title="选科过程报告"
  6. :visible.sync="dialogVisible"
  7. width="70%"
  8. >
  9. <div>
  10. <div class="mb10" >
  11. <p class="mb5">1,报名情况:</p>
  12. <span v-if="approved">恭喜</span>
  13. <span v-if="!appliedModel.selectedList.length">
  14. <span>您在{{subTitle(appliedModel.option.title)}}阶段未填报,</span>
  15. </span>
  16. <span v-else-if="appliedModel.selectedList.some(m=>m.rejected)">
  17. <span>您在{{subTitle(appliedModel.option.title)}}阶段拒绝填报了</span>
  18. <span class="f-red"> {{apply.toString(',')}} </span>组合,
  19. </span>
  20. <span v-else>
  21. <span>您在{{subTitle(appliedModel.option.title)}}阶段填报的</span>
  22. <span :class="approved ? 'f-primary': 'f-red'"> {{apply.toString(',')}}组合 </span>
  23. <span v-if="approved">已被录取</span>
  24. <span v-else>未被录取</span>,
  25. </span>
  26. <span>学校现在所开设的{{activeModel.models.length}}种科目,现有 <span class="f-primary">{{ canSign.map(item => item.groupName).join(',') }} </span> {{canSign.length}}个科目缺额, </span>
  27. <span>系统推荐您 <span class="f-primary">{{activeModel.models.find(item => item.isRecommend).groupName}}</span> 科目组合</span>
  28. </div>
  29. <div>
  30. <div class="mb10">
  31. <p class="mb5">2,专业符合情况:</p>
  32. <div class="mb5" v-for="item in canSign">
  33. <div class="f-primary mr5 mb5"> {{item.groupName}}{{item.groupName == recommend ? '(系统推荐科目组合)' : ''}}</div>
  34. <div style="display: inline" v-if="item.colleges.length > 0">
  35. <span class="mr5" v-for="college in item.colleges">{{ college.college }}:{{college.major}}。</span>
  36. 符合您的专业要求;
  37. </div>
  38. <p style="display: inline" class="f-red" v-else>该组合没有您自选的专业</p>
  39. </div>
  40. </div>
  41. <div class="mb10">
  42. <p class="mb5">3,成绩情况:</p>
  43. <div v-for="(item,index) in canSign" class="mb10">
  44. <div class="mb5">{{ item.groupName }}:{{index == 0 ? '(成绩最优)': ''}}</div>
  45. <div>成绩{{ item.scoreSumGroup }}</div>
  46. </div>
  47. </div>
  48. <div class="mb10">
  49. <p class="mb5">4,录取分析:</p>
  50. <p class="f-primary">系统推荐:{{recommend}}{{canSign[0].groupName == recommend ? '成绩最优组合' : ''}}</p>
  51. <p>您所在学校参与{{activeModel.option.title}}的学生共计有{{activeModel.disenrollCount}}人</p>
  52. <p>您在未录满的{{canSign.length}}个组合中,全校{{ activeModel.option.title }}人数排名如下:</p>
  53. <p v-for="item in canSign">
  54. {{item.groupName}} <span class="f-red">{{item.rankInDisenroll}}</span> 名 <span>{{`(${item.rankInDisenroll}/${activeModel.disenrollCount})`}}</span>
  55. </p>
  56. <p>计划数如下:</p>
  57. <p v-for="item in canSign">{{item.groupName}} <span class="f-red">{{item.groupIndicator}}</span> 人</p>
  58. <p>成绩最优人数如下:</p>
  59. <p v-for="item in canSign">{{item.groupName}} <span class="f-red">{{item.bestInIndicator}}</span> 人</p>
  60. <p class="f-red">
  61. 您在{{canSign.length}}个缺额组合中{{bestAchieve.groupName}}成绩最优组合{{ bestAchieve.scoreSumGroup }}分,
  62. 在该组合最优人数{{ bestAchieve.bestInIndicator }}人中,排名第{{bestAchieve.rankInBest}}名,
  63. 全校排名第{{bestAchieve.rankInDisenroll}}名,计划数为{{bestAchieve.groupIndicator}}人
  64. <span v-if="section.must">
  65. ,您可以被该组合录取。
  66. </span>
  67. <span v-else-if="section.maybe">
  68. ,如果没有其他学生在该组合全校排名比您高且填报该组合,您可以被该组合录取。
  69. </span>
  70. <span v-else>
  71. ,所以您不能被成绩最优组合{{bestAchieve.groupName}}录取,系统推荐您报名{{recommend}}组合
  72. </span>
  73. </p>
  74. </div>
  75. </div>
  76. </div>
  77. <span slot="footer" class="dialog-footer">
  78. <el-button type="primary" @click="dialogVisible =false">确 定</el-button>
  79. </span>
  80. </el-dialog>
  81. </template>
  82. <script>
  83. import MxSelectTranslateMixin from '@/components/Cache/modules/mx-select-translate-mixin.js'
  84. import ElectiveEnrollInfo from '@/views/elective/select/components/elective-enroll-info'
  85. import ElectiveToolsMixin from '@/views/elective/select/components/elective-tools-mixins'
  86. // import ElectiveTableMixin from '@/views/elective/select/components/elective-table-mixins'
  87. export default {
  88. name: 'elective-ai-report-dialog',
  89. mixins: [MxSelectTranslateMixin, ElectiveToolsMixin,ElectiveEnrollInfo],
  90. props: {
  91. generation: {
  92. type: Object,
  93. default: {}
  94. }
  95. },
  96. data() {
  97. return {
  98. dialogVisible: false,
  99. singleRow: {}
  100. }
  101. },
  102. computed: {
  103. // 1报名情况 填报组合
  104. apply(){
  105. return this.appliedModel.selectedList.map(item => item.groupName)
  106. },
  107. // 1报名情况 推荐组合
  108. recommend() {
  109. return this.activeModel.models.find(item => item.isRecommend)?.groupName
  110. },
  111. activeModel() {
  112. if (!this.generation) return {}
  113. return this.generation.activeModel
  114. },
  115. // 成绩最优
  116. bestAchieve(){
  117. return this.canSign[0]
  118. },
  119. section() {
  120. return {
  121. must: this.bestAchieve.rankInDisenroll <= this.bestAchieve.groupIndicator, // 可以录
  122. maybe: this.bestAchieve.rankInBest <= this.bestAchieve.groupIndicator && this.bestAchieve.rankInDisenroll > this.bestAchieve.groupIndicator, // 可能录上
  123. other: '', // 录不上,可以报推荐
  124. }
  125. },
  126. canSign() {
  127. // if (!this.reportInfo.length) return []
  128. return this.activeModel.models.filter(item => {
  129. return item.allowSelect
  130. }).sort((prev, next) => prev.scoreSumGroup < next.scoreSumGroup ? 1 : -1)
  131. }
  132. },
  133. methods: {
  134. init(type, row) {
  135. this.aiType = type
  136. this.dialogVisible = true
  137. this.singleRow = row
  138. }
  139. }
  140. }
  141. </script>
  142. <style scoped>
  143. </style>