loginCtrl.js 32 KB

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