app.controller('ApplyCtrl', function($rootScope, $scope, $http, $timeout, $state, myConfig, $cookieStore, $interval) { $scope.load = function(){ $scope.login = { login_name : '', mobile: '', password : '', confirm_password : '' }; $scope.sendMessageTime = 0; $interval(function(){ if($scope.sendMessageTime > 0){ $scope.sendMessageTime--; } }, 1000); $scope.myPromise = $http({ url : myConfig.url + '/frame/province', method : 'GET' }).success(function(data) { if(data.code == 0){ $scope.provinces = data.result; }else{ $rootScope.dialogMsg(data.message, function(){ window.location = "index.html"; }) } }).error(function() { }); } $scope.load(); $scope.refreshArea = function(){ $scope.login.graduate_school_area = null; $scope.login.graduate_school_city = null; $scope.myPromise = $http({ url : myConfig.url + '/frame/area/' + $scope.login.graduate_school_province, method : 'GET' }).success(function(data) { if(data.code == 0){ $scope.areas = data.result; } }).error(function() { }); } $scope.refreshCity = function(){ $scope.login.graduate_school_city = null; $scope.myPromise = $http({ url : myConfig.url + '/frame/city/' + $scope.login.graduate_school_area, method : 'GET' }).success(function(data) { if(data.code == 0){ $scope.cities = data.result; } }).error(function() { }); } $scope.refreshSchool = function(){ $scope.login.graduate_school_id = null; $scope.myPromise = $http({ url : myConfig.url + '/frame/school/' + $scope.login.graduate_school_city, method : 'GET' }).success(function(data) { if(data.code == 0){ $scope.schoolList = data.result; } }).error(function() { }); } // function to submit the form after all validation has occurred $scope.submitForm = function(isValid) { $scope.submitted = true; if($scope.login.password != $scope.login.confirm_password){ $rootScope.dialogMsg("两次输入的密码不一致"); return; } // check to make sure the form is completely valid if (isValid && $scope.loginNameExists == false && $scope.certIdExists == false && !$scope.invalidCertId) { $scope.myPromise = $http({ url : myConfig.url + '/user/checkVerifyCode', method : 'POST', data : angular.toJson($scope.login) }).success(function(data) { if(data.code == 0){ $scope.myPromise = $http({ url : myConfig.url + '/user/apply', method : 'POST', data : angular.toJson($scope.login) }).success(function(data) { if(data.code == 0){ $rootScope.dialogMsg("注册成功,请登录", function(){ $state.go('login'); }); }else{ $rootScope.dialogMsg(data.errorMsg, function(){}); } }).error(function() { }); }else{ $rootScope.dialogMsg(data.errorMsg, function(){}); } }).error(function() { }); } }; // $scope.checkLoginName = function(){ // if($scope.login.login_name.trim().length > 0){ // $scope.myPromise = $http({ // url : myConfig.url + '/user/checkLoginName', // method : 'POST', // data : angular.toJson($scope.login) // }).success(function(data) { // if(data.code == 0){ // $scope.loginNameExists = data.result.length > 0; // }else{ // $rootScope.dialogMsg(data.errorMsg, function(){}); // } // }).error(function() { // }); // } // } $scope.checkLoginName = function(){ if(!(/^1[3|4|5|7|8|9][0-9]\d{8}$/.test($scope.login.login_name))){ $scope.invalidMobile = true; return; }else{ $scope.invalidMobile = false; } if($scope.login.login_name.trim().length > 0){ $scope.myPromise = $http({ url : myConfig.url + '/user/checkLoginName', method : 'POST', data : angular.toJson($scope.login) }).success(function(data) { if(data.code == 0){ $scope.loginNameExists = data.result.length > 0; }else{ $rootScope.dialogMsg(data.errorMsg, function(){}); } }).error(function() { }); } } $scope.checkCertId = function(){ var card = $scope.login.cert_id; //校验长度,类型 if(isCardNo(card) === false || checkProvince(card) === false || checkBirthday(card) === false || checkParity(card) === false ) { $scope.invalidCertId = true; return false; }else{ $scope.invalidCertId = false; } if($scope.login.cert_id.trim().length > 0){ $scope.myPromise = $http({ url : myConfig.url + '/user/checkCertId', method : 'POST', data : angular.toJson($scope.login) }).success(function(data) { if(data.code == 0){ $scope.certIdExists = data.result.length > 0; }else{ $rootScope.dialogMsg(data.errorMsg, function(){}); } }).error(function() { }); } } // $scope.checkMobile = function(){ // if(!(/^1[3|4|5|7|8][0-9]\d{8}$/.test($scope.login.mobile))){ // $scope.invalidMobile = true; // return; // }else{ // $scope.invalidMobile = false; // } // // if($scope.login.mobile.trim().length > 0){ // $scope.myPromise = $http({ // url : myConfig.url + '/user/checkMobile', // method : 'POST', // data : angular.toJson($scope.login) // }).success(function(data) { // if(data.code == 0){ // $scope.mobileExists = data.result.length > 0; // }else{ // $rootScope.dialogMsg(data.errorMsg, function(){}); // } // }).error(function() { // }); // } // } $scope.sendMessage = function(){ if(!$scope.login.login_name){ $rootScope.dialogMsg("请输入手机号", function(){}); return; } if($scope.loginNameExists){ $rootScope.dialogMsg("手机号已注册,请重新输入", function(){}); return; } if(!(/^1[3|4|5|7|8][0-9]\d{8}$/.test($scope.login.login_name))){ $scope.invalidMobile = true; $rootScope.dialogMsg("手机号格式不正确,请重新输入", function(){}); return; } $scope.sendMessageTime = 100; $scope.login.mobile = $scope.login.login_name; $scope.myPromise = $http({ url : myConfig.url + '/user/checkSendSms', method : 'POST', data : angular.toJson($scope.login) }).success(function(data) { if(data.code == 0){ if(data.result.checkResult){ $scope.doSendSms(); }else{ $rootScope.dialogMsg("请勿频繁操作,请稍后重试", function(){}); } }else{ $rootScope.dialogMsg("请稍后重试", function(){}); } }).error(function() { }); } $scope.doSendSms = function(){ $scope.myPromise = $http({ url : myConfig.url + '/user/saveSmsLog', method : 'POST', data : angular.toJson($scope.login) }).success(function(data) { if(data.code == 0){ $rootScope.dialogMsg("验证码已发送,请注意查收", function(){}); }else{ $rootScope.dialogMsg(data.errorMsg, function(){}); } }).error(function() { }); } var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", 21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏", 33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南", 42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆", 51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃", 63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外" }; //检查号码是否符合规范,包括长度,类型 isCardNo = function(card) { //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/; if(reg.test(card) === false) { return false; } return true; }; //取身份证前两位,校验省份 checkProvince = function(card) { var province = card.substr(0,2); if(vcity[province] == undefined) { return false; } return true; }; //检查生日是否正确 checkBirthday = function(card) { var len = card.length; //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字 if(len == '15') { var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/; var arr_data = card.match(re_fifteen); var year = arr_data[2]; var month = arr_data[3]; var day = arr_data[4]; var birthday = new Date('19'+year+'/'+month+'/'+day); return verifyBirthday('19'+year,month,day,birthday); } //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X if(len == '18') { var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/; var arr_data = card.match(re_eighteen); var year = arr_data[2]; var month = arr_data[3]; var day = arr_data[4]; var birthday = new Date(year+'/'+month+'/'+day); return verifyBirthday(year,month,day,birthday); } return false; }; //校验日期 verifyBirthday = function(year,month,day,birthday) { var now = new Date(); var now_year = now.getFullYear(); //年月日是否合理 if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) { //判断年份的范围(3岁到100岁之间) var time = now_year - year; if(time >= 3 && time <= 100) { return true; } return false; } return false; }; //校验位的检测 checkParity = function(card) { //15位转18位 card = changeFivteenToEighteen(card); var len = card.length; if(len == '18') { var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var cardTemp = 0, i, valnum; for(i = 0; i < 17; i ++) { cardTemp += card.substr(i, 1) * arrInt[i]; } valnum = arrCh[cardTemp % 11]; if (valnum == card.substr(17, 1)) { return true; } return false; } return false; }; //15位转18位身份证号 changeFivteenToEighteen = function(card) { if(card.length == '15') { var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var cardTemp = 0, i; card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6); for(i = 0; i < 17; i ++) { cardTemp += card.substr(i, 1) * arrInt[i]; } card += arrCh[cardTemp % 11]; return card; } return card; }; })