km-personal-knowledge-level.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <template>
  2. <div :class="$style.knowLevel">
  3. <a-card>
  4. <h3>个人知识等级设置</h3>
  5. <a-form-model ref="ruleForm" :model="form" :rules="rules" :label-col="labelCol">
  6. <a-form-model-item ref="level" label="等级总等级" prop="level">
  7. <a-input v-model="form.level" :disabled="disabled" />
  8. </a-form-model-item>
  9. <a-form-model-item ref="score" label="最大权重分数" prop="score">
  10. <a-input-number v-model="form.score" />
  11. </a-form-model-item>
  12. <a-form-model-item ref="num" label="分数间隔数" prop="num">
  13. <a-input v-model="form.num" :disabled="disabled" />
  14. </a-form-model-item>
  15. <a-form-model-item :wrapper-col="{ span: 14, offset: 4 }">
  16. <a-button @click="onSubmit">
  17. 生成等级
  18. </a-button>
  19. <a-button type="primary" @click="saveData">
  20. 保存
  21. </a-button>
  22. </a-form-model-item>
  23. </a-form-model>
  24. <sd-table
  25. :loading="leveTableLoading"
  26. :class="$style.levelTable"
  27. :columns="columns"
  28. :data-source="levelData"
  29. :pagination="pagination"
  30. :bordered="!bordered"
  31. />
  32. </a-card>
  33. </div>
  34. </template>
  35. <script>
  36. import { Message } from 'ant-design-vue'
  37. import KmKnowledageService from '../km-knowledage-service'
  38. import components from './_import-components/km-personal-knowledge-level-import'
  39. const columns = [
  40. {
  41. title: '等级',
  42. dataIndex: 'grade',
  43. align: 'center',
  44. defaultSortOrder: 'descend',
  45. },
  46. {
  47. title: '分数范围',
  48. dataIndex: 'sort',
  49. align: 'center',
  50. },
  51. {
  52. title: '等级名称',
  53. dataIndex: 'name',
  54. align: 'center',
  55. },
  56. ]
  57. export default {
  58. name: 'KmPersonalKnowledgeLevel',
  59. metaInfo: {
  60. title: '个人知识等级维护',
  61. },
  62. components,
  63. data() {
  64. return {
  65. labelCol: { span: 8 },
  66. wrapperCol: { span: 14 },
  67. form: {
  68. level: '8',
  69. score: null,
  70. num: '',
  71. },
  72. rules: {
  73. score: [{ required: true, message: '最大权重分数不能为空!', trigger: 'blur' }],
  74. },
  75. leveTableLoading: true,
  76. pagination: false,
  77. bordered: false,
  78. level: '8',
  79. number: '',
  80. disabled: true,
  81. levelData: [],
  82. columns,
  83. }
  84. },
  85. created() {
  86. this.queryPersonalLevelConfig()
  87. },
  88. methods: {
  89. // 获取个人知识等级设置
  90. queryPersonalLevelConfig() {
  91. const params = {
  92. columns: 'id,grade,startScope,endScope,name',
  93. maxResults: 10,
  94. startPosition: 0,
  95. expressions: [],
  96. formId: 'kmPersonalLevelConfig',
  97. }
  98. KmKnowledageService.getPersonalLevelConfig(params).then((res) => {
  99. if (res.data.data.length > 0) {
  100. this.leveTableLoading = false
  101. const levelData = res.data.data.reverse()
  102. this.form.num = levelData[0].endScope // 分数间隔数
  103. this.form.score = Number(levelData[levelData.length - 1].endScope) // 最大权重数
  104. levelData.forEach((element) => {
  105. const levelObj = {}
  106. levelObj.key = element.id
  107. levelObj.grade = element.grade
  108. levelObj.sort = element.startScope + '~' + element.endScope
  109. levelObj.name = element.name
  110. this.levelData.push(levelObj)
  111. })
  112. } else {
  113. this.leveTableLoading = false
  114. this.levelData = []
  115. }
  116. })
  117. },
  118. // 生成等级
  119. onSubmit() {
  120. this.leveTableLoading = true
  121. this.levelData = []
  122. KmKnowledageService.setPersonalLevelConfig({ score: this.form.score }).then((res) => {
  123. this.form.num = res.data[0].endScope // 分数间隔数
  124. res.data.forEach((element) => {
  125. const levelObj = {}
  126. levelObj.key = element.grade
  127. levelObj.grade = element.grade
  128. levelObj.sort = element.startScope + '~' + element.endScope
  129. levelObj.name = element.name
  130. this.levelData.push(levelObj)
  131. })
  132. this.leveTableLoading = false
  133. })
  134. },
  135. // 保存
  136. saveData() {
  137. const params = {
  138. score: this.form.score,
  139. }
  140. KmKnowledageService.savePersonalLevelConfig(params).then((res) => {
  141. if (res.data === 8) {
  142. Message.success('保存成功')
  143. }
  144. })
  145. },
  146. },
  147. }
  148. </script>
  149. <style module lang="scss">
  150. @use '@/common/design' as *;
  151. .know-level {
  152. h3 {
  153. padding-top: 20px;
  154. font-weight: bold;
  155. text-align: center;
  156. }
  157. form {
  158. width: 800px;
  159. margin: 5% auto 0;
  160. button {
  161. margin-left: 30%;
  162. }
  163. }
  164. :global(.ant-form-item-label) {
  165. float: left;
  166. width: 25%;
  167. }
  168. :global(.ant-form-item-control-wrapper) {
  169. float: left;
  170. width: 75%;
  171. }
  172. .level-table {
  173. width: 800px;
  174. margin: 50px auto 20px;
  175. }
  176. }
  177. </style>