DiagnoseConfig.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <template>
  2. <div class="diagnose-config">
  3. <el-form
  4. ref="modalFormComp"
  5. :model="modalForm"
  6. :rules="rules"
  7. label-width="180px"
  8. >
  9. <el-form-item prop="knowledgeTitle" label="知识:">
  10. <el-input
  11. v-model.trim="modalForm.knowledgeTitle"
  12. placeholder="知识"
  13. clearable
  14. ></el-input>
  15. </el-form-item>
  16. <el-form-item prop="rateSet" label="二级维度的精熟度定义:">
  17. <div class="part-box part-box-pad part-box-border-bold">
  18. <proficiency-edit
  19. :rates="modalForm.rateSet"
  20. @data-change="rateSetChange"
  21. ></proficiency-edit>
  22. </div>
  23. </el-form-item>
  24. <el-form-item prop="abilityTitle" label="能力:">
  25. <el-input
  26. v-model.trim="modalForm.abilityTitle"
  27. placeholder="能力"
  28. clearable
  29. ></el-input>
  30. </el-form-item>
  31. <el-form-item prop="isfuf" label="是否呈现赋分:">
  32. <el-radio-group v-model="modalForm.isfuf">
  33. <el-radio
  34. v-for="(val, key) in BOOLEAN_TYPE"
  35. :key="key"
  36. :label="key * 1"
  37. >{{ val }}</el-radio
  38. >
  39. </el-radio-group>
  40. <p class="tips-info">
  41. 说明:若选择“是”,则考后需提供学生的赋分成绩(学号、总分),报告中的分值显示赋分后的成绩分数;若选择“否”,则报告中的分值显示卷面原始分。
  42. </p>
  43. </el-form-item>
  44. <el-form-item prop="fullScore" label="满分:">
  45. <el-input-number
  46. v-model="modalForm.fullScore"
  47. placeholder="请输入满分,如100"
  48. :min="1"
  49. :max="9999"
  50. :step="1"
  51. step-strictly
  52. :controls="false"
  53. ></el-input-number>
  54. <p class="tips-info">
  55. 说明:若显示赋分,则填写赋分满分分值,否则填写卷面原始分满分分值。
  56. </p>
  57. </el-form-item>
  58. <el-form-item prop="passScore" label="及格分:">
  59. <el-input-number
  60. v-model="modalForm.passScore"
  61. placeholder="请输入及格分,如60"
  62. :min="1"
  63. :max="9999"
  64. :step="1"
  65. step-strictly
  66. :controls="false"
  67. ></el-input-number>
  68. <p class="tips-info">
  69. 说明:成绩分数≥及格分数线,报告中的结果显示“通过”,否则为“不通过”。
  70. </p>
  71. </el-form-item>
  72. </el-form>
  73. </div>
  74. </template>
  75. <script>
  76. import { BOOLEAN_TYPE } from "@/constants/enumerate";
  77. import ProficiencyEdit from "./ProficiencyEdit.vue";
  78. const initModalForm = {
  79. id: "",
  80. knowledgeTitle: "课程标准规定的学科内容",
  81. abilityTitle: "经学习与训练内化而成的心理结构",
  82. isfuf: 0,
  83. fullScore: 100,
  84. passScore: 100,
  85. rateSet: []
  86. };
  87. export default {
  88. name: "diagnose-config",
  89. components: { ProficiencyEdit },
  90. data() {
  91. const isEmpty = num => !num && num !== 0;
  92. const rateSetValidator = (rule, value, callback) => {
  93. if (
  94. value.some(item => isEmpty(item.startRate) || isEmpty(item.endRate))
  95. ) {
  96. return callback(new Error("请完成精熟度定义"));
  97. }
  98. for (let i = 0; i < value.length; i++) {
  99. const item = value[i];
  100. if (i) {
  101. const prevItem = value[i - 1];
  102. if (prevItem.startRate - 1 !== item.endRate)
  103. return callback(new Error("请保证区间连续"));
  104. }
  105. }
  106. callback();
  107. };
  108. return {
  109. modalForm: { ...initModalForm },
  110. BOOLEAN_TYPE,
  111. rules: {
  112. knowledgeTitle: [
  113. {
  114. required: true,
  115. message: "请输入知识",
  116. trigger: "change"
  117. },
  118. {
  119. max: 100,
  120. message: "知识字数不能超过100",
  121. trigger: "change"
  122. }
  123. ],
  124. abilityTitle: [
  125. {
  126. required: true,
  127. message: "请输入能力",
  128. trigger: "change"
  129. },
  130. {
  131. max: 100,
  132. message: "能力字数不能超过100",
  133. trigger: "change"
  134. }
  135. ],
  136. fullScore: [
  137. {
  138. required: true,
  139. message: "请输入满分",
  140. trigger: "change"
  141. }
  142. ],
  143. passScore: [
  144. {
  145. required: true,
  146. message: "请输入及格分",
  147. trigger: "change"
  148. }
  149. ],
  150. rateSet: [
  151. {
  152. validator: rateSetValidator,
  153. trigger: "change"
  154. }
  155. ]
  156. }
  157. };
  158. },
  159. methods: {
  160. getList() {},
  161. rateSetChange(data) {
  162. this.modalForm.rateSet = data;
  163. this.$refs.modalFormComp.validateField("rateSet");
  164. },
  165. async submit() {}
  166. }
  167. };
  168. </script>