choose_variety.js 17 KB

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