中化加油站项目
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.

268 lines
8.4 KiB

import { Component, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { NzModalService } from 'ng-zorro-antd/modal';
import { NzMessageService } from 'ng-zorro-antd/message';
import { HttpClient } from '@angular/common/http';
import { AddroleComponent } from './addrole/addrole.component';
import { EditroleComponent } from './editrole/editrole.component';
import { TreeService } from 'src/app/service/tree.service';
import { MenusComponent } from './menus/menus.component';
@Component({
selector: 'app-role',
templateUrl: './role.component.html',
styleUrls: ['./role.component.scss']
})
export class RoleComponent implements OnInit {
constructor(private modal: NzModalService, private viewContainerRef: ViewContainerRef, private message: NzMessageService, private http: HttpClient, private toTree: TreeService) { }
levelList=[
'无',
'销售公司',
'省公司',
'区域',
'油站'
]
ngOnInit(): void {
this.getAllRoles()
this.loadMore()
this.getAllMenus()
}
listOfData: any[] = [];
//获取角色列表
getAllRoles() {
let params = {
SkipCount: '0',
MaxResultCount: '999'
}
this.http.get('/api/services/app/Role/GetAll', {
params: params
}).subscribe((data: any) => {
console.log('角色列表', data.result.items)
let level=JSON.parse(sessionStorage.getItem('userdata')).organization.level
this.listOfData=[]
data.result.items.forEach(ele=>{
if(ele.organizationsLevel>=level||ele.organizationsLevel==0){
this.listOfData.push(ele)
}
})
this.listOfData=[...this.listOfData]
})
}
totalCount
nodes
getAllMenus() {
let params = {
SkipCount: '0',
MaxResultCount: '999'
}
this.http.get('/api/services/app/Menu/GetAll', {
params: params
}).subscribe((data: any) => {
3 years ago
// console.log(666, data)
this.totalCount = data.result.totalCount
data.result.items.forEach(element => {
element.key = element.id
element.title = element.name
element.selectable = false
});
this.nodes = [...this.toTree.toTree(data.result.items)]
})
}
addRole(): void {
const modal = this.modal.create({
nzTitle: '新增角色',
nzContent: AddroleComponent,
nzViewContainerRef: this.viewContainerRef,
nzWidth: 400,
nzComponentParams: {
nodes: this.nodes
},
nzMaskClosable: false,
nzOnOk: async () => {
if (instance.validateForm.valid) {
await new Promise(resolve => {
console.log('表单信息', instance.validateForm)
let body = {
name: instance.validateForm.value.name,
DisplayName: instance.validateForm.value.name,
grantedPermissions: instance.validateForm.value.power || [],
organizationsLevel: instance.validateForm.value.organizationsLevel
}
let body2 = instance.validateForm.value.menus || []
this.http.post('/api/services/app/Role/Create', body).subscribe((data: any) => {
3 years ago
this.http.post('/api/services/app/Role/SetRoleMenus', body2, {
params: {
roleId: data.result.id
}
}).subscribe(data => {
resolve(data)
this.message.create('success', '创建成功!');
this.getAllRoles()
}, err => {
this.message.create('warning', '分配菜单错误!');
3 years ago
})
}, err => {
this.message.create('warning', '创建角色错误!');
})
})
} else {
this.message.create('warning', '请填写完整!');
return false
}
}
});
const instance = modal.getContentComponent();
modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!'));
modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result));
}
edit(item) {
const modal = this.modal.create({
nzTitle: '编辑角色',
nzContent: EditroleComponent,
nzViewContainerRef: this.viewContainerRef,
nzWidth: 400,
nzComponentParams: {
data: item,
optionList: this.optionList,
nodes: this.nodes
},
nzMaskClosable: false,
nzOnOk: async () => {
if (instance.validateForm.valid) {
await new Promise(resolve => {
console.log('表单信息', instance.validateForm)
let body = {
id: item.id,
name: instance.validateForm.value.name,
DisplayName: instance.validateForm.value.name,
grantedPermissions: instance.validateForm.value.power || [],
organizationsLevel: instance.validateForm.value.organizationsLevel
}
let body2 = instance.validateForm.value.menus || []
this.http.put('/api/services/app/Role/Update', body).subscribe((data: any) => {
3 years ago
this.http.post('/api/services/app/Role/SetRoleMenus', body2, {
params: {
roleId: data.result.id
}
}).subscribe(data => {
this.message.create('success', '修改成功!');
this.getAllRoles()
resolve(data)
}, err => {
this.message.create('warning', '分配菜单错误!');
3 years ago
})
}, err => {
this.message.create('warning', '修改角色错误!');
})
})
} else {
this.message.create('warning', '请填写完整!');
return false
}
}
});
const instance = modal.getContentComponent();
modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!'));
// Return a result when closed
modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result));
}
allotMenus(item) {
// console.log(item)
const modal = this.modal.create({
nzTitle: '分配菜单',
nzContent: MenusComponent,
nzViewContainerRef: this.viewContainerRef,
nzWidth: 400,
nzComponentParams: {
data: item,
nodes: this.nodes
},
nzMaskClosable: false,
nzOnOk: async () => {
await new Promise(resolve => {
console.log('表单信息', instance.validateForm)
// let arr = []
// let treeData = instance.nzTreeComponent.getCheckedNodeList()
// console.log('tree', treeData)
// treeData.forEach(element => {
// arr.push(element.key)
// if (element.origin.children && element.origin.children.length != 0) {
// element.origin.children.forEach(ele => {
// arr.push(ele.key)
// })
// }
// if (element.parentNode) {
// arr.push(element.parentNode.key)
// }
// });
let body = instance.validateForm.value.menus
this.http.post('/api/services/app/Role/SetRoleMenus', body, {
params: {
roleId: item.id
}
}).subscribe(data => {
resolve(data)
this.message.create('success', '分配成功!');
this.getAllRoles()
return true
})
})
}
});
const instance = modal.getContentComponent();
// modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!'));
// modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result));
}
optionList = [];
//获取权限列表
loadMore() {
this.http.get('/api/services/app/Role/GetAllPermissions').subscribe((data: any) => {
this.optionList = data.result.items
// this.modal.containerInstance.config.nzOkLoading = false
// console.log('所有权限',data)
})
}
delete(item) {
console.log(item)
this.modal.confirm({
nzTitle: `确定要删除${item.name}这个角色吗?`,
nzOkText: '确定',
3 years ago
nzOkType: 'primary',
nzOnOk: () => {
this.http.delete('/api/services/app/Role/Delete', {
params: {
Id: item.id
}
}).subscribe(data => {
this.message.create('success', '删除成功!');
this.getAllRoles()
})
},
nzCancelText: '取消',
nzOnCancel: () => {
}
});
}
}