Browse Source

[完善]完善大队月度总览页面

非煤矿山灾害智能感知和预警系统
邵佳豪 3 years ago
parent
commit
68cb1c87ba
  1. 10972
      package-lock.json
  2. 1
      package.json
  3. 2
      src/app/CustomReuseStrategy.ts
  4. 132
      src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.html
  5. 41
      src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.scss
  6. 158
      src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.ts
  7. 2
      src/app/home/task/station-task-apply/station-task-apply.component.scss
  8. 7
      src/app/home/task/station-task-apply/station-task-apply.component.ts
  9. 200
      src/app/home/task/station-task-execution/station-task-execution.component.html
  10. 184
      src/app/home/task/station-task-execution/station-task-execution.component.scss
  11. 228
      src/app/home/task/station-task-execution/station-task-execution.component.ts
  12. 39
      src/app/home/task/station-weekly-plan/station-weekly-plan.component.html
  13. 47
      src/app/home/task/station-weekly-plan/station-weekly-plan.component.scss
  14. 150
      src/app/home/task/station-weekly-plan/station-weekly-plan.component.ts

10972
package-lock.json generated

File diff suppressed because it is too large Load Diff

1
package.json

@ -21,6 +21,7 @@
"@types/file-saver": "^2.0.5",
"file-saver": "^2.0.5",
"js-base64": "^3.7.2",
"moment": "^2.29.4",
"ng-zorro-antd": "^13.0.1",
"ngx-cookie-service": "^13.1.2",
"rxjs": "~7.4.0",

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 == '' || route.routeConfig.path == 'indicators') {
if (route.routeConfig.path == 'basicInfo' || route.routeConfig.path == '' || route.routeConfig.path == 'indicators' || route.routeConfig.path == 'weeklyplan' || route.routeConfig.path == 'taskapply' || route.routeConfig.path == 'taskexecution') {
return false;
} else {
return true;

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

@ -105,15 +105,15 @@
</span>
<span class="blue" (click)="allot(i)">分配</span>
<span>|</span>
<span>申请人: {{i.assitantOrganization.name}}</span>
<span>申请人: {{i.organization.name}}</span>
<!-- <span class="blue">修改</span> -->
</div>
<div class="btn">
<!-- <div class="btn">
<button [ngClass]="{'forbidbtn': i.approvalStatus}" [disabled]="i.approvalStatus"
nz-button (click)="agree(i)">同意</button>
<button [ngClass]="{'forbidbtn': i.approvalStatus}" [disabled]="i.approvalStatus"
nz-button (click)="reject(i)">驳回</button>
</div>
</div> -->
<img *ngIf="i.approvalStatus == 'reject'" class="auditimg"
src="../../../../assets/images/icon/reject.png" alt="">
<img *ngIf="i.approvalStatus == 'approved'" class="auditimg"
@ -180,12 +180,15 @@
<!-- 救援站列表 -->
<div class="stationcardlistbox">
<div class="stationcardlistitembox" *ngFor="let item of stationData">
<div class="stationcardlistitembox" *ngFor="let element of stationData">
<div class="stationcardlistitem">
<div class="spin" *ngIf="element.isLoading">
<nz-spin nzSimple></nz-spin>
</div>
<div class="header">
<span style="width: 16%;">
<img src="../../../../assets//images/icon/station.png" alt="">
{{item.name}}
{{element.name}}
</span>
<span style="width: 8%;">单位总数: 7/8</span>
<div style="width: 66%;" class="progress progresssquare">
@ -193,35 +196,35 @@
<nz-progress nzStrokeLinecap="square" nzStrokeWidth="16" nzStrokeColor="#42B983"
[nzPercent]="30"></nz-progress>
</div>
<button nz-button nzType="primary">任务下派</button>
<span (click)="expandcarditem(item)" class="expand blue">
{{item.isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="item.isExpand ? 'down' : 'up'" nzTheme="outline"></i>
<!-- <button nz-button nzType="primary">任务下派</button> -->
<span (click)="expandcarditem(element)" class="expand blue">
{{element.isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="element.isExpand ? 'down' : 'up'" nzTheme="outline"></i>
</span>
</div>
<div class="maincontent" *ngIf="item.isExpand">
<div class="maincontentitem">
<div class="maincontent" *ngIf="element.isExpand">
<div class="maincontentitem" *ngFor="let item of element.data">
<div class="maincontentitemleft">
<div class="panelheadername panelheadernameor">
<img src="'../../../../assets/images/icon/huodong.png" alt="">
重大活动
<div class="panelheadername" [style]="'background:'+ item.background">
<img [src]="'../../../../assets/images/icon/'+ item.icon" alt="">
{{item.name}}
</div>
<div class="num">
<div class="round" style="background: #2C4DC0;"></div>
<span class="word">已分配</span>
<span class="boldspan">1</span>
<span class="boldspan">0</span>
</div>
<div class="num">
<div class="round" style="background: #42B983;"></div>
<span class="word">已完成</span>
<span class="boldspan">1</span>
<span class="boldspan">0</span>
</div>
</div>
<div class="maincontentitemright">
<div class="maincontentitemrightitem">
<div class="maincontentitemrightitem" *ngFor="let i of item.data">
<div class="flexcol namebox">
<span>
尬粒酒店管理有限公司济南泺文路分公司
{{i.company.companyName}}
</span>
<span>
单位名称
@ -229,7 +232,7 @@
</div>
<div class="flexcol">
<span>
重点单位
{{i.company.useNature}}
</span>
<span>
级别
@ -237,74 +240,33 @@
</div>
<div class="flexcol">
<span>
历下区A消防救援站
{{i.organization.name}}
</span>
<span>
责任机构
</span>
</div>
<div class="flexcol">
<span>
历下区B消防救援站
</span>
<span>
协助机构
</span>
</div>
<div class="flexcol">
<span>
宣传
<div class="flexcol flexcolassistant">
<span class="assistant" nz-tooltip [nzTooltipTitle]="titleTemplate">
<span *ngFor="let o of i.supervisors">
<img *ngIf="o.posts && o.posts[0] == '主查人员'"
src="../../../../assets/images/icon/main.png" alt="">
<img *ngIf="o.posts && o.posts[0] == '协查人员'"
src="../../../../assets/images/icon/assist.png" alt="">
{{o.name}}
</span>
<span>
同步工作
</span>
</div>
<div class="flexcol progressbox progresssquare">
<span>
<nz-progress style="width: 200px;" nzStrokeLinecap="square"
nzStrokeWidth="16" nzStrokeColor="#42B983" [nzPercent]="30">
</nz-progress>
<ng-template #titleTemplate let-thing>
<span style="margin-right: 6px;" *ngFor="let o of i.supervisors">
<img *ngIf="o.posts && o.posts[0] == '主查人员'"
src="../../../../assets/images/icon/main.png" alt="">
<img *ngIf="o.posts && o.posts[0] == '协查人员'"
src="../../../../assets/images/icon/assist.png" alt="">
{{o.name}}
</span>
</ng-template>
<span>
进度
</span>
</div>
<div class="btnbox">
<button nz-button nzType="primary">提交审核</button>
<button style="margin-left: 12px;" nz-button nzType="primary">取消</button>
</div>
</div>
<div class="maincontentitemrightitem">
<div class="flexcol namebox">
<span>
尬粒酒店管理有限公司济南泺文路分公司
</span>
<span>
单位名称
</span>
</div>
<div class="flexcol">
<span>
重点单位
</span>
<span>
级别
</span>
</div>
<div class="flexcol">
<span>
历下区A消防救援站
</span>
<span>
责任机构
</span>
</div>
<div class="flexcol">
<span>
历下区B消防救援站
</span>
<span>
协助机构
协助人员
</span>
</div>
<div class="flexcol">
@ -315,20 +277,15 @@
同步工作
</span>
</div>
<div class="flexcol progressbox progresssquare">
<div class="flexcol">
<span>
<nz-progress style="width: 200px;" nzStrokeLinecap="square"
nzStrokeWidth="16" nzStrokeColor="#42B983" [nzPercent]="30">
</nz-progress>
未发现违法违规情况
</span>
<span>
进度
检查结果
</span>
</div>
<div class="btnbox">
<button nz-button nzType="primary">提交审核</button>
<button style="margin-left: 12px;" nz-button nzType="primary">取消</button>
</div>
</div>
</div>
@ -337,7 +294,6 @@
</div>
</div>
</div>
<!-- -->
<div class="cutoffrule"></div>
</div>

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

@ -56,7 +56,6 @@
.instrumentpanel {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.instrumentpanelitem {
@ -83,7 +82,7 @@
.panelheadername {
width: 80%;
width: 60%;
height: 46px;
line-height: 46px;
text-align: center;
@ -202,9 +201,10 @@
}
.instrumentpanelitemclose {
width: 11.7%;
width: 14%;
height: 250px;
margin-bottom: 0px;
margin-right: 1%;
.itemone {
.instrumentpanelitemleft {
@ -419,6 +419,7 @@
color: #303133;
box-sizing: border-box;
padding: 0 18px;
position: relative;
.header {
width: 100%;
@ -520,7 +521,13 @@
padding: 12px 0px;
border-bottom: 1px dashed #C7CAD0;
div {
flex: 1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.flexcol {
display: flex;
@ -539,21 +546,33 @@
}
.namebox {
width: 28%;
flex: 2;
}
.progressbox {
width: 220px;
.flexcolassistant {
flex: 2;
overflow: hidden;
span:nth-child(1) {
.assistant {
width: 100%;
span {
color: #303133;
margin-right: 6px;
}
img {
width: 16px;
height: 16px;
vertical-align: text-bottom;
}
.btnbox {
display: flex;
justify-content: flex-end;
align-self: flex-start;
display: inline-block;
text-align: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
}

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

@ -13,16 +13,6 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
constructor(private http: HttpClient, private modal: NzModalService, private viewContainerRef: ViewContainerRef, private message: NzMessageService) { }
OrganizationId
ngOnInit(): void {
this.OrganizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId
this.selectedMonth = new Date().getMonth() + 1
this.getTaskList()
//获得主协调查人员
this.getSupervisor('main')
this.getSupervisor('assisted')
}
selectedMonth
selectedYear = 2022
@ -121,6 +111,8 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
this.taskData[1].list = [...arr2]
this.isloading = false
console.log('下级任务申请', this.taskData)
})
}
assitantsupervisorList
@ -189,53 +181,7 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result));
}
agree(item) {
this.modal.confirm({
nzTitle: `确定要同意该申请吗?`,
nzOkText: '确定',
nzOkType: 'default',
nzOnOk: () => {
this.http.post(`/api/PlanTasks/Approval/${item.id}`, null, {
params: {
approvalStatus: 'approved'
}
}).subscribe({
next: (data) => {
this.message.create('success', '审核成功');
this.getTaskList()
},
error: (err) => {
this.message.create('warning', '审核失败');
}
})
},
nzCancelText: '取消'
});
}
reject(item) {
this.modal.confirm({
nzTitle: `确定要驳回该申请吗?`,
nzOkText: '确定',
nzOkType: 'default',
nzOnOk: () => {
this.http.post(`/api/PlanTasks/Approval/${item.id}`, null, {
params: {
approvalStatus: 'reject'
}
}).subscribe({
next: (data) => {
this.message.create('success', '审核成功');
this.getTaskList()
},
error: (err) => {
this.message.create('warning', '审核失败');
}
})
},
nzCancelText: '取消'
});
}
@ -247,13 +193,11 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
cardData = [
{ name: '重大活动', isDetails: false, background: '#FF9203', icon: 'huodong.png' },
{ name: '双随机', isDetails: false, background: '#1D9DFF', icon: 'suiji.png' },
{ name: '行政许可', isDetails: false, background: '#42B983', icon: 'xuke.png' },
{ name: '熟悉演练', isDetails: false, background: '#9D80FF', icon: 'yanlian.png' },
{ name: '联络指导', isDetails: false, background: '#5483EA', icon: 'zhidao.png' },
{ name: '消防宣传', isDetails: false, background: '#FF5D2A', icon: 'xuanchuan.png' },
{ name: '投诉举报', isDetails: false, background: '#5087FF', icon: 'tousu.png' },
{ name: '行政许可', isDetails: false, background: '#42B983', icon: 'xuke.png' },
{ name: '消防宣传', isDetails: false, background: '#FF5D2A', icon: 'xuanchuan.png' },
{ name: '火灾调查', isDetails: false, background: '#FF404D', icon: 'huozai.png' }
]
@ -268,13 +212,97 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
}, 0);
}
stationData = [
{ name: '历下区A消防救援站', isExpand: true },
{ name: '历下区B消防救援站', isExpand: false },
{ name: '历下区C消防救援站', isExpand: false }
]
OrganizationId
ngOnInit(): void {
this.OrganizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId
this.selectedMonth = new Date().getMonth() + 1
this.getTaskList()
//获得主协调查人员
this.getSupervisor('main')
this.getSupervisor('assisted')
this.getAllStation()
}
//获得辖区下所有救援站
stationData = []
getAllStation() {
let params = {
ContainsChildren: true,
pageSize: 9999
}
this.http.get('/api/Organizations', {
params: params
}).subscribe((data: any) => {
data.items = data.items.filter(element => {
return element.level == 'squadron'
});
data.items.forEach(element => {
element.isExpand = false
element.isLoading = false
});
this.stationData = data.items
})
}
expandcarditem(item) {
item.isExpand = !item.isExpand
console.log(item)
if (item.isExpand) {
this.getTaskListOfStation(item)
}
}
//获得消防站下的所有任务
getTaskListOfStation(item) {
let selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01'
let 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: (data: any) => {
item.isLoading = false
let listData = [
{ name: '双随机', background: '#1D9DFF', icon: 'suiji.png', scale: '0/0', data: [] },
{ name: '行政许可', background: '#42B983', icon: 'xuke.png', scale: '0/0', data: [] },
{ name: '熟悉演练', background: '#9D80FF', icon: 'yanlian.png', scale: '0/0', data: [] },
{ name: '联络指导', background: '#5483EA', icon: 'zhidao.png', scale: '0/0', data: [] },
{ name: '消防宣传', background: '#FF5D2A', icon: 'xuanchuan.png', scale: '0/0', data: [] },
{ name: '投诉举报', background: '#5087FF', icon: 'tousu.png', scale: '0/0', data: [] },
{ name: '火灾调查', background: '#FF404D', icon: 'huozai.png', scale: '0/0', data: [] }
]
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--
}
}
item.data = listData
// console.log('点击的救援站通过数据', item)
},
error: (err) => {
this.message.create('warning', '获取数据失败');
item.isLoading = false
}
})
}
}

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

@ -161,7 +161,7 @@
display: flex;
align-items: center;
box-sizing: border-box;
padding: 22px 20px;
padding: 12px 20px;
border: 1px solid #C7CAD0;
justify-content: space-around;
padding-left: 80px;

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

@ -210,7 +210,9 @@ export class StationTaskApplyComponent implements OnInit {
}
});
setTimeout(() => {
this.rollStart()
}, 0);
}
messageList = [1, 1, 1, 1, 1]
@ -248,7 +250,10 @@ export class StationTaskApplyComponent implements OnInit {
this.rollStart()
}
ngOnDestroy(): void {
console.log('退出了')
this.mouseEnter()
}
apply() {
if (this.nodes.length == 0) {
this.message.create('warning', '组织机构为空,请稍后重试');

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

@ -1,9 +1,45 @@
<!-- <p>任务执行!</p> -->
<div class="box">
<div class="informbox">
<div class="inform">
<div class="informleft">
<img src="../../../../assets/images/icon/inform.png" alt="">
通知播报:
</div>
<div class="informright" id="container" (mouseenter)="mouseEnter()" (mouseleave)="mouseleave()">
<div id="list-wrapper" style="top: 0">
<ul class="notice-list" id="notice-list">
<li class="info" *ngFor="let item of messageList;let key = index">
<div class="infoitem">
您有一条新的信息!
</div>
</li>
</ul>
<ul class="notice-list" id="notice-list-2">
</ul>
</div>
</div>
</div>
</div>
<div class="timebox">
<nz-select [(ngModel)]="selectedYear" (ngModelChange)="selectYear($event)">
<nz-option [nzValue]="2021" nzLabel="2021年"></nz-option>
<nz-option [nzValue]="2022" nzLabel="2022年"></nz-option>
</nz-select>
<div *ngFor="let item of months" class="monthbtn" (click)="selectMonth(item)"
[ngClass]="{'selectedMonth': item.id == selectedMonth}">
{{item.name}}
</div>
</div>
<div class="contentbox">
<div class="fffbox">
<div class="spin" *ngIf="isloading">
<nz-spin nzSimple></nz-spin>
</div>
<div class="header">
<span>
任务执行
任务申请
</span>
<span style="font-size: 14px; color: #42B983;">
<i nz-icon nzType="info-circle" nzTheme="outline"></i>
@ -12,19 +48,19 @@
</div>
<div class="searchbox">
<div class="search">
<div class="search">
<nz-select nzPlaceHolder="任务名称" [(ngModel)]="searchForm.taskname">
<nz-select nzPlaceHolder="任务名称" [(ngModel)]="searchForm.taskname" nzAllowClear>
<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">
<input type="text" nz-input placeholder="单位名称" [(ngModel)]="searchForm.unitname" nzAllowClear />
<!-- <nz-select nzPlaceHolder="单位级别" [(ngModel)]="searchForm.unitlevel">
<nz-option nzValue="一般单位" nzLabel="一般单位"></nz-option>
<nz-option nzValue="重点单位" nzLabel="重点单位"></nz-option>
</nz-select>
</nz-select> -->
<nz-tree-select [nzExpandedKeys]="expandKeys" [nzNodes]="nodes" nzShowSearch nzPlaceHolder="协助机构"
[(ngModel)]="searchForm.or" [nzExpandedIcon]="multiExpandedIconTpl"
[nzDropdownClassName]="'maxHeightTreeSelect'" [nzAllowClear]="false"></nz-tree-select>
[nzDropdownClassName]="'maxHeightTreeSelect'" nzAllowClear>
</nz-tree-select>
<ng-template #multiExpandedIconTpl let-node let-origin="origin">
<ng-container *ngIf="node.children.length == 0; else elseTemplate">
</ng-container>
@ -33,57 +69,119 @@
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>
<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>
</div>
<div class="tablebox">
<nz-table nzBordered #basicTable [nzLoading]="loading" [nzData]="usersLIst" [nzShowPagination]='false'
[nzPageSize]='16'>
<thead>
<tr>
<th [width]="'15%'">任务名称</th>
<th [width]="'10%'">时间</th>
<th [width]="'20%'">单位名称</th>
<th>单位级别</th>
<th>协助机构</th>
<th>检查结果</th>
<th [width]="'8%'">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of basicTable.data">
<td>监督检查</td>
<td>2022.07.20 14:00</td>
<td nzBreakWord>
上海雅特酒店管理有限公司济南泺文路分公司
</td>
<td>
一般单位
</td>
<td>
历下区A消防救援站
</td>
<td>
未发现违法违规情况
</td>
<td class="operation">
<a class="blue">查看</a>
</td>
</tr>
</tbody>
</nz-table>
<div class="tableboxitem" *ngFor="let item of taskLIst"
[ngClass]="{'greenborder': item.approvalStatus == '通过','redborder': item.approvalStatus == '驳回'}">
<div class="flexcol tasknamebox">
<span>
{{item.taskName}}
</span>
<span>
任务名称
</span>
</div>
<div class="flexcol">
<span>
2022.07.20 14:00
</span>
<span>
时间
</span>
</div>
<div class="flexcol unitnamebox">
<span>
{{item.company.companyName}}
</span>
<span>
单位名称
</span>
</div>
<div class="flexcol">
<span>
{{item.company.useNature}}
</span>
<span>
单位级别
</span>
</div>
<div class="flexcol">
<span>
{{item.organization.name}}
</span>
<span>
主负责人
</span>
</div>
<div class="flexcol flexcolassistant">
<span class="assistant" nz-tooltip [nzTooltipTitle]="titleTemplate">
<span *ngFor="let i of item.supervisors">
<img *ngIf="i.posts && i.posts[0] == '主查人员'"
src="../../../../assets/images/icon/main.png" alt="">
<img *ngIf="i.posts && i.posts[0] == '协查人员'"
src="../../../../assets/images/icon/assist.png" alt="">
{{i.name}}
</span>
</span>
<ng-template #titleTemplate let-thing>
<span style="margin-right: 6px;" *ngFor="let i of item.supervisors">
<img *ngIf="i.posts && i.posts[0] == '主查人员'"
src="../../../../assets/images/icon/main.png" alt="">
<img *ngIf="i.posts && i.posts[0] == '协查人员'"
src="../../../../assets/images/icon/assist.png" alt="">
{{i.name}}
</span>
</ng-template>
<span>
协助人员
</span>
</div>
<div class="flexcol">
<span>
待检查
</span>
<span>
检查结果
</span>
</div>
<div class="flexcol">
<span>
宣传
</span>
<span>
同步工作
</span>
</div>
<div class="flexcol">
<span class="blue" (click)="look(item)">
查看
</span>
<span>
操作
</span>
</div>
</div>
</div>
<div class="pagination">
<nz-pagination [nzHideOnSinglePage]="false" [nzPageIndex]="1" [nzTotal]="usersNum" [nzPageSize]="16"
[nzShowTotal]="totalTemplate" nzShowQuickJumper (nzPageIndexChange)="pageChange($event)">
<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>
</div>

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

@ -1,13 +1,87 @@
.box {
width: 100%;
height: 100%;
color: #303133;
display: flex;
flex-direction: column;
overflow: hidden;
.informbox {
width: 100%;
height: 60px;
box-sizing: border-box;
padding: 10px 20px;
padding-bottom: 0px;
.inform {
width: 100%;
height: 100%;
background: #FFFFFF;
border-radius: 0px 0px 0px 0px;
opacity: 1;
display: flex;
.informleft {
height: 100%;
display: flex;
align-items: center;
margin-right: 20px;
img {
margin: 0 20px;
}
}
.informright {
flex: 1;
}
}
}
.timebox {
width: 100%;
height: 68px;
box-sizing: border-box;
display: flex;
align-items: center;
border-bottom: 1px dashed #C7CAD0;
padding: 0 20px;
nz-select {
margin-right: 16px;
border-radius: 4px 4px 4px 4px;
}
.monthbtn {
width: 80px;
height: 32px;
line-height: 32px;
background: #FFFFFF;
border-radius: 4px 4px 4px 4px;
opacity: 1;
border: 1px solid #E4E7EC;
color: #303133;
margin-right: 16px;
cursor: pointer;
}
.selectedMonth {
background: #2C4DC0;
color: #FFFFFF;
}
}
.contentbox {
flex: 1;
box-sizing: border-box;
padding: 20px;
position: relative;
overflow: hidden;
}
.fffbox {
position: relative;
width: 100%;
height: 100%;
background: #FFFFFF;
@ -17,6 +91,7 @@
border: 1px solid #E4E7EC;
display: flex;
flex-direction: column;
overflow: hidden;
}
@ -42,15 +117,16 @@
justify-content: space-between;
padding: 0 20px;
align-items: center;
border-bottom: 1px solid #E4E7EC;
.search {
width: 100%;
display: flex;
justify-content: flex-start;
input,
nz-select,
nz-tree-select,
nz-date-picker {
nz-tree-select {
width: 220px;
margin-right: 16px;
text-align: left;
@ -67,6 +143,108 @@
box-sizing: border-box;
padding: 18px;
padding-top: 0px;
display: flex;
flex-direction: column;
overflow-y: auto;
.applybtn {
align-self: flex-start;
margin: 18px 0;
}
.tablebox {
flex: 1;
display: flex;
flex-direction: column;
.tableboxitem {
display: flex;
align-items: center;
box-sizing: border-box;
padding: 12px 20px;
border: 1px solid #C7CAD0;
justify-content: space-around;
padding-left: 80px;
margin-bottom: 10px;
div {
flex: 1;
span {
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
height: 33px;
line-height: 33px;
text-align: left;
img {
width: 32px;
height: 32px;
}
}
}
.flexcol {
display: flex;
flex-direction: column;
align-items: flex-start;
margin-right: 3%;
span:nth-child(1) {
color: #303133;
// margin-bottom: 8px;
}
span:nth-child(2) {
color: #C7CAD0;
}
}
.flexcolassistant {
flex: 1.5;
overflow: hidden;
.assistant {
display: flex;
width: 100%;
span {
color: #303133;
margin-right: 6px;
}
img {
width: 16px;
height: 16px;
vertical-align: text-bottom;
}
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.unitnamebox {
flex: 3;
}
}
.greenborder {
border: 1px solid #42B983;
}
.redborder {
border: 1px solid #FF9203;
}
}
.operation {
a {

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

@ -3,8 +3,9 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { NzFormatEmitEvent, NzTreeComponent, NzTreeNodeOptions } from 'ng-zorro-antd/tree';
import { NzModalService } from 'ng-zorro-antd/modal';
import { NzMessageService } from 'ng-zorro-antd/message';
import { HttpClient } from '@angular/common/http';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { TreeService } from 'src/app/service/tree.service';
import { ThisReceiver } from '@angular/compiler';
@Component({
selector: 'app-station-task-execution',
templateUrl: './station-task-execution.component.html',
@ -16,18 +17,38 @@ export class StationTaskExecutionComponent implements OnInit {
constructor(private fb: FormBuilder, private modal: NzModalService, private viewContainerRef: ViewContainerRef, private message: NzMessageService, private http: HttpClient, private toTree: TreeService) { }
searchForm = {
taskname: '',
tasktime: '',
unitname: '',
unitlevel: '',
or: ''
}
usersNum
loading
usersLIst = [1]
ngOnInit(): void {
}
pageChange($event) {
OrganizationId
isSupervisor: boolean //是否为检查员
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 }
]
selectedMonth
selectedYear = 2022
selectedTime
selectMonth(item) {
this.selectedMonth = item.id
this.getTaskList()
}
selectYear(e) {
this.selectedYear = e
this.getTaskList()
}
cancel(item, type) {
@ -36,29 +57,206 @@ export class StationTaskExecutionComponent implements OnInit {
delete(item) {
}
isloading = false
totalCount
PageNumber = 1
PageSize = 10
taskLIst = []
getTaskList() {
this.isloading = true
let selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01'
let params = {
Month: selectedTime,
OrganizationId: this.OrganizationId,
TaskName: this.searchForm.taskname,
CompanyName: this.searchForm.unitname,
AssitantOrganizationId: this.searchForm.or,
PageNumber: this.PageNumber,
CreatorId: this.userId,
PageSize: this.PageSize
}
this.http.get('/api/PlanTasks', {
params: params
}).subscribe((data: any) => {
this.isloading = 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
//获取所有组织机构
organizationList: any
organizationListAll: any
nodes: any = []
getAllOrganization() {
let organizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId
async getAllOrganization() {
let params = {
OrganizationId: organizationId || '',
ContainsChildren: "true",
PageNumber: 1,
PageSize: 9999
}
var p = new Promise<void>((resolve, reject) => {
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
element.disableCheckbox = true
element.selectable = false
});
this.organizationListAll = JSON.parse(JSON.stringify(data.items))
this.organizationList = JSON.parse(JSON.stringify(data.items)).filter(item => {
return item.level != 'squadron'
})
resolve(data)
})
})
return p
}
//获得所有检查员
supervisorList = []
mainsupervisorList = []
assitantsupervisorList = []
async getSupervisor() {
var p = new Promise<void>((resolve, reject) => {
this.http.get('/api/Users/Inspectors').subscribe((data: any) => {
console.log('检查员列表', data)
data.forEach(element => {
element.key = element.id
element.title = element.name
element.parentId = element.organizationId
});
this.supervisorList = data
resolve(data)
})
})
return p
}
//获得除了检查员的其他用户
users
async getUsers() {
var p = new Promise<void>((resolve, reject) => {
let params = {
OrganizationId: this.OrganizationId,
OrganizationLevel: 'squadron',
ContainsChildren: true,
PageNumber: 1,
PageSize: 9999
}
this.http.get('/api/Users', {
params: params
}).subscribe((data: any) => {
console.log('用户列表', data.items)
data.items.forEach(element => {
element.key = element.id
element.title = element.name
element.parentId = element.organizationId
});
this.nodes = [...this.toTree.toTree(data.items)]
this.users = data.items
resolve(data)
})
})
return p
}
userId
ngOnInit(): void {
this.OrganizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId
this.userId = JSON.parse(sessionStorage.getItem('userData')).id
let roles = JSON.parse(sessionStorage.getItem('userData')).roles
let isSupervisor = roles.find(item => {
return item.name.indexOf('检查') != -1
})
isSupervisor ? this.isSupervisor = true : this.isSupervisor = false
this.selectedMonth = new Date().getMonth() + 1
this.getTaskList()
Promise.all([this.getAllOrganization(), this.getSupervisor(), this.getUsers()])
.then((results) => {
if (this.isSupervisor) {
let arr = [...this.users, ...this.organizationListAll]
this.nodes = this.toTree.toTree(JSON.parse(JSON.stringify(arr)))
} else {
let arr = [...this.supervisorList, ...this.organizationList]
this.nodes = this.toTree.toTree(JSON.parse(JSON.stringify(arr)))
}
});
setTimeout(() => {
this.rollStart()
}, 0);
}
messageList = [1, 1, 1, 1, 1]
timer
rollStart() {
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))
}
}
}
mouseEnter() {
// console.log('进入了')
window.clearInterval(this.timer);
}
mouseleave() {
this.rollStart()
}
ngOnDestroy(): void {
console.log('退出了')
this.mouseEnter()
}
apply() {
}
look(item) {
}
}

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

@ -1,5 +1,26 @@
<!-- <p>生成周计划 协同工作任务</p> -->
<div class="box weeklyplan">
<div class="informbox">
<div class="inform">
<div class="informleft">
<img src="../../../../assets/images/icon/inform.png" alt="">
通知播报:
</div>
<div class="informright" id="container" (mouseenter)="mouseEnter()" (mouseleave)="mouseleave()">
<div id="list-wrapper" style="top: 0">
<ul class="notice-list" id="notice-list">
<li class="info" *ngFor="let item of messageList;let key = index">
<div class="infoitem">
您有一条新的信息!
</div>
</li>
</ul>
<ul class="notice-list" id="notice-list-2">
</ul>
</div>
</div>
</div>
</div>
<div class="timebox">
<nz-select [(ngModel)]="selectedYear" (ngModelChange)="selectYear($event)">
<nz-option [nzValue]="2021" nzLabel="2021年"></nz-option>
@ -11,7 +32,10 @@
</div>
</div>
<div style="flex: 1;overflow-y: auto;">
<div style="flex: 1;overflow-y: auto;position: relative;">
<div class="spin" *ngIf="isloading">
<nz-spin nzSimple></nz-spin>
</div>
<!-- 上部仪表盘 -->
<div class="instrumentpanelbox">
<div class="instrumentpanelheader">
@ -62,15 +86,15 @@
<span class="itemtwocontentitemp1name">{{i.company.companyName}}</span>
<span class="marginr5">
<span class="green" *ngIf="isExpand" (click)="accept(i,item)">接受</span>
<span class="blue" *ngIf="isExpand" (click)="reject(i,item)">拒绝</span>
<span class="red" *ngIf="isExpand" (click)="reject(i,item)">拒绝</span>
<span class="green" *ngIf="isExpand && i.approvalStatus == '通过'">已通过</span>
<span class="red" *ngIf="isExpand && i.approvalStatus == '驳回'">已驳回</span>
</span>
</p>
<p>{{i.organization.name}}</p>
<p>{{i.company.organization.name}}</p>
<p class="marginr5">
<span class=" green" *ngIf="!isExpand" (click)="accept(i,item)">接受</span>
<span class="blue" *ngIf="!isExpand" (click)="reject(i,item)">拒绝</span>
<span class="red" *ngIf="!isExpand" (click)="reject(i,item)">拒绝</span>
<span class="green" *ngIf="!isExpand && i.approvalStatus == '通过'">已通过</span>
<span class="red" *ngIf="!isExpand && i.approvalStatus == '驳回'">已驳回</span>
</p>
@ -175,7 +199,8 @@
</div>
<div class="flexcol">
<span>
<label nz-radio ngModel (click)="radioChange($event)">宣传</label>
<label nz-radio [(ngModel)]="i.isSpread"
(ngModelChange)="radioChange($event,i,element)">宣传</label>
</span>
<span>
同步工作
@ -183,7 +208,9 @@
</div>
<div class="flexcol">
<span>
<nz-date-picker nzPlaceHolder="请选择检查日期" nzBorderless></nz-date-picker>
<nz-date-picker [(ngModel)]="i.checkTime" nzPlaceHolder="请选择检查日期"
nzBorderless (ngModelChange)="checkTime($event,i,element)">
</nz-date-picker>
</span>
<span>
检查时间

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

@ -6,6 +6,38 @@
overflow: hidden;
}
.informbox {
width: 100%;
height: 60px;
box-sizing: border-box;
padding: 10px 20px;
padding-bottom: 0px;
color: #000;
.inform {
width: 100%;
height: 100%;
background: #FFFFFF;
border-radius: 0px 0px 0px 0px;
opacity: 1;
display: flex;
.informleft {
height: 100%;
display: flex;
align-items: center;
margin-right: 20px;
img {
margin: 0 20px;
}
}
.informright {
flex: 1;
}
}
}
.timebox {
width: 100%;
height: 68px;
@ -45,12 +77,16 @@
box-sizing: border-box;
padding: 18px;
color: #303133;
padding-bottom: 0;
padding-right: 0;
.instrumentpanelheader {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
box-sizing: border-box;
padding-right: 22px;
}
.instrumentpanel {
@ -204,7 +240,7 @@
.instrumentpanelitemclose {
width: 11.7%;
height: 200px;
margin-bottom: 0px;
margin-bottom: 18px;
margin-right: 1%;
.itemone {
@ -333,7 +369,6 @@
padding: 12px 0px;
border-bottom: 1px dashed #C7CAD0;
div {
flex: 1;
}
@ -342,16 +377,16 @@
display: flex;
flex-direction: column;
align-items: flex-start;
margin-right: 3%;
margin-right: 8px;
span:nth-child(1) {
color: #303133;
// margin-bottom: 8px;
}
span:nth-child(2) {
color: #C7CAD0;
}
}
.flexcolassistant {
@ -359,8 +394,6 @@
overflow: hidden;
.assistant {
display: flex;
width: 100%;
span {
@ -374,6 +407,8 @@
vertical-align: text-bottom;
}
display: inline-block;
text-align: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;

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

@ -5,6 +5,7 @@ import { NzModalService } from 'ng-zorro-antd/modal';
import { NzMessageService } from 'ng-zorro-antd/message';
import { HttpClient } from '@angular/common/http';
import { TreeService } from 'src/app/service/tree.service';
import * as moment from 'moment';
@Component({
selector: 'app-station-weekly-plan',
templateUrl: './station-weekly-plan.component.html',
@ -36,11 +37,13 @@ export class StationWeeklyPlanComponent implements OnInit {
selectedTime
selectMonth(item) {
this.selectedMonth = item.id
// this.getTaskList()
this.initializeData()
this.getTaskList()
}
selectYear(e) {
this.selectedYear = e
// this.getTaskList()
this.initializeData()
this.getTaskList()
}
isExpand = true
@ -51,15 +54,48 @@ export class StationWeeklyPlanComponent implements OnInit {
formatOne = (percent: number): string => `${percent}%\n完成率`;
openDetails(data, type) {
data.isDetails = type
}
radioChange(e) {
setTimeout(() => {
}, 0);
radioChange(e, i, element) {
element.isLoading = true
let body = {
isSpread: e
}
this.http.patch(`/api/PlanTasks/${i.id}`, body).subscribe({
next: (data) => {
this.message.create('success', e ? '宣传通知已发出' : '取消宣传');
element.isLoading = false
},
error: (err) => {
this.message.create('warning', '发送失败');
element.isLoading = false
}
})
}
checkTime(e, i, element) {
if (e) {
i.checkTime = moment(e).format('yyyy-MM-DD')
} else {
i.checkTime = null
}
element.isLoading = true
let body = {
checkTime: i.checkTime
}
this.http.patch(`/api/PlanTasks/${i.id}`, body).subscribe({
next: (data) => {
this.message.create('success', '检查日期分配成功');
element.isLoading = false
},
error: (err) => {
this.message.create('warning', '检查日期分配失败');
element.isLoading = false
}
})
}
stationData = []
@ -87,7 +123,7 @@ export class StationWeeklyPlanComponent implements OnInit {
}
cardData = [
{ name: '双随机', isDetails: true, isloading: false, background: '#1D9DFF', icon: 'suiji.png', scale: '0/0', data: [] },
{ name: '双随机', isDetails: false, isloading: false, background: '#1D9DFF', icon: 'suiji.png', scale: '0/0', data: [] },
{ name: '行政许可', isDetails: false, isloading: false, background: '#42B983', icon: 'xuke.png', scale: '0/0', data: [] },
{ name: '熟悉演练', isDetails: false, isloading: false, background: '#9D80FF', icon: 'yanlian.png', scale: '0/0', data: [] },
{ name: '联络指导', isDetails: false, isloading: false, background: '#5483EA', icon: 'zhidao.png', scale: '0/0', data: [] },
@ -95,12 +131,31 @@ export class StationWeeklyPlanComponent implements OnInit {
{ name: '投诉举报', isDetails: false, isloading: false, background: '#5087FF', icon: 'tousu.png', scale: '0/0', data: [] },
{ name: '火灾调查', isDetails: false, isloading: false, background: '#FF404D', icon: 'huozai.png', scale: '0/0', data: [] }
]
//初始化数据
initializeData() {
this.cardData = [
{ name: '双随机', isDetails: false, isloading: false, background: '#1D9DFF', icon: 'suiji.png', scale: '0/0', data: [] },
{ name: '行政许可', isDetails: false, isloading: false, background: '#42B983', icon: 'xuke.png', scale: '0/0', data: [] },
{ name: '熟悉演练', isDetails: false, isloading: false, background: '#9D80FF', icon: 'yanlian.png', scale: '0/0', data: [] },
{ name: '联络指导', isDetails: false, isloading: false, background: '#5483EA', icon: 'zhidao.png', scale: '0/0', data: [] },
{ name: '消防宣传', isDetails: false, isloading: false, background: '#FF5D2A', icon: 'xuanchuan.png', scale: '0/0', data: [] },
{ name: '投诉举报', isDetails: false, isloading: false, background: '#5087FF', icon: 'tousu.png', scale: '0/0', data: [] },
{ name: '火灾调查', isDetails: false, isloading: false, background: '#FF404D', icon: 'huozai.png', scale: '0/0', data: [] }
]
this.stationData.forEach(element => {
element.isExpand = false
element.isLoading = false
element.data = []
});
}
isloading = false
PageNumber = 1
PageSize = 9999
getTaskList() {
async getTaskList() {
this.isloading = true
let selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01'
let params = {
@ -110,6 +165,7 @@ export class StationWeeklyPlanComponent implements OnInit {
PageNumber: this.PageNumber,
PageSize: this.PageSize
}
var p = await new Promise<void>((resolve, reject) => {
this.http.get('/api/PlanTasks', {
params: params
}).subscribe((data: any) => {
@ -120,8 +176,12 @@ export class StationWeeklyPlanComponent implements OnInit {
element.taskType == item.name ? this.cardData[key].data.push(element) : null
});
});
// console.log('并入卡片数据', this.cardData)
resolve(data)
console.log('并入卡片数据', this.cardData)
})
})
return p
}
//接受任务
@ -141,6 +201,14 @@ export class StationWeeklyPlanComponent implements OnInit {
this.message.create('success', '已接受');
i.approvalStatus = '通过'
item.isloading = false
this.stationData.forEach(element => {
if (element.id == i.company.organizationId) {
if (element.isExpand) {
this.getTaskListOfStation(element)
}
}
});
},
error: (err) => {
this.message.create('warning', '接受失败');
@ -168,6 +236,13 @@ export class StationWeeklyPlanComponent implements OnInit {
this.message.create('success', '已拒绝');
i.approvalStatus = '驳回'
item.isloading = false
this.stationData.forEach(element => {
if (element.id == i.company.organizationId) {
if (element.isExpand) {
this.getTaskListOfStation(element)
}
}
});
},
error: (err) => {
this.message.create('warning', '拒绝失败');
@ -188,14 +263,63 @@ export class StationWeeklyPlanComponent implements OnInit {
isSupervisor ? this.isSupervisor = true : this.isSupervisor = false
this.selectedMonth = new Date().getMonth() + 1
this.getAllStation()
this.getTaskList()
setTimeout(() => {
this.rollStart()
}, 0);
}
messageList = [1, 1, 1, 1, 1]
timer
rollStart() {
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))
}
}
}
mouseEnter() {
window.clearInterval(this.timer);
}
mouseleave() {
this.rollStart()
}
ngOnDestroy(): void {
console.log('退出了')
this.mouseEnter()
}
expandcarditem(item) {
item.isExpand = !item.isExpand
console.log(item)
if (item.isExpand) {
this.getTaskListOfStation(item)
}
}
//获得消防站下的所有任务
getTaskListOfStation(item) {
let selectedTime = this.selectedYear + '-' + this.selectedMonth + '-' + '01'
let params = {
Month: selectedTime,
@ -232,7 +356,7 @@ export class StationWeeklyPlanComponent implements OnInit {
}
}
item.data = listData
console.log('点击的救援站通过数据', item)
// console.log('点击的救援站通过数据', item)
},
error: (err) => {
this.message.create('warning', '获取数据失败');
@ -240,5 +364,5 @@ export class StationWeeklyPlanComponent implements OnInit {
}
})
}
}
}

Loading…
Cancel
Save