Browse Source

[完善]完善接口内容

非煤矿山灾害智能感知和预警系统
邵佳豪 3 years ago
parent
commit
e3d7a304e5
  1. 2
      src/app/home/home-routing.module.ts
  2. 167
      src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.html
  3. 53
      src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.scss
  4. 237
      src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.ts
  5. 53
      src/app/home/task/da-oneself-plan/da-oneself-plan.component.html
  6. 101
      src/app/home/task/da-oneself-plan/da-oneself-plan.component.ts
  7. 1
      src/app/home/task/station-task-apply/station-task-apply.component.ts
  8. 2
      src/app/home/task/station-weekly-plan/create-task/create-task.component.html
  9. 13
      src/app/home/task/station-weekly-plan/station-weekly-plan.component.html
  10. 100
      src/app/home/task/station-weekly-plan/station-weekly-plan.component.ts
  11. 71
      src/app/home/task/zhi-indicators/zhi-indicators.component.html
  12. 56
      src/app/home/task/zhi-indicators/zhi-indicators.component.ts
  13. 3
      src/app/http-interceptors/base-interceptor.ts
  14. 6
      src/styles.scss

2
src/app/home/home-routing.module.ts

@ -42,7 +42,7 @@ const routes: Routes = [
},
{
path: 'audit',
component: ZhiAuditComponent,
component: ZhiAuditComponent
},
{
path: 'monthlytaskoverview',

167
src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.html

@ -32,14 +32,15 @@
style="vertical-align: text-top;cursor: pointer;" nz-icon nzType="right-circle"
nzTheme="outline"></i>
</p>
<p style="font-weight: 900;font-size: 36px;text-align: left;">5/9</p>
<p style="font-weight: 900;font-size: 36px;text-align: left;">
{{item.passed}}/{{item.data.length}}</p>
</div>
<div class="jindu">
<p>
<span>完成率</span>
<span>60%</span>
<span>{{item.percentage}}%</span>
</p>
<nz-progress style="width: 100%;" [nzPercent]="75" nzStrokeColor="#42B983"
<nz-progress style="width: 100%;" [nzPercent]="item.percentage" nzStrokeColor="#42B983"
[nzShowInfo]="false"></nz-progress>
</div>
</div>
@ -51,13 +52,12 @@
nzTheme="outline"></i>返回</span>
</p>
<div class="itemtwocontent">
<div class="itemtwocontentitem">
<div class="itemtwocontentitem" *ngFor="let i of item.data">
<p class="itemtwocontentitemp1">
<span class="itemtwocontentitemp1name">济南历下森豪室内娱乐场</span>
<span class="itemtwocontentitemp1name">{{i.company.companyName}}</span>
</p>
<p>
<span class="green" style="margin-right: 12px;">已分配</span>
<span class="green">已检查</span>
<span class="green" style="margin-right: 12px;">{{i.approvalStatus}}</span>
</p>
</div>
</div>
@ -81,7 +81,14 @@
<div class="taskauditbox" *ngFor="let item of taskData">
<div class="header">
<span>{{item.name}}</span>
<div>
<span style="margin-right: 18px;">{{item.name}}</span>
<span>
已审批: <span class="green"> {{item.finished}}/{{item.list.length}}</span>
</span>
</div>
<span (click)="expand(item)" class="expand blue">
{{item.isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="item.isExpand ? 'down' : 'up'" nzTheme="outline"></i>
@ -89,39 +96,38 @@
</div>
<div class="content" *ngIf="item.isExpand">
<div *ngFor="let i of item.list" class="card greencard"
[ngClass]="{'redcard': i.approvalStatus == 'reject'}">
[ngClass]="{'redcard': i.approvalStatus == '驳回'}">
<div class="unitname">
<img src="../../../../assets/images/icon/unit.png" alt="">
<span>{{i.company.companyName}}</span>
</div>
<div class="info">
<div >
<span>
<img src="../../../../assets/images/icon/main.png" alt="">
{{i.mainSupervisor ? i.mainSupervisor.name : '未分配'}}
<span class="assistant" nz-tooltip [nzTooltipTitle]="titleTemplate">
<span *ngFor="let o of i.supervisors">
<img *ngIf="o.posts && o.posts[0] == '主查人员'"
src="../../../../assets/images/icon/main.png" alt="">
<img *ngIf="o.posts && o.posts[0] == '协查人员'"
src="../../../../assets/images/icon/assist.png" alt="">
{{o.name}}
</span>
<span>
<img src="../../../../assets/images/icon/assist.png" alt="">
{{i.assitantSupervisor ? i.assitantSupervisor.name : '未分配'}}
</span>
<ng-template #titleTemplate let-thing>
<span style="margin-right: 6px;" *ngFor="let o of i.supervisors">
<img *ngIf="o.posts && o.posts[0] == '主查人员'"
src="../../../../assets/images/icon/main.png" alt="">
<img *ngIf="o.posts && o.posts[0] == '协查人员'"
src="../../../../assets/images/icon/assist.png" alt="">
{{o.name}}
</span>
<span class="blue" (click)="allot(i)">分配</span>
<span>|</span>
<span>申请人: {{i.organization.name}}</span>
<!-- <span class="blue">修改</span> -->
</div>
</ng-template>
<!-- <span class="blue" (click)="allot(i)">分配</span> -->
<span>|</span>
<span>申请人: {{i.organization.name}}</span>
</div>
<div class="img">
<img *ngIf="i.approvalStatus == '驳回'" src="../../../../assets/images/icon/reject.png">
<img *ngIf="i.approvalStatus == '通过'" src="../../../../assets/images/icon/agree.png">
</div>
<!-- <div class="btn">
<button [ngClass]="{'forbidbtn': i.approvalStatus}" [disabled]="i.approvalStatus"
nz-button (click)="agree(i)">同意</button>
<button [ngClass]="{'forbidbtn': i.approvalStatus}" [disabled]="i.approvalStatus"
nz-button (click)="reject(i)">驳回</button>
</div> -->
<div class="img">
<img class="auditimg" *ngIf="i.approvalStatus == '驳回'"
src="../../../../assets/images/icon/reject.png" alt="">
<img *ngIf="i.approvalStatus == '通过'" class="auditimg"
src="../../../../assets/images/icon/agree.png" alt="">
</div>
</div>
</div>
@ -164,20 +170,23 @@
</div>
<div class="percentage">
<nz-progress [nzWidth]="80" nz-tooltip nzType="circle"
[nzPercent]="70" nzStrokeLinecap="square" [nzShowInfo]="false" [nzSuccessPercent]="40"></nz-progress>
<nz-progress [nzWidth]="80" nz-tooltip nzType="circle" [nzPercent]="70" nzStrokeLinecap="square"
[nzShowInfo]="false" [nzSuccessPercent]="40"></nz-progress>
<div class="typebox">
<div class="type">
<div class="tips" style="background: #42B983;"></div>
<div style="font-size: 13px;"><span style="margin-right: 5px;">上级指派</span><span>46%</span></div>
<div class="tips" style="background: #42B983;"></div>
<div style="font-size: 13px;"><span
style="margin-right: 5px;">上级指派</span><span>46%</span></div>
</div>
<div class="type">
<div class="tips" style="background: #1890FF;"></div>
<div style="font-size: 13px;"><span style="margin-right: 5px;">自主任务</span><span>46%</span></div>
<div style="font-size: 13px;"><span
style="margin-right: 5px;">自主任务</span><span>46%</span></div>
</div>
<div class="type">
<div class="tips" style="background: #fff;"></div>
<div style="font-size: 13px;"><span style="margin-right: 5px;">申领任务</span><span>46%</span></div>
<div style="font-size: 13px;"><span
style="margin-right: 5px;">申领任务</span><span>46%</span></div>
</div>
</div>
</div>
@ -185,7 +194,7 @@
<div class="deploycontentitem">
<div class="aaa">
<div class="title">
任务总数
消防救援任务总数
</div>
<div class="details">
<div class="detailsname">
@ -195,28 +204,31 @@
<span class="progresssquare">
<!-- <span>完成率</span> -->
<nz-progress nzStrokeLinecap="square" style="width: 70%;margin-bottom: 3px;"
[nzPercent]="75" nzStrokeColor="#42B983" [nzShowInfo]="false" [nzStrokeWidth]="18">
[nzPercent]="75" nzStrokeColor="#42B983" [nzShowInfo]="false" [nzStrokeWidth]="18">
</nz-progress>
<span>75%</span>
</span>
</div>
</div>
<div class="percentage">
<nz-progress [nzWidth]="80" nz-tooltip nzType="circle"
[nzPercent]="70" nzStrokeColor="#42B983" nzStrokeLinecap="square" [nzShowInfo]="false" ></nz-progress>
<nz-progress [nzWidth]="80" nz-tooltip nzType="circle" [nzPercent]="70" nzStrokeColor="#42B983"
nzStrokeLinecap="square" [nzShowInfo]="false"></nz-progress>
<div class="typebox">
<div class="type">
<div class="tips" style="background: #42B983;"></div>
<div style="font-size: 13px;"><span style="margin-right: 5px;">自主任务</span><span>46%</span></div>
<div class="tips" style="background: #42B983;"></div>
<div style="font-size: 13px;"><span
style="margin-right: 5px;">上级指派</span><span>46%</span></div>
</div>
<div class="type">
<div class="tips" style="background: #1890FF;"></div>
<div style="font-size: 13px;"><span
style="margin-right: 5px;">自主任务</span><span>46%</span></div>
</div>
<div class="type">
<div class="tips" style="background: #fff;"></div>
<div style="font-size: 13px;"><span style="margin-right: 5px;">申领任务</span><span>46%</span></div>
<div style="font-size: 13px;"><span
style="margin-right: 5px;">申领任务</span><span>46%</span></div>
</div>
</div>
</div>
@ -224,7 +236,7 @@
<div class="deploycontentitem">
<div class="aaa">
<div class="title">
任务总数
检查员任务总数
</div>
<div class="details">
<div class="detailsname">
@ -238,26 +250,29 @@
</nz-progress>
<span>75%</span>
</span>
</div>
</div>
<div class="percentage">
<nz-progress [nzWidth]="80" nz-tooltip nzType="circle"
[nzPercent]="50" nzStrokeColor="#E6D91D" [nzShowInfo]="false" ></nz-progress>
<div class="typebox">
<div class="type">
<div class="tips" style="background: #E6D91D;"></div>
<div style="font-size: 13px;"><span style="margin-right: 5px;">自主任务</span><span>46%</span></div>
</div>
<div class="type">
<div class="tips" style="background: #fff;"></div>
<div style="font-size: 13px;"><span style="margin-right: 5px;">申领任务</span><span>46%</span></div>
</div>
<nz-progress [nzWidth]="80" nz-tooltip nzType="circle" [nzPercent]="50" nzStrokeColor="#E6D91D"
[nzShowInfo]="false"></nz-progress>
<div class="typebox">
<div class="type">
<div class="tips" style="background: #42B983;"></div>
<div style="font-size: 13px;"><span
style="margin-right: 5px;">上级指派</span><span>46%</span></div>
</div>
<div class="type">
<div class="tips" style="background: #1890FF;"></div>
<div style="font-size: 13px;"><span
style="margin-right: 5px;">自主任务</span><span>46%</span></div>
</div>
<div class="type">
<div class="tips" style="background: #fff;"></div>
<div style="font-size: 13px;"><span
style="margin-right: 5px;">申领任务</span><span>46%</span></div>
</div>
</div>
</div>
</div>
</div>
@ -276,14 +291,18 @@
<img src="../../../../assets//images/icon/station.png" alt="">
{{element.name}}
</span>
<span style="width: 8%;">单位总数: 7/8</span>
<div style="width: 66%;" class="progress progresssquare">
<span style="width: 8%;">
<span>
单位总数:{{element.awaitInspect}}/{{element.allUnitsNum}}
</span>
</span>
<div style="width: 72%;" class="progress progresssquare">
<span>完成进度</span>
<nz-progress nzStrokeLinecap="square" nzStrokeWidth="16" nzStrokeColor="#42B983"
[nzPercent]="30"></nz-progress>
<nz-progress nzStrokeLinecap="square" [nzStrokeWidth]="16" nzStrokeColor="#42B983"
[nzPercent]="element.percentage"></nz-progress>
</div>
<!-- <button nz-button nzType="primary">任务下派</button> -->
<span (click)="expandcarditem(element)" class="expand blue">
<span class="expand blue" (click)="expandcarditem(element)">
{{element.isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="element.isExpand ? 'down' : 'up'" nzTheme="outline"></i>
</span>
@ -298,12 +317,12 @@
<div class="num">
<div class="round" style="background: #2C4DC0;"></div>
<span class="word">已分配</span>
<span class="boldspan">0</span>
<span class="boldspan">{{item.inspected}}</span>
</div>
<div class="num">
<div class="round" style="background: #42B983;"></div>
<span class="word">已完成</span>
<span class="boldspan">0</span>
<span class="boldspan">{{item.finished}}</span>
</div>
</div>
<div class="maincontentitemright">
@ -366,7 +385,7 @@
<div class="flexcol">
<span>
未发现违法违规情况
{{i.inspectionResult}}
</span>
<span>
检查结果

53
src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.scss

@ -261,22 +261,19 @@
border-radius: 4px 4px 4px 4px;
opacity: 1;
display: flex;
margin-bottom: 18px;
align-items: center;
box-sizing: border-box;
padding: 0 20px;
position: relative;
margin-bottom: 18px;
div {
display: flex;
align-items: center;
img {
margin-top: -3px;
}
}
.unitname {
width: 30%;
flex: 1;
}
.info {
@ -285,33 +282,38 @@
justify-content: center;
align-items: center;
span {
margin-right: 20px;
}
}
.assistant {
width: 50%;
.btn {
flex: 1;
span {
color: #303133;
margin-right: 6px;
}
img {
width: 16px;
height: 16px;
vertical-align: text-bottom;
}
button:nth-child(1) {
background: #42B983;
color: white;
display: inline-block;
text-align: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
button:nth-child(2) {
background: #FF0000;
color: white;
margin-left: 20px;
span {
margin-right: 20px;
}
}
.img {
width: 30%;
flex: 1;
.auditimg {
position: absolute;
right: 18%;
top: 9%;
img {
margin-left: 40%;
}
}
@ -329,9 +331,8 @@
}
}
.taskauditbox:nth-child(2) {
.taskauditbox:nth-child(3) {
margin-bottom: 0px;
}
}

237
src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.ts

@ -1,5 +1,5 @@
import { HttpClient } from '@angular/common/http';
import { Component, OnInit, ViewContainerRef } from '@angular/core';
import { Component, NgZone, OnInit, ViewContainerRef } from '@angular/core';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import { AllotPersonComponent } from '../da-subordinate-audit/allot-person/allot-person.component';
@ -10,19 +10,23 @@ import { AllotPersonComponent } from '../da-subordinate-audit/allot-person/allot
})
export class DaMonthlyTaskOverviewComponent implements OnInit {
constructor(private http: HttpClient, private modal: NzModalService, private viewContainerRef: ViewContainerRef, private message: NzMessageService) { }
constructor(private ngZone: NgZone, private http: HttpClient, private modal: NzModalService, private viewContainerRef: ViewContainerRef, private message: NzMessageService) { }
selectedMonth
selectedYear = 2022
selectedTime
selectMonth(item) {
this.selectedMonth = item.id
this.getHigherTasks()
this.getTaskList()
this.getAllStation()
}
selectYear(e) {
this.selectedYear = e
console.log('年', e)
this.getHigherTasks()
this.getTaskList()
this.getAllStation()
}
months = [
{ id: 1, name: '1月', isable: true },
@ -39,47 +43,123 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
{ id: 12, name: '12月', isable: true }
]
//下级任务申请打开关闭
istaskauditExpanded = true
istaskauditexpand() {
this.istaskauditExpanded = !this.istaskauditExpanded
OrganizationId
ngOnInit(): void {
this.OrganizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId
this.selectedMonth = new Date().getMonth() + 1
//上级任务指标
this.getHigherTasks()
// 下级任务申请
this.getTaskList()
this.getSupervisor('main')
this.getSupervisor('assisted')
//本级部署
this.getAllStation()
}
//本级部署打开关闭
isdeployboxExpanded = true
isdeployboxexpand() {
this.isdeployboxExpanded = !this.isdeployboxExpanded
//上级任务指标
cardData = [
{ name: '双随机', isDetails: false, isLoading: false, background: '#1D9DFF', icon: 'suiji.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '行政许可', isDetails: false, isLoading: false, background: '#42B983', icon: 'xuke.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '熟悉演练', isDetails: false, isLoading: false, background: '#9D80FF', icon: 'yanlian.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '消防宣传', isDetails: false, isLoading: false, background: '#FF5D2A', icon: 'xuanchuan.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '投诉举报', isDetails: false, isLoading: false, background: '#5087FF', icon: 'tousu.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '火灾调查', isDetails: false, isLoading: false, background: '#FF404D', icon: 'huozai.png', passed: 0, inspected: 0, percentage: 0, data: [] }
]
getHigherTasks() {
this.cardData.forEach((item, key) => {
item.data = []
item.passed = 0
item.inspected = 0
});
let selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01'
let params = {
Month: selectedTime,
OrganizationId: this.OrganizationId,
PageNumber: 1,
CreationTypes: ['上级指派'],
PageSize: 9999
}
this.http.get('/api/PlanTasks', {
params: params
}).subscribe((data: any) => {
data.items.forEach(element => {
this.cardData.forEach((item, key) => {
element.taskType == item.name ? this.cardData[key].data.push(element) : null
});
});
this.cardData.forEach(element => {
element.data.forEach(item => {
item.approvalStatus == '通过' ? element.passed += 1 : null
item.approvalStatus == '已检查 ' ? element.inspected += 1 : null
})
})
this.cardData.forEach(element => {
element.percentage = Math.round(element.inspected / element.data.length) * 100 || 0
})
this.cardData = [...this.cardData]
})
}
PageNumber = 1
PageSize = 9999
openDetails(data, type) {
this.ngZone.run(() => {
//这里写需要立即渲染的代码
data.isDetails = type
});
}
//下级任务申请打开关闭
expand(data) {
this.ngZone.run(() => {
//这里写需要立即渲染的代码
data.isExpand = !data.isExpand
});
}
istaskauditExpanded = true
istaskauditexpand() {
this.istaskauditExpanded = !this.istaskauditExpanded
}
taskData = [
{ id: 0, name: '熟悉演练任务', finished: 0, totalCount: 0, list: [], isExpand: true },
{ id: 1, name: '联络指导任务', finished: 0, totalCount: 0, list: [], isExpand: true }
{ id: 1, name: '联络指导任务', finished: 0, totalCount: 0, list: [], isExpand: true },
{ id: 2, name: '双随机任务', finished: 0, totalCount: 0, list: [], isExpand: true }
]
isloading = false
getTaskList() {
this.isloading = true
this.taskData = [
{ id: 0, name: '熟悉演练任务', finished: 0, totalCount: 0, list: [], isExpand: true },
{ id: 1, name: '联络指导任务', finished: 0, totalCount: 0, list: [], isExpand: true }
{ id: 1, name: '联络指导任务', finished: 0, totalCount: 0, list: [], isExpand: true },
{ id: 2, name: '双随机任务', finished: 0, totalCount: 0, list: [], isExpand: true }
]
let selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01'
console.log('查询时间', selectedTime)
let params = {
Month: selectedTime,
OrganizationId: this.OrganizationId,
PageNumber: this.PageNumber,
PageSize: this.PageSize
CreationTypes: ['申领任务'],
PageNumber: 1,
PageSize: 9999
}
this.http.get('/api/PlanTasks', {
params: params
}).subscribe((data: any) => {
let arr1 = []
let arr2 = []
let arr3 = []
data.items.forEach(element => {
if (element.taskName == '熟悉演练') {
arr1.push(element)
@ -87,27 +167,33 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
if (element.taskName == '联络指导') {
arr2.push(element)
}
if (element.taskName == '双随机') {
arr3.push(element)
}
});
arr1.forEach(item => {
if (!!item.approvalStatus) {
if (item.approvalStatus == '通过') {
this.taskData[0].finished += 1
}
});
arr2.forEach(item => {
if (!!item.approvalStatus) {
if (item.approvalStatus == '通过') {
this.taskData[1].finished += 1
}
});
this.taskData[0].totalCount = arr1.length
arr3.forEach(item => {
if (item.approvalStatus == '通过') {
this.taskData[2].finished += 1
}
});
this.taskData[0].list = [...arr1]
this.taskData[1].totalCount = arr2.length
this.taskData[1].list = [...arr2]
this.isloading = false
this.taskData[2].list = [...arr3]
console.log('下级任务申请', this.taskData)
})
}
assitantsupervisorList
mainsupervisorList
getSupervisor(type) {
@ -125,7 +211,6 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
}
})
}
allot(item) {
console.log(item)
if (this.mainsupervisorList.length == 0 || this.assitantsupervisorList.length == 0) {
@ -180,43 +265,15 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
expand(data) {
data.isExpand = !data.isExpand
//本级部署打开关闭
isdeployboxExpanded = true
isdeployboxexpand() {
this.isdeployboxExpanded = !this.isdeployboxExpanded
}
formatOne = (percent: number): string => `${percent}%\n完成率`;
cardData = [
{ name: '双随机', isDetails: false, background: '#1D9DFF', icon: 'suiji.png' },
{ name: '熟悉演练', isDetails: false, background: '#9D80FF', icon: 'yanlian.png' },
{ name: '投诉举报', isDetails: false, background: '#5087FF', icon: 'tousu.png' },
{ name: '行政许可', isDetails: false, background: '#42B983', icon: 'xuke.png' },
{ name: '消防宣传', isDetails: false, background: '#FF5D2A', icon: 'xuanchuan.png' },
{ name: '火灾调查', isDetails: false, background: '#FF404D', icon: 'huozai.png' }
]
openDetails(data, type) {
data.isDetails = type
}
OrganizationId
ngOnInit(): void {
this.OrganizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId
this.selectedMonth = new Date().getMonth() + 1
this.getTaskList()
//获得主协调查人员
this.getSupervisor('main')
this.getSupervisor('assisted')
this.getAllStation()
}
//获得辖区下所有救援站
stationData = []
getAllStation() {
@ -227,23 +284,26 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
this.http.get('/api/Organizations', {
params: params
}).subscribe((data: any) => {
data.items = data.items.filter(element => {
return element.level == 'squadron'
});
data.items.forEach(element => {
element.isExpand = false
element.isLoading = false
});
this.stationData = data.items
this.ngZone.run(() => {
data.items = data.items.filter(element => {
return element.level == 'squadron'
});
data.items.forEach(element => {
element.isExpand = false
element.isLoading = false
});
this.stationData = data.items
this.stationData[0].isExpand = true
this.stationData.forEach(item => {
this.getTaskListOfStation(item)
})
})
})
}
expandcarditem(item) {
item.isExpand = !item.isExpand
console.log(item)
if (item.isExpand) {
this.getTaskListOfStation(item)
}
}
//获得消防站下的所有任务
@ -252,9 +312,9 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
let params = {
Month: selectedTime,
CompanyOrganizationId: item.id,
PageNumber: this.PageNumber,
PageNumber: 1,
approvalStatuses: '通过',
PageSize: this.PageSize
PageSize: 9999
}
item.isLoading = true
this.http.get('/api/PlanTasks', {
@ -263,13 +323,13 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
next: (data: any) => {
item.isLoading = false
let listData = [
{ name: '双随机', background: '#1D9DFF', icon: 'suiji.png', scale: '0/0', data: [] },
{ name: '行政许可', background: '#42B983', icon: 'xuke.png', scale: '0/0', data: [] },
{ name: '熟悉演练', background: '#9D80FF', icon: 'yanlian.png', scale: '0/0', data: [] },
{ name: '联络指导', background: '#5483EA', icon: 'zhidao.png', scale: '0/0', data: [] },
{ name: '消防宣传', background: '#FF5D2A', icon: 'xuanchuan.png', scale: '0/0', data: [] },
{ name: '投诉举报', background: '#5087FF', icon: 'tousu.png', scale: '0/0', data: [] },
{ name: '火灾调查', background: '#FF404D', icon: 'huozai.png', scale: '0/0', data: [] }
{ name: '双随机', background: '#1D9DFF', icon: 'suiji.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '行政许可', background: '#42B983', icon: 'xuke.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '熟悉演练', background: '#9D80FF', icon: 'yanlian.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '联络指导', background: '#5483EA', icon: 'zhidao.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '消防宣传', background: '#FF5D2A', icon: 'xuanchuan.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '投诉举报', background: '#5087FF', icon: 'tousu.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '火灾调查', background: '#FF404D', icon: 'huozai.png', scale: '0/0', data: [], inspected: 0, finished: 0 }
]
data.items.forEach(element => {
listData.forEach((item, key) => {
@ -284,7 +344,22 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
}
}
item.data = listData
// console.log('点击的救援站通过数据', item)
console.log('当前登录用户所有通过的任务', item);
item.allUnitsNum = 0
item.awaitInspect = 0
item.inspected = 0
item.finished = 0
item.data.forEach(element => {
item.allUnitsNum += element.data.length
element.data.forEach(i => {
i.approvalStatus == '待检查' ? item.awaitInspect += 1 : null
i.approvalStatus == '已检查' ? item.inspected += 1 : null
i.approvalStatus == '待检查' ? element.inspected += 1 : null
i.approvalStatus == '已检查' ? element.finished += 1 : null
});
});
item.percentage = Math.round(item.inspected / item.allUnitsNum) * 100
},
error: (err) => {
this.message.create('warning', '获取数据失败');

53
src/app/home/task/da-oneself-plan/da-oneself-plan.component.html

@ -12,6 +12,7 @@
</div>
<div style="flex: 1;overflow-y: auto;">
<!-- 上部仪表盘 -->
<!-- 上部仪表盘 -->
<div class="instrumentpanelbox">
<div class="instrumentpanelheader">
@ -24,6 +25,9 @@
<div class="instrumentpanel">
<div class="instrumentpanelitem" *ngFor="let item of cardData"
[ngClass]="{'instrumentpanelitemopen': isExpand,'instrumentpanelitemclose': !isExpand}">
<div class="spin" *ngIf="item.isLoading">
<nz-spin nzSimple></nz-spin>
</div>
<div class="itemone" *ngIf="!item.isDetails">
<div class="instrumentpanelitemleft">
<div class="panelheadername" [style]="'background:'+ item.background">
@ -37,12 +41,13 @@
style="vertical-align: text-top;cursor: pointer;" nz-icon nzType="right-circle"
nzTheme="outline"></i>
</p>
<p style="font-weight: 900;font-size: 36px;text-align: left;">5/9</p>
<p style="font-weight: 900;font-size: 36px;text-align: left;">
{{item.passed}}/{{item.data.length}}</p>
</div>
<button *ngIf="isExpand" nz-button class="btn">快速派发</button>
<button *ngIf="isExpand" nz-button class="btn">一键通过</button>
</div>
<div class="instrumentpanelitemright" *ngIf="isExpand">
<nz-progress [nzPercent]="75" nzType="circle" [nzFormat]="formatOne"
<nz-progress [nzPercent]="item.percentage" nzType="circle" [nzFormat]="formatOne"
nzStrokeColor="#42B983">
</nz-progress>
</div>
@ -50,19 +55,25 @@
<div class="itemtwo" *ngIf="item.isDetails">
<p class="itemtwotitle">
<span>{{item.name}}</span>
<span class="back" (click)="openDetails(item,false)"><i nz-icon nzType="rollback"
nzTheme="outline"></i>返回</span>
<span class="back">
<span (click)="openDetails(item,false)">
<i nz-icon nzType="rollback" nzTheme="outline"></i>
返回
</span>
</span>
</p>
<div class="itemtwocontent">
<div class="itemtwocontentitem">
<div class="itemtwocontentitem" *ngFor="let i of item.data">
<p class="itemtwocontentitemp1">
<span class="itemtwocontentitemp1name">济南历下森豪室内娱乐场</span>
<span>
<span class="blue" *ngIf="isExpand">派发</span>
<span class="itemtwocontentitemp1name">{{i.company.companyName}}</span>
<span class="marginr5">
<span class="green" *ngIf="isExpand">{{i.approvalStatus}}</span>
</span>
</p>
<p>A消防救援站</p>
<p><span class="blue" *ngIf="!isExpand">派发</span></p>
<p>{{i.company.organization.name}}</p>
<p class="marginr5" *ngIf="!isExpand">
<span class="green">{{i.approvalStatus}}</span>
</p>
</div>
</div>
</div>
@ -82,14 +93,18 @@
<img src="../../../../assets//images/icon/station.png" alt="">
{{element.name}}
</span>
<span style="width: 8%;">单位总数: 7/8</span>
<span style="width: 8%;">
<span>
单位总数:{{element.awaitInspect}}/{{element.allUnitsNum}}
</span>
</span>
<div style="width: 66%;" class="progress progresssquare">
<span>完成进度</span>
<nz-progress nzStrokeLinecap="square" nzStrokeWidth="16" nzStrokeColor="#42B983"
[nzPercent]="30"></nz-progress>
<nz-progress nzStrokeLinecap="square" [nzStrokeWidth]="16" nzStrokeColor="#42B983"
[nzPercent]="element.percentage"></nz-progress>
</div>
<!-- <button nz-button nzType="primary">任务下派</button> -->
<span (click)="expandcarditem(element)" class="expand blue">
<button nz-button nzType="primary" (click)="adjustment(element)">任务调整</button>
<span class="expand blue" (click)="expandcarditem(element)">
{{element.isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="element.isExpand ? 'down' : 'up'" nzTheme="outline"></i>
</span>
@ -104,12 +119,12 @@
<div class="num">
<div class="round" style="background: #2C4DC0;"></div>
<span class="word">已分配</span>
<span class="boldspan">0</span>
<span class="boldspan">{{item.inspected}}</span>
</div>
<div class="num">
<div class="round" style="background: #42B983;"></div>
<span class="word">已完成</span>
<span class="boldspan">0</span>
<span class="boldspan">{{item.finished}}</span>
</div>
</div>
<div class="maincontentitemright">
@ -172,7 +187,7 @@
<div class="flexcol">
<span>
未发现违法违规情况
{{i.inspectionResult}}
</span>
<span>
检查结果

101
src/app/home/task/da-oneself-plan/da-oneself-plan.component.ts

@ -17,6 +17,7 @@ export class DaOneselfPlanComponent implements OnInit {
ngOnInit(): void {
this.OrganizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId
this.selectedMonth = new Date().getMonth() + 1
this.getTasks()
this.getAllStation()
}
selectedMonth
@ -54,32 +55,67 @@ export class DaOneselfPlanComponent implements OnInit {
formatOne = (percent: number): string => `${percent}%\n完成率`;
//上级任务指标
cardData = [
{ name: '双随机', isDetails: false, background: '#1D9DFF', icon: 'suiji.png' },
{ name: '行政许可', isDetails: false, background: '#42B983', icon: 'xuke.png' },
{ name: '熟悉演练', isDetails: false, background: '#9D80FF', icon: 'yanlian.png' },
{ name: '联络指导', isDetails: false, background: '#5483EA', icon: 'zhidao.png' },
{ name: '消防宣传', isDetails: false, background: '#FF5D2A', icon: 'xuanchuan.png' },
{ name: '投诉举报', isDetails: false, background: '#5087FF', icon: 'tousu.png' },
{ name: '火灾调查', isDetails: false, background: '#FF404D', icon: 'huozai.png' }
{ name: '双随机', isDetails: false, isLoading: false, background: '#1D9DFF', icon: 'suiji.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '行政许可', isDetails: false, isLoading: false, background: '#42B983', icon: 'xuke.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '熟悉演练', isDetails: false, isLoading: false, background: '#9D80FF', icon: 'yanlian.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '联络指导', isDetails: false, isLoading: false, background: '#5483EA', icon: 'zhidao.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '消防宣传', isDetails: false, isLoading: false, background: '#FF5D2A', icon: 'xuanchuan.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '投诉举报', isDetails: false, isLoading: false, background: '#5087FF', icon: 'tousu.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '火灾调查', isDetails: false, isLoading: false, background: '#FF404D', icon: 'huozai.png', passed: 0, inspected: 0, percentage: 0, data: [] }
]
async getTasks() {
let selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01'
let params = {
Month: selectedTime,
OrganizationId: this.OrganizationId,
PageNumber: 1,
PageSize: 9999
}
return await new Promise<void>((resolve, reject) => {
this.http.get('/api/PlanTasks', {
params: params
}).subscribe((data: any) => {
// console.log('任务申请列表', data.items);
data.items.forEach(element => {
this.cardData.forEach((item, key) => {
element.taskType == item.name ? this.cardData[key].data.push(element) : null
});
});
this.cardData.forEach(element => {
element.data.forEach(item => {
item.approvalStatus == '通过' ? element.passed += 1 : null
item.approvalStatus == '已检查 ' ? element.inspected += 1 : null
})
})
this.cardData.forEach(element => {
element.percentage = Math.round(element.inspected / element.data.length) * 100 || 0
})
resolve(data)
console.log('并入卡片数据', this.cardData)
})
})
}
openDetails(data, type) {
data.isDetails = type
}
xxx = false
radioChange(e) {
setTimeout(() => {
this.xxx = !this.xxx
}, 0);
radioChange(e) {
}
nodes: any = []
BuildingTypes
adjustment() {
adjustment(item) {
console.log(item)
const modal = this.modal.create({
nzTitle: "任务调整",
nzContent: PlanAdjustmentComponent,
@ -117,14 +153,15 @@ export class DaOneselfPlanComponent implements OnInit {
element.isLoading = false
});
this.stationData = data.items
this.stationData[0].isExpand = true
this.stationData.forEach(item => {
this.getTaskListOfStation(item)
})
})
}
expandcarditem(item) {
item.isExpand = !item.isExpand
console.log(item)
if (item.isExpand) {
this.getTaskListOfStation(item)
}
}
//获得消防站下的所有任务
PageNumber = 1
@ -145,13 +182,13 @@ export class DaOneselfPlanComponent implements OnInit {
next: (data: any) => {
item.isLoading = false
let listData = [
{ name: '双随机', background: '#1D9DFF', icon: 'suiji.png', scale: '0/0', data: [] },
{ name: '行政许可', background: '#42B983', icon: 'xuke.png', scale: '0/0', data: [] },
{ name: '熟悉演练', background: '#9D80FF', icon: 'yanlian.png', scale: '0/0', data: [] },
{ name: '联络指导', background: '#5483EA', icon: 'zhidao.png', scale: '0/0', data: [] },
{ name: '消防宣传', background: '#FF5D2A', icon: 'xuanchuan.png', scale: '0/0', data: [] },
{ name: '投诉举报', background: '#5087FF', icon: 'tousu.png', scale: '0/0', data: [] },
{ name: '火灾调查', background: '#FF404D', icon: 'huozai.png', scale: '0/0', data: [] }
{ name: '双随机', background: '#1D9DFF', icon: 'suiji.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '行政许可', background: '#42B983', icon: 'xuke.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '熟悉演练', background: '#9D80FF', icon: 'yanlian.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '联络指导', background: '#5483EA', icon: 'zhidao.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '消防宣传', background: '#FF5D2A', icon: 'xuanchuan.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '投诉举报', background: '#5087FF', icon: 'tousu.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '火灾调查', background: '#FF404D', icon: 'huozai.png', scale: '0/0', data: [], inspected: 0, finished: 0 }
]
data.items.forEach(element => {
listData.forEach((item, key) => {
@ -166,7 +203,21 @@ export class DaOneselfPlanComponent implements OnInit {
}
}
item.data = listData
// console.log('点击的救援站通过数据', item)
console.log('当前登录用户所有通过的任务', item);
item.allUnitsNum = 0
item.awaitInspect = 0
item.inspected = 0
item.finished = 0
item.data.forEach(element => {
item.allUnitsNum += element.data.length
element.data.forEach(i => {
i.approvalStatus == '待检查' ? item.awaitInspect += 1 : null
i.approvalStatus == '已检查' ? item.inspected += 1 : null
i.approvalStatus == '待检查' ? element.inspected += 1 : null
i.approvalStatus == '已检查' ? element.finished += 1 : null
});
});
item.percentage = Math.round(item.inspected / item.allUnitsNum) * 100
},
error: (err) => {
this.message.create('warning', '获取数据失败');

1
src/app/home/task/station-task-apply/station-task-apply.component.ts

@ -286,6 +286,7 @@ export class StationTaskApplyComponent implements OnInit {
companyId: instance.validateForm.value.unitname,
organizationId: this.OrganizationId,
supervisorIds: instance.validateForm.value.organization,
creationType: '申领任务',
approvalStatus: '待处理'
}
this.http.post('/api/PlanTasks', body).subscribe({

2
src/app/home/task/station-weekly-plan/create-task/create-task.component.html

@ -13,7 +13,7 @@
<nz-form-control>
<nz-select formControlName="unitname" (nzScrollToBottom)="loadMore()" nzPlaceHolder="请选择单位" nzAllowClear
[nzDropdownRender]="renderTemplate" nzShowSearch nzServerSearch (nzOnSearch)="search($event)">
<nz-option *ngFor="let o of optionList" [nzValue]="o.id" [nzLabel]="o.companyName"></nz-option>
<nz-option *ngFor="let o of optionList" [nzValue]="o" [nzLabel]="o.companyName"></nz-option>
</nz-select>
<ng-template #renderTemplate>
<nz-spin *ngIf="isLoading"></nz-spin>

13
src/app/home/task/station-weekly-plan/station-weekly-plan.component.html

@ -33,7 +33,7 @@
</div>
<div style="flex: 1;overflow-y: auto;position: relative;">
<div class="spin" *ngIf="isloading">
<div class="spin" *ngIf="isLoading">
<nz-spin nzSimple></nz-spin>
</div>
<!-- 上部仪表盘 -->
@ -48,7 +48,7 @@
<div class="instrumentpanel">
<div class="instrumentpanelitem" *ngFor="let item of cardData"
[ngClass]="{'instrumentpanelitemopen': isExpand,'instrumentpanelitemclose': !isExpand}">
<div class="spin" *ngIf="item.isloading">
<div class="spin" *ngIf="item.isLoading">
<nz-spin nzSimple></nz-spin>
</div>
<div class="itemone" *ngIf="!item.isDetails">
@ -152,12 +152,12 @@
<div class="num">
<div class="round" style="background: #2C4DC0;"></div>
<span class="word">已分配</span>
<span class="boldspan">0</span>
<span class="boldspan">{{item.inspected}}</span>
</div>
<div class="num">
<div class="round" style="background: #42B983;"></div>
<span class="word">已完成</span>
<span class="boldspan">0</span>
<span class="boldspan">{{item.finished}}</span>
</div>
</div>
<div class="maincontentitemright">
@ -220,8 +220,9 @@
</div>
<div class="flexcol">
<span>
<nz-date-picker [(ngModel)]="i.checkTime" nzPlaceHolder="请选择检查日期"
nzBorderless (ngModelChange)="checkTime($event,i,element)">
<nz-date-picker [nzDisabledDate]="disabledDate" [(ngModel)]="i.checkTime"
nzPlaceHolder="请选择检查日期" nzBorderless
(ngModelChange)="checkTime($event,i,element)">
</nz-date-picker>
</span>
<span>

100
src/app/home/task/station-weekly-plan/station-weekly-plan.component.ts

@ -8,6 +8,7 @@ import { TreeService } from 'src/app/service/tree.service';
import * as moment from 'moment';
import { TaskDetailsComponent } from './task-details/task-details.component';
import { CreateTaskComponent } from './create-task/create-task.component';
import { differenceInCalendarDays, setHours } from 'date-fns'
@Component({
selector: 'app-station-weekly-plan',
templateUrl: './station-weekly-plan.component.html',
@ -20,6 +21,8 @@ export class StationWeeklyPlanComponent implements OnInit {
userId
isSupervisor
today = new Date();
disabledDate = (current: Date): boolean => differenceInCalendarDays(current, this.today) <= 0;
months = [
{ id: 1, name: '1月', isable: true },
{ id: 2, name: '2月', isable: true },
@ -127,24 +130,24 @@ export class StationWeeklyPlanComponent implements OnInit {
}
cardData = [
{ name: '双随机', isDetails: false, isloading: false, background: '#1D9DFF', icon: 'suiji.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '行政许可', isDetails: false, isloading: false, background: '#42B983', icon: 'xuke.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '熟悉演练', isDetails: false, isloading: false, background: '#9D80FF', icon: 'yanlian.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '联络指导', isDetails: false, isloading: false, background: '#5483EA', icon: 'zhidao.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '消防宣传', isDetails: false, isloading: false, background: '#FF5D2A', icon: 'xuanchuan.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '投诉举报', isDetails: false, isloading: false, background: '#5087FF', icon: 'tousu.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '火灾调查', isDetails: false, isloading: false, background: '#FF404D', icon: 'huozai.png', passed: 0, inspected: 0, percentage: 0, data: [] }
{ name: '双随机', isDetails: false, isLoading: false, background: '#1D9DFF', icon: 'suiji.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '行政许可', isDetails: false, isLoading: false, background: '#42B983', icon: 'xuke.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '熟悉演练', isDetails: false, isLoading: false, background: '#9D80FF', icon: 'yanlian.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '联络指导', isDetails: false, isLoading: false, background: '#5483EA', icon: 'zhidao.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '消防宣传', isDetails: false, isLoading: false, background: '#FF5D2A', icon: 'xuanchuan.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '投诉举报', isDetails: false, isLoading: false, background: '#5087FF', icon: 'tousu.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '火灾调查', isDetails: false, isLoading: false, background: '#FF404D', icon: 'huozai.png', passed: 0, inspected: 0, percentage: 0, data: [] }
]
//初始化数据
initializeData() {
this.cardData = [
{ name: '双随机', isDetails: false, isloading: false, background: '#1D9DFF', icon: 'suiji.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '行政许可', isDetails: false, isloading: false, background: '#42B983', icon: 'xuke.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '熟悉演练', isDetails: false, isloading: false, background: '#9D80FF', icon: 'yanlian.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '联络指导', isDetails: false, isloading: false, background: '#5483EA', icon: 'zhidao.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '消防宣传', isDetails: false, isloading: false, background: '#FF5D2A', icon: 'xuanchuan.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '投诉举报', isDetails: false, isloading: false, background: '#5087FF', icon: 'tousu.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '火灾调查', isDetails: false, isloading: false, background: '#FF404D', icon: 'huozai.png', passed: 0, inspected: 0, percentage: 0, data: [] }
{ name: '双随机', isDetails: false, isLoading: false, background: '#1D9DFF', icon: 'suiji.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '行政许可', isDetails: false, isLoading: false, background: '#42B983', icon: 'xuke.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '熟悉演练', isDetails: false, isLoading: false, background: '#9D80FF', icon: 'yanlian.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '联络指导', isDetails: false, isLoading: false, background: '#5483EA', icon: 'zhidao.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '消防宣传', isDetails: false, isLoading: false, background: '#FF5D2A', icon: 'xuanchuan.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '投诉举报', isDetails: false, isLoading: false, background: '#5087FF', icon: 'tousu.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '火灾调查', isDetails: false, isLoading: false, background: '#FF404D', icon: 'huozai.png', passed: 0, inspected: 0, percentage: 0, data: [] }
]
this.stationData.forEach(element => {
@ -156,24 +159,26 @@ export class StationWeeklyPlanComponent implements OnInit {
isloading = false
isLoading = false
PageNumber = 1
PageSize = 9999
async getTaskList() {
this.isloading = true
this.cardData.forEach(item => {
item.data = []
})
this.isLoading = true
let selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01'
let params = {
Month: selectedTime,
// OrganizationId: this.isSupervisor ? this.OrganizationId : "",
SupervisorId: this.userId,
PageNumber: this.PageNumber,
PageSize: this.PageSize
}
var p = await new Promise<void>((resolve, reject) => {
return await new Promise<void>((resolve, reject) => {
this.http.get('/api/PlanTasks', {
params: params
}).subscribe((data: any) => {
this.isloading = false
this.isLoading = false
// console.log('任务申请列表', data.items);
data.items.forEach(element => {
this.cardData.forEach((item, key) => {
@ -181,7 +186,6 @@ export class StationWeeklyPlanComponent implements OnInit {
});
});
this.cardData.forEach(element => {
element.data.forEach(item => {
item.approvalStatus == '通过' ? element.passed += 1 : null
@ -196,8 +200,6 @@ export class StationWeeklyPlanComponent implements OnInit {
console.log('并入卡片数据', this.cardData)
})
})
return p
}
stationData = [
@ -220,13 +222,13 @@ export class StationWeeklyPlanComponent implements OnInit {
item.isLoading = false
let listData = [
{ name: '双随机', background: '#1D9DFF', icon: 'suiji.png', scale: '0/0', data: [] },
{ name: '行政许可', background: '#42B983', icon: 'xuke.png', scale: '0/0', data: [] },
{ name: '熟悉演练', background: '#9D80FF', icon: 'yanlian.png', scale: '0/0', data: [] },
{ name: '联络指导', background: '#5483EA', icon: 'zhidao.png', scale: '0/0', data: [] },
{ name: '消防宣传', background: '#FF5D2A', icon: 'xuanchuan.png', scale: '0/0', data: [] },
{ name: '投诉举报', background: '#5087FF', icon: 'tousu.png', scale: '0/0', data: [] },
{ name: '火灾调查', background: '#FF404D', icon: 'huozai.png', scale: '0/0', data: [] }
{ name: '双随机', background: '#1D9DFF', icon: 'suiji.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '行政许可', background: '#42B983', icon: 'xuke.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '熟悉演练', background: '#9D80FF', icon: 'yanlian.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '联络指导', background: '#5483EA', icon: 'zhidao.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '消防宣传', background: '#FF5D2A', icon: 'xuanchuan.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '投诉举报', background: '#5087FF', icon: 'tousu.png', scale: '0/0', data: [], inspected: 0, finished: 0 },
{ name: '火灾调查', background: '#FF404D', icon: 'huozai.png', scale: '0/0', data: [], inspected: 0, finished: 0 }
]
data.items.forEach(element => {
listData.forEach((item, key) => {
@ -242,11 +244,17 @@ export class StationWeeklyPlanComponent implements OnInit {
}
item.data = listData
console.log('当前登录用户所有通过的任务', item);
item.allUnitsNum = 0
item.awaitInspect = 0
item.inspected = 0
item.finished = 0
item.data.forEach(element => {
item.allUnitsNum += element.data.length
element.data.forEach(item => {
item.approvalStatus == '待检查' ? element.awaitInspect += 1 : null
item.approvalStatus == '已检查' ? element.inspected += 1 : null
element.data.forEach(i => {
i.approvalStatus == '待检查' ? item.awaitInspect += 1 : null
i.approvalStatus == '已检查' ? item.inspected += 1 : null
i.approvalStatus == '待检查' ? element.inspected += 1 : null
i.approvalStatus == '已检查' ? element.finished += 1 : null
});
});
item.percentage = Math.round(item.inspected / item.allUnitsNum) * 100
@ -266,7 +274,7 @@ export class StationWeeklyPlanComponent implements OnInit {
nzOkText: '确定',
nzOkType: 'default',
nzOnOk: () => {
item.isloading = true
item.isLoading = true
this.http.post(`/api/PlanTasks/Approval/${i.id}`, null, {
params: {
approvalStatus: '通过'
@ -275,14 +283,14 @@ export class StationWeeklyPlanComponent implements OnInit {
next: (data) => {
this.message.create('success', '已接受');
i.approvalStatus = '通过'
item.isloading = false
item.isLoading = false
item.passed += 1
this.getTaskListPass(this.stationData[0])
},
error: (err) => {
this.message.create('warning', '接受失败');
item.isloading = false
item.isLoading = false
}
})
},
@ -296,7 +304,7 @@ export class StationWeeklyPlanComponent implements OnInit {
nzOkText: '确定',
nzOkType: 'default',
nzOnOk: () => {
item.isloading = true
item.isLoading = true
this.http.post(`/api/PlanTasks/Approval/${i.id}`, null, {
params: {
approvalStatus: '驳回'
@ -305,13 +313,13 @@ export class StationWeeklyPlanComponent implements OnInit {
next: (data) => {
this.message.create('success', '已拒绝');
i.approvalStatus = '驳回'
item.isloading = false
item.isLoading = false
item.passed -= 1
this.getTaskListPass(this.stationData[0])
},
error: (err) => {
this.message.create('warning', '拒绝失败');
item.isloading = false
item.isLoading = false
}
})
},
@ -471,15 +479,19 @@ export class StationWeeklyPlanComponent implements OnInit {
let body = {
taskName: instance.validateForm.value.taskname,
taskType: instance.validateForm.value.taskname,
companyId: instance.validateForm.value.unitname,
// organizationId: this.OrganizationId,
// supervisorIds: instance.validateForm.value.organization,
companyId: instance.validateForm.value.unitname.id,
organizationId: this.OrganizationId,
supervisorIds: [this.userId],
creationType: '自主任务',
approvalStatus: '通过'
}
this.http.post('/api/PlanTasks', body).subscribe({
next: (data) => {
console.log(data)
// item.data.push(data)
next: (data: any) => {
console.log(item)
data.company = instance.validateForm.value.unitname
item.data.push(data)
item.passed += 1
// this.getTaskList()
this.getTaskListPass(this.stationData[0])
this.message.create('success', '创建成功');
resolve(data)

71
src/app/home/task/zhi-indicators/zhi-indicators.component.html

@ -120,8 +120,9 @@
<thead>
<tr>
<th nzWidth="25%">单位名称</th>
<th nzWidth="50%">配合机构</th>
<th nzWidth="42%">配合机构</th>
<th nzWidth="25%">说明</th>
<th nzWidth="8%">操作</th>
</tr>
</thead>
<tbody>
@ -134,13 +135,23 @@
/{{i.name}}
</span>
</span>
<span class="blue" (click)="editOr(complaint,item)">修改机构</span>
<span class="blue" (click)="editOr(complaint,item)"
[ngClass]="{'forbid': item.approvalStatus == '通过'}">修改机构</span>
</td>
<td style="padding:0 2px!important;">
<textarea nzAutosize [(ngModel)]="item.description" style="border: 0;" rows="1" nz-input
<textarea [disabled]="item.approvalStatus == '通过'" nzAutosize
[(ngModel)]="item.description" style="border: 0;" rows="1" nz-input
placeholder="一段简短的说明文字..."
(ngModelChange)="taskDescChange(complaint,item)"></textarea>
</td>
<td>
<ng-container *ngIf="item.approvalStatus == '未派发'; else elseTemplate">
<span class="blue" (click)="distribute(item,'投诉举报')">派发</span>
</ng-container>
<ng-template #elseTemplate>
<span class="green">已派发</span>
</ng-template>
</td>
</tr>
</tbody>
</nz-table>
@ -255,8 +266,9 @@
<thead>
<tr>
<th nzWidth="25%">单位名称</th>
<th nzWidth="50%">配合机构</th>
<th nzWidth="42%">配合机构</th>
<th nzWidth="25%">说明</th>
<th nzWidth="8%">操作</th>
</tr>
</thead>
<tbody>
@ -269,13 +281,23 @@
/{{i.name}}
</span>
</span>
<span class="blue" (click)="editOr(permission,item)">修改机构</span>
<span class="blue" (click)="editOr(permission,item)"
[ngClass]="{'forbid': item.approvalStatus == '通过'}">修改机构</span>
</td>
<td style="padding:0 2px!important;">
<textarea nzAutosize [(ngModel)]="item.description" style="border: 0;" rows="1" nz-input
<textarea [disabled]="item.approvalStatus == '通过'" nzAutosize
[(ngModel)]="item.description" style="border: 0;" rows="1" nz-input
placeholder="一段简短的说明文字..."
(ngModelChange)="taskDescChange(permission,item)"></textarea>
</td>
<td>
<ng-container *ngIf="item.approvalStatus == '未派发'; else elseTemplate">
<span class="blue" (click)="distribute(item,'行政许可')">派发</span>
</ng-container>
<ng-template #elseTemplate>
<span class="green">已派发</span>
</ng-template>
</td>
</tr>
</tbody>
</nz-table>
@ -395,6 +417,7 @@
<th nzWidth="25%">单位名称</th>
<th nzWidth="15%">监督员</th>
<th>说明</th>
<th nzWidth="8%">操作</th>
</tr>
</thead>
<tbody>
@ -434,11 +457,13 @@
</ng-template>
</div>
<div>
<span class="blue" (click)="allot(i,'双随机')">更改</span>
<span class="blue" (click)="allot(i,'双随机')"
[ngClass]="{'forbid': i.approvalStatus == '通过'}">更改</span>
</div>
</ng-container>
<ng-template #elseTemplate>
<div class="select" (click)="allot(i,'双随机')">
<div class="select" (click)="allot(i,'双随机')"
[ngClass]="{'forbidbtn': i.approvalStatus == '通过'}">
检查员
</div>
</ng-template>
@ -446,11 +471,20 @@
</td>
<td style="padding:0 2px!important;" class="flextd">
<div class="itembox" *ngFor="let i of item.planTasks">
<textarea [(ngModel)]="i.description" nzAutosize style="border: 0;" rows="1"
nz-input placeholder="一段简短的说明文字..."
<textarea [disabled]="i.approvalStatus == '通过'" [(ngModel)]="i.description"
nzAutosize style="border: 0;" rows="1" nz-input placeholder="一段简短的说明文字..."
(ngModelChange)="taskDescChange(doubleRandom,i)"></textarea>
</div>
</td>
<td class="flextd">
<div class="itembox" *ngFor="let i of item.planTasks">
<ng-container *ngIf="i.approvalStatus == '未派发'; else elseTemplate">
<span class="blue" (click)="distribute(i,'双随机')">派发</span>
</ng-container>
<ng-template #elseTemplate>
<span class="green">已派发</span>
</ng-template>
</div>
</td>
</tr>
</tbody>
@ -569,6 +603,7 @@
<th nzWidth="6%">任务额</th>
<th nzWidth="30%">单位名称</th>
<th>说明</th>
<th nzWidth="8%">操作</th>
</tr>
</thead>
<tbody>
@ -590,12 +625,22 @@
</td>
<td style="padding:0 2px!important;" class="flextd">
<div class="itembox" *ngFor="let i of item.planTasks">
<textarea [(ngModel)]="i.description" nzAutosize nzBorderless rows="1" nz-input
placeholder="一段简短的说明文字..."
<textarea [disabled]="i.approvalStatus == '通过'" [(ngModel)]="i.description"
nzAutosize nzBorderless rows="1" nz-input placeholder="一段简短的说明文字..."
(ngModelChange)="taskDescChange(rehearsal,i)"></textarea>
</div>
</td>
<td class="flextd">
<div class="itembox" *ngFor="let i of item.planTasks">
<ng-container *ngIf="i.approvalStatus == '未派发'; else elseTemplate">
<span class="blue" (click)="distribute(i,'熟悉演练')">派发</span>
</ng-container>
<ng-template #elseTemplate>
<span class="green">已派发</span>
</ng-template>
</div>
</td>
</tr>
</tbody>
</nz-table>

56
src/app/home/task/zhi-indicators/zhi-indicators.component.ts

@ -416,7 +416,7 @@ export class ZhiIndicatorsComponent implements OnInit {
targetCount: item.targetCount,
}
return new Promise<void>((resolve, reject) => {
this.http.patch(`/api/TaskTarget/${item.id}`, body).subscribe({
this.http.patch(`/api/TaskTargets/${item.id}`, body).subscribe({
next: async (data: any) => {
this.message.create('success', '修改任务额成功');
resolve(data)
@ -461,15 +461,15 @@ export class ZhiIndicatorsComponent implements OnInit {
taskType: type
}
}).subscribe({
next: (item) => {
next: (item: Array<Object>) => {
data.isLoading = false
data.isPopover = false
this.message.create('success', '派发成功');
this.message.create('success', '共创建' + arrSet.length + '条任务' + ',成功创建' + item.length + '条,剩余' + (arrSet.length - item.length) + '个单位已被创建');
type == '投诉举报' ? this.getTaskList('投诉举报', data) : null
type == '行政许可' ? this.getTaskList('行政许可', data) : null
},
error: (err) => {
this.message.create('warning', '派发失败');
this.message.create('warning', '创建失败');
}
})
}
@ -480,20 +480,21 @@ export class ZhiIndicatorsComponent implements OnInit {
let arr = [...data.search1Value, ...data.search2Value]
let body = [...new Set(arr)]
data.isLoading = true
this.http.post(`/api/TaskTarget/${selectedTime}`, body, {
this.http.post(`/api/TaskTargets/${selectedTime}`, body, {
params: {
taskType: type
}
}).subscribe({
next: (item) => {
next: (item: Array<Object>) => {
data.isLoading = false
data.isPopover = false
this.message.create('success', '派发成功');
this.message.create('success', '共创建' + body.length + '条任务' + ',成功创建' + item.length + '条,剩余' + (body.length - item.length) + '个单位已被创建');
type == '双随机' ? this.getTaskTarget('双随机', data) : null
type == '熟悉演练' ? this.getTaskTarget('熟悉演练', data) : null
},
error: (err) => {
this.message.create('warning', '派发失败');
this.message.create('warning', '创建失败');
}
})
}
@ -504,7 +505,7 @@ export class ZhiIndicatorsComponent implements OnInit {
taskType: TaskType
}
return await new Promise<void>((resolve, reject) => {
this.http.get(`/api/TaskTarget/${selectedTime}`, {
this.http.get(`/api/TaskTargets/${selectedTime}`, {
params: params
}).subscribe((data: any) => {
this.ngZone.run(() => {
@ -528,7 +529,7 @@ export class ZhiIndicatorsComponent implements OnInit {
this.rehearsal.allPlanTasks += element.planTasks.length
}
element.planTasks.forEach(item => {
if (item.supervisorIds.length != 0) {
if (item.approvalStatus == '通过') {
TaskType == '双随机' ? this.doubleRandom.allocated += 1 : null
TaskType == '熟悉演练' ? this.rehearsal.allocated += 1 : null
}
@ -572,7 +573,7 @@ export class ZhiIndicatorsComponent implements OnInit {
TaskType == '行政许可' ? this.permission.data = data.items : null
data.items.forEach(item => {
if (item.supervisorIds.length != 0) {
if (item.approvalStatus == '通过') {
TaskType == '投诉举报' ? this.complaint.allocated += 1 : null
TaskType == '行政许可' ? this.permission.allocated += 1 : null
}
@ -702,4 +703,37 @@ export class ZhiIndicatorsComponent implements OnInit {
modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!'));
modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result));
}
distribute(item, type) {
this.modal.confirm({
nzTitle: `确定要派发该任务吗?`,
nzOkText: '确定',
nzOkType: 'default',
nzOnOk: () => {
item.isLoading = true
this.http.post(`/api/PlanTasks/Approval/${item.id}`, null, {
params: {
approvalStatus: '通过'
}
}).subscribe({
next: (data) => {
this.message.create('success', '已派发');
item.approvalStatus = '通过'
item.isLoading = false
item.passed += 1
type == '投诉举报' ? this.complaint.allocated += 1 : null
type == '行政许可' ? this.permission.allocated += 1 : null
type == '双随机' ? this.doubleRandom.allocated += 1 : null
type == '熟悉演练' ? this.rehearsal.allocated += 1 : null
},
error: (err) => {
this.message.create('warning', '派发失败');
item.isLoading = false
}
})
},
nzCancelText: '取消'
});
}
}

3
src/app/http-interceptors/base-interceptor.ts

@ -70,10 +70,11 @@ export class BaseInterceptor implements HttpInterceptor {
} else {
// 服务端返回http状态码
// 服务端返回错误信息
console.error(
`状态码${error.status}, ` +
`错误内容:${error.error}`);
this.message.create('error', error.error.title);
this.message.create('error', error.error.detail);
}
// 返回带有面向用户的错误信息
return throwError(() => {

6
src/styles.scss

@ -130,13 +130,13 @@ app-root {
.forbid {
color: gray;
pointer-events: none
color: gray !important;
pointer-events: none !important;
}
.forbidbtn {
background: gray !important;
pointer-events: none
pointer-events: none !important;
}
.box {

Loading…
Cancel
Save