exam.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. import { defineStore } from 'pinia'
  2. import subjectApi from '@/api/exam/paper/subject.js'
  3. import tool from '@/utils/tool'
  4. const funPaperType = function (type) {
  5. return tool.dictList(type).map((item) => {
  6. return {
  7. key: item.value,
  8. value: item.label
  9. }
  10. })
  11. }
  12. const format = function (array, key) {
  13. for (let item of array) {
  14. if (item.key === key) {
  15. return item.value
  16. }
  17. }
  18. return null
  19. }
  20. export const useExamStore = defineStore('exam', {
  21. state: () => ({
  22. toolbar:
  23. 'undo redo | forecolor backcolor bold italic underline strikethrough link | blocks fontfamily fontsize | \
  24. alignleft aligncenter alignright alignjustify outdent indent lineheight | bullist numlist | \
  25. image table preview | code selectall | numberedline | kityformula-editor',
  26. // 学科相关
  27. subjects: [],
  28. // 枚举相关
  29. user: {
  30. bankTypeEnum: funPaperType('BANK_TYPE'),
  31. sexEnum: [
  32. { key: 1, value: '男' },
  33. { key: 2, value: '女' }
  34. ],
  35. statusEnum: [
  36. { key: 1, value: '启用' },
  37. { key: 2, value: '禁用' }
  38. ],
  39. levelEnum: [
  40. { key: 1, value: '一年级' },
  41. { key: 2, value: '二年级' },
  42. { key: 3, value: '三年级' },
  43. { key: 4, value: '四年级' },
  44. { key: 5, value: '五年级' },
  45. { key: 6, value: '六年级' },
  46. { key: 7, value: '初一' },
  47. { key: 8, value: '初二' },
  48. { key: 9, value: '初三' },
  49. { key: 10, value: '高一' },
  50. { key: 11, value: '高二' },
  51. { key: 12, value: '高三' }
  52. ],
  53. roleEnum: [
  54. { key: 1, value: '学生' },
  55. { key: 2, value: '教师' },
  56. { key: 3, value: '管理员' }
  57. ],
  58. statusTag: [
  59. { key: 1, value: 'success' },
  60. { key: 2, value: 'danger' }
  61. ],
  62. statusBtn: [
  63. { key: 1, value: '禁用' },
  64. { key: 2, value: '启用' }
  65. ],
  66. message: {
  67. readTag: [
  68. { key: true, value: 'success' },
  69. { key: false, value: 'warning' }
  70. ],
  71. readText: [
  72. { key: true, value: '已读' },
  73. { key: false, value: '未读' }
  74. ]
  75. }
  76. },
  77. exam: {
  78. examPaper: {
  79. paperTypeEnum: funPaperType('PAPER_TYPE')
  80. },
  81. examPaperAnswer: {
  82. statusEnum: [
  83. { key: 1, value: '待批改' },
  84. { key: 2, value: '完成' }
  85. ],
  86. statusTag: [
  87. { key: 1, value: 'warning' },
  88. { key: 2, value: 'success' }
  89. ]
  90. },
  91. question: {
  92. typeEnum: [
  93. { key: 1, value: '单选题' },
  94. { key: 2, value: '多选题' },
  95. { key: 3, value: '判断题' },
  96. { key: 4, value: '填空题' },
  97. { key: 5, value: '简答题' }
  98. ],
  99. editUrlEnum: [
  100. { key: 1, value: 'single-choice', name: '单选题' },
  101. { key: 2, value: 'multiple-choice', name: '多选题' },
  102. { key: 3, value: 'true-false', name: '判断题' },
  103. { key: 4, value: 'gap-filling', name: '填空题' },
  104. { key: 5, value: 'short-answer', name: '简答题' }
  105. ],
  106. answer: {
  107. doRightTag: [
  108. { key: true, value: 'success' },
  109. { key: false, value: 'danger' },
  110. { key: null, value: 'warning' }
  111. ],
  112. doRightEnum: [
  113. { key: true, value: '正确' },
  114. { key: false, value: '错误' },
  115. { key: null, value: '待批改' }
  116. ],
  117. doCompletedTag: [
  118. { key: false, value: 'info' },
  119. { key: true, value: 'success' }
  120. ]
  121. }
  122. }
  123. }
  124. }),
  125. getters: {
  126. // 枚举格式化
  127. enumFormat: (state) => (array, key) => format(array, key),
  128. levelEnum: (state) => state.user.levelEnum,
  129. paperTypeEnum: (state) => state.exam.examPaper.paperTypeEnum,
  130. questionTypeEnum: (state) => state.exam.question.typeEnum,
  131. // 学科格式化
  132. subjectEnumFormat: (state) => (key) => {
  133. for (let item of state.subjects) {
  134. if (item.id === key) {
  135. return item.name + ' ( ' + item.levelName + ' )'
  136. }
  137. }
  138. return null
  139. },
  140. getLevelEnum: (state) => state.user.levelEnum,
  141. getBankTypeEnum: (state) => state.user.bankTypeEnum
  142. },
  143. actions: {
  144. async initSubject(action) {
  145. const re = await subjectApi.list()
  146. this.subjects = re
  147. if (action !== undefined) {
  148. action()
  149. }
  150. }
  151. }
  152. })