Browse Source

[新增]任务调整功能

非煤矿山灾害智能感知和预警系统
邵佳豪 3 years ago
parent
commit
5fcba20841
  1. 12
      src/app/home/task/da-oneself-plan/da-oneself-plan.component.ts
  2. 41
      src/app/home/task/da-oneself-plan/plan-adjustment/plan-adjustment.component.html
  3. 2
      src/app/home/task/da-oneself-plan/plan-adjustment/plan-adjustment.component.scss
  4. 228
      src/app/home/task/da-oneself-plan/plan-adjustment/plan-adjustment.component.ts
  5. 2
      src/app/home/task/station-weekly-plan/station-weekly-plan.component.html
  6. 22
      src/app/home/task/station-weekly-plan/station-weekly-plan.component.ts

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

@ -149,7 +149,7 @@ export class DaOneselfPlanComponent implements OnInit {
Month: selectedTime,
CompanyOrganizationId: item.id,
PageNumber: this.PageNumber,
approvalStatuses: '通过',
approvalStatuses: ['通过', '待检查'],
PageSize: this.PageSize
}
item.isLoading = true
@ -203,12 +203,8 @@ export class DaOneselfPlanComponent implements OnInit {
})
}
nodes: any = []
BuildingTypes
adjustment(item) {
let selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01'
const modal = this.modal.create({
nzTitle: "任务调整",
nzContent: PlanAdjustmentComponent,
@ -216,7 +212,9 @@ export class DaOneselfPlanComponent implements OnInit {
nzWidth: 900,
nzFooter: null,
nzComponentParams: {
data: item
data: JSON.parse(JSON.stringify(item)),
time: selectedTime,
level: '大队'
}
});
const instance = modal.getContentComponent();

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

@ -1,33 +1,38 @@
<div class="box">
<div style="border: 1px solid #E4E7EC; padding: 20px; width:400px; margin: 0 20px;">
<div class="title"><span>未接任务</span><span>任务总数:{{taskNumber}}/8</span></div>
<div style="border: 1px solid #E4E7EC; padding: 20px; width:400px; margin: 0 20px;position: relative;">
<div class="spin" *ngIf="spin1">
<nz-spin nzSimple></nz-spin>
</div>
<div class="title"><span>未接任务</span></div>
<div class="missed">
<div *ngFor="let item of list" class="item">
<i [style]="'background:'+item.class+';'">&nbsp;&nbsp;</i>
<span>{{item.tag}}</span>
<div (click)="aaa(data)" class="checked" *ngFor="let data of item.item">
<label [nzDisabled]="task" nz-checkbox [(ngModel)]="data.checked"
(change)="aaa(data)">{{data.name}}</label>
<div *ngFor="let item of allTasks" class="item">
<i [style]="'background:'+item.background">&nbsp;&nbsp;</i>
<span>{{item.name}}</span>
<div class="checked" *ngFor="let i of item.data">
<label [(ngModel)]="i.checked" [nzDisabled]=" i.approvalStatus=='已检查'" nz-checkbox
(ngModelChange)="push(i,item,$event)">{{i.company.companyName}}</label>
</div>
</div>
</div>
</div>
<div style="border: 1px solid #E4E7EC; padding: 20px; width:400px; margin: 0 20px;">
<div style="border: 1px solid #E4E7EC; padding: 20px; width:400px; margin: 0 20px;position: relative;">
<div class="spin" *ngIf="spin2">
<nz-spin nzSimple></nz-spin>
</div>
<div class="title">已接任务</div>
<div class="missed">
<div *ngFor="let item2 of list" class="item">
<div *ngFor="let item of data.data" class="item">
<div>
<i [style]="'background:'+item2.class+';'">&nbsp;&nbsp;</i>
<span>{{item2.tag}}</span>
<i [style]="'background:'+item.background">&nbsp;&nbsp;</i>
<span>{{item.name}}</span>
</div>
<div *ngFor="let data of item2.item">
<div class="received checked" *ngIf="data.checked">
<div class="name">{{data.name}}</div>
<div><i nz-icon nzType="close" nzTheme="outline" (click)="bbb(data)"></i></div>
<div *ngFor="let i of item.data">
<div class="received checked">
<div class="name">{{i.company.companyName}}</div>
<div><i nz-icon nzType="close" nzTheme="outline" style="cursor: pointer;"
(click)="cancel(i,item)"></i></div>
</div>
</div>
</div>
</div>
</div>

2
src/app/home/task/da-oneself-plan/plan-adjustment/plan-adjustment.component.scss

@ -1,5 +1,7 @@
.box {
display: flex;
max-height: 800px;
overflow-y: auto;
}
.title{
span{

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

@ -1,4 +1,6 @@
import { HttpClient } from '@angular/common/http';
import { Component, Input, OnInit } from '@angular/core';
import { NzMessageService } from 'ng-zorro-antd/message';
@Component({
selector: 'app-plan-adjustment',
@ -7,65 +9,189 @@ import { Component, Input, OnInit } from '@angular/core';
})
export class PlanAdjustmentComponent implements OnInit {
@Input() data?: any;
constructor() { }
list = [
{
tag: "行政许可",
class: "#42B983",
item: [
{
name: "想啥吃啥餐饮有限公司",
checked: false
},
{
name: "想啥吃啥餐饮有限公司",
checked: false
}
]
},
{
tag: "双随机",
class: "#1D9DFF",
item: [
{
name: "想啥吃啥餐饮有限公司",
checked: false
}
]
},
]
list2 = [
@Input() time?: any;
@Input() level?: any;
constructor(private http: HttpClient, private message: NzMessageService) { }
]
taskNumber = 0
task = false
spin1 = false
spin2 = false
userId
ngOnInit(): void {
console.log(this.data)
this.userId = JSON.parse(sessionStorage.getItem('userData')).id
this.getTaskListOfStation(this.data, '未接任务')
}
aaa(data) {
if (data.checked && !this.task) {
this.list2.push({ meu: this.list2.length, data })
console.log(this.list2);
this.taskNumber = this.list2.length
if (this.taskNumber == 8) {
this.task = true
}
} else {
this.bbb(data)
push(i, item, e) {
let body = {
approvalStatus: e ? '通过' : '待处理'
}
this.http.patch(`/api/PlanTasks/${i.id}`, body).subscribe({
next: (data) => {
this.message.create('success', '处理成功');
if (e) {
i.approvalStatus = '通过'
let isTrue = this.data.data.find((item) => {
return item.name == i.taskType
})
if (isTrue) {
this.data.data.forEach(item => {
if (item.name == i.taskType) {
item.data.push(i)
}
});
} else {
this.data.data.push({
name: item.name,
background: item.background,
data: [i]
})
}
} else {
this.data.data.forEach((item, key) => {
if (item.name == i.taskType) {
for (let index = 0; index < item.data.length; index++) {
const element = item.data[index];
if (element.id == i.id) {
item.data.splice(index, 1)
index--
}
}
}
});
}
},
error: (err) => {
this.message.create('warning', '处理失败');
}
})
}
bbb(e) {
console.log(e);
e.checked = false
for (let index = 0; index < this.list2.length; index++) {
if (e == this.list2[index].data) {
this.list2.splice(this.list2[index].meu, 1)
this.taskNumber = this.list2.length
if (this.taskNumber != 8) {
this.task = false
cancel(i, item) {
// console.log(i)
// console.log(item)
// console.log(this.allTasks)
let body = {
approvalStatus: '待处理'
}
this.http.patch(`/api/PlanTasks/${i.id}`, body).subscribe({
next: (data) => {
this.message.create('success', '处理成功');
this.allTasks.forEach(element => {
if (element.name == item.name) {
element.data.forEach(item => {
if (item.id == i.id) {
item.checked = false
item.approvalStatus = '待处理'
}
});
}
});
for (let index = 0; index < item.data.length; index++) {
const element = item.data[index];
if (element.id == i.id) {
item.data.splice(index, 1)
index--
}
}
},
error: (err) => {
this.message.create('warning', '处理失败');
}
})
}
//获得消防站下的所有任务
PageNumber = 1
PageSize = 9999
allTasks
async getTaskListOfStation(item, type) {
let statuses = []
if (type == '未接任务') {
statuses = ['待处理', '通过', '驳回', '待检查', '已检查']
this.spin1 = true
}
if (type == '已接任务') {
statuses = ['通过', '待检查']
this.spin2 = true
}
let params
if (this.level == '大队') {
params = {
Month: this.time,
CompanyOrganizationId: item.id,
PageNumber: this.PageNumber,
approvalStatuses: statuses,
PageSize: this.PageSize
}
} else {
params = {
Month: this.time,
SupervisorId: this.userId,
PageNumber: this.PageNumber,
approvalStatuses: statuses,
PageSize: this.PageSize
}
}
return new Promise<void>((resolve, reject) => {
this.http.get('/api/PlanTasks', {
params: params
}).subscribe({
next: (data: any) => {
let checkedList = []
this.data.data.forEach(element => {
element.data.forEach(item => {
checkedList.push(item)
});
});
data.items.forEach(element => {
element.checked = false
checkedList.forEach(item => {
if (item.id == element.id) {
element.checked = true
}
});
});
let listData = [
{ 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) => {
element.taskType == item.name ? listData[key].data.push(element) : null
});
});
for (let index = 0; index < listData.length; index++) {
const element = listData[index];
if (element.data.length == 0) {
listData.splice(index, 1)
index--
}
}
this.allTasks = listData
if (type == '未接任务') {
this.spin1 = false
}
if (type == '已接任务') {
this.spin2 = false
}
resolve(data)
},
error: (err) => {
reject(err)
}
})
})
}
}

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

@ -135,7 +135,7 @@
<nz-progress nzStrokeLinecap="square" [nzStrokeWidth]="16" nzStrokeColor="#42B983"
[nzPercent]="element.percentage"></nz-progress>
</div>
<button nz-button nzType="primary" style="margin-right: 12px;">任务调整</button>
<button nz-button nzType="primary" style="margin-right: 12px;" (click)="adjustment(element)">任务调整</button>
<button nz-button nzType="primary" (click)="createTask(element)">{{isSupervisor ? '协同任务' :
'生成周计划'}}</button>
<span (click)="expandcarditem(element)" class="expand blue">

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

@ -9,6 +9,7 @@ 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'
import { PlanAdjustmentComponent } from '../da-oneself-plan/plan-adjustment/plan-adjustment.component';
@Component({
selector: 'app-station-weekly-plan',
templateUrl: './station-weekly-plan.component.html',
@ -540,4 +541,25 @@ export class StationWeeklyPlanComponent implements OnInit {
}
})
}
adjustment(item) {
let selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01'
const modal = this.modal.create({
nzTitle: "任务调整",
nzContent: PlanAdjustmentComponent,
nzViewContainerRef: this.viewContainerRef,
nzWidth: 900,
nzFooter: null,
nzComponentParams: {
data: JSON.parse(JSON.stringify(item)),
time: selectedTime,
level: '非大队'
}
});
const instance = modal.getContentComponent();
modal.afterClose.subscribe(result => {
this.getTaskListPass(this.stationData[0])
});
}
}

Loading…
Cancel
Save