You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
350 lines
11 KiB
350 lines
11 KiB
// 袁野
|
|
// 2019-05-11
|
|
import {Component, OnInit} from '@angular/core';
|
|
import {PlatformLocation} from '@angular/common';
|
|
import {HttpClient} from '@angular/common/http';
|
|
import {NzMessageService, NzModalService, NzUploadFile} from 'ng-zorro-antd';
|
|
import {UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators} from '@angular/forms';
|
|
import {Observable, Observer} from 'rxjs';
|
|
import {ValidatorsService} from '../../../services/validators.service';
|
|
import {LocalStorageService} from '../../../services/local-storage.service';
|
|
import {environment} from '../../../../environments/environment';
|
|
import { ADMIN_INFO_OBJECT } from '../../../services/local-storage.namespace';
|
|
|
|
@Component({
|
|
selector: 'app-system-user',
|
|
templateUrl: './system-user.component.html',
|
|
styleUrls: ['./system-user.component.less']
|
|
})
|
|
export class SystemUserComponent implements OnInit {
|
|
FILE_URL = environment.imageUrl;
|
|
avatarImg = '';
|
|
pageIndex = 1;
|
|
pageSize = 10;
|
|
total = 0;
|
|
requestData = [];
|
|
loading = true;
|
|
isLoadingSearch = false;
|
|
isLoadingDelete = false;
|
|
isVisible = false;
|
|
isVisibleEdit = false;
|
|
isOkLoading = false;
|
|
validateForm: UntypedFormGroup;
|
|
WEB_SERVE_URL = environment.baseUrl;
|
|
title: any = '';
|
|
isSpinning = false;
|
|
id = '';
|
|
selectedValueSearch = '';
|
|
manager = false;
|
|
isAnonymity = false;
|
|
optionList: string[] = [];
|
|
companyList: string[] = [];
|
|
isLoading = false;
|
|
isCompanyoading = false;
|
|
date = null;
|
|
secUser: any = {};
|
|
checkPassword;
|
|
|
|
// tslint:disable-next-line:variable-name
|
|
BTN_systemuser_add;
|
|
// tslint:disable-next-line:variable-name
|
|
BTN_systemuser_edit;
|
|
// tslint:disable-next-line:variable-name
|
|
BTN_systemuser_delete;
|
|
|
|
constructor(
|
|
private location: PlatformLocation, // 路径
|
|
private http: HttpClient, // http请求
|
|
private message: NzMessageService, // 信息提示
|
|
private fb: UntypedFormBuilder, // 表单
|
|
private modalService: NzModalService, // 对话框
|
|
private getData: LocalStorageService, // 请求数据字典查询
|
|
private store: LocalStorageService,
|
|
) {
|
|
}
|
|
|
|
ngOnInit() {
|
|
// tslint:disable-next-line:prefer-for-of
|
|
for (let i = 0; i < this.store.get(ADMIN_INFO_OBJECT)['buttonList'].length; i++) {
|
|
if (this.store.get(ADMIN_INFO_OBJECT)['buttonList'][i].permissionCode === 'BTN_systemuser_add') {
|
|
this.BTN_systemuser_add = 1;
|
|
}
|
|
if (this.store.get(ADMIN_INFO_OBJECT)['buttonList'][i].permissionCode === 'BTN_systemuser_edit') {
|
|
this.BTN_systemuser_edit = 1;
|
|
}
|
|
if (this.store.get(ADMIN_INFO_OBJECT)['buttonList'][i].permissionCode === 'BTN_systemuser_delete') {
|
|
this.BTN_systemuser_delete = 1;
|
|
}
|
|
}
|
|
|
|
// 判断表单
|
|
this.validateForm = this.fb.group({
|
|
organizationId: [null, [Validators.required]],
|
|
checked: [null],
|
|
userName: [null, [Validators.required, ValidatorsService.maxLength(20)]],
|
|
loginName: [null, [Validators.required, ValidatorsService.minLength(3), ValidatorsService.maxLength(20)]],
|
|
password: [null, [Validators.required, ValidatorsService.minLength(6), ValidatorsService.maxLength(40)]],
|
|
telephone: [null],
|
|
roleId: [null, [Validators.required]],
|
|
});
|
|
// 调用请求方法
|
|
this.goRequest();
|
|
// 调用请求政策下拉列表
|
|
this.goRequestpoducetList();
|
|
this.goRequestCompanyList();
|
|
}
|
|
|
|
|
|
confirmationValidator = (control: UntypedFormControl): { [s: string]: boolean } => {
|
|
if (!control.value) {
|
|
return {required: true};
|
|
} else if (control.value !== this.validateForm.controls.password.value) {
|
|
return {confirm: true, error: true};
|
|
}
|
|
return {};
|
|
}
|
|
|
|
// 角色
|
|
goRequestpoducetList() {
|
|
// tslint:disable-next-line:max-line-length
|
|
this.http.get(this.WEB_SERVE_URL + '/secRole/getAllRole?companyId=' + this.store.get(ADMIN_INFO_OBJECT)['bsCompany'].id + '&primaryRole=0&templetType=0').subscribe(data => {
|
|
if (data['return_code'] === '000000') {
|
|
this.optionList = data['return_data'];
|
|
this.isLoading = false;
|
|
} else {
|
|
this.message.create('error', data['return_msg']);
|
|
}
|
|
});
|
|
}
|
|
|
|
// 获取部门列表
|
|
goRequestCompanyList() {
|
|
this.http.get(this.WEB_SERVE_URL + '/bsOrganization/getOrganizationList?companyId=' + this.store.get(ADMIN_INFO_OBJECT)['bsCompany'].id).subscribe(data => {
|
|
if (data['return_code'] === '000000') {
|
|
this.companyList = data['return_data'];
|
|
this.isCompanyoading = false;
|
|
} else {
|
|
this.message.create('error', data['return_msg']);
|
|
}
|
|
});
|
|
}
|
|
|
|
// 查询
|
|
goRequest(reset: boolean = false) {
|
|
this.loading = false;
|
|
if (reset) {
|
|
this.pageIndex = 1;
|
|
}
|
|
if (this.selectedValueSearch == null) {
|
|
this.selectedValueSearch = '';
|
|
}
|
|
this.http.get(this.WEB_SERVE_URL + '/secUser/getUserList?pageNum=' + this.pageIndex + '&pageSize=' + this.pageSize + '&userName=' + this.title + '&organizationId=' + this.selectedValueSearch + '&companyId=' + this.store.get(ADMIN_INFO_OBJECT)['bsCompany'].id).subscribe(data => {
|
|
this.isLoadingSearch = false;
|
|
if (data['return_code'] === '000000') {
|
|
console.log(data);
|
|
this.requestData = data['return_data'].list;
|
|
this.total = data['return_data'].total;
|
|
} else {
|
|
this.message.create('error', data['return_msg']);
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
// 搜索
|
|
goSearch() {
|
|
this.isLoadingSearch = true;
|
|
this.goRequest();
|
|
}
|
|
|
|
// 弹出添加弹框
|
|
goAddShow() {
|
|
this.avatarImg = '';
|
|
this.validateForm.reset();
|
|
this.isVisible = true;
|
|
}
|
|
|
|
// 确定添加政策按钮
|
|
handleOk(value: any): void {
|
|
// tslint:disable-next-line:forin
|
|
for (const i in this.validateForm.controls) {
|
|
this.validateForm.controls[i].markAsDirty();
|
|
this.validateForm.controls[i].updateValueAndValidity();
|
|
}
|
|
|
|
if (this.validateForm.status == null || this.validateForm.status !== 'VALID') {
|
|
this.modalService.info({
|
|
nzTitle: '提示',
|
|
nzContent: '有未填写的必填项',
|
|
});
|
|
return;
|
|
}
|
|
if (value.checked == null) {
|
|
value.checked = false;
|
|
}
|
|
// 定义请求数据
|
|
const params = {
|
|
companyId: this.store.get(ADMIN_INFO_OBJECT)['bsCompany'].id,
|
|
organizationId: value.organizationId,
|
|
manager: value.checked,
|
|
avatar: this.avatarImg,
|
|
userName: value.userName,
|
|
loginName: value.loginName,
|
|
password: value.password,
|
|
telephone: value.telephone,
|
|
roleId: value.roleId,
|
|
};
|
|
this.isOkLoading = true;
|
|
this.http.post(this.WEB_SERVE_URL + '/secUser/addUser', params).subscribe(data => {
|
|
if (data['return_code'] === '000000') {
|
|
this.message.create('success', `新增成功!`);
|
|
this.goRequest();
|
|
this.isVisible = false;
|
|
} else {
|
|
this.message.create('warning', data['return_msg']);
|
|
}
|
|
}, error => {
|
|
this.isOkLoading = false;
|
|
this.message.create('error', `未知错误!`);
|
|
});
|
|
}
|
|
|
|
// 清空
|
|
resetForm(e: MouseEvent): void {
|
|
e.preventDefault();
|
|
this.validateForm.reset();
|
|
// tslint:disable-next-line:forin
|
|
for (const key in this.validateForm.controls) {
|
|
this.validateForm.controls[key].markAsPristine();
|
|
this.validateForm.controls[key].updateValueAndValidity();
|
|
}
|
|
}
|
|
|
|
// 取消按钮
|
|
handleCancel(): void {
|
|
this.isVisible = false;
|
|
}
|
|
|
|
// 修改确定按钮
|
|
handleOkEdit(value: any) {
|
|
// tslint:disable-next-line:forin
|
|
for (const i in this.validateForm.controls) {
|
|
this.validateForm.controls[i].markAsDirty();
|
|
this.validateForm.controls[i].updateValueAndValidity();
|
|
}
|
|
if (this.validateForm.status == null || this.validateForm.status !== 'VALID') {
|
|
this.modalService.info({
|
|
nzTitle: '提示',
|
|
nzContent: '有未填写的必填项',
|
|
});
|
|
return;
|
|
}
|
|
this.isOkLoading = true;
|
|
this.secUser.organizationId = value.organizationId;
|
|
this.secUser.avatar = this.avatarImg;
|
|
this.secUser.userName = value.userName;
|
|
this.secUser.password = value.password;
|
|
this.secUser.telephone = value.telephone;
|
|
this.secUser.roleId = value.roleId;
|
|
|
|
this.http.post(this.WEB_SERVE_URL + '/secUser/editUser', this.secUser).subscribe(data => {
|
|
if (data['return_code'] === '000000') {
|
|
this.message.create('success', `修改成功!`);
|
|
this.goRequest();
|
|
} else {
|
|
this.message.create('warning', data['return_msg']);
|
|
}
|
|
}, error => {
|
|
this.isOkLoading = false;
|
|
this.message.create('error', `未知错误!`);
|
|
});
|
|
}
|
|
|
|
// 修改取消按钮
|
|
handleCancelEdit(): void {
|
|
this.isVisibleEdit = false;
|
|
}
|
|
|
|
// 删除提示
|
|
showDeleteConfirm(id): void {
|
|
this.modalService.confirm({
|
|
nzTitle: '您确定要删除吗?',
|
|
nzOkText: '是',
|
|
nzOkType: 'danger',
|
|
nzOnOk: () => this.goDelete(id),
|
|
nzCancelText: '否',
|
|
});
|
|
}
|
|
|
|
// 查询详情
|
|
goDetails(userId) {
|
|
this.id = userId;
|
|
this.isVisibleEdit = true;
|
|
this.http.get(this.WEB_SERVE_URL + '/secUser/getUserView?userId=' + userId).subscribe(data => {
|
|
if (data['return_code'] === '000000') {
|
|
this.secUser = data['return_data'];
|
|
this.avatarImg = data['return_data']['avatar'];
|
|
|
|
} else {
|
|
this.message.create('error', data['return_msg']);
|
|
}
|
|
});
|
|
}
|
|
|
|
// 删除
|
|
goDelete(id) {
|
|
this.isLoadingDelete = true;
|
|
this.http.get(this.WEB_SERVE_URL + '/secUser/deleteUser?userId=' + id).subscribe(data => {
|
|
this.isLoadingDelete = false;
|
|
if (data['return_code'] === '000000') {
|
|
this.message.create('success', '删除成功');
|
|
// 调用请求方法
|
|
this.goRequest();
|
|
} else {
|
|
this.message.create('error', data['return_msg']);
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 图片上传前的校验
|
|
* @param file
|
|
* @param fileList
|
|
*/
|
|
beforeUpload = (file: NzUploadFile, fileList: NzUploadFile[]) => {
|
|
return new Observable((observer: Observer<boolean>) => {
|
|
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
|
|
if (!isJpgOrPng) {
|
|
this.message.error('图片格式错误! 请上传jpg、png格式的图片');
|
|
observer.complete();
|
|
return;
|
|
}
|
|
const isLt2M = file.size! / 1024 / 1024 < 2;
|
|
if (!isLt2M) {
|
|
this.message.error('图片必须小于2MB!');
|
|
observer.complete();
|
|
return;
|
|
}
|
|
observer.next(isJpgOrPng && isLt2M);
|
|
observer.complete();
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 上传机构LOGO回调
|
|
* @param info
|
|
*/
|
|
avatarHandleChange(info: { file: NzUploadFile }): void {
|
|
switch (info.file.status) {
|
|
case 'uploading':
|
|
break;
|
|
case 'done':
|
|
this.avatarImg = info.file.response.return_data[0];
|
|
break;
|
|
case 'error':
|
|
this.message.error('上传失败');
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|