import { Component, OnInit } from '@angular/core'; import { HttpClient } from '@angular/common/http' import { Data } from '../../interface' import { Router,ActivatedRoute } from '@angular/router' import {CacheTokenService} from '../../http-interceptors/cache-token.service'//引入服务 import { MatSnackBar,MatSnackBarConfig } from '@angular/material/snack-bar'; import { MatDialog,MatDialogRef } from '@angular/material/dialog'; @Component({ selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.scss'], }) export class LoginComponent implements OnInit { constructor(private http:HttpClient,private router:Router,private route:ActivatedRoute,public token:CacheTokenService,public snackBar: MatSnackBar, public dialog: MatDialog) { } ngOnInit() { this.automaticLogin() } errmsg :string = '' onSubmit(e){ this.http.post('/api/Account/SignIn',{ name: e.name, password: e.password}).subscribe( (data: Data) => { sessionStorage.setItem("level",data.level); sessionStorage.setItem("token",data.token); sessionStorage.setItem("refreshToken",data.refreshToken); sessionStorage.setItem("isDefaultPassword",data.isDefaultPassword);//是否需要修改默认密码 this.http.get('/api/Account/NavMenus').subscribe((data:any)=>{ let isHave = data.find(item=>{ return item.url == "/statisticanalysis/home"}) let isHaveGis = data.find(item=>{ return item.url == "/gis"}) if (isHave) { this.router.navigate([`/statisticanalysis/home`]) this.dialogChangePassword() return } else if(isHaveGis){ this.router.navigate([`/gis`]) this.dialogChangePassword() return } else if(data.length != 0){ this.router.navigate([`/keyUnit`]) this.dialogChangePassword() return data.forEach(item => { if(item.url){ } }); }else{ this.snackBar.open('该用户角色未分配任何菜单', '确定', { duration: 3000 }); } }) if(e.notlogin){ //7天免登录时 localStorage.setItem("isnologin","true") localStorage.setItem("token",data.token) localStorage.setItem("refreshToken",data.refreshToken) } //调用服务中的function刷新token this.token.startUp() }, (err) => {this.errmsg = err} ) } dialogChangePassword(){ if(sessionStorage.getItem('isDefaultPassword') == 'true'){ let dialogRef = this.dialog.open(ChangepasswordComponent2, {width:'348px'}); dialogRef.afterClosed().subscribe((data)=>{ sessionStorage.setItem('isDefaultPassword','false') }); } } //7天免登录自动登录 automaticLogin () { let isNoLogin = localStorage.getItem("isnologin") if (isNoLogin) { //7天免登录时 let token = localStorage.getItem("token"); let refreshToken = localStorage.getItem("refreshToken"); this.http.post('/api/Account/RefreshToken', { token: token, refreshToken: refreshToken}).subscribe((data:any)=>{ sessionStorage.setItem("level",data.level); sessionStorage.setItem("token",data.token); sessionStorage.setItem("refreshToken",data.refreshToken); this.token.startUp() this.router.navigate(['/keyUnit']) this.snackBar.open('已自动登录', '确定', {duration: 3000}); }) } //if } //打开弹窗 open () { this.snackBar.open('请联系管理员', '确定', { duration: 3000 }); } } @Component({ selector: 'app-changepassword', templateUrl: './changePassword.html', styleUrls: ['./changepassword.scss'] }) export class ChangepasswordComponent2 implements OnInit { constructor(private http:HttpClient,public snackBar: MatSnackBar, public dialogRef: MatDialogRef) { } ngOnInit() { } errmsg :string = '' onSubmit(e){ this.http.put( '/api/Account/Password', { newPassword: e.newPassword, password: 'SHya119!@' } ).subscribe(data=> { this.dialogRef.close(data); const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('密码修改成功','确定',config); },(err) => {this.errmsg = err} ) } }