loginCtrl.js 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  1. 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',
  2. function ($rootScope, $scope, $state, $translate, $localStorage, $cookieStore, $auth, $window, $document, $timeout, $filter, $http, cfpLoadingBar, Restangular, api_login, api_is_category, SweetAlert, api_msg) {
  3. $rootScope.app.layout.isNavbarFixed = false;
  4. $rootScope.app.layout.isSidebarFixed = false;
  5. //判断项目归属 start
  6. //因项目众多,前端为了加以区分,所以用域名加以判断,后期有更好的方式可以自行修改
  7. // 中南财大
  8. $rootScope.isZncd = document.domain === 'itsm.zuel.edu.cn';
  9. //判断项目归属 end
  10. // 是否单点登录
  11. $scope.isSSo = location.search.length > 0;
  12. //初始化,获取版本类别,处理人/处理科室-seimin
  13. $scope.isCategoryHandle = function () {
  14. api_is_category.isCategory({ "idx": 0, "sum": 1000, "systemConfiguration": { "keyconfig": "repairMain" } })
  15. .then(function (res) {
  16. if (res.status == 200) {
  17. //存储报修主体到缓存
  18. sessionStorage.setItem("repair_main", JSON.stringify(res.list[0]));
  19. }
  20. })
  21. .catch(function (err) {
  22. console.log(err)
  23. })
  24. };
  25. $scope.loginBtn = {
  26. closeEl: '.close',
  27. modal: {
  28. templateUrl: 'assets/views/loginform.html',
  29. postion: 'center'
  30. }
  31. };
  32. // $scope.jry_ceshi=function(){
  33. // // alert('ok')
  34. // console.log('ok')
  35. // }
  36. $scope.choicevalue = 1
  37. $scope.choicelogin = function (e) {
  38. $scope.choicevalue = e;
  39. }
  40. $scope.login = function () {
  41. angular.element('.el-login').trigger('click');
  42. }
  43. // $scope.login();
  44. $scope.close = function () {
  45. console.log(angular.element('.el-login'));
  46. angular.element('.el-login').trigger('click');
  47. }
  48. $scope.loginForm = {
  49. username: "",
  50. // account:"",
  51. password: ""
  52. }
  53. $rootScope.app.isLoginFixed = true;
  54. $scope.validateUsername = function () {
  55. return $scope.loginForm.username == null || $scope.loginForm.username == "";
  56. }
  57. $scope.validatePassword = function () {
  58. return $scope.loginForm.password == null || $scope.loginForm.password == "";
  59. }
  60. $scope.formValid = function () {
  61. return $scope.loginForm.username == null || $scope.loginForm.username == "" || $scope.loginForm.password == null || $scope.loginForm.password == "";
  62. }
  63. $rootScope.$on('auth:invalid', function (ev) {
  64. $state.go('login.signin');
  65. });
  66. $scope.licensePassShow = false;
  67. $scope.licenseSoonShow = false;
  68. $scope.licenseTrialShow = false;
  69. $scope.licenseSurplusTime = 0;
  70. $scope.licensePassSub = function () {
  71. if ($scope.licenseIsAdmin) {
  72. $scope.licensePassShow = false;
  73. $state.go('login.license');
  74. } else {
  75. $scope.licensePassShow = false;
  76. }
  77. }
  78. $scope.licenseSoonShowSub = function () {
  79. $scope.licenseSoonShow = false;
  80. $rootScope.getpending();
  81. $state.go('app.dashboard');
  82. }
  83. $scope.licenseTrialSub = function () {
  84. $scope.licenseTrialShow = false;
  85. $rootScope.getpending();
  86. $state.go('app.dashboard');
  87. }
  88. $scope.licenseTrialActivation = function () {
  89. $state.go('login.license');
  90. }
  91. $scope.licenseIsAdmin = "";
  92. // 未读消息数量
  93. // $scope.noReadData=0
  94. // $rootScope.getMsgNum=function(id){
  95. // api_msg.msgDataList({idx: 0, sum: 1, messageStation: {readStatus: 0, userId: id}}).then(function(data) {
  96. // if (data.status == 200) {
  97. // $rootScope.noReadData=data.totalNum
  98. // } else {
  99. // $rootScope.noReadData=0
  100. // }
  101. // return $rootScope.noReadData
  102. // })
  103. // }
  104. //登录
  105. $scope.handleLoginClick = function (e) {
  106. // api_login.getLicense({}).then(function(res){
  107. // $auth.submitLogin($scope.loginForm)
  108. // var ssoStr = location.search.replace('?', '').split('&')[0].split('=')[1];
  109. var ssoStr = '';
  110. var ssoJson;
  111. if ($scope.isSSo) {
  112. ssoStr = location.search.replace('?', '').split('&')[0].split('=')[1];
  113. ssoStr = Base64.decode(decodeURIComponent(ssoStr));
  114. ssoJson = JSON.parse(ssoStr);
  115. }
  116. var postData = $scope.isSSo ? { username: ssoJson.a, password: ssoJson.u, t: false } : $scope.loginForm;
  117. api_login.login(postData)
  118. .then(function (resp) {
  119. console.log(resp);
  120. if ($scope.isSSo) {
  121. localStorage.setItem('isSSo', '1');//单点登录
  122. } else {
  123. localStorage.setItem('isSSo', '0');//正常登录
  124. }
  125. if (resp.state == "10000") {//license失效
  126. // console.log($scope.loginForm);
  127. if (resp.role) {
  128. for (var i = 0; i < resp.role.length; i++) {
  129. if (resp.role[i] == "admin general" || resp.role[i] == "admin") {
  130. $scope.licenseIsAdmin = true
  131. }
  132. }
  133. }
  134. if ($scope.licenseIsAdmin) {
  135. $scope.licensePassShow = true;
  136. // $state.go('login.license');
  137. } else {
  138. $scope.licensePassShow = true
  139. }
  140. } else {
  141. api_login.getLicense({}).then(function (res) {
  142. console.log(res);
  143. var subIsAdmin = "";
  144. if (resp.data && resp.data.user && resp.data.user.role) {
  145. for (var i = 0; i < resp.data.user.role.length; i++) {
  146. if (resp.data.user.role[i].rolecode == "admin") {
  147. var subIsAdmin = true
  148. }
  149. }
  150. }
  151. $scope.isCategoryHandle();//判断报修主体
  152. $scope.featureSum = res.featureSum;
  153. $scope.licenseSurplusTime = Number(res.featureSum) - Number(res.featureAlready);
  154. if (res.type == 1 && subIsAdmin) {
  155. $scope.licenseTrialShow = true;
  156. resp.data.user["menu"] = resp.data.menu;
  157. localStorage.setItem("jry_user", JSON.stringify(resp.data.user));
  158. localStorage.setItem("login_requester", JSON.stringify(resp.data.requester));
  159. $rootScope.user = JSON.parse(localStorage.getItem("jry_user"));
  160. $rootScope.login_requester = JSON.parse(localStorage.getItem("login_requester"));
  161. $rootScope.getMsgNum($rootScope.user.id)
  162. $rootScope.isFuwutai = false;//服务台人员和服务台经理才显示右上角呼叫功能
  163. if ($rootScope.user) {
  164. if($rootScope.user.role&&angular.isArray($rootScope.user.role)&&$rootScope.user.role.length){
  165. $rootScope.isFuwutai = $rootScope.user.role.some(function(v){
  166. return v.rolecode == 'call center';
  167. })
  168. }else{
  169. $rootScope.isFuwutai = false;
  170. }
  171. }
  172. if($rootScope.isFuwutai){
  173. localStorage.setItem("isFuwutai", 'true');
  174. }else{
  175. localStorage.removeItem('isFuwutai');
  176. }
  177. // $rootScope.userMenus = JSON.parse(localStorage.getItem("jry_user")).menu;
  178. var allJurisdiction = JSON.parse(localStorage.getItem("jry_user")).menu;
  179. var onlyMenu = [];
  180. // console.log(allJurisdiction);
  181. for (var i = 0; i < allJurisdiction.length; i++) {
  182. if (allJurisdiction[i].event == "1") {
  183. onlyMenu.push(allJurisdiction[i])
  184. }
  185. }
  186. // console.log(onlyMenu);
  187. $rootScope.userMenus = onlyMenu;
  188. var getMenus = function () {
  189. function convertListToTree(data, treeMap) {
  190. var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  191. var root = null; //Initially set our loop to null
  192. var parentNode = null;
  193. //loop over data
  194. for (var i = 0; i < data.length; i++) {
  195. // data[i].id = Number(data[i].id);
  196. var datum = data[i];
  197. //each node will have children, so let's give it a "children" poperty
  198. datum.children = [];
  199. //add an entry for this node to the map so that any future children can
  200. //lookup the parent
  201. idToNodeMap[datum.id] = datum;
  202. //Does this node have a parent?
  203. if (typeof datum.parentid === "undefined" || datum.parentid == null) {
  204. //Doesn't look like it, so this node is the root of the tree
  205. root = datum;
  206. treeMap[datum.id] = root;
  207. } else {
  208. //This node has a parent, so let's look it up using the id
  209. parentNode = idToNodeMap[datum.parentid];
  210. //We don't need this property, so let's delete it.
  211. //delete datum.parentid;
  212. //Let's add the current node as a child of the parent node.
  213. parentNode.children.push(datum);
  214. }
  215. }
  216. return root;
  217. }
  218. function convertParentToChildList(data) {
  219. var treeMap = {};
  220. var list = [];
  221. convertListToTree(data, treeMap);
  222. angular.forEach(treeMap, function (item) {
  223. list.push(item);
  224. });
  225. list = window._.sortBy(list, function (o) {
  226. return o.orders;
  227. });
  228. return list;
  229. }
  230. //if(userMenus.length==0){
  231. var userMenus = [];
  232. var idMapMenu = {};
  233. if ($rootScope.user) {
  234. if ($rootScope.user.menu) {
  235. console.log($rootScope.user.menu);
  236. var allJurisdiction2 = $rootScope.user.menu;
  237. var onlyMenu2 = [];
  238. for (var i = 0; i < allJurisdiction2.length; i++) {
  239. if (allJurisdiction2[i].event == "1") {
  240. onlyMenu2.push(allJurisdiction2[i])
  241. }
  242. }
  243. // userMenus = convertParentToChildList($rootScope.user.menu);
  244. userMenus = convertParentToChildList(onlyMenu2);
  245. }
  246. }
  247. //}
  248. $rootScope.userMenus = userMenus;
  249. if ($rootScope.userMenus.length > 0) {
  250. // getpending();
  251. // setInterval(getpending, 30000);
  252. }
  253. return userMenus;
  254. }
  255. getMenus();
  256. } else {
  257. if ($scope.licenseSurplusTime < 7 && subIsAdmin) {
  258. $scope.licenseSoonShow = true;
  259. // if (resp.error != 501 && resp.error != 400) {
  260. // $state.go('app.knowledge.forum');
  261. // $rootScope.app.isLoginFixed = false;
  262. // // console.log(resp);
  263. // // api_wechatfile.getDictionary({ "type": "list", "key": "hjzx_cornet" }).then(function(data) {
  264. // // $scope.runNumber = data;
  265. // // $scope.phone = $scope.runNumber[0].name;
  266. // // $rootScope.phoneChange($scope.phone);
  267. // // })
  268. // } else {
  269. // resp.error = "";
  270. // $scope.loginForm.password = "";
  271. // SweetAlert.swal("用户名或者密码验证失败,请重试!", "error");
  272. // // $rootScope.user=resp.user;
  273. // // $rootScope.menu=resp.menu;
  274. // }
  275. resp.data.user["menu"] = resp.data.menu;
  276. localStorage.setItem("jry_user", JSON.stringify(resp.data.user));
  277. localStorage.setItem("login_requester", JSON.stringify(resp.data.requester));
  278. $rootScope.user = JSON.parse(localStorage.getItem("jry_user"));
  279. $rootScope.login_requester = JSON.parse(localStorage.getItem("login_requester"));
  280. $rootScope.getMsgNum($rootScope.user.id)
  281. $rootScope.isFuwutai = false;//服务台人员和服务台经理才显示右上角呼叫功能
  282. if ($rootScope.user) {
  283. if($rootScope.user.role&&angular.isArray($rootScope.user.role)&&$rootScope.user.role.length){
  284. $rootScope.isFuwutai = $rootScope.user.role.some(function(v){
  285. return v.rolecode == 'call center';
  286. })
  287. }else{
  288. $rootScope.isFuwutai = false;
  289. }
  290. }
  291. if($rootScope.isFuwutai){
  292. localStorage.setItem("isFuwutai", 'true');
  293. }else{
  294. localStorage.removeItem('isFuwutai');
  295. }
  296. // $rootScope.userMenus = JSON.parse(localStorage.getItem("jry_user")).menu;
  297. var allJurisdiction = JSON.parse(localStorage.getItem("jry_user")).menu;
  298. var onlyMenu = [];
  299. // console.log(allJurisdiction);
  300. for (var i = 0; i < allJurisdiction.length; i++) {
  301. if (allJurisdiction[i].event == "1") {
  302. onlyMenu.push(allJurisdiction[i])
  303. }
  304. }
  305. // console.log(onlyMenu);
  306. $rootScope.userMenus = onlyMenu;
  307. var getMenus = function () {
  308. function convertListToTree(data, treeMap) {
  309. var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  310. var root = null; //Initially set our loop to null
  311. var parentNode = null;
  312. //loop over data
  313. for (var i = 0; i < data.length; i++) {
  314. // data[i].id = Number(data[i].id);
  315. var datum = data[i];
  316. //each node will have children, so let's give it a "children" poperty
  317. datum.children = [];
  318. //add an entry for this node to the map so that any future children can
  319. //lookup the parent
  320. idToNodeMap[datum.id] = datum;
  321. //Does this node have a parent?
  322. if (typeof datum.parentid === "undefined" || datum.parentid == null) {
  323. //Doesn't look like it, so this node is the root of the tree
  324. root = datum;
  325. treeMap[datum.id] = root;
  326. } else {
  327. //This node has a parent, so let's look it up using the id
  328. parentNode = idToNodeMap[datum.parentid];
  329. //We don't need this property, so let's delete it.
  330. //delete datum.parentid;
  331. //Let's add the current node as a child of the parent node.
  332. parentNode.children.push(datum);
  333. }
  334. }
  335. return root;
  336. }
  337. function convertParentToChildList(data) {
  338. var treeMap = {};
  339. var list = [];
  340. convertListToTree(data, treeMap);
  341. angular.forEach(treeMap, function (item) {
  342. list.push(item);
  343. });
  344. list = window._.sortBy(list, function (o) {
  345. return o.orders;
  346. });
  347. return list;
  348. }
  349. //if(userMenus.length==0){
  350. var userMenus = [];
  351. var idMapMenu = {};
  352. if ($rootScope.user) {
  353. if ($rootScope.user.menu) {
  354. console.log($rootScope.user.menu);
  355. var allJurisdiction2 = $rootScope.user.menu;
  356. var onlyMenu2 = [];
  357. for (var i = 0; i < allJurisdiction2.length; i++) {
  358. if (allJurisdiction2[i].event == "1") {
  359. onlyMenu2.push(allJurisdiction2[i])
  360. }
  361. }
  362. // userMenus = convertParentToChildList($rootScope.user.menu);
  363. userMenus = convertParentToChildList(onlyMenu2);
  364. }
  365. }
  366. //}
  367. $rootScope.userMenus = userMenus;
  368. if ($rootScope.userMenus.length > 0) {
  369. // getpending();
  370. // setInterval(getpending, 30000);
  371. }
  372. return userMenus;
  373. }
  374. getMenus();
  375. } else {
  376. if (resp.state == "500") {
  377. SweetAlert.swal("用户名或者密码验证失败,请重试!", "error");
  378. } else {
  379. // if (resp.error != 501 && resp.error != 400) {
  380. // $state.go('app.knowledge.forum');
  381. // $rootScope.app.isLoginFixed = false;
  382. // // console.log(resp);
  383. // // api_wechatfile.getDictionary({ "type": "list", "key": "hjzx_cornet" }).then(function(data) {
  384. // // $scope.runNumber = data;
  385. // // $scope.phone = $scope.runNumber[0].name;
  386. // // $rootScope.phoneChange($scope.phone);
  387. // // })
  388. // } else {
  389. // resp.error = "";
  390. // $scope.loginForm.password = "";
  391. // SweetAlert.swal("用户名或者密码验证失败,请重试!", "error");
  392. // // $rootScope.user=resp.user;
  393. // // $rootScope.menu=resp.menu;
  394. // }
  395. resp.data.user["menu"] = resp.data.menu;
  396. localStorage.setItem("jry_user", JSON.stringify(resp.data.user));
  397. localStorage.setItem("login_requester", JSON.stringify(resp.data.requester));
  398. $rootScope.user = JSON.parse(localStorage.getItem("jry_user"));
  399. $rootScope.login_requester = JSON.parse(localStorage.getItem("login_requester"));
  400. $rootScope.getMsgNum($rootScope.user.id)
  401. $rootScope.isFuwutai = false;//服务台人员和服务台经理才显示右上角呼叫功能
  402. if ($rootScope.user) {
  403. if($rootScope.user.role&&angular.isArray($rootScope.user.role)&&$rootScope.user.role.length){
  404. $rootScope.isFuwutai = $rootScope.user.role.some(function(v){
  405. return v.rolecode == 'call center';
  406. })
  407. }else{
  408. $rootScope.isFuwutai = false;
  409. }
  410. }
  411. if($rootScope.isFuwutai){
  412. localStorage.setItem("isFuwutai", 'true');
  413. }else{
  414. localStorage.removeItem('isFuwutai');
  415. }
  416. // $rootScope.userMenus = JSON.parse(localStorage.getItem("jry_user")).menu;
  417. var allJurisdiction = JSON.parse(localStorage.getItem("jry_user")).menu;
  418. var onlyMenu = [];
  419. // console.log(allJurisdiction);
  420. for (var i = 0; i < allJurisdiction.length; i++) {
  421. if (allJurisdiction[i].event == "1") {
  422. onlyMenu.push(allJurisdiction[i])
  423. }
  424. }
  425. // console.log(onlyMenu);
  426. $rootScope.userMenus = onlyMenu;
  427. var getMenus = function () {
  428. function convertListToTree(data, treeMap) {
  429. var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  430. var root = null; //Initially set our loop to null
  431. var parentNode = null;
  432. //loop over data
  433. for (var i = 0; i < data.length; i++) {
  434. // data[i].id = Number(data[i].id);
  435. var datum = data[i];
  436. //each node will have children, so let's give it a "children" poperty
  437. datum.children = [];
  438. //add an entry for this node to the map so that any future children can
  439. //lookup the parent
  440. idToNodeMap[datum.id] = datum;
  441. //Does this node have a parent?
  442. if (typeof datum.parentid === "undefined" || datum.parentid == null) {
  443. //Doesn't look like it, so this node is the root of the tree
  444. root = datum;
  445. treeMap[datum.id] = root;
  446. } else {
  447. //This node has a parent, so let's look it up using the id
  448. parentNode = idToNodeMap[datum.parentid];
  449. //We don't need this property, so let's delete it.
  450. //delete datum.parentid;
  451. //Let's add the current node as a child of the parent node.
  452. parentNode.children.push(datum);
  453. }
  454. }
  455. return root;
  456. }
  457. function convertParentToChildList(data) {
  458. var treeMap = {};
  459. var list = [];
  460. convertListToTree(data, treeMap);
  461. angular.forEach(treeMap, function (item) {
  462. list.push(item);
  463. });
  464. list = window._.sortBy(list, function (o) {
  465. return o.orders;
  466. });
  467. return list;
  468. }
  469. //if(userMenus.length==0){
  470. var userMenus = [];
  471. var idMapMenu = {};
  472. if ($rootScope.user) {
  473. if ($rootScope.user.menu) {
  474. console.log($rootScope.user.menu);
  475. var allJurisdiction2 = $rootScope.user.menu;
  476. var onlyMenu2 = [];
  477. for (var i = 0; i < allJurisdiction2.length; i++) {
  478. if (allJurisdiction2[i].event == "1") {
  479. onlyMenu2.push(allJurisdiction2[i])
  480. }
  481. }
  482. // userMenus = convertParentToChildList($rootScope.user.menu);
  483. userMenus = convertParentToChildList(onlyMenu2);
  484. }
  485. }
  486. //}
  487. $rootScope.userMenus = userMenus;
  488. if ($rootScope.userMenus.length > 0) {
  489. // getpending();
  490. // setInterval(getpending, 30000);
  491. }
  492. return userMenus;
  493. }
  494. getMenus();
  495. // if (!resp.error || resp.error != 500) {
  496. if (resp.data && resp.data.user && resp.data.user.id) {
  497. // console.log(resp.error);
  498. $rootScope.getpending();
  499. $state.go('app.dashboard');
  500. $rootScope.app.isLoginFixed = false;
  501. // console.log(resp);
  502. // api_wechatfile.getDictionary({ "type": "list", "key": "hjzx_cornet" }).then(function(data) {
  503. // $scope.runNumber = data;
  504. // $scope.phone = $scope.runNumber[0].name;
  505. // $rootScope.phoneChange($scope.phone);
  506. // })
  507. } else {
  508. resp.error = "";
  509. $scope.loginForm.password = "";
  510. SweetAlert.swal("用户名或者密码验证失败,请重试!", "error");
  511. // $rootScope.user=resp.user;
  512. // $rootScope.menu=resp.menu;
  513. };
  514. $rootScope.getExtnDirect();
  515. }
  516. }
  517. }
  518. })
  519. }
  520. })
  521. .catch(function (resp) {
  522. $scope.loginForm.password = "";
  523. // SweetAlert.swal("系统错误,请重试!", "登录错误", "error");
  524. SweetAlert.swal("用户名或者密码验证失败,请重试!", "error");
  525. });
  526. // })
  527. };
  528. if ($scope.isSSo) {
  529. $scope.handleLoginClick();
  530. }
  531. $scope.handleloginEnter = function (e) {
  532. if (e.keyCode == 13) {
  533. $scope.handleLoginClick();
  534. }
  535. };
  536. $scope.viewType = "password";
  537. $scope.isPassword = true;
  538. $scope.toggleView = function () {
  539. $scope.isPassword = !$scope.isPassword;
  540. $scope.viewType = $scope.isPassword ? "password" : "text";
  541. }
  542. $scope.handleSignOutBtnClick = function () {
  543. $auth.signOut()
  544. .then(function (resp) {
  545. // handle success response
  546. })
  547. .catch(function (resp) {
  548. // handle error response
  549. });
  550. };
  551. }
  552. ]);