ai-analysis-dialog.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <template>
  2. <el-dialog
  3. v-if="dialogVisible"
  4. title="AI分析"
  5. :visible.sync="dialogVisible"
  6. :close-on-click-modal ="false"
  7. width="80%"
  8. >
  9. <p class="mb10"><el-button type="primary">整体报告</el-button></p>
  10. <mx-table :propDefines="propDefines" :rows="formatRows">
  11. <template #subjects="{row}">
  12. <el-row>
  13. <el-col :span="8" v-for="subject in row.subjects">
  14. <el-tag type="success" class="mr10 mb10">{{ subject[0] }}</el-tag>
  15. </el-col>
  16. </el-row>
  17. </template>
  18. <template #group="{row}">
  19. <span :class="{'f-primary': row.allowSelect,'f-red':!row.allowSelect}">{{row.groupName}}</span>
  20. </template>
  21. <template #colleges="{row}">
  22. <el-row>
  23. <el-col :span="12" v-for="college in row.colleges">
  24. <el-tag type="success" class="mb10">{{ college.major[0] }}</el-tag>
  25. :
  26. <span>{{ college.college }}</span>
  27. </el-col>
  28. </el-row>
  29. </template>
  30. <template #report="{row}">
  31. <el-button @click="toReport(row)" >查看</el-button>
  32. </template>
  33. </mx-table>
  34. <span slot="footer" class="dialog-footer">
  35. <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
  36. </span>
  37. <!-- <single-subject-report :prevPreferences="prevPreferences" :reportInfo="tableInfo.rows" :currentGroup="currentReportName" ref="SingleSubjectReport"></single-subject-report>-->
  38. </el-dialog>
  39. </template>
  40. <script>
  41. import SingleSubjectReport from './single-subject-report'
  42. import BackTrackingAiResolverMixins from './ai-round-select-resolvers/backTracking-ai-resolver-mixins'
  43. export default {
  44. components:{
  45. SingleSubjectReport
  46. },
  47. props: {
  48. generation: Object
  49. },
  50. mixins: [BackTrackingAiResolverMixins],
  51. data() {
  52. return{
  53. dialogVisible:false,
  54. formatRows: [],
  55. tableInfo: {},
  56. currentReportName: '',
  57. }
  58. },
  59. computed: {
  60. resolveTablePrefix() {
  61. return {
  62. groupName: {
  63. label: '选科组合'
  64. },
  65. scoreSumGroup: {
  66. label: '组合成绩'
  67. },
  68. }
  69. },
  70. resolveTableSuffix() {
  71. return{
  72. subjects: {
  73. label: '自选专业',
  74. slot: 'subjects',
  75. width: '150'
  76. },
  77. colleges: {
  78. label: '院校',
  79. slot: 'colleges',
  80. width: '250'
  81. },
  82. signUp: {
  83. label: '报告',
  84. slot: 'report',
  85. width: '100',
  86. fixed: 'right',
  87. }
  88. }
  89. },
  90. formatTable() {
  91. if (!this.formatRows) return {}
  92. const options = this.generation.options
  93. console.log(this.generation)
  94. if (!options || !this.generation.active) return {}
  95. const optValues = Object.values(options)
  96. const dynamicColumns = {}
  97. for (let gen = options.primary.value; gen <= this.generation.active; gen++) {
  98. const opt = optValues.find(opt => opt.value == gen)
  99. const resolverKey = opt.key + 'Resolver'
  100. const resolver = this[resolverKey]
  101. if (typeof resolver === 'function') {
  102. const genColumns = resolver(gen, this.generation.active)
  103. Object.assign(dynamicColumns, genColumns)
  104. }
  105. }
  106. console.log(dynamicColumns)
  107. return dynamicColumns
  108. },
  109. propDefines() {
  110. return {
  111. ...this.resolveTablePrefix,
  112. ...this.formatTable,
  113. ...this.resolveTableSuffix,
  114. }
  115. }
  116. },
  117. methods: {
  118. toReport(row) {
  119. this.currentReportName = row.groupName
  120. this.$refs.SingleSubjectReport.dialogVisible = true
  121. },
  122. open(rows) {
  123. this.dialogVisible = true
  124. this.formatRows = rows
  125. },
  126. handleClose() {
  127. }
  128. }
  129. }
  130. </script>
  131. <style scoped>
  132. </style>