Browse Source

[修改]导出表格数据问题

tangshan
陈敬瑜 3 years ago
parent
commit
d2cc541be2
  1. 17
      src/app/statistic-analysis/combined-query/combined-query.component.html
  2. 4
      src/app/statistic-analysis/combined-query/combined-query.component.scss
  3. 199
      src/app/statistic-analysis/combined-query/combined-query.component.ts
  4. 2
      src/app/ui/plan-template/plan-template.component.ts

17
src/app/statistic-analysis/combined-query/combined-query.component.html

@ -9,10 +9,13 @@
<div class="queryField ordiv">
<label style="margin-right: 10px;">消防救援站:</label>
<mat-form-field class="example-full-width">
<input readonly matInput placeholder="请选择消防救援站" autocomplete="off" [(ngModel)]="js" name="js"
<input readonly matInput placeholder="请选择消防救援站" autocomplete="off" *ngIf="preparelevels==0" [(ngModel)]="js" name="js"
(focus)="openorganizationbox()">
<input readonly matInput placeholder="请选择消防救援站" autocomplete="off" *ngIf="preparelevels==1" [(ngModel)]="yuanjs" name="js"
(focus)="openorganizationbox()">
</mat-form-field>
<mat-checkbox style="margin-left: 6px;" color="primary" [(ngModel)]="jscheck" name="jscheck">包含下级</mat-checkbox>
<mat-checkbox style="margin-left: 6px;" color="primary" *ngIf="preparelevels==0" [(ngModel)]="jscheck" name="jscheck">包含下级</mat-checkbox>
<mat-checkbox style="margin-left: 6px;" color="primary" *ngIf="preparelevels==1" [(ngModel)]="yuanjscheck" name="jscheck">包含下级</mat-checkbox>
<div class="organizationbox" *ngIf="isorganizationbox">
<div (click)="closediv()" class="closediv">
<mat-icon>clear</mat-icon>
@ -34,15 +37,17 @@
</mat-tree>
</div>
</div>
<div class="queryField">
<div class="queryField" >
<label style="margin-right: 10px;">时间查询:</label>
<mat-form-field class="example-full-width">
<input type="date" matInput name="addtime" autocomplete="off" [(ngModel)]="addtime">
<input type="date" matInput name="addtime" autocomplete="off" [(ngModel)]="dwaddtime" *ngIf="preparelevels==0">
<input type="date" matInput name="addtime" autocomplete="off" [(ngModel)]="yuanaddtime" *ngIf="preparelevels==1">
</mat-form-field>
<!-- <mat-icon aria-hidden="false" style="position: relative;right: 120px;top: 5px;">arrow forward</mat-icon> -->
<span style="margin-left: 15px;">🠊</span>
<mat-form-field class="example-full-width" style="margin-left: 10px;">
<input type="date" matInput name="endtime" autocomplete="off" [(ngModel)]="endtime">
<input type="date" matInput name="endtime" autocomplete="off" [(ngModel)]="dwendtime" *ngIf="preparelevels==0">
<input type="date" matInput name="endtime" autocomplete="off" [(ngModel)]="yuanendtime" *ngIf="preparelevels==1">
</mat-form-field>
</div>
<div class="queryField" *ngIf="preparelevels==1">
@ -101,7 +106,7 @@
</form>
<mat-divider></mat-divider>
<div class="body">
<div class="tablebox">
<div class="tablebox" id="table">
<!-- <table mat-table [dataSource]="tabledataSource" class="mat-elevation-z8" id="table">
<ng-container *ngFor="let item of displayedColumns;let i=index" [matColumnDef]="displayedColumns[i]">
<th mat-header-cell *matHeaderCellDef>{{item}}</th>

4
src/app/statistic-analysis/combined-query/combined-query.component.scss

