import { ApplicationRef, Component, ComponentFactoryResolver, Injector, 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 } ) } }