| | |
| | | private unLoginHandle: Subject<HttpErrorResponse> = new Subject<HttpErrorResponse>(); |
| | | |
| | | constructor(private injector: Injector) { |
| | | this.unLoginHandle.debounceTime(2000).subscribe( (event: HttpErrorResponse) => { |
| | | const canExpireModelShow = !this.isExpireModelShow; |
| | | this.isExpireModelShow = true; |
| | | if (canExpireModelShow && !!event.error) { |
| | | let errorMsg = ''; |
| | | let isExpireModelShow = false; |
| | | this.unLoginHandle.debounceTime(1000).delay(1000).filter( |
| | | () => !isExpireModelShow |
| | | ).subscribe( (event: HttpErrorResponse) => { |
| | | isExpireModelShow = true; |
| | | let errorMsg = ''; |
| | | if (!!event && !!event.error) { |
| | | const erroCode = !!event.error['errorCode'] ? Number.parseInt(event.error['errorCode']) : 0; |
| | | switch (erroCode) { |
| | | case 10: errorMsg = '未登录,请登录'; break; |
| | | case 11: errorMsg = '登录过期,请重新登录'; break; |
| | | case 12: errorMsg = '账号过期,请联系供应商'; break; |
| | | case 0: errorMsg = '服务器处于离线状态'; break; |
| | | case 0: errorMsg = '服务器处于离线状态'; break; |
| | | default: errorMsg = '登录过期,请重新登录'; break; |
| | | } |
| | | // 清空refresh信息,不再刷新 |
| | | this.loginService.clearRefreshToken(); |
| | | this.model.info({ |
| | | title: errorMsg, |
| | | onOk: () => { |
| | | this.isExpireModelShow = false; |
| | | this.goTo('/passport/login'); |
| | | } |
| | | }); |
| | | } |
| | | }else { |
| | | errorMsg = '服务器处于离线状态'; |
| | | } |
| | | // 清空refresh信息,不再刷新 |
| | | this.loginService.clearRefreshToken(); |
| | | this.model.info({ |
| | | maskClosable: false, |
| | | title: errorMsg, |
| | | onOk: () => { |
| | | isExpireModelShow = false; |
| | | this.goTo('/passport/login'); |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | private isExpireModelShow = false; |
| | | get loginService(): LoginService { |
| | | return this.injector.get<LoginService>(LoginService); |
| | | } |