Browse Source

[完善]任务复制流程完善

非煤矿山灾害智能感知和预警系统
邵佳豪 2 years ago
parent
commit
84382e3a29
  1. 5
      .vscode/launch.json
  2. 3
      .vscode/settings.json
  3. 11231
      package-lock.json
  4. 4
      proxy.config.json
  5. 6
      src/app/home/commonComponents/chat-window/chat-window.component.ts
  6. 26
      src/app/home/nav/nav.component.ts
  7. 21
      src/app/home/statistic-analysis/home/home.component.html
  8. 6
      src/app/home/statistic-analysis/home/home.component.scss
  9. 50
      src/app/home/statistic-analysis/home/home.component.ts
  10. 6
      src/app/home/task/station-task-apply/apply/apply.component.html
  11. 1
      src/app/home/task/station-task-apply/apply/apply.component.ts
  12. 2
      src/app/home/task/station-task-apply/station-task-apply.component.ts
  13. 6
      src/app/home/task/station-task-execution/station-task-execution.component.html
  14. 3
      src/app/home/task/station-task-execution/station-task-execution.component.ts
  15. 764
      src/app/home/task/station-weekly-plan/dist/station-weekly-plan.component.js
  16. 15
      src/app/home/task/station-weekly-plan/station-weekly-plan.component.html
  17. 47
      src/app/home/task/station-weekly-plan/station-weekly-plan.component.ts
  18. 34
      src/app/home/task/zhi-indicators/zhi-indicators.component.html
  19. 11
      src/signalRChat.ts

5
.vscode/launch.json vendored