@ -99,6 +99,8 @@
}
}
.tablebox{
height: 100%;
//margin-bottom: 15px;
table{
width: 100%;
background-color: white;
@ -118,7 +120,7 @@
td {
height: 50px;
line-height: 50px;
//line-height: 50px;
text-align: center;
font-size: 16px;
margin-left: 3px;

199
src/app/statistic-analysis/combined-query/combined-query.component.ts

@ -60,6 +60,7 @@ export class CombinedQueryComponent implements OnInit {
allunittype: any //所有单位类型
tabledataSource=[] //单位表格数据
yuanTable=[]//预案表格数据
excelData:any
url
findTj=0//查询条件
@ -88,15 +89,16 @@ export class CombinedQueryComponent implements OnInit {
selectedIndexChange(e){
this.selected.setValue(e)
this.preparelevels=Number(e)
this.getAllPlanInfo()
}
//获得所有预案或单位信息
getAllPlanInfo() {
async getAllPlanInfo() {
let paramsdata:any={
QueryMode:this.preparelevels,
OrganizationId:this.jsId||'',
HasChildren:this.jscheck||'',
TimeIntervalStart:this.addtime||'',
TimeIntervalEnd:this.endtime||'',
TimeIntervalStart:this.dwaddtime||'',
TimeIntervalEnd:this.dwendtime||'',
BuildingTypeIds:this.unittype||'',
CompanyStatus:this.preparelevel||''
}
@ -104,15 +106,17 @@ export class CombinedQueryComponent implements OnInit {
QueryMode:this.preparelevels,
OrganizationId:this.jsId||'',
HasChildren:this.jscheck||'',
TimeIntervalStart:this.addtime||'',
TimeIntervalEnd:this.endtime||'',
TimeIntervalStart:this.yuanaddtime||'',
TimeIntervalEnd:this.yuanendtime||'',
PlanCategory:this.planCategory||'',
PlanType:this.reservePlanType||''
}
this.http.get("/api/StatisticsAnalysis/ReportTable", { params:this.preparelevels==0? paramsdata:yuandata }).subscribe((data: any) => {
let result = await new Promise((resolve, reject)=>{
this.http.get("/api/StatisticsAnalysis/ReportTable", { params:this.preparelevels==0? paramsdata:yuandata }).subscribe((data: any) => {
console.log(data)
//this.tabledataSource=data
if(this.preparelevels==0){
//单位查询
this.tabledataSource=[]
this.displayedColumns=['组织名称', '总数']
data.forEach((element,i,value) => {
@ -120,7 +124,7 @@ export class CombinedQueryComponent implements OnInit {
if(value[0].companyStatistics.buildingTypesCounts.length>0){
value[i].companyStatistics.buildingTypesCounts.forEach((build,bi,bvalue) => {
if(i==0){
this.displayedColumns.push(value[0].companyStatistics.buildingTypesCounts[bi].buildingTypeName||'111')
this.displayedColumns.push(value[0].companyStatistics.buildingTypesCounts[bi].buildingTypeName)
this.tabledataSource[0].name.push(value[0].companyStatistics.buildingTypesCounts[bi].count)
}else{
this.tabledataSource[i].name.push(bvalue[bi].count)
@ -134,6 +138,7 @@ export class CombinedQueryComponent implements OnInit {
});
}
else if(this.preparelevels==1){
//预案查询
this.yuanColumns=['组织名称', '总数']
this.yuanTable=[{name:[0,0]}]
//console.log(this.planCategory,this.reservePlanType)
@ -158,25 +163,60 @@ export class CombinedQueryComponent implements OnInit {
}else if(this.planCategory.length!=0&&this.reservePlanType.length==0){
this.yuanColumns.push('文本预案','二维预案','三维预案','其他预案')
this.yuanTable[0].name.push(0,0,0,0)
}this.planCategory.forEach(element=>{
if(element==1){
this.yuanColumns.push('Ⅰ级预案')
this.yuanTable[0].name.push(0)
}else if(element==2){
this.yuanColumns.push('Ⅱ级预案')
this.yuanTable[0].name.push(0)
}else if(element==3){
this.yuanColumns.push('Ⅲ级预案')
this.yuanTable[0].name.push(0)
}else if(element==4){
this.yuanColumns.push('Ⅳ级预案')
this.yuanTable[0].name.push(0)
}else if(element==5){
this.yuanColumns.push('Ⅴ级预案')
this.yuanTable[0].name.push(0)
}
})
console.log(this.yuanTable)
this.planCategory.forEach(element=>{
if(element==1){
this.yuanColumns.push('Ⅰ级预案')
this.yuanTable[0].name.push(0)
}else if(element==2){
this.yuanColumns.push('Ⅱ级预案')
this.yuanTable[0].name.push(0)
}else if(element==3){
this.yuanColumns.push('Ⅲ级预案')
this.yuanTable[0].name.push(0)
}else if(element==4){
this.yuanColumns.push('Ⅳ级预案')
this.yuanTable[0].name.push(0)
}else if(element==5){
this.yuanColumns.push('Ⅴ级预案')
this.yuanTable[0].name.push(0)
}
})
}else if(this.planCategory.length!=0&&this.reservePlanType.length!=0){
this.planCategory.forEach(element=>{
if(element==1){
this.yuanColumns.push('Ⅰ级预案')
this.yuanTable[0].name.push(0)
}else if(element==2){
this.yuanColumns.push('Ⅱ级预案')
this.yuanTable[0].name.push(0)
}else if(element==3){
this.yuanColumns.push('Ⅲ级预案')
this.yuanTable[0].name.push(0)
}else if(element==4){
this.yuanColumns.push('Ⅳ级预案')
this.yuanTable[0].name.push(0)
}else if(element==5){
this.yuanColumns.push('Ⅴ级预案')
this.yuanTable[0].name.push(0)
}
})
this.reservePlanType.forEach(element => {
if(element==1){
this.yuanColumns.push('二维预案')
this.yuanTable[0].name.push(0)
}else if(element==2){
this.yuanColumns.push('三维预案')
this.yuanTable[0].name.push(0)
}else if(element==4){
this.yuanColumns.push('其他预案')
this.yuanTable[0].name.push(0)
}else if(element==16){
this.yuanColumns.push('文本预案')
this.yuanTable[0].name.push(0)
}
});
}
//console.log(this.yuanTable)
data.forEach((element,i,value) => {
if(i==0){
this.yuanTable[0].name[0]=value[0].orgName
@ -184,28 +224,6 @@ export class CombinedQueryComponent implements OnInit {
}else{
this.yuanTable.push({name:[value[i].orgName,value[i].planStatistics.totalCount]})
}
/* if(value[0].planStatistics.planCategoryStatistics.planCategories.length>0){
value[i].planStatistics.planCategoryStatistics.planCategories.forEach((build,bi,bvalue) => {
if(i==0){
this.yuanColumns.push(value[0].planStatistics.planCategoryStatistics.planCategories[bi].planCategoryName)
this.yuanTable[0].name.push(value[0].planStatistics.planCategoryStatistics.planCategories[bi].count)
}else{
this.yuanTable[i].name.push(bvalue[bi].count)
}
});
} */
/* if(value[0].planStatistics.planTypeStatistics.length>0){
value[i].planStatistics.planTypeStatistics.forEach((build,bi,bvalue) => {
if(i==0){
this.yuanColumns.push(value[0].planStatistics.planTypeStatistics[bi].planCategoryName)
this.yuanTable[0].name.push(value[0].planStatistics.planCategoryStatistics[bi].count)
}else{
this.yuanTable[i].name.push(bvalue[bi].count)
}
});
} */
});
this.yuanTable.forEach((element,i,value)=>{
if(i>0){
@ -214,14 +232,34 @@ export class CombinedQueryComponent implements OnInit {
}
}
})
this.yuanTable.forEach((element,index,value)=>{
this.yuanTable.forEach((yuan,yuani,yuanval)=>{
this.yuanColumns.forEach((th,thi,thvalu)=>{
data.forEach((element,i,value) => {
//预案级别数据
value[i].planStatistics.planCategoryStatistics.planCategories.forEach((jibie,ji,jval) => {
if(thvalu[thi].indexOf(jval[ji].planCategoryName)!=-1&&yuani==i){
yuanval[yuani].name[thi]=jval[ji].count
}
});
//预案类型数据
value[i].planStatistics.planTypeStatistics.planTypes.forEach((planlx,lxi,lxval) => {
if(thvalu[thi].indexOf(lxval[lxi].planTypeName)!=-1&&yuani==i){
yuanval[yuani].name[thi]=lxval[lxi].count
}
});
});
})
})
}
console.log(this.yuanColumns)
console.log(this.yuanTable)
this.excelData=data
resolve(this.excelData)
}
)
})
}
colorRgb(sColor) {
@ -350,8 +388,10 @@ export class CombinedQueryComponent implements OnInit {
}
)
}
addtime//开始时间
endtime//结束时间
dwaddtime//单位查询开始时间
dwendtime//单位结束时间
yuanaddtime//预案查询开始时间
yuanendtime//预案查询结束时间
integrityScoreMin//完整度最小值
integrityScoreMax//完整度最大值
organizationName: any //当前单位组织机构名称
@ -409,8 +449,14 @@ export class CombinedQueryComponent implements OnInit {
//点击辖区中队树,将选择的辖区中队添加到变量
add(node) {
this.isorganizationbox = false
this.js = node.name
this.jsId = node.id
if(this.preparelevels==0){
this.js = node.name
this.jsId = node.id
}else if(this.preparelevels==1){
this.yuanjs=node.name
this.yuanjsId=node.id
}
}
//关闭辖区中队隐藏框
closeorganizationbox() {
@ -429,15 +475,18 @@ export class CombinedQueryComponent implements OnInit {
let config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
if(this,this.endtime<this.addtime){
if(this.dwendtime<this.dwaddtime||this.yuanaddtime<this.yuanendtime){
this.snackBar.open('开始时间不能早于结束时间', '确定', config);
}
this.getAllPlanInfo();
}
companyName: any //单位名称
js: any //所选组织机构
jsId: any //所选组织机构的id
jscheck: boolean //所选组织机构勾选框
js: any //单位所选组织机构
jsId: any //单位所选组织机构的id
jscheck: boolean //单位所选组织机构勾选框
yuanjs: any //预案所选组织机构
yuanjsId: any //预案所选组织机构的id
yuanjscheck: boolean //预案所选组织机构勾选框
unittype: any //单位类型
reservePlanType=[] //预案类型
preparelevel: any //编制级别
@ -445,18 +494,26 @@ export class CombinedQueryComponent implements OnInit {
planCategory = []//预案级别
//重置
reset() {
this.companyName = ''
this.js = ''
this.jsId = ''
this.jscheck = false
this.unittype = ''
this.reservePlanType = []
this.preparelevel = ''
this.addtime = ''
this.endtime = ''
this.plcheck = false
if(this.preparelevels==0){
this.js = ''
this.jsId = ''
this.jscheck = false
this.unittype = ''
this.preparelevel = ''
this.dwaddtime = ''
this.dwendtime = ''
}else if(this.preparelevels==1){
this.yuanaddtime=''
this.yuanendtime=''
this.yuanjs=''
this.yuanjsId=''
this.yuanjscheck=false
this.reservePlanType = []
this.planCategory = []
}
//重新获取初始化列表
this.planCategory = []
this.getAllPlanInfo();
}
//导出
@ -506,12 +563,14 @@ export class CombinedQueryComponent implements OnInit {
const httpOptions = {
responseType: 'blob' as 'json'
};
this.http.get('/api/StatisticsAnalysis/ExportToExcel',httpOptions).subscribe((data:any) => {
let formData = new FormData()
console.log('000')
this.http.post(`/api/StatisticsAnalysis/Excel?queryMode=${this.preparelevels}`,this.excelData).subscribe((data:any) => {
// // 文件名中有中文 则对文件名进行转码
const link = document.createElement('a');
const blob = new Blob([data], {type: 'application/vnd.ms-excel'});
link.setAttribute('href', window.URL.createObjectURL(blob));
link.setAttribute('download', '报表统计'+'.xls');
link.setAttribute('download', '统计信息'+'.xlsx');
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();

2
src/app/ui/plan-template/plan-template.component.ts

@ -643,7 +643,7 @@ export class PlanTemplateComponent implements OnInit {
planCategory:Number(this.newleftTabledata[this.leftclicki].planCategory),
data:JSON.stringify(this.newleftTabledata[this.leftclicki].data)
}
console.log(`ary`, this.newleftTabledata, `key:`, this.leftclicki)
console.log(`ary`, this.newleftTabledata, `key:`, body)
if(this.newleftTabledata[this.leftclicki].id==undefined){
/* this.http.post("/api/PlanTemplate",this.newleftTabledata[this.leftclicki]).subscribe((data:any)=>{
this.snackBar.open('创建成功!','确定',config);

Loading…
Cancel
Save