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.
248 lines
7.9 KiB
248 lines
7.9 KiB
import { Component, OnInit, ViewChild, Inject } from '@angular/core'; |
|
import { HttpClient } from '@angular/common/http' |
|
import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree'; |
|
import { MatPaginator } from '@angular/material/paginator'; |
|
import { FlatTreeControl } from '@angular/cdk/tree'; |
|
import { FormControl } from '@angular/forms'; |
|
import { Router,ActivatedRoute } from '@angular/router' |
|
import { PageEvent } from '@angular/material/paginator'; |
|
import { MatDialogRef, MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog'; |
|
import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; |
|
import { TreeService } from '../../http-interceptors/tree.service' |
|
|
|
|
|
export interface Food { |
|
name:string; |
|
value: string; |
|
} |
|
@Component({ |
|
selector: 'app-detachment-level', |
|
templateUrl: './detachment-level.component.html', |
|
styleUrls: ['../plan-audit/plan-audit.component.scss'] |
|
}) |
|
export class DetachmentLevelComponent implements OnInit { |
|
|
|
constructor(private http:HttpClient,private router:Router,private route:ActivatedRoute,private tree: TreeService,public dialog: MatDialog,public snackBar: MatSnackBar) { } |
|
|
|
private _transformer = (node, level: number) => { //初始化tree |
|
return { |
|
expandable: !!node.children && node.children.length > 0, |
|
name: node.name, |
|
level: level, |
|
id: node.id, |
|
parentId: node.parentId, |
|
children: node.children |
|
}; |
|
} |
|
treeControl = new FlatTreeControl<any>(node => node.level, node => node.expandable); |
|
treeFlattener = new MatTreeFlattener(this._transformer, node => node.level, node => node.expandable, node => node.children); |
|
dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener); |
|
myControl = new FormControl(); |
|
hasChild = (_: number, node: any) => node.expandable; |
|
|
|
organizationName:any //当前单位所属辖区中队名称 |
|
allunittype:any //所有单位类型 |
|
planpatterns:Food[] = [ //预案类型 |
|
{name:"卡片预案",value:"8"}, |
|
{name:"二维预案",value:"1" }, |
|
{name:"三维预案",value:"2" }, |
|
{name:"其他预案",value:"4" },] |
|
passstates:Food[]=[ //审核状态 |
|
{name:"审核中",value:"1"}, |
|
{name:"审核通过",value:"2"}, |
|
{name:"审核退回",value:"4"},] |
|
|
|
displayedColumns: string[] = ['unitname','planname', 'addpeople', 'addtime','plantype','auditstate', 'isopen','preparethelevel','operation']; |
|
tabledataSource:any; //所有预案审核信息 |
|
|
|
//分页 |
|
@ViewChild(MatPaginator, {static: true}) |
|
pageEvent: PageEvent; |
|
paginator: MatPaginator; |
|
length:any; //共多少条数据 |
|
pageSize:any; //每页条数 |
|
pageSizeOptions: number[] = [10] //设置每页条数 |
|
PageNumber:number = 1; //第几页 |
|
|
|
//查询筛选条件 |
|
CompanyName:any; //单位名称 |
|
selectOrganizationID:any //选中的辖区中队id |
|
selectOrganizationIName:any //选中的辖区中队name |
|
HasChildrenOrganization:boolean = false; //辖区中队是否包含下级 |
|
BuildingTypeId:any; //选中的单位类型 |
|
PlanType:any; //选中的预案类型 |
|
AuditStatus:any = '1'; //选中的审核状态 |
|
PlanLevel:any='2'; //选中的编制级别 |
|
|
|
//分页事件 |
|
chagePage(e){ |
|
this.PageNumber = e.pageIndex + 1 |
|
let header = { |
|
CompanyName: this.CompanyName || '', |
|
OrganizationId: this.selectOrganizationID || '', |
|
HasChildrenOrganization: String(this.HasChildrenOrganization) || 'false', |
|
BuildingTypeId: this.BuildingTypeId || '', |
|
PlanType: this.PlanType || '', |
|
AuditStatus: this.AuditStatus || '1', |
|
PlanLevel: this.PlanLevel || '2', |
|
PageNumber: String(this.PageNumber), |
|
} |
|
this.http.get('/api/PlanAudits',{params:header}).subscribe((data:any)=>{ |
|
this.length = data.totalCount |
|
this.pageSize = data.pageSize |
|
this.tabledataSource = data.items |
|
}) |
|
} |
|
|
|
//查询 |
|
onSubmit(e){ |
|
this.getAllPlanAudits() |
|
} |
|
|
|
//重置 |
|
reset () { |
|
this.CompanyName = '' |
|
this.selectOrganizationID = '' |
|
this.selectOrganizationIName = '' |
|
this.HasChildrenOrganization = false |
|
this.BuildingTypeId = '' |
|
this.PlanType = '', |
|
this.AuditStatus = '1', |
|
this.PlanLevel = '2', |
|
this.getAllPlanAudits() |
|
} |
|
|
|
//获取当前所有预案审核 |
|
getAllPlanAudits () { |
|
let header = { |
|
CompanyName: this.CompanyName || '', |
|
OrganizationId: this.selectOrganizationID || '', |
|
HasChildrenOrganization: String(this.HasChildrenOrganization) || 'false', |
|
BuildingTypeId: this.BuildingTypeId || '', |
|
PlanType: this.PlanType || '', |
|
AuditStatus: this.AuditStatus || '1', |
|
PlanLevel: this.PlanLevel || '2', |
|
PageNumber: '1', |
|
} |
|
this.http.get('/api/PlanAudits',{params:header}).subscribe((data:any)=>{ |
|
this.length = data.totalCount |
|
this.pageSize = data.pageSize |
|
this.pageEvent.pageIndex = 0 |
|
this.tabledataSource = data.items |
|
}) |
|
} |
|
|
|
ngOnInit(): void { |
|
this.getunitdata(); |
|
this.getOrganizations(); |
|
this.getUnittype(); |
|
this.getAllPlanAudits() |
|
} |
|
|
|
//得到当前账号所属辖区中队名称 |
|
getunitdata(){ |
|
this.http.get("/api/Account/Profiles").subscribe((data:any)=>{ |
|
this.organizationName = data.organizationName |
|
}) |
|
} |
|
|
|
//获得所有辖区中队(处理数据结构) |
|
getOrganizations(){ |
|
let treeData = [] |
|
this.http.get('/api/Organizations').subscribe((data:any)=>{ |
|
data.forEach(element => { |
|
element.children = [] |
|
data.forEach(item => { if (item.parentId == element.id) {element.children.push(item)} }); |
|
}); |
|
if (this.organizationName) { //当前账号有辖区中队时 |
|
data.forEach(element => { |
|
if (element.name===this.organizationName) { |
|
treeData.push(element) |
|
this.dataSource.data = treeData } |
|
}); |
|
} else { //当前账号没有有辖区中队时 |
|
data.forEach(element => { |
|
if (!element.parentId) { |
|
treeData.push(element) |
|
this.dataSource.data = treeData } |
|
}); |
|
} |
|
|
|
}) |
|
} |
|
|
|
//获得所有单位类型 |
|
getUnittype(){ |
|
this.http.get('/api/BuildingTypes/Simple').subscribe(data=>{ |
|
this.allunittype = data |
|
}) |
|
} |
|
|
|
isorganizationbox:boolean = false //辖区中队DIV显隐 |
|
|
|
//打开辖区中队 |
|
openorganizationbox() { |
|
this.isorganizationbox = true |
|
} |
|
|
|
//关闭辖区中队 |
|
closediv(){ |
|
this.isorganizationbox = false |
|
} |
|
|
|
//选择辖区中队时 |
|
add(node) { |
|
this.selectOrganizationID = node.id |
|
this.selectOrganizationIName = node.name |
|
this.isorganizationbox = false |
|
} |
|
|
|
//预案审核 |
|
toExamine (e) { |
|
window.open(`/planAudit/planpass?id=${e.companyId}&companyName=${e.companyName}&auditPlanId=${e.id}&auditStatus=${e.auditStatus}&planType=1`); |
|
} |
|
|
|
//预案公开 |
|
openReserve (e) { |
|
this.http.put(`/api/PlanAudits/${e.id}/Public`,[]).subscribe(data=>{ |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = 'top'; |
|
config.duration = 3000 |
|
this.snackBar.open('预案公开成功','确定',config); |
|
this.renew() |
|
}) |
|
} |
|
|
|
//预案取消公开 |
|
closeReserve (e) { |
|
this.http.put(`/api/PlanAudits/${e.id}/Unpublic`,[]).subscribe(data=>{ |
|
const config = new MatSnackBarConfig(); |
|
config.verticalPosition = 'top'; |
|
config.duration = 3000 |
|
this.snackBar.open('预案已取消公开','确定',config); |
|
this.renew() |
|
}) |
|
} |
|
|
|
//按查询条件及分页 更新当前页面 |
|
renew () { |
|
let header = { |
|
CompanyName: this.CompanyName || '', |
|
OrganizationId: this.selectOrganizationID || '', |
|
HasChildrenOrganization: String(this.HasChildrenOrganization) || 'false', |
|
BuildingTypeId: this.BuildingTypeId || '', |
|
PlanType: this.PlanType || '', |
|
AuditStatus: this.AuditStatus || '1', |
|
PlanLevel: this.PlanLevel || '2', |
|
PageNumber: String(this.PageNumber), |
|
} |
|
this.http.get('/api/PlanAudits',{params:header}).subscribe((data:any)=>{ |
|
this.length = data.totalCount |
|
this.pageSize = data.pageSize |
|
this.tabledataSource = data.items |
|
}) |
|
} |
|
|
|
|
|
|
|
}
|
|
|