Browse Source

[新增]救援站申请任务对接接口

非煤矿山灾害智能感知和预警系统
邵佳豪 3 years ago
parent
commit
180ef35a52
  1. 2
      package.json
  2. 2
      src/app/CustomReuseStrategy.ts
  3. 10
      src/app/home/home.module.ts
  4. 1
      src/app/home/task/da-subordinate-audit/allot-person/allot-person.component.html
  5. 0
      src/app/home/task/da-subordinate-audit/allot-person/allot-person.component.scss
  6. 15
      src/app/home/task/da-subordinate-audit/allot-person/allot-person.component.ts
  7. 50
      src/app/home/task/da-subordinate-audit/da-subordinate-audit.component.html
  8. 68
      src/app/home/task/da-subordinate-audit/da-subordinate-audit.component.ts
  9. 6
      src/app/home/task/station-task-apply/apply-look/apply-look.component.html
  10. 32
      src/app/home/task/station-task-apply/apply-look/apply-look.component.ts
  11. 12
      src/app/home/task/station-task-apply/apply/apply.component.html
  12. 77
      src/app/home/task/station-task-apply/apply/apply.component.ts
  13. 57
      src/app/home/task/station-task-apply/station-task-apply.component.html
  14. 10
      src/app/home/task/station-task-apply/station-task-apply.component.scss
  15. 123
      src/app/home/task/station-task-apply/station-task-apply.component.ts
  16. 34
      src/app/home/task/station-task-execution/station-task-execution.component.html
  17. 9
      src/app/home/task/station-task-execution/station-task-execution.component.scss
  18. 27
      src/app/home/task/station-task-execution/station-task-execution.component.ts
  19. 16
      src/app/home/task/zhi-indicators/zhi-indicators.component.html
  20. 5
      src/app/home/task/zhi-indicators/zhi-indicators.component.scss
  21. 100
      src/app/home/task/zhi-indicators/zhi-indicators.component.ts
  22. 5
      src/app/service/cache-token.service.ts
  23. 7
      src/theme.less

2
package.json

@ -3,7 +3,7 @@
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve --proxy-config proxy.config.json --open --port 4000 ",
"start": "ng serve --proxy-config proxy.config.json --open --port 8888 ",
"build": "ng build",
"watch": "ng build --watch --configuration development",
"test": "ng test"

2
src/app/CustomReuseStrategy.ts

