BuildPaperSimple.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <template>
  2. <div class="build-paper-simple">
  3. <div class="build-step-title">
  4. <h3><span>确定构成</span></h3>
  5. </div>
  6. <el-table :data="baseDataList" :span-method="spanMethod">
  7. <el-table-column label="题型" align="center">
  8. <el-table-column
  9. label="题型大类"
  10. prop="questionMainTypeName"
  11. align="center"
  12. min-width="120"
  13. ></el-table-column>
  14. <el-table-column
  15. label="题型小类"
  16. prop="questionTypeName"
  17. align="center"
  18. min-width="120"
  19. ></el-table-column>
  20. </el-table-column>
  21. <el-table-column
  22. label="试题数量"
  23. prop="questionCount"
  24. align="center"
  25. min-width="100"
  26. ></el-table-column>
  27. <el-table-column
  28. label="抽取试题数量"
  29. prop="questionSelectCount"
  30. min-width="200"
  31. align="center"
  32. >
  33. <template slot-scope="scope">
  34. <el-input-number
  35. v-model="scope.row.questionSelectCount"
  36. placeholder="请输入抽取试题数量"
  37. :step="1"
  38. :min="1"
  39. :max="999"
  40. :controls="false"
  41. :precision="0"
  42. step-strictly
  43. ></el-input-number>
  44. </template>
  45. </el-table-column>
  46. <el-table-column
  47. label="试题分值"
  48. prop="questionScore"
  49. min-width="200"
  50. align="center"
  51. >
  52. <template slot-scope="scope">
  53. <el-input-number
  54. v-model="scope.row.questionScore"
  55. placeholder="请输入抽取试题分值"
  56. :step="0.1"
  57. :min="0.1"
  58. :max="999"
  59. :controls="false"
  60. :precision="1"
  61. step-strictly
  62. ></el-input-number>
  63. </template>
  64. </el-table-column>
  65. </el-table>
  66. </div>
  67. </template>
  68. <script>
  69. import { questionDistributionStatisticsApi } from "../../question/api";
  70. export default {
  71. name: "BuildPaperSimple",
  72. data() {
  73. return {
  74. baseDataList: [],
  75. };
  76. },
  77. mounted() {
  78. this.getBaseData();
  79. },
  80. methods: {
  81. spanMethod({ row, columnIndex }) {
  82. if (columnIndex === 0) {
  83. return {
  84. rowspan: row.rowspan || 0,
  85. colspan: 1,
  86. };
  87. }
  88. },
  89. async getBaseData() {
  90. const res = await questionDistributionStatisticsApi(this.courseId);
  91. // console.log(res.data);
  92. // parse data
  93. let baseDataList = [];
  94. res.data.forEach((mainGroup) => {
  95. const rowspan = mainGroup.questionTypeStatisticList.length;
  96. mainGroup.questionTypeStatisticList.forEach((quesItem, index) => {
  97. let nitem = {
  98. questionMainTypeName: mainGroup.questionMainTypeName,
  99. questionTypeName: quesItem.questionTypeName,
  100. questionCount: quesItem.questionCount,
  101. questionSelectCount: undefined,
  102. questionScore: undefined,
  103. };
  104. if (index === 0) nitem.rowspan = rowspan;
  105. baseDataList.push(nitem);
  106. });
  107. });
  108. this.baseDataList = baseDataList;
  109. },
  110. getData() {
  111. return this.baseDataList;
  112. },
  113. },
  114. };
  115. </script>