fengxiang
2018-02-27 b4f60bc9c5f2f74eee61c2fc2a639618aaf52c2b
src/app/routes/passport/login/login.component.ts
@@ -1,17 +1,19 @@
import { Authorization } from '@business/entity/token';
import { LoginService } from './../../../business/services/http/login.service';
import { LoginService } from '@business/services/http/login.service';
import { SettingsService } from '@delon/theme';
import { Component, OnDestroy, Inject } from '@angular/core';
import { Component, OnDestroy, Inject, Optional } from '@angular/core';
import { Router } from '@angular/router';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { NzMessageService } from 'ng-zorro-antd';
import { SocialService, SocialOpenType, ITokenService, DA_SERVICE_TOKEN } from '@delon/auth';
import { ReuseTabService } from '@delon/abc';
import { environment } from '@env/environment';
import { CookieService } from 'angular2-cookie/services/cookies.service';
@Component({
    selector: 'passport-login',
    templateUrl: './login.component.html',
    styleUrls: [ './login.component.less' ],
    providers: [ SocialService]
    providers: [ SocialService,CookieService]
})
export class UserLoginComponent implements OnDestroy {
@@ -26,6 +28,7 @@
        public msg: NzMessageService,
        private settingsService: SettingsService,
        private socialService: SocialService,
        @Optional() @Inject(ReuseTabService) private reuseTabService: ReuseTabService,
        private loginService:LoginService,
        @Inject(DA_SERVICE_TOKEN) private tokenService: ITokenService) {
        this.form = fb.group({
@@ -35,6 +38,8 @@
            captcha: [null, [Validators.required]],
            remember: [true]
        });
        // let nowTime = new Date();
        // nowTime.setDate(nowTime.getDate()+1);
    }
    // region: fields
@@ -81,25 +86,32 @@
            this.loginService.validate(this.userName.value,this.password.value).subscribe(
                (res:Authorization) => {
                   if(res.token!=null){
                        // 清空路由复用信息
                       this.reuseTabService.clear();
                       this.tokenService.set({
                           token: res.token,
                           name: this.userName.value,
                           time: +new Date
                       });
                       this.validateError = true;
                       this.validateError = {};
                       this.router.navigate(['/']);
                   }
                },
                (err) => {
                    console.log(err);
                    // console.log(err);
                    if(err instanceof ProgressEvent){
                        const error = <ProgressEvent>err;
                        let xmlHttp = error.target;
                        if(xmlHttp instanceof XMLHttpRequest){
                            const xmlHttpRequest = <XMLHttpRequest> xmlHttp;
                            if(xmlHttpRequest.status == 401){
                                 this.validateError = true;
                            const xmlHttpRequest = <XMLHttpRequest> xmlHttp;
                            console.log(xmlHttpRequest.response);
                            const response = JSON.parse(xmlHttpRequest.response);
                            if(response.status == 401&&response.errorCode==10){
                                 this.validateError["password_incorrect"]=true;
                                 this.loading = false;
                            } else if(response.status == 401&&response.errorCode==12) {
                                this.validateError["account_expired"]=true;
                                this.loading = false;
                            }
                        }
                    }
@@ -107,7 +119,7 @@
           );
    }
    public validateError:boolean;
    public validateError:{[s:string]:boolean} = {};
    // region: social
    open(type: string, openType: SocialOpenType = 'href') {