app.controller('EnrolGuideCtrl', [ '$rootScope', '$scope', '$http', '$timeout', '$state', '$stateParams', function($rootScope, $scope, $http, $timeout, $state, $stateParams) { // 根据配置第一步在哪里,有些需要从大类开始,有些从专业开始,有些直接选择招考方向 $scope.curStep = $rootScope.getParamValue('EnrolAspectStartStep', 'category'); $scope.currentEnrol = {}; $scope.currentEnrolParam = {}; $scope.subjectArr = []; /*************************************************************************** * 选中了大类 */ $scope.chooseCategory = function(category) { if (category != undefined) { $scope.currentEnrol.category_id = category.category_id; $scope.currentEnrol.category_name = category.category_name; $scope.currentEnrolParam.category_enrol_explain = category.category_enrol_explain; } if ($rootScope.getParamValue('EnrolAspectCategoryNextSetp', 'major') == 'major') { $rootScope.ajaxRequest({ url : '../enrol/config/major/list.htm', data : $scope.currentEnrol }, function(response) { $scope.majorArray = response.array; // 如果有大类报考说明,显示大类报考说明 if ($scope.currentEnrolParam.category_enrol_explain !== undefined && $scope.currentEnrolParam.category_enrol_explain.length > 0) $scope.curStep = "category_explain"; else { $scope.checkNextStep_Category(); } }); } else { if ($scope.currentEnrolParam.category_enrol_explain !== undefined && $scope.currentEnrolParam.category_enrol_explain.length > 0) $scope.curStep = "category_explain"; else $scope.chooseMajor(undefined); } } $scope.checkNextStep_Category = function() { if ($scope.majorArray && $scope.majorArray.length == 1) { $scope.chooseMajor($scope.majorArray); } else { //$scope.chooseMajor(); $scope.curStep = "major"; } } /*************************************************************************** * 选中了专业-提取的公用代码 */ $scope.chooseMajorSame = function(major) { if (major != undefined) { $scope.currentEnrol.category_id = major.major_category_id; $scope.currentEnrol.major_id = major.major_id; $scope.currentEnrol.major_name = major.major_name; $scope.currentEnrolParam.major_enrol_explain = major.major_enrol_explain; } $scope.currentEnrolParam.aspect_query = ''; $rootScope.ajaxRequest({ url : '../enrol/config/aspect/list.htm', data : $scope.currentEnrol }, function(response) { $scope.aspectArray = response.array; // 如果有专业报考说明,显示专业报考说明 if ($scope.currentEnrolParam.major_enrol_explain !== undefined && $scope.currentEnrolParam.major_enrol_explain.length > 0) $scope.curStep = "major_explain"; else $scope.checkNextStep_Major(); }); } /*************************************************************************** * 选中了专业 */ $scope.chooseMajor = function(major) { //武音特殊处理 if($rootScope.getParamValue('SchoolCode') == '11524') { $rootScope.ajaxRequest({ url : '../enrol/std/enrol/major/judge.htm', data : { major_id: major.major_id } }, function(response) { if(!response.entity) { $.alert("考生统考未报考【" + major.major_name +"】,请确认自己的报考类别!"); return; } else { $scope.chooseMajorSame(major); } }); } else { $scope.chooseMajorSame(major); } } $scope.checkNextStep_Major = function() { $scope.curStep = "aspect"; } /*************************************************************************** * 选中了招考方向 */ $scope.chooseAspect = function(aspect) { //武音特殊处理 if($rootScope.getParamValue('SchoolCode') == '11524') { //音乐类才判断 if($rootScope.ArtStdReg.std_param1 == '2') { if(aspect.aspect_dept !== $rootScope.ArtStdReg.std_param2) { $.alert('考生报考的统考方向和该方向不一致,请选择正确的招考方向!'); return; } } } $scope.currentEnrol.category_id = aspect.category_id; $scope.currentEnrol.category_name = aspect.category_name; $scope.currentEnrol.major_id = aspect.aspect_major_id; $scope.currentEnrol.major_name = aspect.major_name; $scope.currentEnrol.aspect_id = aspect.aspect_id; $scope.currentEnrol.aspect_name = aspect.aspect_name; $scope.currentEnrol.fee_id = aspect.fee_id; $scope.currentEnrol.variety_id = aspect.variety_id; $scope.currentEnrol.variety_name = aspect.variety_name; $scope.currentEnrol.fee_amount = aspect.fee_amount; $scope.currentEnrol.aspect_batchs = aspect.aspect_batchs; $scope.aspect = aspect; //是否需要预约 if(aspect.appointment_flag == 'Active') { $rootScope.ajaxRequest({ url: '../conf/agent/aspect/appointment/date.htm', data: { aspect_id: aspect.aspect_id } }, function(respponse) { $scope.appointmentArray = respponse.array; $scope.curStep = 'appointment'; }); return; } $rootScope.ajaxRequest({ url : '../enrol/config/aspect/variety/list.htm', data : $scope.currentEnrol }, function(response) { $scope.varietyArray = response.array; // 如果有招考方向报考说明,显示招考方向说明 if ($scope.aspect.aspect_enrol_explain !== undefined && $scope.aspect.aspect_enrol_explain.length > 0) $scope.curStep = "aspect_explain"; else { $scope.checkNextStep_Aspect(); } }); } /************************ * 选择预约日期 */ $scope.chooseAppDate = function(app) { if(app.appointment_capacity-app.appointment_num == 0) { $.alert('该日期预约已满,请选择其他空余的日期!'); return; } $rootScope.ajaxRequest({ url: '../conf/agent/aspect/appointment/time.htm', data: app }, function(response) { $scope.appTimeArray = response.array; $scope.curStep = "appointment_time"; }); } /************************ * 选择预约时间 */ $scope.chooseTime = function(time) { if(time.appointment_capacity - time.appointment_num == 0) { $.alert('该时段预约已满,请选择其他空余的时段!'); return; } $.confirm('
预约招考方向:【' + $scope.aspect.aspect_name + "】
预约日期:【" + time.appointment_date + "】
预约时段:【" + time.start_time + "~" + time.end_time + "】
", "请确定预约报考信息", function() { $scope.currentEnrol.appointment_id = time.appointment_id; //跳转到下一步报考项目 $rootScope.ajaxRequest({ url : '../enrol/config/aspect/variety/list.htm', data : $scope.currentEnrol }, function(response) { $scope.varietyArray = response.array; // 如果有招考方向报考说明,显示招考方向说明 if ($scope.aspect.aspect_enrol_explain !== undefined && $scope.aspect.aspect_enrol_explain.length > 0) $scope.curStep = "aspect_explain"; else { $scope.checkNextStep_Aspect(); } }); }); } $scope.checkNextStep_Aspect = function() { // 判断是否需要选择品种 if ($scope.varietyArray.length == 1) { $scope.chooseAspectVariety($scope.varietyArray[0]); } else if ($scope.varietyArray.length > 1) { $scope.curStep = "aspect_variety"; } else { $scope.chooseAspectVariety(); } } /*************************************************************************** * 选中了乐器/舞种 */ $scope.chooseAspectVariety = function(variety) { $scope.subjectFlag = false; if (variety != undefined) { $scope.currentEnrol.variety_id = variety.variety_id; $scope.currentEnrol.variety_name = variety.variety_name; $scope.currentEnrolParam.variety_enrol_explain = variety.variety_enrol_explain; } $rootScope.ajaxRequest({ url : '../enrol/config/aspect/subject/list.htm', data : $scope.currentEnrol }, function(response) { $scope.subjectMap = response.map; // 设置品种 for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) { var sb = $scope.subjectMap['BatchSubjectArray_1'][i]; if ($scope.subjectMap['SubjectVariety_' + sb.subject_id] && $scope.subjectMap['SubjectVariety_' + sb.subject_id].length == 1) { var variety = $scope.subjectMap['SubjectVariety_' + sb.subject_id][0]; sb.variety_id = variety.variety_id; sb.variety_name = variety.variety_name; } } /******设置多个科目,有多个品种的情况(特殊处理)******/ var j = 0; for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) { var sb = $scope.subjectMap['BatchSubjectArray_1'][i]; if($scope.subjectMap['SubjectVariety_'+sb.subject_id]) { sb.haveVarietyFlag = true; j++; } } if(j>1) { $scope.subjectFlag = true; } /******设置多个科目,有多个品种的情况(特殊处理)******/ // 如果乐器/舞种需要提示,显示提示 if ($scope.currentEnrolParam.variety_enrol_explain !== undefined && $scope.currentEnrolParam.variety_enrol_explain.length > 0) $scope.curStep = "aspect_variety_explain"; else { $scope.checkNextStep_Variety(); } }); } $scope.checkNextStep_Variety = function() { // 判断是否显示科目 if ($scope.aspect.show_subjects_1 == 'InActive') { // 如果不显示科目,说明不需要选那么多乱七八糟的 $scope.currentSubjectArray = $scope.subjectMap['BatchSubjectArray_1']; $scope.confirmSubject(); } else $scope.curStep = "subject"; } // 选择分组 $scope.goSubjectGroup = function(subject) { $scope.subject = subject; $scope.curStep = 'subject_group'; }; $scope.chooseSubjectGroup = function(subject, batch) { console.log(batch); console.log($scope.subjectMap['BatchSubjectArray_' + batch]); for (var k = 0; k < $scope.subjectMap['BatchSubjectArray_' + batch].length; k++) { var sb = $scope.subjectMap['BatchSubjectArray_' + batch][k]; if (sb.subject_group == subject.subject_group) { sb.subject_id = subject.subject_id; sb.subject_name = subject.subject_name; sb.variety_id = subject.variety_id; sb.variety_name = subject.variety_name; $scope.curStep = "subject"; return; } } } // 选择科目的品种/舞种 $scope.goSubjectVariety = function(subject) { $scope.subject = subject; $scope.curStep = 'subject_variety'; }; /*************************************************************************** * 确定科目信息 */ $scope.confirmSubject = function() { //多个科目需要选择品种的情况,如果都是同一个品种就不需要再选择了 /**************************** @todo可能武音统考音教需要,暂时先还原代码,下面逻辑代码有bug,需要优化, for(var i=0; i<$scope.subjectMap['BatchSubjectArray_1'].length; i++) { var sb = $scope.subjectMap['BatchSubjectArray_1'][i]; if($scope.subjectMap['SubjectVariety_' + sb.subject_id] && $scope.variety == undefined && $scope.subjectMap['SubjectVariety_' + sb.subject_id].length > 0 && !sb.haveVariety) { $scope.subjectArr.push(sb); } } var array = []; for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) { var sb = $scope.subjectMap['BatchSubjectArray_1'][i]; if (sb.subject_id == undefined) { $.alert('请为多选一科目组【' + sb.subject_name + '】选择一个科目!'); return; } if (sb.master_group != undefined && sb.master_group.length > 0 && sb.master_flag == undefined) { $.alert('请为【' + sb.master_group + '】选择主项科目!'); return; } if (sb.variety_id != undefined) array.push(sb.variety_id); else if ($scope.subjectMap['SubjectVariety_' + sb.subject_id] && $scope.subjectMap['SubjectVariety_' + sb.subject_id].length > 0) { // 需要选择品种 $scope.subject = sb; $scope.curStep = 'subject_variety'; // $scope.chooseSubjectVariety(sb, array); return; } } if (array.length > 0) { $scope.chooseSubjectVariety(undefined, array); } else { $scope.confirmTracks(); } */ // 判断该选择的是否都选择了 var array = []; for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) { var sb = $scope.subjectMap['BatchSubjectArray_1'][i]; if (sb.subject_id == undefined) { $.alert('请为多选一科目组【' + sb.subject_name + '】选择一个科目!'); return; } if (sb.master_group != undefined && sb.master_group.length > 0 && sb.master_flag == undefined) { $.alert('请为【' + sb.master_group + '】选择主项科目!'); return; } if (sb.variety_id != undefined) array.push(sb.variety_id); else if ($scope.subjectMap['SubjectVariety_' + sb.subject_id] && $scope.subjectMap['SubjectVariety_' + sb.subject_id].length > 0) { // 需要选择品种 $scope.subject = sb; $scope.curStep = 'subject_variety'; // $scope.chooseSubjectVariety(sb, array); return; } } if (array.length > 0) { $scope.chooseSubjectVariety(undefined, array); } else { $scope.confirmTracks(); } } $scope.chooseSubjectVariety = function(v, array) { if (array == undefined) array = []; if (v != undefined) { for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) { var sb = $scope.subjectMap['BatchSubjectArray_1'][i]; if (sb.subject_id == $scope.subject.subject_id) { sb.variety_id = v.variety_id; sb.variety_name = v.variety_name; array.push(v.variety_id); for(var k=0; k<$scope.subjectArr.length; k++) { var sj = $scope.subjectArr[k]; if($scope.subject.subject_id == sj.subject_id) { sj.haveVariety = true; } } break; } } } // 判断是否要输入曲目 $rootScope.ajaxRequest({ url : '../enrol/config/variety/tracks/list.htm', data : { variety_ids : array, enrol_batch : 1 } }, function(response) { if (response.map.VarietyArray != undefined) { // 需要填写曲目 $scope.tracksMap = response.map; $scope.curStep = 'tracks'; } else { if($scope.subjectArr && $scope.subjectArr.length > 1) { for(var k=0; k<$scope.subjectArr.length; k++) { var sj = $scope.subjectArr[k]; if(!sj.haveVariety) { $scope.curStep = 'subject_variety'; $scope.subject = sj; break; } } } else { // 去找考点 $scope.confirmTracks(); } } }); } /**************设置多个科目,有多个品种的情况(特殊处理)****************/ $scope.goMoreSubjectVariety = function(subject) { for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) { var sb = $scope.subjectMap['BatchSubjectArray_1'][i]; if (sb.subject_id == subject.subject_id) { $scope.subject = sb; $scope.curStep = 'subject_variety'; return; } } } /**************设置多个科目,有多个品种的情况(特殊处理)****************/ $scope.chooseMoreSubjectVariety = function(variety) { for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) { var sb = $scope.subjectMap['BatchSubjectArray_1'][i]; if(sb.subject_id == $scope.subject.subject_id) { sb.variety_id = variety.variety_id; sb.variety_name = variety.variety_name } } $scope.curStep = 'subject'; } /**************设置多个科目,有多个品种的情况(特殊处理)****************/ $scope.confirmMoreSubject = function() { var array = []; //判断是否选择乐器/舞种 for (var i = 0; i < $scope.subjectMap['BatchSubjectArray_1'].length; i++) { var sb = $scope.subjectMap['BatchSubjectArray_1'][i]; if(sb.haveVarietyFlag && !sb.variety_id) { $.alert('请选择'+sb.subject_name+'的乐器/舞种!', '提示'); return; } if(sb.variety_id) { array.push(sb.variety_id); } } $rootScope.ajaxRequest({ url : '../enrol/config/variety/tracks/list.htm', data : { variety_ids : array, enrol_batch : 1 } }, function(response) { if (response.map.VarietyArray != undefined) { // 需要填写曲目 $scope.tracksMap = response.map; $scope.curStep = 'tracks'; } else { /*if($scope.subjectArr && $scope.subjectArr.length > 1) { for(var k=0; k<$scope.subjectArr.length; k++) { var sj = $scope.subjectArr[k]; if(!sj.haveVariety) { $scope.curStep = 'subject_variety'; $scope.subject = sj; break; } } } else { // 去找考点 $scope.confirmTracks(); }*/ } }); } $scope.chooseTracks = function(tracks,tracks_order) { $scope.variety_id = tracks.variety_id; $scope.tracks_order = tracks_order; $scope.goSearchTracks(0,10); } // 选择曲目 $scope.goSearchTracks = function(start, limit) { $rootScope.ajaxRequest({ url : '../enrol/gobal/conf/tracks/query.htm', data : { start : start == undefined ? 0 : start, limit : limit == undefined ? 10 : limit, variety_id : $scope.variety_id, query : $scope.currentEnrolParam.tracks_query } }, function(data) { $scope.TracksPage = data.page; $scope.curStep = 'tracksChoose'; }); }; // 查询曲目 $scope.keyTracksSearch = function($event) { $scope.goSearchTracks(0, 10); }; // 选择品种曲目 $scope.choooseVarietyTracks = function(tracks) { for (var k = 0; k < $scope.tracksMap['VarietyTracks_' + tracks.variety_id].length; k++) { var sb = $scope.tracksMap['VarietyTracks_' + tracks.variety_id][k]; if(tracks.tracks_id == sb.tracks_id) { $.alert('不能选择相同的曲目,请重新选择', '错误提示'); return ; } if (sb.tracks_order == $scope.tracks_order) { sb.tracks_name = tracks.tracks_name; sb.tracks_code = tracks.tracks_code; sb.tracks_type = tracks.tracks_type; sb.tracks_id = tracks.tracks_id; sb.tracks_author = tracks.tracks_author; $scope.curStep = "tracks"; return; } } }; $scope.confirmTracks = function() { $scope.TracksArray = []; if ($scope.tracksMap) { // 有曲目信息 for (var i = 0; i < $scope.tracksMap.VarietyArray.length; i++) { var tArray = []; var variety = $scope.tracksMap.VarietyArray[i]; for (var k = 0; k < $scope.tracksMap['VarietyTracks_' + variety.variety_id].length; k++) { var tracks = $scope.tracksMap['VarietyTracks_' + variety.variety_id][k]; if (tracks.tracks_name) tracks.tracks_name = $.trim(tracks.tracks_name); if (!tracks.tracks_name || tracks.tracks_name.length == 0) { $.alert('请填报【' + variety.variety_name + '】的第【' + (k + 1) + '】首曲目'); return; } for (var index = 0; index < tArray.length; index++) { if (tArray[index] == tracks.tracks_name) { $.alert('曲目重复填报,请检查!'); return; } } tArray.push(tracks.tracks_name); $scope.TracksArray.push(tracks); } } } // 去选择考点 $rootScope.ajaxRequest({ url : '../enrol/config/agent/list.htm', data : $scope.currentEnrol }, function(response) { $scope.agentArray = response.array; if(response.array && response.array.length ==1) { $scope.currentEnrol.agent_id = response.array[0].agent_id; $scope.agent = response.array[0]; $scope.curStep = 'enrol_confirm'; } else { $scope.curStep = 'agent'; } }); } /*************************************************************************** * 选择考点 */ $scope.chooseAgent = function(agent) { $scope.currentEnrol.agent_id = agent.agent_id; $scope.agent = agent; $scope.curStep = 'enrol_confirm'; } /*************************************************************************** * 提交报考信息 */ $scope.goSaveEnrol = function() { $.showLoading('正在提交报考请求,请稍候......'); var entity = { std_id : $scope.currentEnrol.std_id, aspect_id : $scope.currentEnrol.aspect_id, agent_id : $scope.currentEnrol.agent_id, variety_id : $scope.currentEnrol.variety_id, variety_name : $scope.currentEnrol.variety_name, subject_json : JSON.stringify($scope.subjectMap['BatchSubjectArray_1']), tracks_json : JSON.stringify($scope.TracksArray), appointment_id : $scope.currentEnrol.appointment_id }; $rootScope.ajaxRequest({ url : '../enrol/std/enrol/add.htm', data : entity }, function(response) { $.hideLoading(); $scope.curEnrol = response.entity; $scope.goStep('EnrolSuccess'); }); } $scope.goAspectPay = function() { $rootScope.goLocation('enrol/info/' + $scope.curEnrol.enrol_id + '/active'); } $scope.goStep = function(step) { if (step == 'aspect') { $scope.currentEnrolParam.aspect_query= ''; $scope.currentEnrol.variety_id = undefined; $scope.currentEnrol.variety_name = undefined; $scope.tracksMap = undefined; $scope.currentEnrolParam.variety_enrol_explain = undefined; $scope.currentEnrol.appointment_id = undefined; } $scope.curStep = step; } /*************************************************************************** * 开始导航 */ $scope.startEnrol = function() { $scope.currentEnrol = {}; $scope.currentEnrolParam = {aspect_query:''}; var startStep = $rootScope.getParamValue('EnrolAspectStartStep', 'category'); if (startStep == 'category') { $rootScope.ajaxRequest({ url : '../enrol/config/category/list.htm' }, function(response) { if (response.array.length == 1) { $scope.chooseCategory(response.array[0]); } else { $scope.categoryArray = response.array; $scope.curStep = 'category'; } }); } else if (startStep == 'major') { $scope.chooseCategory(); } else if (startStep == 'aspect') { $scope.chooseMajor(); } } $scope.startEnrol(); } ])