@ -15,7 +15,7 @@ export class CustomReuseStrategy implements RouteReuseStrategy {
/** 表示对所有路由允许复用 如果你有路由不想利用可以在这加一些业务逻辑判断 */
shouldDetach(route: ActivatedRouteSnapshot): boolean {
// console.log('shouldDetach======>', route);
if (route.routeConfig.path == 'basicInfo' || route.routeConfig.path == '') {
if (route.routeConfig.path == 'basicInfo' || route.routeConfig.path == '' || route.routeConfig.path == 'indicators') {
return false;
} else {
return true;

10
src/app/home/home.module.ts

@ -53,6 +53,8 @@ import { ApplyLookComponent } from './task/station-task-apply/apply-look/apply-l
import { NzDatePickerModule } from 'ng-zorro-antd/date-picker';
import { LookTaskComponent } from './task/zhi-audit/look-task/look-task.component';
import { UnitEditComponent } from './basic-info/unit-edit/unit-edit.component';
import { NzSpinModule } from 'ng-zorro-antd/spin';
import { AllotPersonComponent } from './task/da-subordinate-audit/allot-person/allot-person.component';
@NgModule({
declarations: [
NavComponent,
@ -83,7 +85,8 @@ import { UnitEditComponent } from './basic-info/unit-edit/unit-edit.component';
ApplyComponent,
ApplyLookComponent,
LookTaskComponent,
UnitEditComponent
UnitEditComponent,
AllotPersonComponent
],
imports: [
CommonModule,
@ -111,8 +114,9 @@ import { UnitEditComponent } from './basic-info/unit-edit/unit-edit.component';
ScrollingModule,
NzGridModule,
NzRadioModule,
NzDatePickerModule
NzDatePickerModule,
NzSpinModule
],
entryComponents: [AddroleComponent, EditroleComponent, AdduserComponent, EdituserComponent, AddorComponent, EditorComponent, ApplyComponent, ApplyLookComponent, LookTaskComponent]
entryComponents: [AddroleComponent, EditroleComponent, AdduserComponent, EdituserComponent, AddorComponent, EditorComponent, ApplyComponent, ApplyLookComponent, LookTaskComponent, AllotPersonComponent]
})
export class HomeModule { }

1
src/app/home/task/da-subordinate-audit/allot-person/allot-person.component.html

@ -0,0 +1 @@
<p>allot-person works!</p>

0
src/app/home/task/da-subordinate-audit/allot-person/allot-person.component.scss

15
src/app/home/task/da-subordinate-audit/allot-person/allot-person.component.ts

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-allot-person',
templateUrl: './allot-person.component.html',
styleUrls: ['./allot-person.component.scss']
})
export class AllotPersonComponent implements OnInit {
constructor() { }
ngOnInit(): void {
}
}

50
src/app/home/task/da-subordinate-audit/da-subordinate-audit.component.html

@ -12,26 +12,21 @@
</div>
<div class="content">
<div class="tabheader">
<div class="tabtitle" [ngClass]="{'selectedTab': selectedTab == 1}" (click)="selectTab(1)">
<div [ngClass]="{'blue': selectedTab == 1}">
<span>熟悉演练任务</span>
<div *ngFor="let item of data" class="tabtitle" [ngClass]="{'selectedTab': selectedTab == item.id}"
(click)="selectTab(item.id)">
<div [ngClass]="{'blue': selectedTab == item.id}">
<span>{{item.name}}</span>
<span style="margin: 0 8px;"></span>
<span>已审批: 6/8</span>
</div>
</div>
<div class="tabtitle" [ngClass]="{'selectedTab': selectedTab == 2}" (click)="selectTab(2)">
<div [ngClass]="{'blue': selectedTab == 2}">
<span>联络指导任务</span>
<span style="margin: 0 8px;"></span>
<span>已审批: 6/8</span>
<span>已审批: {{item.finished}}/{{item.totalCount}}</span>
</div>
</div>
</div>
<div class="tabbody" *ngIf="selectedTab == 1">
<div class="card redcard">
<div class="tabbody" *ngIf="selectedTab == 0">
<div class="card greencard" [ngClass]="{'redcard': item.approvalStatus == 1}"
*ngFor="let item of data[0].list">
<div class="unitname">
<img src="../../../../assets/images/icon/unit.png" alt="">
<span>上海雅特酒店管理有限公司济南泺文路分公司</span>
<span>{{item.company.companyName}}</span>
</div>
<div class="info">
<span>
@ -44,22 +39,25 @@
</span>
<span class="blue">分配</span>
<span>|</span>
<span>申请人: 历下区A消防救援站</span>
<span class="blue">修改</span>
<span>申请人: {{item.assitantOrganization.name}}</span>
<!-- <span class="blue">修改</span> -->
</div>
<div class="btn">
<button nz-button style="background: #42B983;color: white;">同意</button>
<button nz-button style="background: #FF0000;color: white;margin-left: 20px;">驳回</button>
</div>
<img class="auditimg" src="../../../../assets/images/icon/reject.png" alt="">
<!-- <img class="auditimg" src="../../../../assets/images/icon/agree.png" alt=""> -->
<img *ngIf="item.approvalStatus == 1" class="auditimg" src="../../../../assets/images/icon/reject.png"
alt="">
<img *ngIf="item.approvalStatus == 0" class="auditimg" src="../../../../assets/images/icon/agree.png"
alt="">
</div>
</div>
<div class="tabbody" *ngIf="selectedTab == 2">
<div class="card greencard">
<div class="tabbody" *ngIf="selectedTab == 1">
<div class="card greencard" [ngClass]="{'redcard': item.approvalStatus == 1}"
*ngFor="let item of data[1].list">
<div class="unitname">
<img src="../../../../assets/images/icon/unit.png" alt="">
<span>上海雅特酒店管理有限公司济南泺文路分公司</span>
<span>{{item.company.companyName}}</span>
</div>
<div class="info">
<span>
@ -72,15 +70,17 @@
</span>
<span class="blue">分配</span>
<span>|</span>
<span>申请人: 历下区A消防救援站</span>
<span class="blue">修改</span>
<span>申请人: {{item.assitantOrganization.name}}</span>
<!-- <span class="blue">修改</span> -->
</div>
<div class="btn">
<button nz-button style="background: #42B983;color: white;">同意</button>
<button nz-button style="background: #FF0000;color: white;margin-left: 20px;">驳回</button>
</div>
<!-- <img class="auditimg" src="../../../../assets/images/icon/reject.png" alt=""> -->
<img class="auditimg" src="../../../../assets/images/icon/agree.png" alt="">
<img *ngIf="item.approvalStatus == 1" class="auditimg" src="../../../../assets/images/icon/reject.png"
alt="">
<img *ngIf="item.approvalStatus == 0" class="auditimg" src="../../../../assets/images/icon/agree.png"
alt="">
</div>
</div>
</div>

68
src/app/home/task/da-subordinate-audit/da-subordinate-audit.component.ts

@ -1,3 +1,4 @@
import { HttpClient } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
@Component({
@ -7,9 +8,20 @@ import { Component, OnInit } from '@angular/core';
})
export class DaSubordinateAuditComponent implements OnInit {
constructor() { }
constructor(private http: HttpClient) { }
OrganizationId
selectedTab = 0
selectTab(item) {
this.selectedTab = item
}
ngOnInit(): void {
this.OrganizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId
let month = new Date().getMonth() + 1
this.selectedMonth = month + '月'
this.getTaskList()
}
months = [
{ name: '1月', isable: true },
@ -31,8 +43,56 @@ export class DaSubordinateAuditComponent implements OnInit {
}
selectedTab = 1
selectTab(item) {
this.selectedTab = item
nzLoading = false
PageNumber = 1
PageSize = 9999
data = [
{ id: 0, name: '熟悉演练任务', finished: 0, totalCount: 0, list: [] },
{ id: 1, name: '联络指导任务', finished: 0, totalCount: 0, list: [] }
]
getTaskList() {
this.nzLoading = true
let params = {
OrganizationId: this.OrganizationId,
PageNumber: this.PageNumber,
PageSize: this.PageSize
}
this.http.get('/api/PlanTasks', {
params: params
}).subscribe((data: any) => {
this.nzLoading = false
let arr1 = []
let arr2 = []
data.items.forEach(element => {
if (element.taskName == '熟悉演练') {
arr1.push(element)
}
if (element.taskName == '联络指导') {
arr2.push(element)
}
});
arr1.forEach(item => {
if (!!item.approvalStatus) {
this.data[0].finished += 1
}
});
arr2.forEach(item => {
if (!!item.approvalStatus) {
this.data[1].finished += 1
}
});
this.data[0].totalCount = arr1.length
this.data[0].list = [...arr1]
this.data[1].totalCount = arr2.length
this.data[1].list = [...arr2]
})
}
}

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

@ -1,6 +1,6 @@
<div class="box applymodel">
<p>任务名称: 熟悉演练</p>
<p>单位名称: 上海雅特酒店管理有限公司济南泺文路分公司</p>
<p>协助机构: 历下区A消防救援站</p>
<p>任务名称: {{data.taskName}}</p>
<p>单位名称: {{data.company.companyName}}</p>
<p>协助机构: {{data.assitantOrganization.name}}</p>
</div>

32
src/app/home/task/station-task-apply/apply-look/apply-look.component.ts

@ -11,44 +11,16 @@ import { TreeService } from 'src/app/service/tree.service';
})
export class ApplyLookComponent implements OnInit {
@Input() title?: string;
@Input() subtitle?: string;
@Input() data?: any;
validateForm!: FormGroup;
constructor(private modal: NzModalRef, private fb: FormBuilder, private http: HttpClient, private toTree: TreeService) { }
ngOnInit(): void {
this.validateForm = this.fb.group({
taskname: [true, [Validators.required]],
unitname: [null, [Validators.required]],
organization: [null, [Validators.required]]
});
this.getAllOrganization()
console.log(this.data)
}
destroyModal(): void {
this.modal.destroy({ data: 'this the result data' });
}
//获取所有组织机构
nodes: any = []
getAllOrganization() {
// let OrganizationUnitId = sessionStorage.getItem('isGasStation') == 'true' ? JSON.parse(sessionStorage.getItem('userdataOfgasstation')).organization.id : JSON.parse(sessionStorage.getItem('userdata')).organization.id
// let params = {
// OrganizationUnitId: OrganizationUnitId,
// IsContainsChildren: "true"
// }
// this.http.get('/api/services/app/Organization/GetAll', {
// params: params
// }).subscribe((data: any) => {
// data.result.items.forEach(element => {
// if (element.id == OrganizationUnitId) {
// element.parentId = null
// }
// element.key = element.id
// element.title = element.displayName
// });
// this.nodes = [...this.toTree.toTree(data.result.items)]
// })
}
}

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

@ -3,15 +3,19 @@
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="账号">任务名称</nz-form-label>
<nz-form-control>
<label nz-radio formControlName="taskname">熟悉演练</label>
<label nz-radio formControlName="taskname">{{title}}</label>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired nzFor="单位名称">单位名称</nz-form-label>
<nz-form-control>
<nz-input-group>
<input nz-input type="text" formControlName="unitname" placeholder="请输入单位名称" />
</nz-input-group>
<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-select>
<ng-template #renderTemplate>
<nz-spin *ngIf="isLoading"></nz-spin>
</ng-template>
</nz-form-control>
</nz-form-item>
<nz-form-item>

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

@ -3,16 +3,16 @@ import { NzModalRef } from 'ng-zorro-antd/modal';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { HttpClient } from '@angular/common/http';
import { TreeService } from 'src/app/service/tree.service';
import { Observable, of } from 'rxjs';
import { catchError, map } from 'rxjs/operators';
@Component({
selector: 'app-apply',
templateUrl: './apply.component.html',
styleUrls: ['./apply.component.scss']
})
export class ApplyComponent implements OnInit {
@Input() title?: string;
@Input() subtitle?: string;
@Input() nodes?: any;
validateForm!: FormGroup;
constructor(private modal: NzModalRef, private fb: FormBuilder, private http: HttpClient, private toTree: TreeService) { }
@ -23,31 +23,60 @@ export class ApplyComponent implements OnInit {
organization: [null, [Validators.required]]
});
this.getAllOrganization()
}
destroyModal(): void {
this.modal.destroy({ data: 'this the result data' });
}
//获取所有组织机构
nodes: any = []
getAllOrganization() {
// let OrganizationUnitId = sessionStorage.getItem('isGasStation') == 'true' ? JSON.parse(sessionStorage.getItem('userdataOfgasstation')).organization.id : JSON.parse(sessionStorage.getItem('userdata')).organization.id
// let params = {
// OrganizationUnitId: OrganizationUnitId,
// IsContainsChildren: "true"
// }
// this.http.get('/api/services/app/Organization/GetAll', {
// params: params
// }).subscribe((data: any) => {
// data.result.items.forEach(element => {
// if (element.id == OrganizationUnitId) {
// element.parentId = null
// }
// element.key = element.id
// element.title = element.displayName
// });
// this.nodes = [...this.toTree.toTree(data.result.items)]
// })
optionList = [];
selectedUser = null;
isLoading = false;
PageNumber = 0
PageSize = 50
totalCount
loadMore(): Promise<void> {
if (this.optionList.length >= this.totalCount) {
return
}
this.PageNumber += 1
this.isLoading = true;
this.getCompanies()
}
search(value: string) {
this.optionList = []
this.PageNumber = 1
this.isLoading = true;
this.getCompanies(value)
}
async getCompanies(CompanyName?: string) {
let params = {
CompanyName: CompanyName,
OrganizationId: JSON.parse(sessionStorage.getItem('userData')).organizationId,
PageNumber: this.PageNumber,
PageSize: this.PageSize
}
await new Promise<void>((resolve, reject) => {
this.http.get('/api/Companies', {
params: params
}).subscribe((data: any) => {
this.totalCount = data.totalCount
this.isLoading = false;
this.optionList = [...this.optionList, ...data.items];
let map = new Map();
for (let item of this.optionList) {
if (!map.has(item.id)) {
map.set(item.id, item);
};
};
this.optionList = [...map.values()];
resolve(data)
})
})
}
}

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

@ -13,45 +13,70 @@
</div>
<div class="searchbox">
<div class="search">
<input type="text" nz-input placeholder="任务名称" [(ngModel)]="searchForm.taskname" />
<nz-select nzPlaceHolder="任务名称" [(ngModel)]="searchForm.taskname">
<nz-option nzValue="监督检查" nzLabel="监督检查"></nz-option>
<nz-option nzValue="熟悉演练" nzLabel="熟悉演练"></nz-option>
</nz-select>
<input type="text" nz-input placeholder="单位名称" [(ngModel)]="searchForm.unitname" />
<input type="text" nz-input placeholder="单位级别" [(ngModel)]="searchForm.unitlevel" />
<input type="text" nz-input placeholder="协助机构" [(ngModel)]="searchForm.or" />
<button nz-button nzType="primary"><i nz-icon nzType="search" nzTheme="outline"></i>查询</button>
<button nz-button nzType="default"><i nz-icon nzType="reload" nzTheme="outline"></i>重置</button>
<!-- <nz-select nzPlaceHolder="单位级别" [(ngModel)]="searchForm.unitlevel">
<nz-option nzValue="一般单位" nzLabel="一般单位"></nz-option>
<nz-option nzValue="重点单位" nzLabel="重点单位"></nz-option>
</nz-select> -->
<nz-tree-select [nzExpandedKeys]="expandKeys" [nzNodes]="nodes" nzShowSearch nzPlaceHolder="协助机构"
[(ngModel)]="searchForm.or" [nzExpandedIcon]="multiExpandedIconTpl"
[nzDropdownClassName]="'maxHeightTreeSelect'" [nzAllowClear]="false"></nz-tree-select>
<ng-template #multiExpandedIconTpl let-node let-origin="origin">
<ng-container *ngIf="node.children.length == 0; else elseTemplate">
</ng-container>
<ng-template #elseTemplate>
<i nz-icon [nzType]="node.isExpanded ? 'caret-down' : 'caret-right'"
class="ant-tree-switcher-line-icon"></i>
</ng-template>
</ng-template>
<button (click)="search()" nz-button nzType="primary"><i nz-icon nzType="search"
nzTheme="outline"></i>查询</button>
<button (click)="reset()" nz-button nzType="default"><i nz-icon nzType="reload"
nzTheme="outline"></i>重置</button>
</div>
</div>
<div class="content">
<div class="applybtn">
<button (click)="apply()" nz-button nzType="primary"><i nz-icon nzType="form" nzTheme="outline"></i>申请</button>
<button (click)="apply()" nz-button nzType="primary"><i nz-icon nzType="form"
nzTheme="outline"></i>申请</button>
</div>
<div class="tablebox">
<nz-table nzBordered #basicTable [nzLoading]="loading" [nzData]="usersLIst" [nzShowPagination]='false'
[nzPageSize]='16'>
<nz-table nzBordered #basicTable [nzLoading]="nzLoading" [nzData]="taskLIst" [nzShowPagination]='false'
[nzPageSize]='10'>
<thead>
<tr>
<th [width]="'15%'">任务名称</th>
<th [width]="'20%'">单位名称</th>
<th>单位级别</th>
<!-- <th>单位级别</th> -->
<th>协助机构</th>
<th>结果</th>
<th>时间</th>
<th [width]="'8%'">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of basicTable.data">
<td>监督检查</td>
<td>
{{item.taskName}}
</td>
<td nzBreakWord>
上海雅特酒店管理有限公司济南泺文路分公司
{{item.company.companyName}}
</td>
<td>
<!-- <td>
一般单位
</td> -->
<td>
{{item.assitantOrganization.name}}
</td>
<td>
历下区A消防救援站
/
</td>
<td>
未发现违法违规情况
{{item.creationTime | date:"yyyy-MM-dd hh:mm:ss"}}
</td>
<td class="operation">
<a class="blue" (click)="look(item)">查看</a>
@ -61,10 +86,10 @@
</nz-table>
</div>
<div class="pagination">
<nz-pagination [nzHideOnSinglePage]="false" [nzPageIndex]="1" [nzTotal]="usersNum" [nzPageSize]="16"
<nz-pagination [nzHideOnSinglePage]="false" [nzPageIndex]="1" [nzTotal]="totalCount" [nzPageSize]="10"
[nzShowTotal]="totalTemplate" nzShowQuickJumper (nzPageIndexChange)="pageChange($event)">
</nz-pagination>
<ng-template #totalTemplate let-total> 16条/页,共{{usersNum}}条 </ng-template>
<ng-template #totalTemplate let-total> 10条/页,共{{totalCount}}条 </ng-template>
</div>
</div>
</div>

10
src/app/home/task/station-task-apply/station-task-apply.component.scss

@ -43,12 +43,18 @@
padding: 0 20px;
align-items: center;
border-bottom: 1px solid #E4E7EC;
.search {
width: 80%;
width: 100%;
display: flex;
justify-content: flex-start;
input {
input,
nz-select,
nz-tree-select {
width: 220px;
margin-right: 16px;
text-align: left;
}
button {

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

@ -23,14 +23,13 @@ export class StationTaskApplyComponent implements OnInit {
unitlevel: '',
or: ''
}
usersNum
loading
usersLIst = [1]
OrganizationId
ngOnInit(): void {
this.OrganizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId
this.getAllOrganization()
this.getTaskList()
}
pageChange($event) {
}
cancel(item, type) {
@ -39,7 +38,75 @@ export class StationTaskApplyComponent implements OnInit {
}
nzLoading = false
totalCount
PageNumber = 1
PageSize = 10
taskLIst = []
getTaskList() {
this.nzLoading = true
let params = {
OrganizationId: this.OrganizationId,
TaskName: this.searchForm.taskname,
CompanyName: this.searchForm.unitname,
AssitantOrganizationId: this.searchForm.or,
PageNumber: this.PageNumber,
PageSize: this.PageSize
}
this.http.get('/api/PlanTasks', {
params: params
}).subscribe((data: any) => {
this.nzLoading = false
console.log('任务申请列表', data);
this.totalCount = data.totalCount
this.taskLIst = [...data.items]
})
}
pageChange($event) {
this.PageNumber = $event
this.getTaskList()
}
search() {
this.PageNumber = 1
this.getTaskList()
}
reset() {
this.PageNumber = 1
this.searchForm = {
taskname: '',
unitname: '',
unitlevel: '',
or: ''
}
this.getTaskList()
}
expandKeys
defaultOrId: string
//获取所有组织机构
nodes: any = []
getAllOrganization() {
let params = {
PageNumber: 1,
PageSize: 9999
}
this.http.get('/api/Organizations', {
params: params
}).subscribe((data: any) => {
data.items.forEach(element => {
element.key = element.id
element.title = element.name
});
this.nodes = [...this.toTree.toTree(data.items)]
})
}
apply() {
if (this.nodes.length == 0) {
this.message.create('warning', '组织机构初始化中,请稍后重试');
return
}
const modal = this.modal.create({
nzTitle: '申请',
nzContent: ApplyComponent,
@ -47,32 +114,31 @@ export class StationTaskApplyComponent implements OnInit {
nzWidth: 660,
nzMaskClosable: false,
nzComponentParams: {
title: '',
subtitle: ''
title: "熟悉演练",
nodes: this.nodes,
},
nzOnOk: async () => {
if (instance.validateForm.valid) {
await new Promise(resolve => {
let roleNames = [...instance.validateForm.value.role, ...instance.validateForm.value.role2]
await new Promise((resolve, reject) => {
let body = {
userName: instance.validateForm.value.account,
name: instance.validateForm.value.name,
organizationUnitId: Number(instance.validateForm.value.organization),
roleNames: roleNames,
phoneNumber: instance.validateForm.value.phonenum,
isActive: true
organizationId: this.OrganizationId,
taskName: "熟悉演练",
companyId: instance.validateForm.value.unitname,
assitantOrganizationId: instance.validateForm.value.organization,
}
// this.http.post(this.addUrl, body).subscribe(data => {
// resolve(data)
// this.message.create('success', '创建成功!');
// this.SkipCount = 0
// this.getAllUsers()
// return true
// }, err => {
// resolve(err)
// this.message.create('warning', err.error.error.message);
// return false
// })
this.http.post('/api/PlanTasks', body).subscribe({
next: (data) => {
this.message.create('success', '创建成功');
resolve(data)
this.getTaskList()
return true
},
error: (err) => {
this.message.create('warning', '创建失败');
reject(err)
return false
}
})
})
} else {
this.message.create('warning', '请填写完整!');
@ -92,10 +158,9 @@ export class StationTaskApplyComponent implements OnInit {
nzWidth: 660,
nzMaskClosable: false,
nzComponentParams: {
title: '',
subtitle: ''
data: item,
},
nzFooter:null,
nzFooter: null,
nzOnOk: async () => {
if (instance.validateForm.valid) {
await new Promise(resolve => {

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

@ -12,13 +12,33 @@
</div>
<div class="searchbox">
<div class="search">
<input type="text" nz-input placeholder="任务名称" [(ngModel)]="searchForm.taskname" />
<input type="text" nz-input placeholder="单位名称" [(ngModel)]="searchForm.unitname" />
<input type="text" nz-input placeholder="单位级别" [(ngModel)]="searchForm.unitlevel" />
<input type="text" nz-input placeholder="协助机构" [(ngModel)]="searchForm.or" />
<input type="text" nz-input placeholder="时间" [(ngModel)]="searchForm.tasktime" />
<button nz-button nzType="primary"><i nz-icon nzType="search" nzTheme="outline"></i>查询</button>
<button nz-button nzType="default"><i nz-icon nzType="reload" nzTheme="outline"></i>重置</button>
<div class="search">
<nz-select nzPlaceHolder="任务名称" [(ngModel)]="searchForm.taskname">
<nz-option nzValue="监督检查" nzLabel="监督检查"></nz-option>
<nz-option nzValue="熟悉演练" nzLabel="熟悉演练"></nz-option>
</nz-select>
<input type="text" nz-input placeholder="单位名称" [(ngModel)]="searchForm.unitname" />
<nz-select nzPlaceHolder="单位级别" [(ngModel)]="searchForm.unitlevel">
<nz-option nzValue="一般单位" nzLabel="一般单位"></nz-option>
<nz-option nzValue="重点单位" nzLabel="重点单位"></nz-option>
</nz-select>
<nz-tree-select [nzExpandedKeys]="expandKeys" [nzNodes]="nodes" nzShowSearch nzPlaceHolder="协助机构"
[(ngModel)]="searchForm.or" [nzExpandedIcon]="multiExpandedIconTpl"
[nzDropdownClassName]="'maxHeightTreeSelect'" [nzAllowClear]="false"></nz-tree-select>
<ng-template #multiExpandedIconTpl let-node let-origin="origin">
<ng-container *ngIf="node.children.length == 0; else elseTemplate">
</ng-container>
<ng-template #elseTemplate>
<i nz-icon [nzType]="node.isExpanded ? 'caret-down' : 'caret-right'"
class="ant-tree-switcher-line-icon"></i>
</ng-template>
</ng-template>
<nz-date-picker [(ngModel)]="searchForm.tasktime">
</nz-date-picker>
<button nz-button nzType="primary"><i nz-icon nzType="search" nzTheme="outline"></i>查询</button>
<button nz-button nzType="default"><i nz-icon nzType="reload" nzTheme="outline"></i>重置</button>
</div>
</div>
</div>
<div class="content">

9
src/app/home/task/station-task-execution/station-task-execution.component.scss

@ -1,7 +1,7 @@
.box {
width: 100%;
height: 100%;
color: #303133;
box-sizing: border-box;
padding: 20px;
@ -47,8 +47,13 @@
width: 100%;
display: flex;
input {
input,
nz-select,
nz-tree-select,
nz-date-picker {
width: 220px;
margin-right: 16px;
text-align: left;
}
button {

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

@ -19,7 +19,7 @@ export class StationTaskExecutionComponent implements OnInit {
tasktime: '',
unitname: '',
unitlevel: '',
or:''
or: ''
}
usersNum
loading
@ -36,4 +36,29 @@ export class StationTaskExecutionComponent implements OnInit {
delete(item) {
}
expandKeys
defaultOrId: string
//获取所有组织机构
nodes: any = []
getAllOrganization() {
let organizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId
let params = {
OrganizationId: organizationId || '',
ContainsChildren: "true",
PageNumber: 1,
PageSize: 9999
}
this.http.get('/api/Organizations', {
params: params
}).subscribe((data: any) => {
data.items.forEach(element => {
if (element.id == organizationId) {
element.parentId = null
}
element.key = element.id
element.title = element.name
});
this.nodes = [...this.toTree.toTree(data.items)]
})
}
}

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

@ -33,7 +33,7 @@
</div>
<div class="popoverContent" *ngIf="doubleRandom.selectedMenu == 1">
<div>
<form nz-form (ngSubmit)="submitForm(doubleRandom.search1)">
<form nz-form (ngSubmit)="submitForm(doubleRandom)">
<nz-form-item>
<nz-form-control>
<nz-input-group nzPrefixIcon="search">
@ -46,6 +46,10 @@
</form>
</div>
<div class="popoverContentitem">
<nz-checkbox-group [(ngModel)]="doubleRandom.unitList"
(ngModelChange)="log(doubleRandom)"></nz-checkbox-group>
<p class="blue" *ngIf="doubleRandom.unitList.length < totalCount"
(click)="moreData()">更多</p>
</div>
</div>
<div class="popoverContent" *ngIf="doubleRandom.selectedMenu == 2">
@ -64,13 +68,14 @@
<div class="popoverContentitem">
<nz-tree [nzHideUnMatched]='true' [nzSearchValue]="doubleRandom.search2"
#nzTreeComponent [nzData]="doubleRandom.nodes" [nzTreeTemplate]="nzTreeTemplate"
nzBlockNode [nzExpandedIcon]="multiExpandedIconTpl">
nzBlockNode (nzClick)="nzEvent($event)"
(nzExpandChange)="nzEvent($event)" [nzExpandedIcon]="multiExpandedIconTpl">
</nz-tree>
<ng-template #nzTreeTemplate let-node let-origin="origin">
<div class="nodebox">
<span class="name">
<label *ngIf="node.origin.isGasStation"
<label *ngIf="node.origin.companyName"
[(ngModel)]="node.origin.isChecked" nz-checkbox
(ngModelChange)="orcheckbox(doubleRandom,$event,node)"></label>
{{ node.title }}
@ -78,7 +83,7 @@
</div>
</ng-template>
<ng-template #multiExpandedIconTpl let-node let-origin="origin">
<ng-container *ngIf="node.children.length == 0; else elseTemplate">
<ng-container *ngIf="node.origin.companyName; else elseTemplate">
</ng-container>
<ng-template #elseTemplate>
@ -130,8 +135,7 @@
</td>
<td style="padding:0 2px!important;">
<textarea [(ngModel)]="item.explain" style="border: 0;" rows="1" nz-input
placeholder="一段简短的说明文字..."
(ngModelChange)="saveItem()"></textarea>
placeholder="一段简短的说明文字..." (ngModelChange)="saveItem()"></textarea>
</td>
</tr>
</tbody>

5
src/app/home/task/zhi-indicators/zhi-indicators.component.scss

@ -130,6 +130,11 @@
.popoverContentitem{
flex: 1;
overflow-y: auto;
display: flex;
flex-direction: column;
p{
text-align: center;
}
}
}

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

@ -4,6 +4,7 @@ import { FormBuilder, FormGroup } from '@angular/forms';
import { TreeService } from 'src/app/service/tree.service';
import { fromEvent, Subject } from 'rxjs';
import { debounceTime } from 'rxjs/operators'; // 引入debounceTime、Subject
import { NzFormatEmitEvent, NzTreeNodeOptions } from 'ng-zorro-antd/tree';
@Component({
selector: 'app-zhi-indicators',
templateUrl: './zhi-indicators.component.html',
@ -18,6 +19,7 @@ export class ZhiIndicatorsComponent implements OnInit {
ngOnInit(): void {
this.getAllOrganization()
this.getCompanies()
//保存防抖
this.valueChange.pipe(debounceTime(1000)).subscribe(data => {
console.log(data);
@ -59,7 +61,8 @@ export class ZhiIndicatorsComponent implements OnInit {
data: [
{ explain: '' }
],//表格数据
nodes: []
nodes: [],
unitList: []
}
// 熟悉演练
@ -72,18 +75,55 @@ export class ZhiIndicatorsComponent implements OnInit {
search2Value: [],
selectedMenu: 1,//选择单位气泡卡片
data: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],//表格数据
nodes: []
nodes: [],
unitList: []
}
PageNumber = 1
PageSize = 50
totalCount: number
getCompanies(CompanyName?: string) {
let params = {
CompanyName: CompanyName,
PageNumber: this.PageNumber,
PageSize: this.PageSize
}
this.http.get('/api/Companies', {
params: params
}).subscribe((data: any) => {
console.log(data);
this.totalCount = data.totalCount
data.items.forEach(element => {
element.label = element.companyName
element.value = element.id
});
this.doubleRandom.unitList = this.doubleRandom.unitList.concat(data.items);
this.doubleRandom.unitList = [...this.doubleRandom.unitList]
})
}
moreData() {
this.PageNumber += 1
this.getCompanies()
}
log(data) {
let arr = []
data.unitList.forEach(item => {
item.checked ? arr.push(item.id) : null
});
data.search1Value = arr
}
isPopover(data) {
data.isPopover = !data.isPopover
}
//搜索框提交
submitForm(value): void {
// console.log(value)
submitForm(data): void {
data.unitList = []
this.PageNumber = 1
this.getCompanies(data.search1)
}
// 弹出 tab
popoverMenuSelect(data, type) {
@ -96,7 +136,7 @@ export class ZhiIndicatorsComponent implements OnInit {
nzExpandAll = false;
totalCount: string
allOrList: any
nodes
@ -108,7 +148,6 @@ export class ZhiIndicatorsComponent implements OnInit {
this.http.get('/api/Organizations', {
params: params
}).subscribe((data: any) => {
this.totalCount = data.totalCount
data.items.forEach(element => {
element.key = element.id
element.title = element.name
@ -134,4 +173,53 @@ export class ZhiIndicatorsComponent implements OnInit {
}
console.log(data.search2Value)
}
ngOnDestroy(): void {
//Called once, before the instance is destroyed.
//Add 'implements OnDestroy' to the class.
console.log('毁灭了')
this.doubleRandom.isPopover = false
}
nzEvent(event: NzFormatEmitEvent): any {
console.log(event);
// load child async
if(event.node.origin.companyName){
return new Promise<void>((resolve, reject) => {
reject()
})
}
if (event.node.origin.level === 3 && !event.node.origin.companyName) {
const node = event.node;
console.log(node?.getChildren())
if (node?.getChildren().length === 0) {
this.loadNode(event.node.origin.id).then(data => {
node.addChildren(data);
});
}
}
}
loadNode(id): Promise<NzTreeNodeOptions[]> {
return new Promise(resolve => {
let params = {
OrganizationId: id,
PageNumber: 1,
PageSize: 9999
}
this.http.get('/api/Companies', {
params: params
}).subscribe((data: any) => {
console.log(data.items)
data.items.forEach(element => {
element.key = element.id
element.title = element.companyName
element.level = 4
});
resolve(data.items)
})
});
}
}

5
src/app/service/cache-token.service.ts

@ -24,7 +24,7 @@ export class CacheTokenService {
sessionStorage.setItem("token", data.token);
sessionStorage.setItem("refreshToken", data.refreshToken);
})
}, 18 * 60 * 1000)
}, 10 * 60 * 1000)
console.log('启动定时刷新token')
}
@ -38,8 +38,5 @@ export class CacheTokenService {
window.clearInterval(this.timer)
}
createTime = (time: string) => {
var newtime = time.substr(0, 4) + '年' + time.substr(5, 2) + '月' + time.substr(8, 2) + '日' + time.substr(11, 8)
}
}

7
src/theme.less

@ -84,3 +84,10 @@
.maxHeightTreeSelect {
max-height: 280px;
}
.ant-checkbox-group{
display: flex;
flex-direction: column;
label{
margin-bottom: 6px;
}
}
Loading…
Cancel
Save