elective-generation.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. const Mock = require('mockjs')
  2. const Random = Mock['Random']
  3. const mockGeneration = 8 // 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. queryCode: Random.cname(),
  57. displayName: '已报名',
  58. values: mockGroups.map(groupId => ({
  59. groupId: groupId,
  60. value: Random.integer(120, 400),
  61. color: 'B',
  62. bold: false,
  63. star: false,
  64. disabled: false
  65. }))
  66. }
  67. ]
  68. const nonGroupDefines = [
  69. {
  70. category: 'unfinishedCount',
  71. queryCode: Random.cname(),
  72. displayName: '未报名',
  73. values: [{
  74. groupId: 0,
  75. value: Random.integer(0, 10),
  76. color: '',
  77. bold: false,
  78. star: false,
  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. queryCode: Random.cname(),
  101. displayName: '正常录取',
  102. values: mockGroups.map(groupId => ({
  103. groupId: groupId,
  104. value: Random.integer(120, 300),
  105. color: '',
  106. bold: false,
  107. star: false,
  108. disabled: false
  109. }))
  110. },
  111. {
  112. category: 'forcedCount',
  113. queryCode: Random.cname(),
  114. displayName: '调剂录取',
  115. values: mockGroups.map(groupId => ({
  116. groupId: groupId,
  117. value: Random.integer(0, 10),
  118. color: '',
  119. bold: false,
  120. star: false,
  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. queryCode: Random.cname(),
  146. displayName: '录取人数',
  147. values: mockGroups.map(groupId => ({
  148. groupId: groupId,
  149. value: Random.integer(120, 400),
  150. color: '',
  151. bold: false,
  152. star: false,
  153. disabled: false
  154. }))
  155. },
  156. {
  157. category: 'adjustCount',
  158. queryCode: Random.cname(),
  159. displayName: '调剂人数',
  160. values: mockGroups.map(groupId => ({
  161. groupId: groupId,
  162. value: Random.integer(120, 400),
  163. color: '',
  164. bold: false,
  165. star: false,
  166. disabled: false
  167. }))
  168. },
  169. {
  170. category: 'matchedCount',
  171. queryCode: Random.cname(),
  172. displayName: '专业符合',
  173. values: mockGroups.map(groupId => ({
  174. groupId: groupId,
  175. value: Random.integer(120, 400),
  176. color: '',
  177. bold: false,
  178. star: false,
  179. disabled: false
  180. }))
  181. },
  182. {
  183. category: 'nonmatchedCount',
  184. queryCode: Random.cname(),
  185. displayName: '专业不符',
  186. values: mockGroups.map(groupId => ({
  187. groupId: groupId,
  188. value: Random.integer(120, 400),
  189. color: '',
  190. bold: false,
  191. star: false,
  192. disabled: false
  193. }))
  194. }
  195. ]
  196. },
  197. {
  198. generations: [3, 5],
  199. factory: () => [
  200. {
  201. category: 'matchedApproved',
  202. queryCode: Random.cname(),
  203. displayName: '专业符合同意',
  204. values: mockGroups.map(groupId => ({
  205. groupId: groupId,
  206. value: Random.integer(120, 400),
  207. color: '',
  208. bold: false,
  209. star: false,
  210. disabled: false
  211. }))
  212. },
  213. {
  214. category: 'matchedNotOptional',
  215. queryCode: Random.cname(),
  216. displayName: '专业符合改选',
  217. values: mockGroups.map(groupId => ({
  218. groupId: groupId,
  219. value: Random.integer(120, 400),
  220. color: '',
  221. bold: false,
  222. star: false,
  223. disabled: false
  224. }))
  225. },
  226. {
  227. category: 'matchedRejected',
  228. queryCode: Random.cname(),
  229. displayName: '专业符合拒绝',
  230. values: mockGroups.map(groupId => ({
  231. groupId: groupId,
  232. value: Random.integer(120, 400),
  233. color: '',
  234. bold: false,
  235. star: false,
  236. disabled: false
  237. }))
  238. },
  239. {
  240. category: 'matchedNonaction',
  241. queryCode: Random.cname(),
  242. displayName: '专业符合未填',
  243. values: mockGroups.map(groupId => ({
  244. groupId: groupId,
  245. value: Random.integer(120, 400),
  246. color: '',
  247. bold: false,
  248. star: false,
  249. disabled: false
  250. }))
  251. },
  252. {
  253. category: 'matchedRankout',
  254. queryCode: Random.cname(),
  255. displayName: '专业符合被挤出',
  256. values: mockGroups.map(groupId => ({
  257. groupId: groupId,
  258. value: Random.integer(120, 400),
  259. color: '',
  260. bold: false,
  261. star: false,
  262. disabled: false
  263. }))
  264. },
  265. {
  266. category: 'nonmatchedApproved',
  267. queryCode: Random.cname(),
  268. displayName: '专业符合已填',
  269. values: mockGroups.map(groupId => ({
  270. groupId: groupId,
  271. value: Random.integer(120, 400),
  272. color: '',
  273. bold: false,
  274. star: false,
  275. disabled: false
  276. }))
  277. },
  278. {
  279. category: 'nonmatchedRejected',
  280. queryCode: Random.cname(),
  281. displayName: '不可调剂拒绝',
  282. values: mockGroups.map(groupId => ({
  283. groupId: groupId,
  284. value: Random.integer(120, 400),
  285. color: '',
  286. bold: false,
  287. star: false,
  288. disabled: false
  289. }))
  290. },
  291. {
  292. category: 'nonmatchedNonaction',
  293. queryCode: Random.cname(),
  294. displayName: '不可调剂未填',
  295. values: mockGroups.map(groupId => ({
  296. groupId: groupId,
  297. value: Random.integer(120, 400),
  298. color: '',
  299. bold: false,
  300. star: false,
  301. disabled: false
  302. }))
  303. }
  304. ]
  305. },
  306. {
  307. generations: [4],
  308. factory: () => [
  309. {
  310. category: 'approvedCount',
  311. queryCode: Random.cname(),
  312. displayName: '补录录取',
  313. values: mockGroups.map(groupId => ({
  314. groupId: groupId,
  315. value: Random.integer(120, 400),
  316. color: '',
  317. bold: false,
  318. star: false,
  319. disabled: false
  320. }))
  321. },
  322. {
  323. category: 'forcedCount',
  324. queryCode: Random.cname(),
  325. displayName: '调剂录取',
  326. values: mockGroups.map(groupId => ({
  327. groupId: groupId,
  328. value: Random.integer(120, 400),
  329. color: '',
  330. bold: false,
  331. star: false,
  332. disabled: false
  333. }))
  334. },
  335. {
  336. category: 'matchedCount',
  337. queryCode: Random.cname(),
  338. displayName: '可调剂人数',
  339. values: mockGroups.map(groupId => ({
  340. groupId: groupId,
  341. value: Random.integer(120, 400),
  342. color: '',
  343. bold: false,
  344. star: false,
  345. disabled: false
  346. }))
  347. },
  348. {
  349. category: 'nonmatchedCount',
  350. queryCode: Random.cname(),
  351. displayName: '不可调剂人数',
  352. values: mockGroups.map(groupId => ({
  353. groupId: groupId,
  354. value: Random.integer(120, 400),
  355. color: '',
  356. bold: false,
  357. star: false,
  358. disabled: false
  359. }))
  360. }
  361. ]
  362. },
  363. {
  364. generations: [6],
  365. factory: () => [
  366. {
  367. category: 'approvedCount',
  368. queryCode: Random.cname(),
  369. displayName: '补录录取',
  370. values: mockGroups.map(groupId => ({
  371. groupId: groupId,
  372. value: Random.integer(120, 400),
  373. color: '',
  374. bold: false,
  375. star: false,
  376. disabled: false
  377. }))
  378. },
  379. {
  380. category: 'forcedCount',
  381. queryCode: Random.cname(),
  382. displayName: '调剂录取',
  383. values: mockGroups.map(groupId => ({
  384. groupId: groupId,
  385. value: Random.integer(120, 400),
  386. color: '',
  387. bold: false,
  388. star: false,
  389. disabled: false
  390. }))
  391. }
  392. ]
  393. },
  394. {
  395. generations: [7],
  396. factory: () => [
  397. {
  398. category: 'forcedCount',
  399. queryCode: Random.cname(),
  400. displayName: '调剂录取',
  401. values: mockGroups.map(groupId => ({
  402. groupId: groupId,
  403. value: Random.integer(120, 400),
  404. color: '',
  405. bold: false,
  406. star: false,
  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. ]