app.controller('LoginCtrl', ['$rootScope', '$scope', '$state', '$translate', '$localStorage', '$cookieStore', '$auth', '$window', '$document', '$timeout', '$filter', '$http', 'cfpLoadingBar', 'Restangular', 'api_login', 'api_is_category', 'SweetAlert', 'api_msg', function ($rootScope, $scope, $state, $translate, $localStorage, $cookieStore, $auth, $window, $document, $timeout, $filter, $http, cfpLoadingBar, Restangular, api_login, api_is_category, SweetAlert, api_msg) { $rootScope.app.layout.isNavbarFixed = false; $rootScope.app.layout.isSidebarFixed = false; //判断项目归属 start //因项目众多,前端为了加以区分,所以用域名加以判断,后期有更好的方式可以自行修改 // 中南财大 $rootScope.isZncd = document.domain === 'itsm.zuel.edu.cn'; //判断项目归属 end // 是否单点登录 $scope.isSSo = location.search.length > 0; //初始化,获取版本类别,处理人/处理科室-seimin $scope.isCategoryHandle = function () { api_is_category.isCategory({ "idx": 0, "sum": 1000 }) .then(function (res) { if (res.status == 200) { //存储报修主体到缓存 var list = res.list; var repairMain = list.find((v) => v.keyconfig == "repairMain"); //报修主体 var incidentWithConsumable = list.find( (v) => v.keyconfig == "incidentWithConsumable" ); //是否绑定耗材 var wxIncidentWithCmdb = list.find( (v) => v.keyconfig == "wxIncidentWithCmdb" ); //是否绑定资产 sessionStorage.setItem( "repair_main", JSON.stringify(repairMain) ); sessionStorage.setItem( "incidentWithConsumable", incidentWithConsumable.valueconfig ); sessionStorage.setItem( "wxIncidentWithCmdb", wxIncidentWithCmdb.valueconfig ); } }) .catch(function (err) { console.log(err) }) }; $scope.loginBtn = { closeEl: '.close', modal: { templateUrl: 'assets/views/loginform.html', postion: 'center' } }; // $scope.jry_ceshi=function(){ // // alert('ok') // console.log('ok') // } $scope.choicevalue = 1 $scope.choicelogin = function (e) { $scope.choicevalue = e; } $scope.login = function () { angular.element('.el-login').trigger('click'); } // $scope.login(); $scope.close = function () { console.log(angular.element('.el-login')); angular.element('.el-login').trigger('click'); } $scope.loginForm = { username: "", // account:"", password: "" } $rootScope.app.isLoginFixed = true; $scope.validateUsername = function () { return $scope.loginForm.username == null || $scope.loginForm.username == ""; } $scope.validatePassword = function () { return $scope.loginForm.password == null || $scope.loginForm.password == ""; } $scope.formValid = function () { return $scope.loginForm.username == null || $scope.loginForm.username == "" || $scope.loginForm.password == null || $scope.loginForm.password == ""; } $rootScope.$on('auth:invalid', function (ev) { $state.go('login.signin'); }); $scope.licensePassShow = false; $scope.licenseSoonShow = false; $scope.licenseTrialShow = false; $scope.licenseSurplusTime = 0; $scope.licensePassSub = function () { if ($scope.licenseIsAdmin) { $scope.licensePassShow = false; $state.go('login.license'); } else { $scope.licensePassShow = false; } } $scope.licenseSoonShowSub = function () { $scope.licenseSoonShow = false; $rootScope.getpending(); $state.go('app.dashboard'); } $scope.licenseTrialSub = function () { $scope.licenseTrialShow = false; $rootScope.getpending(); $state.go('app.dashboard'); } $scope.licenseTrialActivation = function () { $state.go('login.license'); } $scope.licenseIsAdmin = ""; // 未读消息数量 // $scope.noReadData=0 // $rootScope.getMsgNum=function(id){ // api_msg.msgDataList({idx: 0, sum: 1, messageStation: {readStatus: 0, userId: id}}).then(function(data) { // if (data.status == 200) { // $rootScope.noReadData=data.totalNum // } else { // $rootScope.noReadData=0 // } // return $rootScope.noReadData // }) // } //登录 $scope.handleLoginClick = function (e) { // api_login.getLicense({}).then(function(res){ // $auth.submitLogin($scope.loginForm) // var ssoStr = location.search.replace('?', '').split('&')[0].split('=')[1]; var ssoStr = ''; var ssoJson; if ($scope.isSSo) { ssoStr = location.search.replace('?', '').split('&')[0].split('=')[1]; ssoStr = Base64.decode(decodeURIComponent(ssoStr)); ssoJson = JSON.parse(ssoStr); } var postData = $scope.isSSo ? { username: ssoJson.a, password: ssoJson.u, t: false } : $scope.loginForm; api_login.login(postData) .then(function (resp) { console.log(resp); if ($scope.isSSo) { localStorage.setItem('isSSo', '1');//单点登录 } else { localStorage.setItem('isSSo', '0');//正常登录 } if (resp.state == "10000") {//license失效 // console.log($scope.loginForm); if (resp.role) { for (var i = 0; i < resp.role.length; i++) { if (resp.role[i] == "admin general" || resp.role[i] == "admin") { $scope.licenseIsAdmin = true } } } if ($scope.licenseIsAdmin) { $scope.licensePassShow = true; // $state.go('login.license'); } else { $scope.licensePassShow = true } } else { api_login.getLicense({}).then(function (res) { console.log(res); var subIsAdmin = ""; if (resp.data && resp.data.user && resp.data.user.role) { for (var i = 0; i < resp.data.user.role.length; i++) { if (resp.data.user.role[i].rolecode == "admin") { var subIsAdmin = true } } } $scope.isCategoryHandle();//判断报修主体 $scope.featureSum = res.featureSum; $scope.licenseSurplusTime = Number(res.featureSum) - Number(res.featureAlready); if (res.type == 1 && subIsAdmin) { $scope.licenseTrialShow = true; resp.data.user["menu"] = resp.data.menu; localStorage.setItem("jry_user", JSON.stringify(resp.data.user)); localStorage.setItem("login_requester", JSON.stringify(resp.data.requester)); $rootScope.user = JSON.parse(localStorage.getItem("jry_user")); $rootScope.login_requester = JSON.parse(localStorage.getItem("login_requester")); $rootScope.getMsgNum($rootScope.user.id) $rootScope.isFuwutai = false;//服务台人员和服务台经理才显示右上角呼叫功能 if ($rootScope.user) { if($rootScope.user.role&&angular.isArray($rootScope.user.role)&&$rootScope.user.role.length){ $rootScope.isFuwutai = $rootScope.user.role.some(function(v){ return v.rolecode == 'call center'; }) }else{ $rootScope.isFuwutai = false; } } if($rootScope.isFuwutai){ localStorage.setItem("isFuwutai", 'true'); }else{ localStorage.removeItem('isFuwutai'); } // $rootScope.userMenus = JSON.parse(localStorage.getItem("jry_user")).menu; var allJurisdiction = JSON.parse(localStorage.getItem("jry_user")).menu; var onlyMenu = []; // console.log(allJurisdiction); for (var i = 0; i < allJurisdiction.length; i++) { if (allJurisdiction[i].event == "1") { onlyMenu.push(allJurisdiction[i]) } } // console.log(onlyMenu); $rootScope.userMenus = onlyMenu; var getMenus = function () { function convertListToTree(data, treeMap) { var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = null; //Initially set our loop to null var parentNode = null; //loop over data for (var i = 0; i < data.length; i++) { // data[i].id = Number(data[i].id); var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent idToNodeMap[datum.id] = datum; //Does this node have a parent? if (typeof datum.parentid === "undefined" || datum.parentid == null) { //Doesn't look like it, so this node is the root of the tree root = datum; treeMap[datum.id] = root; } else { //This node has a parent, so let's look it up using the id parentNode = idToNodeMap[datum.parentid]; //We don't need this property, so let's delete it. //delete datum.parentid; //Let's add the current node as a child of the parent node. parentNode.children.push(datum); } } return root; } function convertParentToChildList(data) { var treeMap = {}; var list = []; convertListToTree(data, treeMap); angular.forEach(treeMap, function (item) { list.push(item); }); list = window._.sortBy(list, function (o) { return o.orders; }); return list; } //if(userMenus.length==0){ var userMenus = []; var idMapMenu = {}; if ($rootScope.user) { if ($rootScope.user.menu) { console.log($rootScope.user.menu); var allJurisdiction2 = $rootScope.user.menu; var onlyMenu2 = []; for (var i = 0; i < allJurisdiction2.length; i++) { if (allJurisdiction2[i].event == "1") { onlyMenu2.push(allJurisdiction2[i]) } } // userMenus = convertParentToChildList($rootScope.user.menu); userMenus = convertParentToChildList(onlyMenu2); } } //} $rootScope.userMenus = userMenus; if ($rootScope.userMenus.length > 0) { // getpending(); // setInterval(getpending, 30000); } return userMenus; } getMenus(); } else { if ($scope.licenseSurplusTime < 7 && subIsAdmin) { $scope.licenseSoonShow = true; // if (resp.error != 501 && resp.error != 400) { // $state.go('app.knowledge.forum'); // $rootScope.app.isLoginFixed = false; // // console.log(resp); // // api_wechatfile.getDictionary({ "type": "list", "key": "hjzx_cornet" }).then(function(data) { // // $scope.runNumber = data; // // $scope.phone = $scope.runNumber[0].name; // // $rootScope.phoneChange($scope.phone); // // }) // } else { // resp.error = ""; // $scope.loginForm.password = ""; // SweetAlert.swal("用户名或者密码验证失败,请重试!", "error"); // // $rootScope.user=resp.user; // // $rootScope.menu=resp.menu; // } resp.data.user["menu"] = resp.data.menu; localStorage.setItem("jry_user", JSON.stringify(resp.data.user)); localStorage.setItem("login_requester", JSON.stringify(resp.data.requester)); $rootScope.user = JSON.parse(localStorage.getItem("jry_user")); $rootScope.login_requester = JSON.parse(localStorage.getItem("login_requester")); $rootScope.getMsgNum($rootScope.user.id) $rootScope.isFuwutai = false;//服务台人员和服务台经理才显示右上角呼叫功能 if ($rootScope.user) { if($rootScope.user.role&&angular.isArray($rootScope.user.role)&&$rootScope.user.role.length){ $rootScope.isFuwutai = $rootScope.user.role.some(function(v){ return v.rolecode == 'call center'; }) }else{ $rootScope.isFuwutai = false; } } if($rootScope.isFuwutai){ localStorage.setItem("isFuwutai", 'true'); }else{ localStorage.removeItem('isFuwutai'); } // $rootScope.userMenus = JSON.parse(localStorage.getItem("jry_user")).menu; var allJurisdiction = JSON.parse(localStorage.getItem("jry_user")).menu; var onlyMenu = []; // console.log(allJurisdiction); for (var i = 0; i < allJurisdiction.length; i++) { if (allJurisdiction[i].event == "1") { onlyMenu.push(allJurisdiction[i]) } } // console.log(onlyMenu); $rootScope.userMenus = onlyMenu; var getMenus = function () { function convertListToTree(data, treeMap) { var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = null; //Initially set our loop to null var parentNode = null; //loop over data for (var i = 0; i < data.length; i++) { // data[i].id = Number(data[i].id); var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent idToNodeMap[datum.id] = datum; //Does this node have a parent? if (typeof datum.parentid === "undefined" || datum.parentid == null) { //Doesn't look like it, so this node is the root of the tree root = datum; treeMap[datum.id] = root; } else { //This node has a parent, so let's look it up using the id parentNode = idToNodeMap[datum.parentid]; //We don't need this property, so let's delete it. //delete datum.parentid; //Let's add the current node as a child of the parent node. parentNode.children.push(datum); } } return root; } function convertParentToChildList(data) { var treeMap = {}; var list = []; convertListToTree(data, treeMap); angular.forEach(treeMap, function (item) { list.push(item); }); list = window._.sortBy(list, function (o) { return o.orders; }); return list; } //if(userMenus.length==0){ var userMenus = []; var idMapMenu = {}; if ($rootScope.user) { if ($rootScope.user.menu) { console.log($rootScope.user.menu); var allJurisdiction2 = $rootScope.user.menu; var onlyMenu2 = []; for (var i = 0; i < allJurisdiction2.length; i++) { if (allJurisdiction2[i].event == "1") { onlyMenu2.push(allJurisdiction2[i]) } } // userMenus = convertParentToChildList($rootScope.user.menu); userMenus = convertParentToChildList(onlyMenu2); } } //} $rootScope.userMenus = userMenus; if ($rootScope.userMenus.length > 0) { // getpending(); // setInterval(getpending, 30000); } return userMenus; } getMenus(); } else { if (resp.state == "500") { SweetAlert.swal("用户名或者密码验证失败,请重试!", "error"); } else { // if (resp.error != 501 && resp.error != 400) { // $state.go('app.knowledge.forum'); // $rootScope.app.isLoginFixed = false; // // console.log(resp); // // api_wechatfile.getDictionary({ "type": "list", "key": "hjzx_cornet" }).then(function(data) { // // $scope.runNumber = data; // // $scope.phone = $scope.runNumber[0].name; // // $rootScope.phoneChange($scope.phone); // // }) // } else { // resp.error = ""; // $scope.loginForm.password = ""; // SweetAlert.swal("用户名或者密码验证失败,请重试!", "error"); // // $rootScope.user=resp.user; // // $rootScope.menu=resp.menu; // } resp.data.user["menu"] = resp.data.menu; localStorage.setItem("jry_user", JSON.stringify(resp.data.user)); localStorage.setItem("login_requester", JSON.stringify(resp.data.requester)); $rootScope.user = JSON.parse(localStorage.getItem("jry_user")); $rootScope.login_requester = JSON.parse(localStorage.getItem("login_requester")); $rootScope.getMsgNum($rootScope.user.id) $rootScope.isFuwutai = false;//服务台人员和服务台经理才显示右上角呼叫功能 if ($rootScope.user) { if($rootScope.user.role&&angular.isArray($rootScope.user.role)&&$rootScope.user.role.length){ $rootScope.isFuwutai = $rootScope.user.role.some(function(v){ return v.rolecode == 'call center'; }) }else{ $rootScope.isFuwutai = false; } } if($rootScope.isFuwutai){ localStorage.setItem("isFuwutai", 'true'); }else{ localStorage.removeItem('isFuwutai'); } // $rootScope.userMenus = JSON.parse(localStorage.getItem("jry_user")).menu; var allJurisdiction = JSON.parse(localStorage.getItem("jry_user")).menu; var onlyMenu = []; // console.log(allJurisdiction); for (var i = 0; i < allJurisdiction.length; i++) { if (allJurisdiction[i].event == "1") { onlyMenu.push(allJurisdiction[i]) } } // console.log(onlyMenu); $rootScope.userMenus = onlyMenu; var getMenus = function () { function convertListToTree(data, treeMap) { var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup var root = null; //Initially set our loop to null var parentNode = null; //loop over data for (var i = 0; i < data.length; i++) { // data[i].id = Number(data[i].id); var datum = data[i]; //each node will have children, so let's give it a "children" poperty datum.children = []; //add an entry for this node to the map so that any future children can //lookup the parent idToNodeMap[datum.id] = datum; //Does this node have a parent? if (typeof datum.parentid === "undefined" || datum.parentid == null) { //Doesn't look like it, so this node is the root of the tree root = datum; treeMap[datum.id] = root; } else { //This node has a parent, so let's look it up using the id parentNode = idToNodeMap[datum.parentid]; //We don't need this property, so let's delete it. //delete datum.parentid; //Let's add the current node as a child of the parent node. parentNode.children.push(datum); } } return root; } function convertParentToChildList(data) { var treeMap = {}; var list = []; convertListToTree(data, treeMap); angular.forEach(treeMap, function (item) { list.push(item); }); list = window._.sortBy(list, function (o) { return o.orders; }); return list; } //if(userMenus.length==0){ var userMenus = []; var idMapMenu = {}; if ($rootScope.user) { if ($rootScope.user.menu) { console.log($rootScope.user.menu); var allJurisdiction2 = $rootScope.user.menu; var onlyMenu2 = []; for (var i = 0; i < allJurisdiction2.length; i++) { if (allJurisdiction2[i].event == "1") { onlyMenu2.push(allJurisdiction2[i]) } } // userMenus = convertParentToChildList($rootScope.user.menu); userMenus = convertParentToChildList(onlyMenu2); } } //} $rootScope.userMenus = userMenus; if ($rootScope.userMenus.length > 0) { // getpending(); // setInterval(getpending, 30000); } return userMenus; } getMenus(); // if (!resp.error || resp.error != 500) { if (resp.data && resp.data.user && resp.data.user.id) { // console.log(resp.error); $rootScope.getpending(); $state.go('app.dashboard'); $rootScope.app.isLoginFixed = false; // console.log(resp); // api_wechatfile.getDictionary({ "type": "list", "key": "hjzx_cornet" }).then(function(data) { // $scope.runNumber = data; // $scope.phone = $scope.runNumber[0].name; // $rootScope.phoneChange($scope.phone); // }) } else { resp.error = ""; $scope.loginForm.password = ""; SweetAlert.swal("用户名或者密码验证失败,请重试!", "error"); // $rootScope.user=resp.user; // $rootScope.menu=resp.menu; }; if($rootScope.isFuwutai){ $rootScope.getExtnDirect(); } } } } }) } }) .catch(function (resp) { $scope.loginForm.password = ""; // SweetAlert.swal("系统错误,请重试!", "登录错误", "error"); SweetAlert.swal("用户名或者密码验证失败,请重试!", "error"); }); // }) }; if ($scope.isSSo) { $scope.handleLoginClick(); } $scope.handleloginEnter = function (e) { if (e.keyCode == 13) { $scope.handleLoginClick(); } }; $scope.viewType = "password"; $scope.isPassword = true; $scope.toggleView = function () { $scope.isPassword = !$scope.isPassword; $scope.viewType = $scope.isPassword ? "password" : "text"; } $scope.handleSignOutBtnClick = function () { $auth.signOut() .then(function (resp) { // handle success response }) .catch(function (resp) { // handle error response }); }; } ]);