enrol_guide.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  1. app.controller('EnrolGuideCtrl', [ '$rootScope', '$scope', '$http', '$timeout', '$state', '$stateParams', function($rootScope, $scope, $http, $timeout, $state, $stateParams) {
  2. // 根据配置第一步在哪里,有些需要从大类开始,有些从专业开始,有些直接选择招考方向
  3. $scope.curStep = $rootScope.getParamValue('EnrolAspectStartStep', 'category');
  4. $scope.currentEnrol = {};
  5. $scope.currentEnrolParam = {};
  6. $scope.subjectArr = [];
  7. /***************************************************************************
  8. * 选中了大类
  9. */
  10. $scope.chooseCategory = function(category) {
  11. if (category != undefined) {
  12. $scope.currentEnrol.category_id = category.category_id;
  13. $scope.currentEnrol.category_name = category.category_name;
  14. $scope.currentEnrolParam.category_enrol_explain = category.category_enrol_explain;
  15. }
  16. if ($rootScope.getParamValue('EnrolAspectCategoryNextSetp', 'major') == 'major') {
  17. $rootScope.ajaxRequest({
  18. url : '../enrol/config/major/list.htm',
  19. data : $scope.currentEnrol
  20. }, function(response) {
  21. $scope.majorArray = response.array;
  22. // 如果有大类报考说明,显示大类报考说明
  23. if ($scope.currentEnrolParam.category_enrol_explain !== undefined && $scope.currentEnrolParam.category_enrol_explain.length > 0)
  24. $scope.curStep = "category_explain";
  25. else {
  26. $scope.checkNextStep_Category();
  27. }
  28. });
  29. } else {
  30. if ($scope.currentEnrolParam.category_enrol_explain !== undefined && $scope.currentEnrolParam.category_enrol_explain.length > 0)
  31. $scope.curStep = "category_explain";
  32. else
  33. $scope.chooseMajor(undefined);
  34. }
  35. }
  36. $scope.checkNextStep_Category = function() {
  37. if ($scope.majorArray && $scope.majorArray.length == 1) {
  38. $scope.chooseMajor($scope.majorArray.array[0]);
  39. } else {
  40. //$scope.chooseMajor();
  41. $scope.curStep = "major";
  42. }
  43. }
  44. /***************************************************************************
  45. * 选中了专业
  46. */
  47. $scope.chooseMajor = function(major) {
  48. if (major != undefined) {
  49. $scope.currentEnrol.category_id = major.major_category_id;
  50. $scope.currentEnrol.major_id = major.major_id;
  51. $scope.currentEnrol.major_name = major.major_name;
  52. $scope.currentEnrolParam.major_enrol_explain = major.major_enrol_explain;
  53. }
  54. $scope.currentEnrolParam.aspect_query = '';
  55. $rootScope.ajaxRequest({
  56. url : '../enrol/config/aspect/list.htm',
  57. data : $scope.currentEnrol
  58. }, function(response) {
  59. $scope.aspectArray = response.array;
  60. // 如果有专业报考说明,显示专业报考说明
  61. if ($scope.currentEnrolParam.major_enrol_explain !== undefined && $scope.currentEnrolParam.major_enrol_explain.length > 0)
  62. $scope.curStep = "major_explain";
  63. else
  64. $scope.checkNextStep_Major();
  65. });
  66. }
  67. $scope.checkNextStep_Major = function() {
  68. $scope.curStep = "aspect";
  69. }
  70. /***************************************************************************
  71. * 选中了招考方向
  72. */
  73. $scope.chooseAspect = function(aspect) {
  74. $scope.currentEnrol.category_id = aspect.category_id;
  75. $scope.currentEnrol.category_name = aspect.category_name;
  76. $scope.currentEnrol.major_id = aspect.aspect_major_id;
  77. $scope.currentEnrol.major_name = aspect.major_name;
  78. $scope.currentEnrol.aspect_id = aspect.aspect_id;
  79. $scope.currentEnrol.aspect_name = aspect.aspect_name;
  80. $scope.currentEnrol.fee_id = aspect.fee_id;
  81. $scope.currentEnrol.variety_id = aspect.variety_id;
  82. $scope.currentEnrol.variety_name = aspect.variety_name;
  83. $scope.currentEnrol.fee_amount = aspect.fee_amount;
  84. $scope.currentEnrol.aspect_batchs = aspect.aspect_batchs;
  85. $scope.aspect = aspect;
  86. //是否需要预约
  87. if(aspect.appointment_flag == 'Active') {
  88. $rootScope.ajaxRequest({
  89. url: '../conf/agent/aspect/appointment/date.htm',
  90. data: {
  91. aspect_id: aspect.aspect_id
  92. }
  93. }, function(respponse) {
  94. $scope.appointmentArray = respponse.array;
  95. $scope.curStep = 'appointment';
  96. });
  97. return;
  98. }
  99. $rootScope.ajaxRequest({
  100. url : '../enrol/config/aspect/variety/list.htm',
  101. data : $scope.currentEnrol
  102. }, function(response) {
  103. $scope.varietyArray = response.array;
  104. // 如果有招考方向报考说明,显示招考方向说明
  105. if ($scope.aspect.aspect_enrol_explain !== undefined && $scope.aspect.aspect_enrol_explain.length > 0)
  106. $scope.curStep = "aspect_explain";
  107. else {
  108. $scope.checkNextStep_Aspect();
  109. }
  110. });
  111. }
  112. /************************
  113. * 选择预约日期
  114. */
  115. $scope.chooseAppDate = function(app) {
  116. if(app.appointment_capacity-app.appointment_num == 0) {
  117. $.alert('该日期预约已满,请选择其他空余的日期!');
  118. return;
  119. }
  120. $rootScope.ajaxRequest({
  121. url: '../conf/agent/aspect/appointment/time.htm',
  122. data: app
  123. }, function(response) {
  124. $scope.appTimeArray = response.array;
  125. $scope.curStep = "appointment_time";
  126. });
  127. }
  128. /************************
  129. * 选择预约时间
  130. */
  131. $scope.chooseTime = function(time) {
  132. if(time.appointment_capacity - time.appointment_num == 0) {
  133. $.alert('该时段预约已满,请选择其他空余的时段!');
  134. return;
  135. }
  136. $.confirm('<table><tr><td>预约招考方向:【' + $scope.aspect.aspect_name + "】</td></tr><tr><td>预约日期:【"
  137. + time.appointment_date + "】</td></tr><tr><td>预约时段:【" + time.start_time + "~" + time.end_time + "】</td></tr></table>", "请确定预约报考信息", function() {
  138. $scope.currentEnrol.appointment_id = time.appointment_id;
  139. //跳转到下一步报考项目
  140. $rootScope.ajaxRequest({
  141. url : '../enrol/config/aspect/variety/list.htm',
  142. data : $scope.currentEnrol
  143. }, function(response) {
  144. $scope.varietyArray = response.array;
  145. // 如果有招考方向报考说明,显示招考方向说明
  146. if ($scope.aspect.aspect_enrol_explain !== undefined && $scope.aspect.aspect_enrol_explain.length > 0)
  147. $scope.curStep = "aspect_explain";
  148. else {
  149. $scope.checkNextStep_Aspect();
  150. }
  151. });
  152. });
  153. }
  154. $scope.checkNextStep_Aspect = function() {
  155. // 判断是否需要选择品种
  156. if ($scope.varietyArray.length == 1) {
  157. $scope.chooseAspectVariety($scope.varietyArray[0]);
  158. } else if ($scope.varietyArray.length > 1) {
  159. $scope.curStep = "aspect_variety";
  160. } else {
  161. $scope.chooseAspectVariety();
  162. }
  163. }
  164. /***************************************************************************
  165. * 选中了乐器/舞种
  166. */
  167. $scope.chooseAspectVariety = function(variety) {
  168. if (variety != undefined) {
  169. $scope.currentEnrol.variety_id = variety.variety_id;
  170. $scope.currentEnrol.variety_name = variety.variety_name;
  171. $scope.currentEnrolParam.variety_enrol_explain = variety.variety_enrol_explain;
  172. }
  173. $rootScope.ajaxRequest({
  174. url : '../enrol/config/aspect/subject/list.htm',
  175. data : $scope.currentEnrol
  176. }, function(response) {
  177. $scope.subjectMap = response.map;
  178. // 设置品种
  179. for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) {
  180. var sb = $scope.subjectMap['BatchSubjectArray_1'][i];
  181. if ($scope.subjectMap['SubjectVariety_' + sb.subject_id] && $scope.subjectMap['SubjectVariety_' + sb.subject_id].length == 1) {
  182. var variety = $scope.subjectMap['SubjectVariety_' + sb.subject_id][0];
  183. sb.variety_id = variety.variety_id;
  184. sb.variety_name = variety.variety_name;
  185. }
  186. }
  187. // 如果乐器/舞种需要提示,显示提示
  188. if ($scope.currentEnrolParam.variety_enrol_explain !== undefined && $scope.currentEnrolParam.variety_enrol_explain.length > 0)
  189. $scope.curStep = "aspect_variety_explain";
  190. else {
  191. $scope.checkNextStep_Variety();
  192. }
  193. });
  194. }
  195. $scope.checkNextStep_Variety = function() {
  196. // 判断是否显示科目
  197. if ($scope.aspect.show_subjects_1 == 'InActive') {
  198. // 如果不显示科目,说明不需要选那么多乱七八糟的
  199. $scope.currentSubjectArray = $scope.subjectMap['BatchSubjectArray_1'];
  200. $scope.confirmSubject();
  201. } else
  202. $scope.curStep = "subject";
  203. }
  204. // 选择分组
  205. $scope.goSubjectGroup = function(subject) {
  206. $scope.subject = subject;
  207. $scope.curStep = 'subject_group';
  208. };
  209. $scope.chooseSubjectGroup = function(subject, batch) {
  210. console.log(batch);
  211. console.log($scope.subjectMap['BatchSubjectArray_' + batch]);
  212. for (var k = 0; k < $scope.subjectMap['BatchSubjectArray_' + batch].length; k++) {
  213. var sb = $scope.subjectMap['BatchSubjectArray_' + batch][k];
  214. if (sb.subject_group == subject.subject_group) {
  215. sb.subject_id = subject.subject_id;
  216. sb.subject_name = subject.subject_name;
  217. sb.variety_id = subject.variety_id;
  218. sb.variety_name = subject.variety_name;
  219. $scope.curStep = "subject";
  220. return;
  221. }
  222. }
  223. }
  224. // 选择科目的品种/舞种
  225. $scope.goSubjectVariety = function(subject) {
  226. $scope.subject = subject;
  227. $scope.curStep = 'subject_variety';
  228. };
  229. /***************************************************************************
  230. * 确定科目信息
  231. */
  232. $scope.confirmSubject = function() {
  233. //多个科目需要选择品种的情况,如果都是同一个品种就不需要再选择了
  234. /****************************
  235. @todo可能武音统考音教需要,暂时先还原代码,下面逻辑代码有bug,需要优化,
  236. for(var i=0; i<$scope.subjectMap['BatchSubjectArray_1'].length; i++) {
  237. var sb = $scope.subjectMap['BatchSubjectArray_1'][i];
  238. if($scope.subjectMap['SubjectVariety_' + sb.subject_id] && $scope.variety == undefined
  239. && $scope.subjectMap['SubjectVariety_' + sb.subject_id].length > 0 && !sb.haveVariety) {
  240. $scope.subjectArr.push(sb);
  241. }
  242. }
  243. var array = [];
  244. for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) {
  245. var sb = $scope.subjectMap['BatchSubjectArray_1'][i];
  246. if (sb.subject_id == undefined) {
  247. $.alert('请为多选一科目组【' + sb.subject_name + '】选择一个科目!');
  248. return;
  249. }
  250. if (sb.master_group != undefined && sb.master_group.length > 0 && sb.master_flag == undefined) {
  251. $.alert('请为【' + sb.master_group + '】选择主项科目!');
  252. return;
  253. }
  254. if (sb.variety_id != undefined)
  255. array.push(sb.variety_id);
  256. else if ($scope.subjectMap['SubjectVariety_' + sb.subject_id] && $scope.subjectMap['SubjectVariety_' + sb.subject_id].length > 0) {
  257. // 需要选择品种
  258. $scope.subject = sb;
  259. $scope.curStep = 'subject_variety';
  260. // $scope.chooseSubjectVariety(sb, array);
  261. return;
  262. }
  263. }
  264. if (array.length > 0) {
  265. $scope.chooseSubjectVariety(undefined, array);
  266. } else {
  267. $scope.confirmTracks();
  268. }
  269. */
  270. // 判断该选择的是否都选择了
  271. var array = [];
  272. for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) {
  273. var sb = $scope.subjectMap['BatchSubjectArray_1'][i];
  274. if (sb.subject_id == undefined) {
  275. $.alert('请为多选一科目组【' + sb.subject_name + '】选择一个科目!');
  276. return;
  277. }
  278. if (sb.master_group != undefined && sb.master_group.length > 0 && sb.master_flag == undefined) {
  279. $.alert('请为【' + sb.master_group + '】选择主项科目!');
  280. return;
  281. }
  282. if (sb.variety_id != undefined)
  283. array.push(sb.variety_id);
  284. else if ($scope.subjectMap['SubjectVariety_' + sb.subject_id] && $scope.subjectMap['SubjectVariety_' + sb.subject_id].length > 0) {
  285. // 需要选择品种
  286. $scope.subject = sb;
  287. $scope.curStep = 'subject_variety';
  288. // $scope.chooseSubjectVariety(sb, array);
  289. return;
  290. }
  291. }
  292. if (array.length > 0) {
  293. $scope.chooseSubjectVariety(undefined, array);
  294. } else {
  295. //$scope.confirmTracks();
  296. $scope.listAspectRelation();
  297. }
  298. }
  299. $scope.chooseSubjectVariety = function(v, array) {
  300. if (array == undefined)
  301. array = [];
  302. if (v != undefined) {
  303. for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) {
  304. var sb = $scope.subjectMap['BatchSubjectArray_1'][i];
  305. if (sb.subject_id == $scope.subject.subject_id) {
  306. sb.variety_id = v.variety_id;
  307. sb.variety_name = v.variety_name;
  308. array.push(v.variety_id);
  309. for(var k=0; k<$scope.subjectArr.length; k++) {
  310. var sj = $scope.subjectArr[k];
  311. if($scope.subject.subject_id == sj.subject_id) {
  312. sj.haveVariety = true;
  313. }
  314. }
  315. break;
  316. }
  317. }
  318. }
  319. // 判断是否要输入曲目
  320. $rootScope.ajaxRequest({
  321. url : '../enrol/config/variety/tracks/list.htm',
  322. data : {
  323. variety_ids : array,
  324. enrol_batch : 1
  325. }
  326. }, function(response) {
  327. if (response.map.VarietyArray != undefined) {
  328. // 需要填写曲目
  329. $scope.tracksMap = response.map;
  330. $scope.curStep = 'tracks';
  331. } else {
  332. if($scope.subjectArr && $scope.subjectArr.length > 1) {
  333. for(var k=0; k<$scope.subjectArr.length; k++) {
  334. var sj = $scope.subjectArr[k];
  335. if(!sj.haveVariety) {
  336. $scope.curStep = 'subject_variety';
  337. $scope.subject = sj;
  338. break;
  339. }
  340. }
  341. } else {
  342. // 去找考点
  343. //$scope.confirmTracks();
  344. $scope.listAspectRelation();
  345. }
  346. }
  347. });
  348. }
  349. $scope.chooseTracks = function(tracks,tracks_order) {
  350. $scope.variety_id = tracks.variety_id;
  351. $scope.tracks_order = tracks_order;
  352. $scope.goSearchTracks(0,10);
  353. }
  354. // 选择曲目
  355. $scope.goSearchTracks = function(start, limit) {
  356. $rootScope.ajaxRequest({
  357. url : '../enrol/gobal/conf/tracks/query.htm',
  358. data : {
  359. start : start == undefined ? 0 : start,
  360. limit : limit == undefined ? 10 : limit,
  361. variety_id : $scope.variety_id,
  362. query : $scope.currentEnrolParam.tracks_query
  363. }
  364. }, function(data) {
  365. $scope.TracksPage = data.page;
  366. $scope.curStep = 'tracksChoose';
  367. });
  368. };
  369. // 查询曲目
  370. $scope.keyTracksSearch = function($event) {
  371. $scope.goSearchTracks(0, 10);
  372. };
  373. // 选择品种曲目
  374. $scope.choooseVarietyTracks = function(tracks) {
  375. for (var k = 0; k < $scope.tracksMap['VarietyTracks_' + tracks.variety_id].length; k++) {
  376. var sb = $scope.tracksMap['VarietyTracks_' + tracks.variety_id][k];
  377. if(tracks.tracks_id == sb.tracks_id) {
  378. $.alert('不能选择相同的曲目,请重新选择', '错误提示');
  379. return ;
  380. }
  381. if (sb.tracks_order == $scope.tracks_order) {
  382. sb.tracks_name = tracks.tracks_name;
  383. sb.tracks_code = tracks.tracks_code;
  384. sb.tracks_type = tracks.tracks_type;
  385. sb.tracks_id = tracks.tracks_id;
  386. sb.tracks_author = tracks.tracks_author;
  387. $scope.curStep = "tracks";
  388. return;
  389. }
  390. }
  391. };
  392. $scope.confirmTracks = function() {
  393. $scope.TracksArray = [];
  394. if ($scope.tracksMap) {
  395. // 有曲目信息
  396. for (var i = 0; i < $scope.tracksMap.VarietyArray.length; i++) {
  397. var tArray = [];
  398. var variety = $scope.tracksMap.VarietyArray[i];
  399. for (var k = 0; k < $scope.tracksMap['VarietyTracks_' + variety.variety_id].length; k++) {
  400. var tracks = $scope.tracksMap['VarietyTracks_' + variety.variety_id][k];
  401. if (tracks.tracks_name)
  402. tracks.tracks_name = $.trim(tracks.tracks_name);
  403. if (!tracks.tracks_name || tracks.tracks_name.length == 0) {
  404. $.alert('请填报【' + variety.variety_name + '】的第【' + (k + 1) + '】首曲目');
  405. return;
  406. }
  407. for (var index = 0; index < tArray.length; index++) {
  408. if (tArray[index] == tracks.tracks_name) {
  409. $.alert('曲目重复填报,请检查!');
  410. return;
  411. }
  412. }
  413. tArray.push(tracks.tracks_name);
  414. $scope.TracksArray.push(tracks);
  415. }
  416. }
  417. }
  418. // 去选择考点
  419. $rootScope.ajaxRequest({
  420. url : '../enrol/config/agent/list.htm',
  421. data : $scope.currentEnrol
  422. }, function(response) {
  423. $scope.agentArray = response.array;
  424. if(response.array && response.array.length ==1) {
  425. $scope.currentEnrol.agent_id = response.array[0].agent_id;
  426. $scope.agent = response.array[0];
  427. $scope.curStep = 'enrol_confirm';
  428. } else {
  429. $scope.curStep = 'agent';
  430. }
  431. });
  432. }
  433. //选择的专业是否含有副专业
  434. $scope.listAspectRelation = function() {
  435. $rootScope.ajaxRequest({
  436. url: '../cf/aspect/relation/exist.htm',
  437. data: {aspect_id: $scope.currentEnrol.aspect_id}
  438. }, function(response) {
  439. $scope.relationArr = response.array;
  440. $scope.confirmTracks();
  441. });
  442. }
  443. /***************************************************************************
  444. * 选择考点
  445. */
  446. $scope.chooseAgent = function(agent) {
  447. $scope.currentEnrol.agent_id = agent.agent_id;
  448. $scope.agent = agent;
  449. $scope.curStep = 'enrol_confirm';
  450. }
  451. /***************************************************************************
  452. * 提交报考信息
  453. */
  454. $scope.goSaveEnrol = function() {
  455. if($scope.relationArr && $scope.relationArr.length>0 && !$scope.currentEnrol.relation_flag){
  456. $.alert('请选择是否兼报专业!');
  457. return;
  458. }
  459. $.showLoading('正在提交报考请求,请稍候......');
  460. if($scope.currentEnrol.relation_flag == 'InActive') {
  461. $scope.currentEnrol.other_aspect_id = null;
  462. }
  463. var entity = {
  464. std_id : $scope.currentEnrol.std_id,
  465. aspect_id : $scope.currentEnrol.aspect_id,
  466. agent_id : $scope.currentEnrol.agent_id,
  467. variety_id : $scope.currentEnrol.variety_id,
  468. variety_name : $scope.currentEnrol.variety_name,
  469. subject_json : JSON.stringify($scope.subjectMap['BatchSubjectArray_1']),
  470. tracks_json : JSON.stringify($scope.TracksArray),
  471. appointment_id : $scope.currentEnrol.appointment_id,
  472. other_aspect_id : $scope.currentEnrol.other_aspect_id
  473. };
  474. $rootScope.ajaxRequest({
  475. url : '../enrol/std/enrol/add.htm',
  476. data : entity
  477. }, function(response) {
  478. $.hideLoading();
  479. $scope.curEnrol = response.entity;
  480. $scope.goStep('EnrolSuccess');
  481. });
  482. }
  483. $scope.goAspectPay = function() {
  484. $rootScope.goLocation('enrol/info/' + $scope.curEnrol.enrol_id + '/active');
  485. }
  486. $scope.goStep = function(step) {
  487. if (step == 'aspect') {
  488. $scope.currentEnrolParam.aspect_query= '';
  489. $scope.currentEnrol.variety_id = undefined;
  490. $scope.currentEnrol.variety_name = undefined;
  491. $scope.tracksMap = undefined;
  492. $scope.currentEnrolParam.variety_enrol_explain = undefined;
  493. $scope.currentEnrol.appointment_id = undefined;
  494. }
  495. $scope.curStep = step;
  496. }
  497. /***************************************************************************
  498. * 开始导航
  499. */
  500. $scope.startEnrol = function() {
  501. $scope.currentEnrol = {};
  502. $scope.currentEnrolParam = {aspect_query:''};
  503. var startStep = $rootScope.getParamValue('EnrolAspectStartStep', 'category');
  504. if (startStep == 'category') {
  505. $rootScope.ajaxRequest({
  506. url : '../enrol/config/category/list/xyfz.htm'
  507. }, function(response) {
  508. // if (response.array.length == 1) {
  509. // $scope.chooseCategory(response.array[0]);
  510. // } else {
  511. $scope.categoryArray = response.array;
  512. $scope.curStep = 'category';
  513. // }
  514. });
  515. } else if (startStep == 'major') {
  516. $scope.chooseCategory();
  517. } else if (startStep == 'aspect') {
  518. $scope.chooseMajor();
  519. }
  520. }
  521. $scope.startEnrol();
  522. } ])