elective-generation.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535
  1. const Mock = require('mockjs')
  2. const Random = Mock['Random']
  3. const mockGeneration = 7 // 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/elective/generation/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. allEnrolled: true,
  29. currentGeneration: mockGeneration,
  30. // +
  31. disenrollCount: 0, // 未录人数
  32. enablePushNextDMGeneration: true,
  33. allowDMAlgorithm: true,
  34. doneDMAlgorithm: true,
  35. allowForce: true,
  36. enablePushForceAdjust: true
  37. }
  38. }
  39. }
  40. },
  41. {
  42. url: '/mock/front/elective/generation/getElectiveSummary',
  43. type: 'get',
  44. response: config => {
  45. const results = []
  46. for (let generation = 1; generation <= mockGeneration; generation++) {
  47. const copyGeneration = generation
  48. switch (generation) {
  49. case 1:
  50. // primary
  51. const allPreferences = []
  52. for (let pref = 0; pref < mockPreferenceCount; pref++) {
  53. const preferences = []
  54. const groupDefines = [
  55. {
  56. category: 'actualCount',
  57. queryCode: Random.cname(),
  58. displayName: '已报名',
  59. detailName: '报名组合',
  60. values: mockGroups.map(groupId => ({
  61. groupId: groupId,
  62. value: Random.integer(120, 400),
  63. color: 'B',
  64. bold: false,
  65. star: false,
  66. disabled: false
  67. }))
  68. }
  69. ]
  70. const nonGroupDefines = [
  71. {
  72. category: 'unfinishedCount',
  73. queryCode: Random.cname(),
  74. displayName: '未报名',
  75. detailName: '',
  76. values: [{
  77. groupId: 0,
  78. value: Random.integer(0, 10),
  79. color: '',
  80. bold: false,
  81. star: false,
  82. disabled: false
  83. }]
  84. }
  85. ]
  86. preferences.push(...groupDefines)
  87. preferences.push(...nonGroupDefines)
  88. allPreferences.push(preferences)
  89. }
  90. const primary = {
  91. roundId: 1,
  92. generation: copyGeneration,
  93. categories: allPreferences
  94. }
  95. results.push(primary)
  96. break
  97. default:
  98. const accumulateDefine = {
  99. generations: [2, 4, 6, 7],
  100. factory: () => [
  101. {
  102. category: 'approvedCount',
  103. queryCode: Random.cname(),
  104. displayName: '正常录取',
  105. detailName: '录取组合',
  106. values: mockGroups.map(groupId => ({
  107. groupId: groupId,
  108. value: Random.integer(120, 300),
  109. color: '',
  110. bold: false,
  111. star: false,
  112. disabled: false
  113. }))
  114. },
  115. {
  116. category: 'forcedCount',
  117. queryCode: Random.cname(),
  118. displayName: '调剂录取',
  119. detailName: '调剂组合',
  120. values: mockGroups.map(groupId => ({
  121. groupId: groupId,
  122. value: Random.integer(0, 10),
  123. color: '',
  124. bold: false,
  125. star: false,
  126. disabled: false
  127. }))
  128. }
  129. ]
  130. }
  131. const commonDefines = [
  132. {
  133. generations: [2],
  134. factory: () => [
  135. {
  136. category: 'indicateCount',
  137. displayName: '指标',
  138. values: mockGroups.map(groupId => ({
  139. groupId: groupId,
  140. value: Random.integer(120, 400),
  141. color: '',
  142. bold: false,
  143. star: true,
  144. queryCode: 'abc',
  145. disabled: false
  146. }))
  147. },
  148. {
  149. category: 'approvedCount',
  150. queryCode: Random.cname(),
  151. displayName: '录取人数',
  152. detailName: '录取组合',
  153. values: mockGroups.map(groupId => ({
  154. groupId: groupId,
  155. value: Random.integer(120, 400),
  156. color: '',
  157. bold: false,
  158. star: false,
  159. disabled: false
  160. }))
  161. },
  162. {
  163. category: 'adjustCount',
  164. queryCode: Random.cname(),
  165. displayName: '调剂人数',
  166. detailName: '调剂组合',
  167. values: mockGroups.map(groupId => ({
  168. groupId: groupId,
  169. value: Random.integer(120, 400),
  170. color: '',
  171. bold: false,
  172. star: false,
  173. disabled: false
  174. }))
  175. },
  176. {
  177. category: 'matchedCount',
  178. queryCode: Random.cname(),
  179. displayName: '专业符合',
  180. detailName: '推荐组合',
  181. values: mockGroups.map(groupId => ({
  182. groupId: groupId,
  183. value: Random.integer(120, 400),
  184. color: '',
  185. bold: false,
  186. star: false,
  187. disabled: false
  188. }))
  189. },
  190. {
  191. category: 'nonmatchedCount',
  192. queryCode: Random.cname(),
  193. displayName: '专业不符',
  194. detailName: '推荐组合',
  195. values: mockGroups.map(groupId => ({
  196. groupId: groupId,
  197. value: Random.integer(120, 400),
  198. color: '',
  199. bold: false,
  200. star: false,
  201. disabled: false
  202. }))
  203. }
  204. ]
  205. },
  206. {
  207. generations: [3, 5],
  208. factory: () => [
  209. {
  210. category: 'matchedApproved',
  211. queryCode: Random.cname(),
  212. displayName: '专业符合同意',
  213. detailName: '报名组合',
  214. values: mockGroups.map(groupId => ({
  215. groupId: groupId,
  216. value: Random.integer(120, 400),
  217. color: '',
  218. bold: false,
  219. star: false,
  220. disabled: false
  221. }))
  222. },
  223. {
  224. category: 'matchedNotOptional',
  225. queryCode: Random.cname(),
  226. displayName: '专业符合改选',
  227. detailName: '报名组合',
  228. values: mockGroups.map(groupId => ({
  229. groupId: groupId,
  230. value: Random.integer(120, 400),
  231. color: '',
  232. bold: false,
  233. star: false,
  234. disabled: false
  235. }))
  236. },
  237. {
  238. category: 'matchedRejected',
  239. queryCode: Random.cname(),
  240. displayName: '专业符合拒绝',
  241. detailName: '拒绝组合',
  242. values: mockGroups.map(groupId => ({
  243. groupId: groupId,
  244. value: Random.integer(120, 400),
  245. color: '',
  246. bold: false,
  247. star: false,
  248. disabled: false
  249. }))
  250. },
  251. {
  252. category: 'matchedNonaction',
  253. queryCode: Random.cname(),
  254. displayName: '专业符合未填',
  255. detailName: '推荐组合',
  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: 'matchedRankout',
  267. queryCode: Random.cname(),
  268. displayName: '专业符合被挤出',
  269. detailName: '报名组合',
  270. values: mockGroups.map(groupId => ({
  271. groupId: groupId,
  272. value: Random.integer(120, 400),
  273. color: '',
  274. bold: false,
  275. star: false,
  276. disabled: false
  277. }))
  278. },
  279. {
  280. category: 'nonmatchedApproved',
  281. queryCode: Random.cname(),
  282. displayName: '专业符合已填',
  283. detailName: '报名组合',
  284. values: mockGroups.map(groupId => ({
  285. groupId: groupId,
  286. value: Random.integer(120, 400),
  287. color: '',
  288. bold: false,
  289. star: false,
  290. disabled: false
  291. }))
  292. },
  293. {
  294. category: 'nonmatchedRejected',
  295. queryCode: Random.cname(),
  296. displayName: '不可调剂拒绝',
  297. detailName: '报名组合',
  298. values: mockGroups.map(groupId => ({
  299. groupId: groupId,
  300. value: Random.integer(120, 400),
  301. color: '',
  302. bold: false,
  303. star: false,
  304. disabled: false
  305. }))
  306. },
  307. {
  308. category: 'nonmatchedNonaction',
  309. queryCode: Random.cname(),
  310. displayName: '不可调剂未填',
  311. detailName: '报名组合',
  312. values: mockGroups.map(groupId => ({
  313. groupId: groupId,
  314. value: Random.integer(120, 400),
  315. color: '',
  316. bold: false,
  317. star: false,
  318. disabled: false
  319. }))
  320. }
  321. ]
  322. },
  323. {
  324. generations: [4],
  325. factory: () => [
  326. {
  327. category: 'approvedCount',
  328. queryCode: Random.cname(),
  329. displayName: '补录录取',
  330. detailName: '录取组合',
  331. values: mockGroups.map(groupId => ({
  332. groupId: groupId,
  333. value: Random.integer(120, 400),
  334. color: '',
  335. bold: false,
  336. star: false,
  337. disabled: false
  338. }))
  339. },
  340. {
  341. category: 'forcedCount',
  342. queryCode: Random.cname(),
  343. displayName: '调剂录取',
  344. detailName: '录取组合',
  345. values: mockGroups.map(groupId => ({
  346. groupId: groupId,
  347. value: Random.integer(120, 400),
  348. color: '',
  349. bold: false,
  350. star: false,
  351. disabled: false
  352. }))
  353. },
  354. {
  355. category: 'matchedCount',
  356. queryCode: Random.cname(),
  357. displayName: '可调剂人数',
  358. detailName: '调剂组合',
  359. values: mockGroups.map(groupId => ({
  360. groupId: groupId,
  361. value: Random.integer(120, 400),
  362. color: '',
  363. bold: false,
  364. star: false,
  365. disabled: false
  366. }))
  367. },
  368. {
  369. category: 'nonmatchedCount',
  370. queryCode: Random.cname(),
  371. displayName: '不可调剂人数',
  372. detailName: '报名组合',
  373. values: mockGroups.map(groupId => ({
  374. groupId: groupId,
  375. value: Random.integer(120, 400),
  376. color: '',
  377. bold: false,
  378. star: false,
  379. disabled: false
  380. }))
  381. }
  382. ]
  383. },
  384. {
  385. generations: [6],
  386. factory: () => [
  387. {
  388. category: 'approvedCount',
  389. queryCode: Random.cname(),
  390. displayName: '补录录取',
  391. detailName: '录取组合',
  392. values: mockGroups.map(groupId => ({
  393. groupId: groupId,
  394. value: Random.integer(120, 400),
  395. color: '',
  396. bold: false,
  397. star: false,
  398. disabled: false
  399. }))
  400. },
  401. {
  402. category: 'forcedCount',
  403. queryCode: Random.cname(),
  404. displayName: '调剂录取',
  405. detailName: '录取组合',
  406. values: mockGroups.map(groupId => ({
  407. groupId: groupId,
  408. value: Random.integer(120, 400),
  409. color: '',
  410. bold: false,
  411. star: false,
  412. disabled: false
  413. }))
  414. }
  415. ]
  416. },
  417. {
  418. generations: [7],
  419. factory: () => [
  420. {
  421. category: 'forcedCount',
  422. queryCode: Random.cname(),
  423. displayName: '调剂录取',
  424. detailName: '录取组合',
  425. values: mockGroups.map(groupId => ({
  426. groupId: groupId,
  427. value: Random.integer(120, 400),
  428. color: '',
  429. bold: false,
  430. star: false,
  431. disabled: false
  432. }))
  433. }
  434. ]
  435. }
  436. ]
  437. const defines = commonDefines.find(d => d.generations.includes(generation))
  438. const inAccDef = accumulateDefine.generations.includes(generation)
  439. if (defines) {
  440. results.push({
  441. roundId: 1,
  442. generation: copyGeneration,
  443. categories: defines.factory(),
  444. accumulates: inAccDef ? accumulateDefine.factory() : undefined
  445. })
  446. }
  447. break
  448. }
  449. }
  450. return {
  451. code: 200,
  452. msg: 'success',
  453. data: results
  454. }
  455. }
  456. },
  457. {
  458. url: '/mock/front/elective/generation/getElectiveGenerationDetails',
  459. type: 'get',
  460. response: config => {
  461. return {
  462. code: 200,
  463. msg: 'success',
  464. total: Random.integer(5, 200),
  465. data: {
  466. groupDescriptors: mockGroups.map(groupId => {
  467. return {
  468. groupId,
  469. descriptors: [
  470. { key: 'setting', value: Random.integer(100, 9999), description: '设置人数' },
  471. { key: 'actual', value: Random.integer(0, 9999), description: '实报人数' }
  472. ]
  473. }
  474. }),
  475. 'details|5-20': [
  476. {
  477. 'id|+1': 1000,
  478. 'roundId': 1,
  479. 'studentId|+1': 100,
  480. 'studentName': Random.cname(),
  481. 'groupId': config.query.groupId,
  482. 'groupName': Random.cname(),
  483. 'classId|+1': 20,
  484. 'className': Random.cname(),
  485. 'datetime': Random.date(),
  486. 'histories|4-15': [
  487. {
  488. 'generation|1': [1, 2, 3, 4, 5, 6, 7],
  489. 'groupId|1': mockGroups,
  490. 'description': Random.cname(),
  491. 'rankDescriptors|1-3': [
  492. { key: Random.cname(), value: Random.integer(1, 300), description: Random.cname() }
  493. ]
  494. }
  495. ]
  496. }
  497. ]
  498. }
  499. }
  500. }
  501. },
  502. {
  503. url: '/mock/front/elective/generation/getGenerationOptionalMajorsBatch',
  504. type: 'get',
  505. response: config => {
  506. let studentIds = config.query.studentIds
  507. if (typeof studentIds === 'string') studentIds = studentIds.split(',')
  508. const majorsMap = {}
  509. studentIds.forEach(id => {
  510. majorsMap[id] = {
  511. 'bestMatchedGroupId|1': mockGroups,
  512. 'majors|0-6': [{
  513. 'collegeId|+1': 5000,
  514. 'collegeName': Random.cname(),
  515. 'majorCategoryCode': Random.cname(),
  516. 'majorCategoryName': Random.cname(),
  517. 'majors': {},
  518. 'limitationA': '', // 选科限制1
  519. 'limitationB': '', // 选科限制2
  520. 'matchedGroupIds|0-3': mockGroups // 匹配的组合
  521. }]
  522. }
  523. })
  524. return {
  525. code: 200,
  526. msg: 'success',
  527. data: majorsMap
  528. }
  529. }
  530. }
  531. ]