@ -4,10 +4,9 @@
"configurations": [ "configurations": [
{ {
"name": "ng serve", "name": "ng serve",
"type": "pwa-chrome", "type": "chrome",
"request": "launch", "request": "launch",
"preLaunchTask": "npm: start", "url": "http://localhost:8888/"
"url": "http://localhost:4200/"
}, },
{ {
"name": "ng test", "name": "ng test",

3
.vscode/settings.json vendored

@ -0,0 +1,3 @@
{
"compile-hero.disable-compile-files-on-did-save-code": false
}

11231
package-lock.json generated

File diff suppressed because it is too large Load Diff

4
proxy.config.json

@ -1,11 +1,11 @@
{ {
"/api": { "/api": {
"target": "https://fx.anxincloud.cn", "target": "https://121.36.37.70:8204",
"secure": false, "secure": false,
"changeOrigin": true "changeOrigin": true
}, },
"/hubs": { "/hubs": {
"target": "https://fx.anxincloud.cn", "target": "https://121.36.37.70:8204",
"secure": false, "secure": false,
"ws": true, "ws": true,
"logLevel": "debug" "logLevel": "debug"

6
src/app/home/commonComponents/chat-window/chat-window.component.ts

@ -13,7 +13,7 @@ import { StationTaskExecutionComponent } from '../../task/station-task-execution
}) })
export class ChatWindowComponent implements OnInit { export class ChatWindowComponent implements OnInit {
@Input() public taskId: any;//父组件传进来的任务id @Input() public taskId: any;//父组件传进来的任务id
static instance: ChatWindowComponent;
constructor(private ngZone: NgZone, private element: ElementRef, private message: NzMessageService, constructor(private ngZone: NgZone, private element: ElementRef, private message: NzMessageService,
@Inject(StationWeeklyPlanComponent) private parentComponent: any, private http: HttpClient, @Inject(StationWeeklyPlanComponent) private parentComponent: any, private http: HttpClient,
@ -26,7 +26,7 @@ export class ChatWindowComponent implements OnInit {
userId userId
userName userName
ngOnInit(): void { ngOnInit(): void {
ChatWindowComponent.instance = this;
this.userId = JSON.parse(sessionStorage.getItem('userData')).id this.userId = JSON.parse(sessionStorage.getItem('userData')).id
this.userName = JSON.parse(sessionStorage.getItem('userData')).name this.userName = JSON.parse(sessionStorage.getItem('userData')).name
this.chatcontent = this.element.nativeElement.querySelector(`#chatcontent`) this.chatcontent = this.element.nativeElement.querySelector(`#chatcontent`)
@ -38,7 +38,7 @@ export class ChatWindowComponent implements OnInit {
signalR.initSR(this.taskId, this.getAllMessages()); signalR.initSR(this.taskId);
// 接收来自中心的消息 // 接收来自中心的消息
(signalR.SR as any).on('receiveMessage', (message: any) => { (signalR.SR as any).on('receiveMessage', (message: any) => {

26
src/app/home/nav/nav.component.ts

@ -48,19 +48,19 @@ export class NavComponent implements OnInit {
//3.生成周计划新增徽章(新增任务提示) //3.生成周计划新增徽章(新增任务提示)
if (this.router.url.indexOf('weeklyplan') != -1) { // if (this.router.url.indexOf('weeklyplan') != -1) {
if (message.content == '您参与的任务已取消,请点击查看详情。') { // if (message.content == '您参与的任务已取消,请点击查看详情。') {
let data = { signalRData: '' } // let data = { signalRData: '' }
data.signalRData = message // data.signalRData = message
this.newTaskMessage.sendMessage(data);//发布一条消息 // this.newTaskMessage.sendMessage(data);//发布一条消息
} else { // } else {
this.methodService.getTaskDetails(message.planTaskId).then((data: any) => { // this.methodService.getTaskDetails(message.planTaskId).then((data: any) => {
data.signalRData = message // data.signalRData = message
this.newTaskMessage.sendMessage(data);//发布一条消息 // this.newTaskMessage.sendMessage(data);//发布一条消息
}) // })
} // }
} // }
}) })

21
src/app/home/statistic-analysis/home/home.component.html

@ -2,6 +2,10 @@
<div class="topbox"> <div class="topbox">
<div class="top1"> <div class="top1">
<div class="top1-1 fffcard"> <div class="top1-1 fffcard">
<div class="spin" *ngIf="isLoading">
<nz-spin nzSimple></nz-spin>
</div>
<div class="top1-1item flexcolumn"> <div class="top1-1item flexcolumn">
<div class="title"> <div class="title">
任务总数&nbsp;&nbsp;&nbsp;188个 任务总数&nbsp;&nbsp;&nbsp;188个
@ -27,6 +31,9 @@
</div> </div>
</div> </div>
<div class="top1-2 fffcard flexcolumn"> <div class="top1-2 fffcard flexcolumn">
<div class="spin" *ngIf="isLoading">
<nz-spin nzSimple></nz-spin>
</div>
<div class="title "> <div class="title ">
不合格单位趋势图 不合格单位趋势图
</div> </div>
@ -55,8 +62,11 @@
</div> </div>
</div> </div>
<div class="top2"> <div class="top2">
<div class="spin" *ngIf="isLoading">
<nz-spin nzSimple></nz-spin>
</div>
<div class="mapcardbox"> <div class="mapcardbox">
<div class="mapcarditem" *ngFor="let item of maocard"> <div class="mapcarditem" *ngFor="let item of mapcard">
<div class="mapcarditemname"> <div class="mapcarditemname">
<span class="mapcarditemname1"> <span class="mapcarditemname1">
{{item.name}} {{item.name}}
@ -76,6 +86,9 @@
</div> </div>
<div class="top3"> <div class="top3">
<div class="top3-1 fffcard flexcolumn"> <div class="top3-1 fffcard flexcolumn">
<div class="spin" *ngIf="isLoading">
<nz-spin nzSimple></nz-spin>
</div>
<div class="title "> <div class="title ">
企业支持度排名 企业支持度排名
</div> </div>
@ -115,6 +128,9 @@
</div> </div>
</div> </div>
<div class="top3-2 fffcard flexcolumn"> <div class="top3-2 fffcard flexcolumn">
<div class="spin" *ngIf="isLoading">
<nz-spin nzSimple></nz-spin>
</div>
<div class="title"> <div class="title">
持证人数排名 持证人数排名
</div> </div>
@ -148,6 +164,9 @@
</div> </div>
</div> </div>
<div class="bottombox fffcard flexcolumn"> <div class="bottombox fffcard flexcolumn">
<div class="spin" *ngIf="isLoading">
<nz-spin nzSimple></nz-spin>
</div>
<div class="title"> <div class="title">
任务完成情况 任务完成情况
</div> </div>

6
src/app/home/statistic-analysis/home/home.component.scss

@ -222,13 +222,14 @@
flex: 1; flex: 1;
margin-bottom: 18px; margin-bottom: 18px;
display: flex; display: flex;
position: relative;
.top1-1item { .top1-1item {
flex: 1; flex: 1;
} }
} }
.top1-2 { .top1-2 {
position: relative;
flex: 1.3; flex: 1.3;
} }
} }
@ -334,12 +335,14 @@
overflow: hidden; overflow: hidden;
.top3-1 { .top3-1 {
position: relative;
flex: 1.1; flex: 1.1;
margin-bottom: 18px; margin-bottom: 18px;
overflow: hidden; overflow: hidden;
} }
.top3-2 { .top3-2 {
position: relative;
flex: 1; flex: 1;
overflow: hidden; overflow: hidden;
} }
@ -347,5 +350,6 @@
} }
.bottombox { .bottombox {
position: relative;
flex: 0.9; flex: 0.9;
} }

50
src/app/home/statistic-analysis/home/home.component.ts

@ -324,7 +324,7 @@ export class HomeComponent implements OnInit {
] ]
}; };
ngOnInit(): void { async ngOnInit(): Promise<void> {
window.setTimeout(() => { window.setTimeout(() => {
this.mapInit() //初始化地图 this.mapInit() //初始化地图
}, 0) }, 0)
@ -335,24 +335,10 @@ export class HomeComponent implements OnInit {
this.completionOfTaskPie = echarts.init(document.getElementById('completionOfTask1'), null, { devicePixelRatio: 2 }); this.completionOfTaskPie = echarts.init(document.getElementById('completionOfTask1'), null, { devicePixelRatio: 2 });
this.completionOfTaskBar = echarts.init(document.getElementById('completionOfTask2'), null, { devicePixelRatio: 2 }); this.completionOfTaskBar = echarts.init(document.getElementById('completionOfTask2'), null, { devicePixelRatio: 2 });
this.getData() await this.getData()
this.echartsSetData() this.echartsSetData()
} }
//获得统计数据
getData() {
this.http.get('/api/PlanTasks/Dashboard').subscribe((data: any) => {
console.log('统计数据', data)
})
}
echartsSetData() {
this.taskNumCharts && this.taskNumCharts.setOption(this.taskNumChartsOption);
this.disqualificationUnitCharts && this.disqualificationUnitCharts.setOption(this.disqualificationUnitChartsOption);
this.completionOfTaskPie && this.completionOfTaskPie.setOption(this.completionOfTaskPieOption);
this.completionOfTaskBar && this.completionOfTaskBar.setOption(this.completionOfTaskBarOption);
}
assistTaskRankingData = [ assistTaskRankingData = [
{ name: '济南市消防救援支队', num: 28, url: "../../../../assets/statistic-analysis/one.png" }, { name: '济南市消防救援支队', num: 28, url: "../../../../assets/statistic-analysis/one.png" },
{ name: '历下区大队', num: 25, url: "../../../../assets/statistic-analysis/two.png" }, { name: '历下区大队', num: 25, url: "../../../../assets/statistic-analysis/two.png" },
@ -390,13 +376,43 @@ export class HomeComponent implements OnInit {
{ name: '特勤大队', num: 50, type: "up", changeNum: 2 }, { name: '特勤大队', num: 50, type: "up", changeNum: 2 },
] ]
maocard = [ mapcard = [
{ name: "重点单位数量", num: 19273, url: '../../../../assets/statistic-analysis/unit.png' }, { name: "重点单位数量", num: 19273, url: '../../../../assets/statistic-analysis/unit.png' },
{ name: "不合格单位数量", num: 121, url: '../../../../assets/statistic-analysis/ununit.png' }, { name: "不合格单位数量", num: 121, url: '../../../../assets/statistic-analysis/ununit.png' },
{ name: "协作任务数量", num: 102, url: '../../../../assets/statistic-analysis/task.png' } { name: "协作任务数量", num: 102, url: '../../../../assets/statistic-analysis/task.png' }
] ]
//获得统计数据
statisticalData: any
isLoading = false
async getData() {
this.isLoading = true
return new Promise<void>((resolve, reject) => {
this.http.get('/api/PlanTasks/Dashboard').subscribe((data: any) => {
this.statisticalData = data
this.isLoading = false
resolve(data)
})
})
}
echartsSetData() {
console.log('统计数据', this.statisticalData)
let top1_1_left = this.statisticalData['任务']
let top1_1_right = this.statisticalData['协助任务Top5']
let top1_2 = this.statisticalData['任务']
this.taskNumCharts && this.taskNumCharts.setOption(this.taskNumChartsOption);
this.disqualificationUnitCharts && this.disqualificationUnitCharts.setOption(this.disqualificationUnitChartsOption);
this.completionOfTaskPie && this.completionOfTaskPie.setOption(this.completionOfTaskPieOption);
this.completionOfTaskBar && this.completionOfTaskBar.setOption(this.completionOfTaskBarOption);
}
map map
mapInit() { mapInit() {
//创建地图 //创建地图

6
src/app/home/task/station-task-apply/apply/apply.component.html

@ -121,6 +121,12 @@
</div> </div>
</nz-form-item> </nz-form-item>
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="协助任务">协助任务</nz-form-label>
<div style="display: flex;align-items: center;">
{{this.isSupervisor ? '熟悉演练' : '联络指导'}}
</div>
</nz-form-item>
<nz-form-item> <nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="协助机构">协助机构</nz-form-label> <nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="协助机构">协助机构</nz-form-label>
<nz-form-control> <nz-form-control>

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

@ -20,6 +20,7 @@ export class ApplyComponent implements OnInit {
@Input() users?: any; @Input() users?: any;
@Input() mainsupervisorList?: any; @Input() mainsupervisorList?: any;
@Input() assitantsupervisorList?: any; @Input() assitantsupervisorList?: any;
@Input() isSupervisor?: any;
validateForm!: FormGroup; validateForm!: FormGroup;
constructor(private modal: NzModalRef, private fb: FormBuilder, private http: HttpClient, private toTree: TreeService, private message: NzMessageService) { } constructor(private modal: NzModalRef, private fb: FormBuilder, private http: HttpClient, private toTree: TreeService, private message: NzMessageService) { }

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

@ -70,6 +70,7 @@ export class StationTaskApplyComponent implements OnInit {
TaskName: this.searchForm.taskname, TaskName: this.searchForm.taskname,
CompanyName: this.searchForm.unitname, CompanyName: this.searchForm.unitname,
assistantOrganizationId: this.searchForm.or, assistantOrganizationId: this.searchForm.or,
TaskTypes: this.isSupervisor ? ['双随机', '联络指导'] : ['熟悉演练'],
CreatorId: this.isSupervisor ? this.userId : null,//如果是检查员需要传CreatorId只针对这个账户 如果是救援站就不需要 CreatorId: this.isSupervisor ? this.userId : null,//如果是检查员需要传CreatorId只针对这个账户 如果是救援站就不需要
CreationTypes: ['申领任务'], CreationTypes: ['申领任务'],
OrganizationId: this.OrganizationId, OrganizationId: this.OrganizationId,
@ -285,6 +286,7 @@ export class StationTaskApplyComponent implements OnInit {
nzMaskClosable: false, nzMaskClosable: false,
nzComponentParams: { nzComponentParams: {
title: this.isSupervisor ? ["联络指导", "双随机"] : ["熟悉演练"], title: this.isSupervisor ? ["联络指导", "双随机"] : ["熟悉演练"],
isSupervisor: this.isSupervisor,
supervisorList: JSON.parse(JSON.stringify(this.supervisorList)), supervisorList: JSON.parse(JSON.stringify(this.supervisorList)),
organizationList: JSON.parse(JSON.stringify(this.organizationList)), organizationList: JSON.parse(JSON.stringify(this.organizationList)),
users: JSON.parse(JSON.stringify(this.users)), users: JSON.parse(JSON.stringify(this.users)),

6
src/app/home/task/station-task-execution/station-task-execution.component.html

@ -82,7 +82,7 @@
[ngClass]="{'greenborder': item.approvalStatus == '通过','redborder': item.approvalStatus == '驳回'}"> [ngClass]="{'greenborder': item.approvalStatus == '通过','redborder': item.approvalStatus == '驳回'}">
<div class="flexcol tasknamebox"> <div class="flexcol tasknamebox">
<span> <span>
{{item.taskName}} {{item.taskType}}
</span> </span>
<span> <span>
任务名称 任务名称
@ -90,8 +90,8 @@
</div> </div>
<div class="flexcol"> <div class="flexcol">
<span class="ellipsi" [title]="item.lastModificationTime | date:'yyyy-MM-dd'"> <span class="ellipsi" [title]="item.planTime | date:'yyyy-MM-dd'">
{{item.lastModificationTime | date:"yyyy-MM-dd"}} {{item.planTime | date:"yyyy-MM-dd"}}
</span> </span>
<span> <span>
时间 时间

3
src/app/home/task/station-task-execution/station-task-execution.component.ts

@ -71,6 +71,7 @@ export class StationTaskExecutionComponent implements OnInit {
let params = { let params = {
Month: selectedTime, Month: selectedTime,
// OrganizationId: this.OrganizationId, // OrganizationId: this.OrganizationId,
TaskTypes: this.isSupervisor ? ['双随机', '联络指导'] : ['熟悉演练'],
TaskName: this.searchForm.taskname, TaskName: this.searchForm.taskname,
CompanyName: this.searchForm.unitname, CompanyName: this.searchForm.unitname,
SupervisorId: this.isSupervisor ? this.userId : null, SupervisorId: this.isSupervisor ? this.userId : null,
@ -79,7 +80,7 @@ export class StationTaskExecutionComponent implements OnInit {
PageNumber: this.PageNumber, PageNumber: this.PageNumber,
PageSize: this.PageSize PageSize: this.PageSize
} }
this.http.get('/api/PlanTasks/GetMyTasks', { this.http.get('/api/PlanTasks', {
params: params params: params
}).subscribe((data: any) => { }).subscribe((data: any) => {
this.isloading = false this.isloading = false

764
src/app/home/task/station-weekly-plan/dist/station-weekly-plan.component.js vendored

@ -0,0 +1,764 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
exports.__esModule = true;
exports.StationWeeklyPlanComponent = void 0;
var core_1 = require("@angular/core");
var moment = require("moment");
var task_details_component_1 = require("./task-details/task-details.component");
var create_task_component_1 = require("./create-task/create-task.component");
var date_fns_1 = require("date-fns");
var plan_adjustment_component_1 = require("../da-oneself-plan/plan-adjustment/plan-adjustment.component");
var StationWeeklyPlanComponent = /** @class */ (function () {
function StationWeeklyPlanComponent(http, modal, message, viewContainerRef, methodService, newTaskMessage) {
var _this = this;
this.http = http;
this.modal = modal;
this.message = message;
this.viewContainerRef = viewContainerRef;
this.methodService = methodService;
this.newTaskMessage = newTaskMessage;
this.today = new Date();
this.disabledDate = function (current) { return date_fns_1.differenceInCalendarDays(current, _this.today) <= 0; };
this.months = [
{ id: 1, name: '1月', isable: true },
{ id: 2, name: '2月', isable: true },
{ id: 3, name: '3月', isable: true },
{ id: 4, name: '4月', isable: true },
{ id: 5, name: '5月', isable: true },
{ id: 6, name: '6月', isable: true },
{ id: 7, name: '7月', isable: true },
{ id: 8, name: '8月', isable: true },
{ id: 9, name: '9月', isable: true },
{ id: 10, name: '10月', isable: true },
{ id: 11, name: '11月', isable: true },
{ id: 12, name: '12月', isable: true }
];
this.selectedYear = 2022;
//当月有几个周二周四
this.TuesdayThursdayNum = 0;
this.isExpand = true;
this.formatOne = function (percent) { return percent + "%\n\u5B8C\u6210\u7387"; };
this.cardData = [
{ name: '双随机', badgeNum: 0, isDetails: false, isLoading: false, background: '#1D9DFF', icon: 'suiji.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '行政许可', badgeNum: 0, isDetails: false, isLoading: false, background: '#42B983', icon: 'xuke.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '熟悉演练', badgeNum: 0, isDetails: false, isLoading: false, background: '#9D80FF', icon: 'yanlian.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '联络指导', badgeNum: 0, isDetails: false, isLoading: false, background: '#5483EA', icon: 'zhidao.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '消防宣传', badgeNum: 0, isDetails: false, isLoading: false, background: '#FF5D2A', icon: 'xuanchuan.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '投诉举报', badgeNum: 0, isDetails: false, isLoading: false, background: '#5087FF', icon: 'tousu.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '火灾调查', badgeNum: 0, isDetails: false, isLoading: false, background: '#FF404D', icon: 'huozai.png', passed: 0, inspected: 0, percentage: 0, data: [] }
];
this.isLoading = false;
this.PageNumber = 1;
this.PageSize = 9999;
this.stationData = [
{ name: '', isExpand: true, isLoading: false, data: [], allUnitsNum: 0, awaitInspect: 0, inspected: 0, percentage: 0 }
];
this.ischat = false;
}
StationWeeklyPlanComponent.prototype.selectMonth = function (item) {
this.selectedMonth = item.id;
this.initializeData();
this.getTuesdayThursdayNum();
this.getTaskList();
this.getTaskListPass(this.stationData[0]);
};
StationWeeklyPlanComponent.prototype.selectYear = function (e) {
this.selectedYear = e;
this.initializeData();
this.getTuesdayThursdayNum();
this.getTaskList();
this.getTaskListPass(this.stationData[0]);
};
StationWeeklyPlanComponent.prototype.getTuesdayThursdayNum = function () {
var _this = this;
var selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01';
this.http.get("/api/TaskTargets/GetTargetCount/" + selectedTime).subscribe(function (data) {
console.log('最大日期', data);
_this.TuesdayThursdayNum = data;
});
};
StationWeeklyPlanComponent.prototype.expand = function () {
this.isExpand = !this.isExpand;
};
StationWeeklyPlanComponent.prototype.openDetails = function (data, type) {
data.isDetails = type;
data.badgeNum = 0;
};
StationWeeklyPlanComponent.prototype.radioChange = function (e, i, element) {
var _this = this;
element.isLoading = true;
var body = {
isSpread: e
};
this.http.patch("/api/PlanTasks/" + i.id, body).subscribe({
next: function (data) {
_this.message.create('success', e ? '宣传通知已发出' : '取消宣传');
element.isLoading = false;
},
error: function (err) {
_this.message.create('warning', '发送失败');
element.isLoading = false;
}
});
};
StationWeeklyPlanComponent.prototype.checkTime = function (e, i, element) {
var _this = this;
if (e) {
i.planTime = moment(e).format('yyyy-MM-DD');
}
else {
i.planTime = null;
}
element.isLoading = true;
var body = {
planTime: i.planTime
};
this.http.patch("/api/PlanTasks/" + i.id, body).subscribe({
next: function (data) {
_this.message.create('success', '检查日期分配成功');
element.isLoading = false;
},
error: function (err) {
_this.message.create('warning', '检查日期分配失败');
element.isLoading = false;
}
});
};
StationWeeklyPlanComponent.prototype.getAllStation = function () {
var _this = this;
var params = {
ContainsChildren: true,
pageSize: 9999
};
this.http.get('/api/Organizations', {
params: params
}).subscribe(function (data) {
_this.totalCount = data.totalCount;
data.items = data.items.filter(function (element) {
return element.level == 'squadron';
});
data.items.forEach(function (element) {
element.isExpand = false;
element.isLoading = false;
});
_this.stationData = data.items;
});
};
//初始化数据
StationWeeklyPlanComponent.prototype.initializeData = function () {
this.cardData = [
{ name: '双随机', badgeNum: 0, isDetails: false, isLoading: false, background: '#1D9DFF', icon: 'suiji.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '行政许可', badgeNum: 0, isDetails: false, isLoading: false, background: '#42B983', icon: 'xuke.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '熟悉演练', badgeNum: 0, isDetails: false, isLoading: false, background: '#9D80FF', icon: 'yanlian.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '联络指导', badgeNum: 0, isDetails: false, isLoading: false, background: '#5483EA', icon: 'zhidao.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '消防宣传', badgeNum: 0, isDetails: false, isLoading: false, background: '#FF5D2A', icon: 'xuanchuan.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '投诉举报', badgeNum: 0, isDetails: false, isLoading: false, background: '#5087FF', icon: 'tousu.png', passed: 0, inspected: 0, percentage: 0, data: [] },
{ name: '火灾调查', badgeNum: 0, isDetails: false, isLoading: false, background: '#FF404D', icon: 'huozai.png', passed: 0, inspected: 0, percentage: 0, data: [] }
];
this.stationData.forEach(function (element) {
element.isExpand = true;
element.isLoading = false;
element.data = [];
});
};
StationWeeklyPlanComponent.prototype.isShow = function (element) {
var isShow = true;
if (element.creationType == '申领任务') {
if (this.isSupervisor) { //检查员
if ((element.taskType == '熟悉演练' && element.relatedTaskId != null) ||
(element.taskType == '联络指导' && element.approvalStatus == '待处理' && element.relatedTaskId == null)) {
isShow = false;
}
}
else { //消防站
if ((element.taskType == '联络指导' && element.relatedTaskId != null) ||
(element.taskType == '熟悉演练' && element.approvalStatus == '待处理' && element.relatedTaskId == null) ||
(element.taskType == '联络指导' && element.relatedTaskId == null ||
(element.taskType == '双随机' && element.relatedTaskId == null))) {
isShow = false;
}
}
}
return isShow;
};
StationWeeklyPlanComponent.prototype.getTaskList = function () {
return __awaiter(this, void 0, void 0, function () {
var selectedTime, params;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
this.cardData.forEach(function (element) {
element.data = [];
element.percentage = 0;
element.passed = 0;
element.inspected = 0;
});
this.isLoading = true;
selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01';
params = {
Month: selectedTime,
SupervisorId: this.isSupervisor ? this.userId : null,
assistantOrganizationId: this.isSupervisor ? null : this.OrganizationId,
PageNumber: this.PageNumber,
PageSize: this.PageSize,
approvalStatuses: ['待处理', '通过', '驳回', '待检查', '已检查']
};
return [4 /*yield*/, new Promise(function (resolve, reject) {
_this.http.get('/api/PlanTasks', {
params: params
}).subscribe(function (data) {
_this.isLoading = false;
// console.log('任务申请列表', data.items)
data.items.forEach(function (element) {
if (_this.isShow(element)) {
_this.cardData.forEach(function (item, key) {
element.taskType == item.name ? _this.cardData[key].data.push(element) : null;
});
}
});
_this.cardData.forEach(function (element) {
element.data.forEach(function (item) {
item.approvalStatus == '通过' ? element.passed += 1 : null;
item.approvalStatus == '已检查' ? element.inspected += 1 : null;
});
});
_this.cardData.forEach(function (element) {
element.percentage = Math.round((element.inspected / element.data.length) * 100);
});
resolve(data);
console.log('并入卡片数据', _this.cardData);
});
})];
case 1: return [2 /*return*/, _a.sent()];
}
});
});
};
StationWeeklyPlanComponent.prototype.getTaskListPass = function (item) {
return __awaiter(this, void 0, void 0, function () {
var selectedTime, params;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01';
params = {
Month: selectedTime,
approvalStatuses: ['通过', '待检查', '已检查'],
SupervisorId: this.isSupervisor ? this.userId : null,
assistantOrganizationId: this.isSupervisor ? null : this.OrganizationId,
PageNumber: this.PageNumber,
PageSize: this.PageSize,
TaskTypes: this.isSupervisor ? ['双随机', '联络指导'] : ['熟悉演练']
};
item.isLoading = true;
return [4 /*yield*/, new Promise(function (resolve, reject) {
_this.http.get('/api/PlanTasks', {
params: params
}).subscribe(function (data) {
item.isLoading = false;
var 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(function (element) {
if (_this.isShow(element)) {
listData.forEach(function (item, key) {
element.taskType == item.name ? listData[key].data.push(element) : null;
});
}
});
for (var index = 0; index < listData.length; index++) {
var element = listData[index];
if (element.data.length == 0) {
listData.splice(index, 1);
index--;
}
}
item.data = listData;
console.log('当前登录用户所有通过的任务', item);
item.allUnitsNum = 0;
item.awaitInspect = 0;
item.inspected = 0;
item.finished = 0;
item.data.forEach(function (element) {
item.allUnitsNum += element.data.length;
element.data.forEach(function (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);
resolve(data);
});
})];
case 1: return [2 /*return*/, _a.sent()];
}
});
});
};
//接受任务
StationWeeklyPlanComponent.prototype.accept = function (i, item) {
var _this = this;
if (i.approvalStatus == '通过') {
this.message.create('warning', '不能重复接受');
return;
}
if (i.approvalStatus == '待检查') {
this.message.create('warning', '任务处于待检查状态,不能再次接受');
return;
}
this.modal.confirm({
nzTitle: "\u786E\u5B9A\u8981\u63A5\u53D7\u8BE5\u4EFB\u52A1\u5417?",
nzOkText: '确定',
nzOkType: 'default',
nzOnOk: function () {
item.isLoading = true;
_this.http.post("/api/PlanTasks/Approval/" + i.id, null, {
params: {
approvalStatus: '通过'
}
}).subscribe({
next: function (data) {
_this.message.create('success', '已接受');
i.approvalStatus = '通过';
item.isLoading = false;
item.passed += 1;
_this.getTaskListPass(_this.stationData[0]);
},
error: function (err) {
_this.message.create('warning', '接受失败');
item.isLoading = false;
}
});
},
nzCancelText: '取消'
});
};
//拒绝任务
StationWeeklyPlanComponent.prototype.reject = function (i, item) {
var _this = this;
if (i.approvalStatus == '驳回') {
this.message.create('warning', '不能重复驳回');
return;
}
this.modal.confirm({
nzTitle: "\u786E\u5B9A\u8981\u62D2\u7EDD\u8BE5\u4EFB\u52A1\u5417?",
nzOkText: '确定',
nzOkType: 'default',
nzOnOk: function () {
item.isLoading = true;
_this.http.post("/api/PlanTasks/Approval/" + i.id, null, {
params: {
approvalStatus: '驳回'
}
}).subscribe({
next: function (data) {
_this.message.create('success', '已拒绝');
i.approvalStatus = '驳回';
item.isLoading = false;
item.passed -= 1;
_this.getTaskListPass(_this.stationData[0]);
},
error: function (err) {
_this.message.create('warning', '拒绝失败');
item.isLoading = false;
}
});
},
nzCancelText: '取消'
});
};
StationWeeklyPlanComponent.prototype.ngOnInit = function () {
var _this = this;
this.OrganizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId;
this.userId = JSON.parse(sessionStorage.getItem('userData')).id;
this.userName = JSON.parse(sessionStorage.getItem('userData')).name;
this.organizationName = JSON.parse(sessionStorage.getItem('userData')).organizationName;
var roles = JSON.parse(sessionStorage.getItem('userData')).roles;
var isSupervisor = roles.find(function (item) {
return item.name.indexOf('检查') != -1;
});
isSupervisor ? this.isSupervisor = true : this.isSupervisor = false;
if (isSupervisor) {
this.stationData[0].name = this.userName;
}
else {
this.stationData[0].name = this.organizationName;
}
this.selectedMonth = new Date().getMonth() + 1;
// this.getAllStation()
this.getTaskList();
this.getTaskListPass(this.stationData[0]);
this.getTuesdayThursdayNum();
setTimeout(function () {
_this.rollStart();
}, 0);
this.newTaskMessage.getMessage().subscribe(function (data) {
console.log('具体任务信息', data);
if (data.signalRData.content == '您有一条新的一体化任务,请注意查收。') {
_this.cardData.forEach(function (item) {
if (item.name == data.taskType) {
item.data.unshift(data);
if (!item.isDetails) {
item.badgeNum += 1;
}
if (data.approvalStatus == '通过') {
item.passed += 1;
_this.getTaskListPass(_this.stationData[0]);
}
}
});
}
if (data.signalRData.content == '您参与的任务已取消,请点击查看详情。') {
_this.cardData.forEach(function (item) {
if (item.name == data.taskType) {
for (var index = 0; index < item.data.length; index++) {
var element = item.data[index];
if (element.id == data.signalRData.planTaskId) {
item.data.splice(index, 1);
index--;
}
}
if (!item.isDetails) {
item.badgeNum -= 1;
}
_this.getTaskListPass(_this.stationData[0]);
}
});
}
});
};
StationWeeklyPlanComponent.prototype.rollStart = function () {
var ROLL_SPEED = 100;
var noticeList1 = document.getElementById('notice-list');
var noticeList2 = document.getElementById('notice-list-2');
var listWrapper = document.getElementById('list-wrapper');
noticeList2.innerHTML = noticeList1.innerHTML;
this.timer = setInterval(rollStart, ROLL_SPEED);
function rollStart() {
if (Math.abs(_subStr(listWrapper.style.top)) >= noticeList1.clientHeight) {
listWrapper.style.top = '0px';
}
else {
var top = listWrapper.style.top;
listWrapper.style.top = _subStr(top) - 1 + 'px';
}
}
// 截取px前数值
function _subStr(str) {
var index = str.indexOf('px');
if (index > -1) {
return parseFloat(str.substr(0, index + 1));
}
}
};
StationWeeklyPlanComponent.prototype.mouseEnter = function () {
window.clearInterval(this.timer);
};
StationWeeklyPlanComponent.prototype.mouseleave = function () {
this.rollStart();
};
StationWeeklyPlanComponent.prototype.ngOnDestroy = function () {
console.log('退出了');
this.mouseEnter();
};
StationWeeklyPlanComponent.prototype.expandcarditem = function (item) {
item.isExpand = !item.isExpand;
};
//获得消防站下的所有任务
StationWeeklyPlanComponent.prototype.getTaskListOfStation = function (item) {
var _this = this;
var selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01';
var params = {
Month: selectedTime,
CompanyOrganizationId: item.id,
PageNumber: this.PageNumber,
approvalStatuses: ['通过', '待检查', '已检查'],
PageSize: this.PageSize
};
item.isLoading = true;
this.http.get('/api/PlanTasks', {
params: params
}).subscribe({
next: function (data) {
item.isLoading = false;
var 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(function (element) {
listData.forEach(function (item, key) {
element.taskType == item.name ? listData[key].data.push(element) : null;
});
});
for (var index = 0; index < listData.length; index++) {
var element = listData[index];
if (element.data.length == 0) {
listData.splice(index, 1);
index--;
}
}
item.data = listData;
console.log('当前登录用户所有通过的任务', item);
item.allUnitsNum = 0;
item.awaitInspect = 0;
item.inspected = 0;
item.finished = 0;
item.data.forEach(function (element) {
item.allUnitsNum += element.data.length;
element.data.forEach(function (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: function (err) {
_this.message.create('warning', '获取数据失败');
item.isLoading = false;
}
});
};
StationWeeklyPlanComponent.prototype.taskDetails = function (item) {
var _this = this;
// console.log(item)
var modal = this.modal.create({
nzTitle: item.name,
nzContent: task_details_component_1.TaskDetailsComponent,
nzViewContainerRef: this.viewContainerRef,
nzWidth: 900,
nzMaskClosable: false,
nzFooter: null,
nzComponentParams: {
data: item,
parent: this
}
});
var instance = modal.getContentComponent();
modal.afterOpen.subscribe(function () { return console.log('[afterOpen] emitted!'); });
modal.afterClose.subscribe(function (result) {
// item
// this.getTaskList()
_this.getTaskListPass(_this.stationData[0]);
});
};
StationWeeklyPlanComponent.prototype.apply = function (item) {
var _this = this;
var modal = this.modal.create({
nzTitle: '新增' + item.name + '任务',
nzContent: create_task_component_1.CreateTaskComponent,
nzViewContainerRef: this.viewContainerRef,
nzWidth: 660,
nzMaskClosable: false,
nzComponentParams: {
title: item.name
},
nzOnOk: function () { return __awaiter(_this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
console.log(instance.validateForm.value);
if (!instance.validateForm.valid) return [3 /*break*/, 2];
return [4 /*yield*/, new Promise(function (resolve, reject) {
var selectedMonth = _this.selectedMonth < 10 ? "0" + _this.selectedMonth : _this.selectedMonth;
var selectedTime = _this.selectedYear + '-' + selectedMonth + '-' + '01';
var body = {
month: selectedTime,
taskName: instance.validateForm.value.taskname,
taskType: instance.validateForm.value.taskname,
companyId: instance.validateForm.value.unitname.id,
organizationId: _this.OrganizationId,
supervisorIds: _this.isSupervisor ? [_this.userId] : [],
assistantOrganizationIds: _this.isSupervisor ? [] : [_this.OrganizationId],
creationType: '自主任务',
approvalStatus: '通过'
};
_this.http.post('/api/PlanTasks', body).subscribe({
next: function (data) {
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);
return true;
},
error: function (err) {
_this.message.create('warning', '创建失败');
reject(err);
return false;
}
});
})];
case 1:
_a.sent();
return [3 /*break*/, 3];
case 2:
this.message.create('warning', '请填写完整!');
return [2 /*return*/, false];
case 3: return [2 /*return*/];
}
});
}); }
});
var instance = modal.getContentComponent();
modal.afterOpen.subscribe(function () { return console.log('[afterOpen] emitted!'); });
modal.afterClose.subscribe(function (result) { return console.log('[afterClose] The result is:', result); });
};
StationWeeklyPlanComponent.prototype.createTask = function (element) {
var _this = this;
console.log(element);
var taskIds = [];
element.data.forEach(function (item) {
item.data.forEach(function (i) {
i.planTime && i.approvalStatus != '已检查' ? taskIds.push(i.id) : null;
});
});
var params = {
ids: taskIds,
approvalStatus: '待检查'
};
this.http.post('/api/PlanTasks/ApprovalMany', null, { params: params }).subscribe({
next: function (data) {
_this.getTaskListPass(_this.stationData[0]);
_this.message.create('success', '发布成功');
},
error: function (err) {
_this.message.create('warning', '发布失败');
}
});
};
StationWeeklyPlanComponent.prototype.adjustment = function (item) {
var _this = this;
var selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01';
var modal = this.modal.create({
nzTitle: "任务调整",
nzContent: plan_adjustment_component_1.PlanAdjustmentComponent,
nzViewContainerRef: this.viewContainerRef,
nzWidth: 900,
nzFooter: null,
nzComponentParams: {
data: JSON.parse(JSON.stringify(item)),
time: selectedTime,
level: '非大队'
}
});
var instance = modal.getContentComponent();
modal.afterClose.subscribe(function (result) {
_this.getTaskList();
_this.getTaskListPass(_this.stationData[0]);
});
};
StationWeeklyPlanComponent.prototype.allPass = function (item) {
var _this = this;
console.log(item);
this.modal.confirm({
nzTitle: "\u786E\u5B9A\u8981\u5168\u90E8\u63A5\u53D7\u8BE5\u6A21\u5757\u4E0B\u6240\u6709\u4EFB\u52A1\u5417?",
nzOkText: '确定',
nzOkType: 'default',
nzOnOk: function () {
var ids = [];
item.data.forEach(function (element) {
if (element.approvalStatus == '待处理' || element.approvalStatus == '驳回')
ids.push(element.id);
});
_this.http.post("/api/PlanTasks/ApprovalMany", null, {
params: {
ids: ids,
approvalStatus: '通过'
}
}).subscribe({
next: function (data) {
_this.message.create('success', '成功');
item.data.forEach(function (element) {
element.approvalStatus = '通过';
});
_this.getTaskListPass(_this.stationData[0]);
},
error: function (err) {
_this.message.create('warning', '失败');
item.isLoading = false;
}
});
},
nzCancelText: '取消'
});
};
StationWeeklyPlanComponent.prototype.openchat = function (item) {
console.log(item);
this.taskId = item.id;
this.ischat = true;
};
StationWeeklyPlanComponent.prototype.closechat = function () {
this.ischat = false;
};
StationWeeklyPlanComponent = __decorate([
core_1.Component({
selector: 'app-station-weekly-plan',
templateUrl: './station-weekly-plan.component.html',
styleUrls: ['./station-weekly-plan.component.scss']
})
], StationWeeklyPlanComponent);
return StationWeeklyPlanComponent;
}());
exports.StationWeeklyPlanComponent = StationWeeklyPlanComponent;

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

@ -99,20 +99,23 @@
<p class="itemtwocontentitemp1"> <p class="itemtwocontentitemp1">
<span class="itemtwocontentitemp1name">{{i.company.companyName}}</span> <span class="itemtwocontentitemp1name">{{i.company.companyName}}</span>
<span class="marginr5"> <span class="marginr5">
<span class="green" *ngIf="isExpand && i.approvalStatus!='已检查'" <span class="green"
*ngIf="isExpand && i.approvalStatus!='已检查' && !i.relatedTaskId"
(click)="accept(i,item)">接受</span> (click)="accept(i,item)">接受</span>
<span class="red" *ngIf="isExpand && i.approvalStatus!='已检查'" <span class="red"
*ngIf="isExpand && i.approvalStatus!='已检查' && !i.relatedTaskId"
(click)="reject(i,item)">拒绝</span> (click)="reject(i,item)">拒绝</span>
<span *ngIf="isExpand">{{i.approvalStatus}}</span> <span *ngIf="isExpand">({{i.approvalStatus}})</span>
</span> </span>
</p> </p>
<p>{{i.company.organization.name}}</p> <p>{{i.company.organization.name}}</p>
<p class="marginr5"> <p class="marginr5">
<span class=" green" *ngIf="!isExpand && i.approvalStatus!='已检查'" <span class=" green"
*ngIf="!isExpand && i.approvalStatus!='已检查' && !i.relatedTaskId"
(click)="accept(i,item)">接受</span> (click)="accept(i,item)">接受</span>
<span class="red" *ngIf="!isExpand && i.approvalStatus!='已检查'" <span class="red" *ngIf="!isExpand && i.approvalStatus!='已检查' && !i.relatedTaskId"
(click)="reject(i,item)">拒绝</span> (click)="reject(i,item)">拒绝</span>
<span *ngIf="!isExpand">{{i.approvalStatus}}</span> <span *ngIf="!isExpand">({{i.approvalStatus}})</span>
</p> </p>
</div> </div>
</div> </div>

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

@ -177,6 +177,27 @@ export class StationWeeklyPlanComponent implements OnInit {
isShow(element) {
let isShow = true
if (element.creationType == '申领任务') {
if (this.isSupervisor) {//检查员
if ((element.taskType == '熟悉演练' && element.relatedTaskId != null) ||
(element.taskType == '联络指导' && element.approvalStatus == '待处理' && element.relatedTaskId == null)
) {
isShow = false
}
} else {//消防站
if ((element.taskType == '联络指导' && element.relatedTaskId != null) ||
(element.taskType == '熟悉演练' && element.approvalStatus == '待处理' && element.relatedTaskId == null) ||
(element.taskType == '联络指导' && element.relatedTaskId == null ||
(element.taskType == '双随机' && element.relatedTaskId == null))) {
isShow = false
}
}
}
return isShow
}
isLoading = false isLoading = false
PageNumber = 1 PageNumber = 1
PageSize = 9999 PageSize = 9999
@ -195,6 +216,7 @@ export class StationWeeklyPlanComponent implements OnInit {
assistantOrganizationId: this.isSupervisor ? null : this.OrganizationId, assistantOrganizationId: this.isSupervisor ? null : this.OrganizationId,
PageNumber: this.PageNumber, PageNumber: this.PageNumber,
PageSize: this.PageSize, PageSize: this.PageSize,
approvalStatuses: ['待处理', '通过', '驳回', '待检查', '已检查'] approvalStatuses: ['待处理', '通过', '驳回', '待检查', '已检查']
} }
return await new Promise<void>((resolve, reject) => { return await new Promise<void>((resolve, reject) => {
@ -203,11 +225,16 @@ export class StationWeeklyPlanComponent implements OnInit {
}).subscribe((data: any) => { }).subscribe((data: any) => {
this.isLoading = false this.isLoading = false
// console.log('任务申请列表', data.items); // console.log('任务申请列表', data.items)
data.items.forEach(element => { data.items.forEach(element => {
if (this.isShow(element)) {
this.cardData.forEach((item, key) => { this.cardData.forEach((item, key) => {
element.taskType == item.name ? this.cardData[key].data.push(element) : null element.taskType == item.name ? this.cardData[key].data.push(element) : null
}); });
}
}); });
this.cardData.forEach(element => { this.cardData.forEach(element => {
@ -238,7 +265,8 @@ export class StationWeeklyPlanComponent implements OnInit {
SupervisorId: this.isSupervisor ? this.userId : null, SupervisorId: this.isSupervisor ? this.userId : null,
assistantOrganizationId: this.isSupervisor ? null : this.OrganizationId, assistantOrganizationId: this.isSupervisor ? null : this.OrganizationId,
PageNumber: this.PageNumber, PageNumber: this.PageNumber,
PageSize: this.PageSize PageSize: this.PageSize,
TaskTypes: this.isSupervisor ? ['双随机', '联络指导'] : ['熟悉演练'],
} }
item.isLoading = true item.isLoading = true
return await new Promise<void>((resolve, reject) => { return await new Promise<void>((resolve, reject) => {
@ -258,9 +286,12 @@ export class StationWeeklyPlanComponent implements OnInit {
{ name: '火灾调查', background: '#FF404D', icon: 'huozai.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 => { data.items.forEach(element => {
if (this.isShow(element)) {
listData.forEach((item, key) => { listData.forEach((item, key) => {
element.taskType == item.name ? listData[key].data.push(element) : null element.taskType == item.name ? listData[key].data.push(element) : null
}); });
}
}); });
for (let index = 0; index < listData.length; index++) { for (let index = 0; index < listData.length; index++) {
const element = listData[index]; const element = listData[index];
@ -296,6 +327,14 @@ export class StationWeeklyPlanComponent implements OnInit {
//接受任务 //接受任务
accept(i, item) { accept(i, item) {
if (i.approvalStatus == '通过') {
this.message.create('warning', '不能重复接受');
return
}
if (i.approvalStatus == '待检查') {
this.message.create('warning', '任务处于待检查状态,不能再次接受');
return
}
this.modal.confirm({ this.modal.confirm({
nzTitle: `确定要接受该任务吗?`, nzTitle: `确定要接受该任务吗?`,
nzOkText: '确定', nzOkText: '确定',
@ -325,6 +364,10 @@ export class StationWeeklyPlanComponent implements OnInit {
} }
//拒绝任务 //拒绝任务
reject(i, item) { reject(i, item) {
if (i.approvalStatus == '驳回') {
this.message.create('warning', '不能重复驳回');
return
}
this.modal.confirm({ this.modal.confirm({
nzTitle: `确定要拒绝该任务吗?`, nzTitle: `确定要拒绝该任务吗?`,
nzOkText: '确定', nzOkText: '确定',

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

@ -145,19 +145,24 @@
<td>{{item.company.companyName}}</td> <td>{{item.company.companyName}}</td>
<td class="editOr"> <td class="editOr">
<span class="name"> <span class="name">
<ng-container
*ngIf="(item.supervisors.length == 0 && item.assistantOrganizations.length == 0); else elseTemplate666">
<span>{{item.organization.name}}</span> <span>{{item.organization.name}}</span>
<span *ngFor="let i of item.supervisors"> </ng-container>
/{{i.name}} <ng-template #elseTemplate666>
<span *ngFor="let i of item.supervisors" style="margin-right: 6px;">
{{i.name}}
</span> </span>
<span *ngFor="let i of item.assistantOrganizations"> <span *ngFor="let i of item.assistantOrganizations" style="margin-right: 6px;">
/{{i.name}} {{i.name}}
</span> </span>
</ng-template>
</span> </span>
<span class="blue" (click)="editOr(complaint,item)" <span class="blue" (click)="editOr(complaint,item)"
[ngClass]="{'forbid': item.approvalStatus == '通过'}">修改机构</span> [ngClass]="{'forbid': item.approvalStatus != '未派发'}">修改机构</span>
</td> </td>
<td style="padding:0 2px!important;"> <td style="padding:0 2px!important;">
<textarea [disabled]="item.approvalStatus == '通过'" nzAutosize <textarea [disabled]="item.approvalStatus != '未派发'" nzAutosize
[(ngModel)]="item.description" style="border: 0;" rows="1" nz-input [(ngModel)]="item.description" style="border: 0;" rows="1" nz-input
placeholder="一段简短的说明文字..." placeholder="一段简短的说明文字..."
(ngModelChange)="taskDescChange(complaint,item)"></textarea> (ngModelChange)="taskDescChange(complaint,item)"></textarea>
@ -312,19 +317,24 @@
<td>{{item.company.companyName}}</td> <td>{{item.company.companyName}}</td>
<td class="editOr"> <td class="editOr">
<span class="name"> <span class="name">
<ng-container
*ngIf="(item.supervisors.length == 0 && item.assistantOrganizations.length == 0); else elseTemplate677">
<span>{{item.organization.name}}</span> <span>{{item.organization.name}}</span>
<span *ngFor="let i of item.supervisors"> </ng-container>
/{{i.name}} <ng-template #elseTemplate677>
<span *ngFor="let i of item.supervisors" style="margin-right: 6px;">
{{i.name}}
</span> </span>
<span *ngFor="let i of item.assistantOrganizations"> <span *ngFor="let i of item.assistantOrganizations" style="margin-right: 6px;">
/{{i.name}} {{i.name}}
</span> </span>
</ng-template>
</span> </span>
<span class="blue" (click)="editOr(permission,item)" <span class="blue" (click)="editOr(permission,item)"
[ngClass]="{'forbid': item.approvalStatus == '通过'}">修改机构</span> [ngClass]="{'forbid': item.approvalStatus != '未派发'}">修改机构</span>
</td> </td>
<td style="padding:0 2px!important;"> <td style="padding:0 2px!important;">
<textarea [disabled]="item.approvalStatus == '通过'" nzAutosize <textarea [disabled]="item.approvalStatus != '未派发'" nzAutosize
[(ngModel)]="item.description" style="border: 0;" rows="1" nz-input [(ngModel)]="item.description" style="border: 0;" rows="1" nz-input
placeholder="一段简短的说明文字..." placeholder="一段简短的说明文字..."
(ngModelChange)="taskDescChange(permission,item)"></textarea> (ngModelChange)="taskDescChange(permission,item)"></textarea>

11
src/signalRChat.ts

@ -1,8 +1,10 @@
import * as signalR from '@microsoft/signalr' import * as signalR from '@microsoft/signalr'
// import ChatWindowComponent from 'src/app/home/commonComponents/chat-window/chat-window.component'
export default { export default {
SR: {}, SR: {},
// 初始化连接 // 初始化连接
initSR: function (id, fun) { initSR: function (id) {
const that = this const that = this
// // 连接 SignalR // // 连接 SignalR
const options: signalR.IHttpConnectionOptions = { const options: signalR.IHttpConnectionOptions = {
@ -25,13 +27,18 @@ export default {
try { try {
await (that.SR as any).start().then(() => { await (that.SR as any).start().then(() => {
console.log('加入聊天室', id) console.log('加入聊天室', id)
setTimeout(() => {
that.SR.send("joinRoom", id).then(() => { that.SR.send("joinRoom", id).then(() => {
setTimeout(() => { setTimeout(() => {
fun
}, 0); }, 0);
}) })
}, 0);
}); });
} catch (err) { } catch (err) {

Loading…
Cancel
Save