elective-generation.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. const Mock = require('mockjs')
  2. const Random = Mock['Random']
  3. const mockGeneration = 4 // primary
  4. const mockGroups = [1, 2, 3, 4, 5, 6]
  5. const mockPreferenceCount = 3 // 1 or 3 // 1志愿/3志愿
  6. module.exports = [
  7. {
  8. url: '/mock/front/report/getElectiveStatus',
  9. type: 'get',
  10. response: config => {
  11. return {
  12. code: 200,
  13. msg: 'success',
  14. data: {
  15. year: 2021,
  16. roundId: 1,
  17. roundName: '第X次选科',
  18. groupIds: mockGroups.toString(),
  19. roundGroups: mockGroups.map(groupId => ({
  20. groupId: groupId,
  21. classCount: Random.integer(2, 6),
  22. personCount: function() {
  23. return this.classCount * 50
  24. },
  25. limitPerson: false,
  26. rankOut: false
  27. })),
  28. allMatched: Random.boolean(1, 10, 8),
  29. currentGeneration: mockGeneration,
  30. // +
  31. disenrollCount: Random.integer(20, 100), // 未录人数
  32. enablePushNextDMGeneration: Random.boolean(1, 10, 8),
  33. allowDMAlgorithm: true,
  34. doneDMAlgorithm: Random.boolean(1, 10, 8),
  35. allowForce: Random.boolean(1, 10, 8)
  36. }
  37. }
  38. }
  39. },
  40. {
  41. url: '/mock/front/report/getElectiveSummary',
  42. type: 'get',
  43. response: config => {
  44. const results = []
  45. for (let generation = 1; generation <= mockGeneration; generation++) {
  46. const copyGeneration = generation
  47. switch (generation) {
  48. case 1:
  49. // primary
  50. const allPreferences = []
  51. for (let pref = 0; pref < mockPreferenceCount; pref++) {
  52. const preferences = []
  53. const groupDefines = [
  54. {
  55. category: 'actualCount',
  56. displayName: '已报名',
  57. values: mockGroups.map(groupId => ({
  58. groupId: groupId,
  59. value: Random.integer(120, 400),
  60. color: 'B',
  61. bold: false,
  62. star: false,
  63. queryCode: 'abc',
  64. disabled: false
  65. }))
  66. }
  67. ]
  68. const nonGroupDefines = [
  69. {
  70. category: 'unfinishedCount',
  71. displayName: '未报名',
  72. values: [{
  73. groupId: 0,
  74. value: Random.integer(0, 10),
  75. color: '',
  76. bold: false,
  77. star: false,
  78. queryCode: 'abc',
  79. disabled: false
  80. }]
  81. }
  82. ]
  83. preferences.push(...groupDefines)
  84. preferences.push(...nonGroupDefines)
  85. allPreferences.push(preferences)
  86. }
  87. const primary = {
  88. roundId: 1,
  89. generation: copyGeneration,
  90. categories: allPreferences
  91. }
  92. results.push(primary)
  93. break
  94. default:
  95. const accumulateDefine = {
  96. generations: [2, 4, 6, 7],
  97. factory: () => [
  98. {
  99. category: 'approvedCount',
  100. displayName: '正常录取',
  101. values: mockGroups.map(groupId => ({
  102. groupId: groupId,
  103. value: Random.integer(120, 300),
  104. color: '',
  105. bold: false,
  106. star: false,
  107. queryCode: 'abc',
  108. disabled: false
  109. }))
  110. },
  111. {
  112. category: 'forcedCount',
  113. displayName: '调剂录取',
  114. values: mockGroups.map(groupId => ({
  115. groupId: groupId,
  116. value: Random.integer(0, 10),
  117. color: '',
  118. bold: false,
  119. star: false,
  120. queryCode: 'abc',
  121. disabled: false
  122. }))
  123. }
  124. ]
  125. }
  126. const commonDefines = [
  127. {
  128. generations: [2],
  129. factory: () => [
  130. {
  131. category: 'indicateCount',
  132. displayName: '指标',
  133. values: mockGroups.map(groupId => ({
  134. groupId: groupId,
  135. value: Random.integer(120, 400),
  136. color: '',
  137. bold: false,
  138. star: true,
  139. queryCode: 'abc',
  140. disabled: false
  141. }))
  142. },
  143. {
  144. category: 'approvedCount',
  145. displayName: '录取人数',
  146. values: mockGroups.map(groupId => ({
  147. groupId: groupId,
  148. value: Random.integer(120, 400),
  149. color: '',
  150. bold: false,
  151. star: false,
  152. queryCode: 'abc',
  153. disabled: false
  154. }))
  155. },
  156. {
  157. category: 'adjustCount',
  158. displayName: '调剂人数',
  159. values: mockGroups.map(groupId => ({
  160. groupId: groupId,
  161. value: Random.integer(120, 400),
  162. color: '',
  163. bold: false,
  164. star: false,
  165. queryCode: 'abc',
  166. disabled: false
  167. }))
  168. },
  169. {
  170. category: 'matchedCount',
  171. displayName: '专业符合',
  172. values: mockGroups.map(groupId => ({
  173. groupId: groupId,
  174. value: Random.integer(120, 400),
  175. color: '',
  176. bold: false,
  177. star: false,
  178. queryCode: 'abc',
  179. disabled: false
  180. }))
  181. },
  182. {
  183. category: 'nonmatchedCount',
  184. displayName: '专业不符',
  185. values: mockGroups.map(groupId => ({
  186. groupId: groupId,
  187. value: Random.integer(120, 400),
  188. color: '',
  189. bold: false,
  190. star: false,
  191. queryCode: 'abc',
  192. disabled: false
  193. }))
  194. }
  195. ]
  196. },
  197. {
  198. generations: [3, 5],
  199. factory: () => [
  200. {
  201. category: 'matchedApproved',
  202. displayName: '专业符合同意',
  203. values: mockGroups.map(groupId => ({
  204. groupId: groupId,
  205. value: Random.integer(120, 400),
  206. color: '',
  207. bold: false,
  208. star: false,
  209. queryCode: 'abc',
  210. disabled: false
  211. }))
  212. },
  213. {
  214. category: 'matchedNotOptional',
  215. displayName: '专业符合改选',
  216. values: mockGroups.map(groupId => ({
  217. groupId: groupId,
  218. value: Random.integer(120, 400),
  219. color: '',
  220. bold: false,
  221. star: false,
  222. queryCode: 'abc',
  223. disabled: false
  224. }))
  225. },
  226. {
  227. category: 'matchedRejected',
  228. displayName: '专业符合拒绝',
  229. values: mockGroups.map(groupId => ({
  230. groupId: groupId,
  231. value: Random.integer(120, 400),
  232. color: '',
  233. bold: false,
  234. star: false,
  235. queryCode: 'abc',
  236. disabled: false
  237. }))
  238. },
  239. {
  240. category: 'matchedNonaction',
  241. displayName: '专业符合未填',
  242. values: mockGroups.map(groupId => ({
  243. groupId: groupId,
  244. value: Random.integer(120, 400),
  245. color: '',
  246. bold: false,
  247. star: false,
  248. queryCode: 'abc',
  249. disabled: false
  250. }))
  251. },
  252. {
  253. category: 'matchedRankout',
  254. displayName: '专业符合被挤出',
  255. values: mockGroups.map(groupId => ({
  256. groupId: groupId,
  257. value: Random.integer(120, 400),
  258. color: '',
  259. bold: false,
  260. star: false,
  261. queryCode: 'abc',
  262. disabled: false
  263. }))
  264. },
  265. {
  266. category: 'nonmatchedApproved',
  267. displayName: '专业符合已填',
  268. values: mockGroups.map(groupId => ({
  269. groupId: groupId,
  270. value: Random.integer(120, 400),
  271. color: '',
  272. bold: false,
  273. star: false,
  274. queryCode: 'abc',
  275. disabled: false
  276. }))
  277. },
  278. {
  279. category: 'nonmatchedRejected',
  280. displayName: '不可调剂拒绝',
  281. values: mockGroups.map(groupId => ({
  282. groupId: groupId,
  283. value: Random.integer(120, 400),
  284. color: '',
  285. bold: false,
  286. star: false,
  287. queryCode: 'abc',
  288. disabled: false
  289. }))
  290. },
  291. {
  292. category: 'nonmatchedNonaction',
  293. displayName: '不可调剂未填',
  294. values: mockGroups.map(groupId => ({
  295. groupId: groupId,
  296. value: Random.integer(120, 400),
  297. color: '',
  298. bold: false,
  299. star: false,
  300. queryCode: 'abc',
  301. disabled: false
  302. }))
  303. }
  304. ]
  305. },
  306. {
  307. generations: [4],
  308. factory: () => [
  309. {
  310. category: 'approvedCount',
  311. displayName: '补录录取',
  312. values: mockGroups.map(groupId => ({
  313. groupId: groupId,
  314. value: Random.integer(120, 400),
  315. color: '',
  316. bold: false,
  317. star: false,
  318. queryCode: 'abc',
  319. disabled: false
  320. }))
  321. },
  322. {
  323. category: 'forcedCount',
  324. displayName: '调剂录取',
  325. values: mockGroups.map(groupId => ({
  326. groupId: groupId,
  327. value: Random.integer(120, 400),
  328. color: '',
  329. bold: false,
  330. star: false,
  331. queryCode: 'abc',
  332. disabled: false
  333. }))
  334. },
  335. {
  336. category: 'matchedCount',
  337. displayName: '可调剂人数',
  338. values: mockGroups.map(groupId => ({
  339. groupId: groupId,
  340. value: Random.integer(120, 400),
  341. color: '',
  342. bold: false,
  343. star: false,
  344. queryCode: 'abc',
  345. disabled: false
  346. }))
  347. },
  348. {
  349. category: 'nonmatchedCount',
  350. displayName: '不可调剂人数',
  351. values: mockGroups.map(groupId => ({
  352. groupId: groupId,
  353. value: Random.integer(120, 400),
  354. color: '',
  355. bold: false,
  356. star: false,
  357. queryCode: 'abc',
  358. disabled: false
  359. }))
  360. }
  361. ]
  362. },
  363. {
  364. generations: [6],
  365. factory: () => [
  366. {
  367. category: 'approvedCount',
  368. displayName: '补录录取',
  369. values: mockGroups.map(groupId => ({
  370. groupId: groupId,
  371. value: Random.integer(120, 400),
  372. color: '',
  373. bold: false,
  374. star: false,
  375. queryCode: 'abc',
  376. disabled: false
  377. }))
  378. },
  379. {
  380. category: 'forcedCount',
  381. displayName: '调剂录取',
  382. values: mockGroups.map(groupId => ({
  383. groupId: groupId,
  384. value: Random.integer(120, 400),
  385. color: '',
  386. bold: false,
  387. star: false,
  388. queryCode: 'abc',
  389. disabled: false
  390. }))
  391. }
  392. ]
  393. },
  394. {
  395. generations: [7],
  396. factory: () => [
  397. {
  398. category: 'forcedCount',
  399. displayName: '调剂录取',
  400. values: mockGroups.map(groupId => ({
  401. groupId: groupId,
  402. value: Random.integer(120, 400),
  403. color: '',
  404. bold: false,
  405. star: false,
  406. queryCode: 'abc',
  407. disabled: false
  408. }))
  409. }
  410. ]
  411. }
  412. ]
  413. const defines = commonDefines.find(d => d.generations.includes(generation))
  414. const inAccDef = accumulateDefine.generations.includes(generation)
  415. if (defines) {
  416. results.push({
  417. roundId: 1,
  418. generation: copyGeneration,
  419. categories: defines.factory(),
  420. accumulates: inAccDef ? accumulateDefine.factory() : undefined
  421. })
  422. }
  423. break
  424. }
  425. }
  426. return {
  427. code: 200,
  428. msg: 'success',
  429. data: results
  430. }
  431. }
  432. }
  433. ]