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();
} ])