Files
airport-chengdu-web/src/app/pages/pages.component.ts
T

234 lines
7.1 KiB
TypeScript
Raw Normal View History

2018-10-26 11:33:25 +08:00
import { Component, OnInit } from '@angular/core';
2018-10-29 16:27:34 +08:00
import { Router, NavigationEnd, ActivatedRoute } from '@angular/router';
2018-12-15 17:04:16 +08:00
import { BasicDataService } from '../services/basic-data-service';
import { OperateSpinServiceService } from '../services/operate-spin-service.service';
2018-11-27 18:16:25 +08:00
import { HttpClientService } from '../services/http-client.service';
2019-01-23 10:40:58 +08:00
import { NzMessageService } from 'ng-zorro-antd';
2018-11-27 18:16:25 +08:00
import {
FormBuilder,
FormControl,
FormGroup,
Validators
} from '@angular/forms';
2018-11-27 18:16:25 +08:00
import { filter } from 'rxjs/operators';
2018-10-29 16:27:34 +08:00
// import 'rxjs/add/operator/map';
// import 'rxjs/add/operator/mergeMap';
2018-10-26 11:33:25 +08:00
@Component({
selector: 'app-pages',
templateUrl: './pages.component.html',
styleUrls: ['./pages.component.scss']
})
export class PagesComponent implements OnInit {
2018-12-19 13:40:46 +08:00
public user_name: string;
public role_type: string;
2018-11-27 18:16:25 +08:00
public menuClose: boolean = false;
public isSpinning: any = false;
menuData = [];
modalIsVisible = false;
isConfirmLoading = false;
dropdownVisible = false;
validateForm: FormGroup;
2018-11-29 10:40:23 +08:00
2018-10-29 16:27:34 +08:00
constructor(
private router: Router,
private fb: FormBuilder,
2018-11-27 18:16:25 +08:00
private basicDataService: BasicDataService,
2018-12-03 11:28:24 +08:00
private operateSpinService: OperateSpinServiceService,
2018-11-27 18:16:25 +08:00
private httpClient: HttpClientService,
2019-01-23 10:40:58 +08:00
private message: NzMessageService
2018-11-27 18:16:25 +08:00
) {
this.operateSpinService.spinSubject.subscribe(
val => this.isSpinning = val
)
2018-11-16 11:52:45 +08:00
this.basicDataService.loadBasicData();
}
2018-10-26 11:33:25 +08:00
ngOnInit() {
this.httpClient.get('/sysapi/common/menu/list', { sysid: 1 }).subscribe(
res => {
let menuList = res.body.children[0].children;
menuList.forEach(menu => {
this.menuDataHandle(menu);
})
this.menuData = menuList;
}
)
2018-12-24 18:32:32 +08:00
if (sessionStorage.getItem('userInfo')) {
this.user_name = JSON.parse(sessionStorage.getItem('userInfo')).login_name;
this.role_type = JSON.parse(sessionStorage.getItem('userInfo')).real_name;
} else {
let cookieMsg = ['SESSION', 'token']
cookieMsg.forEach(element => {
this.delCookie(element)
})
this.router.navigate(['/login']);
}
2018-10-29 16:27:34 +08:00
let activeRoute = this.router.url;
2018-11-16 11:52:45 +08:00
this.selectActiveMenu(this.menuData, activeRoute);
2018-10-29 16:27:34 +08:00
this.router.events.pipe(
filter(event => event instanceof NavigationEnd),
).subscribe((event) => {
2018-11-16 11:52:45 +08:00
this.selectActiveMenu(this.menuData, event['urlAfterRedirects'])
2018-10-29 16:27:34 +08:00
});
this.validateForm = this.fb.group({
oldPassword: ['', [Validators.required]],
newPassword: ['', [Validators.required]],
confirmPassword: ['', [Validators.required, this.confirmationValidator]],
});
2018-10-29 16:27:34 +08:00
}
confirmationValidator = (control: FormControl): { [s: string]: boolean } => {
// console.log(control.value);
if (!control.value) {
return { required: true };
} else if (control.value !== this.validateForm.controls.newPassword.value) {
return { confirm: true, error: true };
}
return {};
};
updateConfirmValidator(): void {
/** wait for refresh value */
Promise.resolve().then(() => this.validateForm.controls.confirmPassword.updateValueAndValidity());
}
/**
* 修改密码
*/
modifyPassword() {
this.dropdownVisible = false;
this.modalIsVisible = true;
}
modifyHandleOk(): void {
this.isConfirmLoading = true;
this.httpClient.post('/adminapi/xxxxx', this.validateForm.value).subscribe((response) => {
// console.log(response);
this.message.success('修改密码成功!');
this.validateForm.patchValue({
oldPassword: '',
newPassword: '',
confirmPassword: ''
})
for (const i in this.validateForm.controls) {
this.validateForm.controls[i].markAsPristine();
this.validateForm.controls[i].markAsUntouched();
this.validateForm.controls[i].updateValueAndValidity();
}
this.modalIsVisible = false;
this.isConfirmLoading = false;
}, err => {
// console.log(err);
this.message.error('修改密码失败!');
this.validateForm.patchValue({
oldPassword: '',
newPassword: '',
confirmPassword: ''
})
for (const i in this.validateForm.controls) {
this.validateForm.controls[i].markAsPristine();
this.validateForm.controls[i].markAsUntouched();
this.validateForm.controls[i].updateValueAndValidity();
}
this.modalIsVisible = false;
this.isConfirmLoading = false;
})
}
modifyHandleCancel(): void {
this.modalIsVisible = false;
this.validateForm.patchValue({
oldPassword: '',
newPassword: '',
confirmPassword: ''
})
for (const i in this.validateForm.controls) {
this.validateForm.controls[i].markAsPristine();
this.validateForm.controls[i].markAsUntouched();
this.validateForm.controls[i].updateValueAndValidity();
}
}
//退出点击
logoutClick() {
this.dropdownVisible = true;
}
/**
* 展开收起菜单
*/
2018-11-27 18:16:25 +08:00
toggleMenu() {
this.menuClose = !this.menuClose;
}
/**
*
* 菜单数据处理
*/
menuDataHandle(menu) {
menu['name'] = menu.data.menu.title;
menu['icon'] = menu.data.menu.icon;
menu['isExpend'] = false;
menu['isActive'] = false;
delete menu.data;
if (menu.children && menu.children.length > 0) {
menu.children.forEach(menu => {
this.menuDataHandle(menu);
})
}
}
2018-10-29 16:27:34 +08:00
/**
* 判断是否有子节点
* @param item
*/
isLeaf(item: any) {
return !item.children || !item.children.length;
}
2018-11-16 11:52:45 +08:00
selectActiveMenu(menuData, activeRoute) {
2018-10-29 16:27:34 +08:00
menuData.forEach(item => {
if (this.isLeaf(item)) {
if (item.path === activeRoute) {
item.isActive = true;
} else {
item.isActive = false;
}
2018-11-16 11:52:45 +08:00
} else {
this.selectActiveMenu(item.children, activeRoute)
2018-10-29 16:27:34 +08:00
}
})
2018-10-26 11:33:25 +08:00
}
2018-11-27 18:16:25 +08:00
confirmLogout() {
this.httpClient.post('/logout').subscribe(
data => {
2018-12-24 18:32:32 +08:00
let sessionStorageMsg = ['userInfo']
sessionStorageMsg.forEach(element => {
sessionStorage.removeItem(element)
})
2019-01-23 10:40:58 +08:00
this.message.success('退出系统成功!');
2018-11-27 18:16:25 +08:00
this.router.navigate(['/login']);
}
)
}
2018-12-24 18:32:32 +08:00
public delCookie($name) {
let myDate = new Date();
myDate.setTime(-1000);
document.cookie = $name + "=''; expires=" + myDate.toUTCString();
}
2018-10-26 11:33:25 +08:00
}