Browse Source

Merge branch 'master' of http://121.36.37.70:3000/shaojiahao/Jinan_project

非煤矿山灾害智能感知和预警系统
jingbowen 3 years ago
parent
commit
b42e798254
  1. 14
      src/app/home/home.module.ts
  2. 399
      src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.html
  3. 557
      src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.scss
  4. 74
      src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.ts
  5. 239
      src/app/home/task/da-oneself-plan/da-oneself-plan.component.html
  6. 384
      src/app/home/task/da-oneself-plan/da-oneself-plan.component.scss
  7. 56
      src/app/home/task/da-oneself-plan/da-oneself-plan.component.ts
  8. 88
      src/app/home/task/da-subordinate-audit/da-subordinate-audit.component.html
  9. 146
      src/app/home/task/da-subordinate-audit/da-subordinate-audit.component.scss
  10. 23
      src/app/home/task/da-subordinate-audit/da-subordinate-audit.component.ts
  11. 16
      src/app/home/task/task.component.scss
  12. 216
      src/app/home/task/zhi-audit/zhi-audit.component.html
  13. 183
      src/app/home/task/zhi-audit/zhi-audit.component.scss
  14. 110
      src/app/home/task/zhi-audit/zhi-audit.component.ts
  15. 335
      src/app/home/task/zhi-indicators/zhi-indicators.component.html
  16. 144
      src/app/home/task/zhi-indicators/zhi-indicators.component.scss
  17. 109
      src/app/home/task/zhi-indicators/zhi-indicators.component.ts
  18. BIN
      src/assets/images/icon/admin.png
  19. BIN
      src/assets/images/icon/agree.png
  20. BIN
      src/assets/images/icon/assist.png
  21. BIN
      src/assets/images/icon/host.png
  22. BIN
      src/assets/images/icon/huodong.png
  23. BIN
      src/assets/images/icon/huozai.png
  24. BIN
      src/assets/images/icon/main.png
  25. BIN
      src/assets/images/icon/organization.png
  26. BIN
      src/assets/images/icon/power.png
  27. BIN
      src/assets/images/icon/push.png
  28. BIN
      src/assets/images/icon/reject.png
  29. BIN
      src/assets/images/icon/role.png
  30. BIN
      src/assets/images/icon/station.png
  31. BIN
      src/assets/images/icon/suiji.png
  32. BIN
      src/assets/images/icon/task.png
  33. BIN
      src/assets/images/icon/task0.png
  34. BIN
      src/assets/images/icon/tousu.png
  35. BIN
      src/assets/images/icon/unit.png
  36. BIN
      src/assets/images/icon/user.png
  37. BIN
      src/assets/images/icon/xuanchuan.png
  38. BIN
      src/assets/images/icon/xuke.png
  39. BIN
      src/assets/images/icon/yanlian.png
  40. BIN
      src/assets/images/icon/zhidao.png
  41. 56
      src/styles.scss
  42. 17
      src/theme.less

14
src/app/home/home.module.ts

@ -42,6 +42,12 @@ import { NzTreeModule } from 'ng-zorro-antd/tree';
import { AddorComponent } from './system-management/or/addor/addor.component';
import { EditorComponent } from './system-management/or/editor/editor.component';
import { AddUnitComponent } from './basic-info/add-unit/add-unit.component';
import { NzCollapseModule } from 'ng-zorro-antd/collapse';
import { NzPopoverModule } from 'ng-zorro-antd/popover';
import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
import { ScrollingModule } from '@angular/cdk/scrolling';
import { NzGridModule } from 'ng-zorro-antd/grid';
import { NzRadioModule } from 'ng-zorro-antd/radio';
@NgModule({
declarations: [
NavComponent,
@ -89,7 +95,13 @@ import { AddUnitComponent } from './basic-info/add-unit/add-unit.component';
NzMessageModule,
NzInputModule,
NzPaginationModule,
NzTreeModule
NzTreeModule,
NzCollapseModule,
NzPopoverModule,
NzCheckboxModule,
ScrollingModule,
NzGridModule,
NzRadioModule
],
entryComponents: [AddroleComponent, EditroleComponent, AdduserComponent, EdituserComponent, AddorComponent, EditorComponent]
})

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

@ -1 +1,398 @@
<p>da-monthly-task-overview works!</p>
<!-- <p>月度任务总览</p> -->
<div class="box">
<div class="timebox">
<nz-select ngModel="2022">
<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.name == selectedMonth}">
{{item.name}}
</div>
</div>
<div style="flex: 1;overflow-y: auto;">
<!-- 上部仪表盘 -->
<div class="instrumentpanelbox">
<div class="instrumentpanelheader">
<span><img src="../../../../assets/images/icon/task.png" alt=""> 上级任务指标</span>
</div>
<div class="instrumentpanel">
<div class="instrumentpanelitem instrumentpanelitemclose" *ngFor="let item of cardData">
<div class="itemone" *ngIf="!item.isDetails">
<div class="instrumentpanelitemleft">
<div class="panelheadername" [style]="'background:'+ item.background">
<img [src]="'../../../../assets/images/icon/'+ item.icon" alt="">
{{item.name}}
</div>
<div class="tasknum">
<p>
<span style="margin-right: 6px;">任务分配</span>
<i (click)="openDetails(item,true)"
style="vertical-align: text-top;cursor: pointer;" nz-icon nzType="right-circle"
nzTheme="outline"></i>
</p>
<p style="font-weight: 900;font-size: 36px;text-align: left;">5/9</p>
</div>
<div class="jindu">
<p>
<span>完成率</span>
<span>60%</span>
</p>
<nz-progress style="width: 100%;" [nzPercent]="75" nzStrokeColor="#42B983"
[nzShowInfo]="false"></nz-progress>
</div>
</div>
</div>
<div class="itemtwo" *ngIf="item.isDetails">
<p class="itemtwotitle">
<span>{{item.name}}</span>
<span class="back" (click)="openDetails(item,false)"><i nz-icon nzType="rollback"
nzTheme="outline"></i>返回</span>
</p>
<div class="itemtwocontent">
<div class="itemtwocontentitem">
<p class="itemtwocontentitemp1">
<span class="itemtwocontentitemp1name">济南历下森豪室内娱乐场</span>
</p>
<p>
<span class="green" style="margin-right: 12px;">已分配</span>
<span class="green">已检查</span>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 下级任务申请 -->
<div class="taskaudit">
<div class="taskauditheader">
<span><img src="../../../../assets/images/icon/task.png" alt=""> 下级任务申请</span>
<span (click)="istaskauditexpand()" class="expand blue">
{{istaskauditExpanded ? '收起' :'展开'}}
<i nz-icon [nzType]="istaskauditExpanded ? 'down' : 'up'" nzTheme="outline"></i>
</span>
</div>
<!-- 熟悉演练任务 -->
<div class="shuxibox" *ngIf="istaskauditExpanded">
<div class="header">
<span>熟悉演练任务</span>
<span (click)="expand(shuxiTaskData)" class="expand blue">
{{shuxiTaskData.isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="shuxiTaskData.isExpand ? 'down' : 'up'" nzTheme="outline"></i>
</span>
</div>
<div class="content" *ngIf="shuxiTaskData.isExpand">
<div class="card redcard">
<div class="unitname">
<img src="../../../../assets/images/icon/unit.png" alt="">
<span>上海雅特酒店管理有限公司济南泺文路分公司</span>
</div>
<div class="info">
<span>
<img src="../../../../assets/images/icon/main.png" alt="">
未分配
</span>
<span>
<img src="../../../../assets/images/icon/assist.png" alt="">
未分配
</span>
<span class="blue">分配</span>
<span>|</span>
<span>申请人: 历下区A消防救援站</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=""> -->
</div>
<div class="card greencard">
<div class="unitname">
<img src="../../../../assets/images/icon/unit.png" alt="">
<span>上海雅特酒店管理有限公司济南泺文路分公司</span>
</div>
<div class="info">
<span>
<img src="../../../../assets/images/icon/main.png" alt="">
未分配
</span>
<span>
<img src="../../../../assets/images/icon/assist.png" alt="">
未分配
</span>
<span class="blue">分配</span>
<span>|</span>
<span>申请人: 历下区A消防救援站</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=""> -->
</div>
</div>
</div>
<!-- 联络指导任务 -->
<div class="zhidaobox" *ngIf="istaskauditExpanded">
<div class="header">
<span>联络指导任务</span>
<span (click)="expand(zhidaoTaskData)" class="expand blue">
{{zhidaoTaskData.isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="zhidaoTaskData.isExpand ? 'down' : 'up'" nzTheme="outline"></i>
</span>
</div>
<div class="content" *ngIf="zhidaoTaskData.isExpand">
<!-- <div class="card redcard">
<div class="unitname">
<img src="../../../../assets/images/icon/unit.png" alt="">
<span>上海雅特酒店管理有限公司济南泺文路分公司</span>
</div>
<div class="info">
<span>
<img src="../../../../assets/images/icon/main.png" alt="">
未分配
</span>
<span>
<img src="../../../../assets/images/icon/assist.png" alt="">
未分配
</span>
<span class="blue">分配</span>
<span>|</span>
<span>申请人: 历下区A消防救援站</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="">
</div> -->
</div>
</div>
</div>
<!-- 本级部署 -->
<div class="deploybox">
<div class="deployboxheader">
<span><img src="../../../../assets/images/icon/task0.png" alt=""> 本级部署</span>
<span (click)="isdeployboxexpand()" class="expand blue">
{{isdeployboxExpanded ? '收起' :'展开'}}
<i nz-icon [nzType]="isdeployboxExpanded ? 'down' : 'up'" nzTheme="outline"></i>
</span>
</div>
<div class="deploycontent" *ngIf="isdeployboxExpanded">
<div class="deploycontentitem">
<div class="title">
月计划统计
</div>
<div class="details">
<div class="detailsname">
月计划总数
<span style="font-weight: 18;font-size: 26px;margin-left: 10px;">15</span>
</div>
<span>已完成 15</span>
<span class="progresssquare">
<span>完成率</span>
<nz-progress nzStrokeLinecap="square" style="width: 70%;margin-bottom: 3px;"
[nzPercent]="75" nzStrokeColor="#42B983" [nzShowInfo]="false" [nzStrokeWidth]="18">
</nz-progress>
<span>75%</span>
</span>
</div>
</div>
<div class="deploycontentitem">
<div class="title">
周计划统计
</div>
<div class="details">
<div class="detailsname">
周计划总数
<span style="font-weight: 18;font-size: 26px;margin-left: 10px;">15</span>
</div>
<span>已完成 15</span>
<span class="progresssquare">
<span>完成率</span>
<nz-progress nzStrokeLinecap="square" style="width: 70%;margin-bottom: 3px;"
[nzPercent]="75" nzStrokeColor="#42B983" [nzShowInfo]="false" [nzStrokeWidth]="18">
</nz-progress>
<span>75%</span>
</span>
</div>
</div>
</div>
</div>
<!-- 救援站列表 -->
<div class="stationcardlistbox">
<div class="stationcardlistitembox" *ngFor="let item of stationData">
<div class="stationcardlistitem">
<div class="header">
<span style="width: 16%;">
<img src="../../../../assets//images/icon/station.png" alt="">
{{item.name}}
</span>
<span style="width: 8%;">单位总数: 7/8</span>
<div style="width: 66%;" class="progress progresssquare">
<span>完成进度</span>
<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>
</span>
</div>
<div class="maincontent" *ngIf="item.isExpand">
<div class="maincontentitem">
<div class="maincontentitemleft">
<div class="panelheadername panelheadernameor">
<img src="'../../../../assets/images/icon/huodong.png" alt="">
重大活动
</div>
<div class="num">
<div class="round" style="background: #2C4DC0;"></div>
<span class="word">已分配</span>
<span class="boldspan">1</span>
</div>
<div class="num">
<div class="round" style="background: #42B983;"></div>
<span class="word">已完成</span>
<span class="boldspan">1</span>
</div>
</div>
<div class="maincontentitemright">
<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">
<span>
宣传
</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>
</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 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">
<span>
宣传
</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>
</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>
</div>
</div>
</div>
</div>
</div>
<!-- -->
<div class="cutoffrule"></div>
</div>
</div>

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

@ -0,0 +1,557 @@
.box {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
}
.timebox {
width: 100%;
height: 68px;
box-sizing: border-box;
padding: 0 20px;
display: flex;
align-items: center;
border-bottom: 1px dashed #C7CAD0;
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;
}
}
.instrumentpanelbox {
box-sizing: border-box;
padding: 18px;
color: #303133;
.instrumentpanelheader {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.instrumentpanel {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.instrumentpanelitem {
background: #FFFFFF;
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.0800);
border-radius: 4px 4px 4px 4px;
opacity: 1;
border: 1px solid #E4E7EC;
display: flex;
.itemone {
width: 100%;
height: 100%;
display: flex;
.instrumentpanelitemleft {
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: flex-start;
flex: 1;
box-sizing: border-box;
.panelheadername {
width: 80%;
height: 46px;
line-height: 46px;
text-align: center;
box-sizing: border-box;
border-radius: 6px 0px 6px 6px;
color: #fff;
img {
vertical-align: text-top;
}
}
.tasknum {
margin-left: 8px;
p {
margin: 0;
}
}
.jindu {
width: 80%;
margin-left: 8px;
p {
margin: 0;
display: flex;
justify-content: space-between;
}
}
}
.instrumentpanelitemright {
flex: 1;
display: flex;
align-items: center;
nz-progress {
margin-top: 65px;
}
}
}
.itemtwo {
width: 100%;
height: 100%;
display: flex;
box-sizing: border-box;
padding: 16px;
flex-direction: column;
overflow: hidden;
.itemtwotitle {
display: flex;
justify-content: space-between;
.back {
cursor: pointer;
i {
margin-right: 3px;
}
}
margin-bottom: 0;
}
.itemtwocontent {
flex: 1;
overflow-y: auto;
display: flex;
flex-direction: column;
.itemtwocontentitem {
border-bottom: 1px dashed #C7CAD0;
height: 70px;
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: flex-start;
box-sizing: border-box;
padding: 8px 0;
p {
margin-bottom: 0;
}
.itemtwocontentitemp1 {
width: 100%;
display: flex;
justify-content: space-between;
box-sizing: border-box;
padding-right: 5px;
.itemtwocontentitemp1name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
}
}
}
.instrumentpanelitemopen {
width: 24.3%;
height: 260px;
margin-bottom: 18px;
.itemone {
.instrumentpanelitemleft {
padding: 26px 0 26px 10%;
}
}
}
.instrumentpanelitemclose {
width: 11.7%;
height: 250px;
margin-bottom: 0px;
.itemone {
.instrumentpanelitemleft {
padding: 15px 0 15px 10%;
}
}
}
}
.taskaudit {
box-sizing: border-box;
padding: 18px;
color: #303133;
border-top: 1px dashed #C7CAD0;
.taskauditheader {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.shuxibox,
.zhidaobox {
width: 100%;
background: #FFFFFF;
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.0800);
border-radius: 4px 4px 4px 4px;
opacity: 1;
border: 1px solid #E4E7EC;
box-sizing: border-box;
padding: 18px;
margin-bottom: 18px;
.header {
display: flex;
justify-content: space-between;
align-items: center;
}
.content {
.card:first-child {
margin-top: 18px;
}
.card:last-child {
margin-bottom: 0px;
}
.card {
color: #303133;
width: 100%;
height: 70px;
border-radius: 4px 4px 4px 4px;
opacity: 1;
display: flex;
box-sizing: border-box;
padding: 0 20px;
position: relative;
margin-bottom: 18px;
div {
display: flex;
align-items: center;
img {
margin-top: -3px;
}
}
.unitname {
flex: 3;
}
.info {
flex: 6;
span {
margin-right: 20px;
}
}
.btn {
flex: 1;
}
.auditimg {
position: absolute;
right: 18%;
top: 9%;
}
}
.greencard {
background: rgba(66, 185, 131, 0.0400);
border: 1px solid rgba(66, 185, 131, 0.1600);
}
.redcard {
background: rgba(255, 0, 0, 0.0200);
border: 1px solid rgba(255, 0, 0, 0.1000);
}
}
}
.zhidaobox {
margin-bottom: 0px;
}
}
.deploybox {
box-sizing: border-box;
padding: 18px;
color: #303133;
border-top: 1px dashed #C7CAD0;
.deployboxheader {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.deploycontent {
width: 100%;
display: flex;
justify-content: space-between;
.deploycontentitem {
width: 49.5%;
height: 110px;
background: linear-gradient(180deg, #7AA3FC 0%, #2C4DC0 100%);
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.0800);
border-radius: 4px 4px 4px 4px;
opacity: 1;
box-sizing: border-box;
padding: 18px 18px;
display: flex;
flex-direction: column;
justify-content: space-around;
color: #fff;
.title{
text-align: left;
}
.details{
display: flex;
justify-content: space-between;
align-items: center;
.detailsname{
display: flex;
align-items: center;
}
.progresssquare{
width: 60%;
display: flex;
color: #fff;
align-items: center;
span:nth-child(1){
margin-right: 16px;
}
span:last-child{
margin-left: 16px;
}
}
}
}
.deploycontentitem:nth-child(1) {
background: linear-gradient(180deg, #7AA3FC 0%, #2C4DC0 100%);
}
.deploycontentitem:nth-child(2) {
background: linear-gradient(180deg, #56C5FF 0%, #005DFF 100%);
}
}
}
.stationcardlistbox {
.stationcardlistitembox {
width: 100%;
border-top: 1px dashed #C7CAD0;
box-sizing: border-box;
padding: 18px;
.stationcardlistitem {
width: 100%;
background: #FFFFFF;
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.0800);
border-radius: 4px 4px 4px 4px;
border: 1px solid #E4E7EC;
color: #303133;
box-sizing: border-box;
padding: 0 18px;
.header {
width: 100%;
height: 64px;
display: flex;
align-items: center;
text-align: left;
.progress {
width: 200px;
display: flex;
align-items: center;
span {
margin-right: 12px;
}
nz-progress {
width: 230px;
}
}
.expand {
margin-left: 20px;
}
}
.maincontent {
.maincontentitem {
box-sizing: border-box;
padding: 16px;
margin-bottom: 18px;
border-radius: 4px 4px 4px 4px;
border: 1px solid #42B983;
display: flex;
}
.maincontentitemleft {
width: 170px;
box-sizing: border-box;
padding-right: 40px;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
border-right: 1px dashed #C7CAD0;
.panelheadername {
width: 90%;
height: 38px;
line-height: 38px;
text-align: center;
box-sizing: border-box;
border-radius: 6px 0px 6px 6px;
color: #fff;
margin-bottom: 8px;
img {
vertical-align: text-top;
}
}
.num {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
.round {
width: 8px;
height: 8px;
}
.word {
margin: 0 6px;
}
.boldspan {
font-weight: 800;
font-size: 25px;
}
}
}
.maincontentitemright {
flex: 1;
box-sizing: border-box;
padding-left: 40px;
display: flex;
flex-direction: column;
justify-content: space-around;
// align-items: center;
.maincontentitemrightitem {
display: flex;
align-items: center;
box-sizing: border-box;
padding: 12px 0px;
border-bottom: 1px dashed #C7CAD0;
.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;
}
}
.namebox {
width: 28%;
}
.progressbox {
width: 220px;
span:nth-child(1) {
width: 100%;
}
}
.btnbox {
display: flex;
justify-content: flex-end;
align-self: flex-start;
}
}
div:last-child {
border-bottom: 0px;
}
}
}
}
}
}
.cutoffrule {
width: 100%;
border-top: 1px dashed #C7CAD0;
}

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

@ -11,5 +11,79 @@ export class DaMonthlyTaskOverviewComponent implements OnInit {
ngOnInit(): void {
}
months = [
{ name: '1月', isable: true },
{ name: '2月', isable: true },
{ name: '3月', isable: true },
{ name: '4月', isable: true },
{ name: '5月', isable: true },
{ name: '6月', isable: true },
{ name: '7月', isable: true },
{ name: '8月', isable: true },
{ name: '9月', isable: true },
{ name: '10月', isable: true },
{ name: '11月', isable: true },
{ name: '12月', isable: true }
]
selectedMonth
selectMonth(item) {
this.selectedMonth = item.name
}
istaskauditExpanded = true
istaskauditexpand() {
this.istaskauditExpanded = !this.istaskauditExpanded
}
isdeployboxExpanded = true
isdeployboxexpand() {
this.isdeployboxExpanded = !this.isdeployboxExpanded
}
shuxiTaskData = {
isExpand: true
}
zhidaoTaskData = {
isExpand: true
}
expand(data) {
data.isExpand = !data.isExpand
}
formatOne = (percent: number): string => `${percent}%\n完成率`;
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: '#FF404D', icon: 'huozai.png' }
]
openDetails(data, type) {
data.isDetails = type
}
xxx = false
radioChange(e) {
setTimeout(() => {
this.xxx = !this.xxx
}, 0);
}
stationData = [
{ name: '历下区A消防救援站', isExpand: true },
{ name: '历下区B消防救援站', isExpand: false },
{ name: '历下区C消防救援站', isExpand: false }
]
expandcarditem(item) {
item.isExpand = !item.isExpand
}
}

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

@ -1 +1,238 @@
<p>da-oneself-plan works!</p>
<!-- <p>本级计划</p> -->
<div class="box">
<div class="timebox">
<nz-select ngModel="2022">
<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.name == selectedMonth}">
{{item.name}}
</div>
</div>
<div style="flex: 1;overflow-y: auto;">
<!-- 上部仪表盘 -->
<div class="instrumentpanelbox">
<div class="instrumentpanelheader">
<span>本级部署</span>
<span (click)="expand()" class="expand blue">
{{isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="isExpand ? 'down' : 'up'" nzTheme="outline"></i>
</span>
</div>
<div class="instrumentpanel">
<div class="instrumentpanelitem" *ngFor="let item of cardData"
[ngClass]="{'instrumentpanelitemopen': isExpand,'instrumentpanelitemclose': !isExpand}">
<div class="itemone" *ngIf="!item.isDetails">
<div class="instrumentpanelitemleft">
<div class="panelheadername" [style]="'background:'+ item.background">
<img [src]="'../../../../assets/images/icon/'+ item.icon" alt="">
{{item.name}}
</div>
<div class="tasknum">
<p>
<span style="margin-right: 6px;">任务分配</span>
<i (click)="openDetails(item,true)"
style="vertical-align: text-top;cursor: pointer;" nz-icon nzType="right-circle"
nzTheme="outline"></i>
</p>
<p style="font-weight: 900;font-size: 36px;text-align: left;">5/9</p>
</div>
<button *ngIf="isExpand" nz-button class="btn">快速派发</button>
</div>
<div class="instrumentpanelitemright" *ngIf="isExpand">
<nz-progress [nzPercent]="75" nzType="circle" [nzFormat]="formatOne"
nzStrokeColor="#42B983">
</nz-progress>
</div>
</div>
<div class="itemtwo" *ngIf="item.isDetails">
<p class="itemtwotitle">
<span>{{item.name}}</span>
<span class="back" (click)="openDetails(item,false)"><i nz-icon nzType="rollback"
nzTheme="outline"></i>返回</span>
</p>
<div class="itemtwocontent">
<div class="itemtwocontentitem">
<p class="itemtwocontentitemp1">
<span class="itemtwocontentitemp1name">济南历下森豪室内娱乐场</span>
<span>
<span class="blue" *ngIf="isExpand">派发</span>
</span>
</p>
<p>A消防救援站</p>
<p><span class="blue" *ngIf="!isExpand">派发</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 救援站列表 -->
<div class="stationcardlistbox">
<div class="stationcardlistitembox" *ngFor="let item of stationData">
<div class="stationcardlistitem">
<div class="header">
<span style="width: 16%;">
<img src="../../../../assets//images/icon/station.png" alt="">
{{item.name}}
</span>
<span style="width: 8%;">单位总数: 7/8</span>
<div style="width: 66%;" class="progress progresssquare">
<span>完成进度</span>
<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>
</span>
</div>
<div class="maincontent" *ngIf="item.isExpand">
<div class="maincontentitem">
<div class="maincontentitemleft">
<div class="panelheadername panelheadernameor">
<img src="'../../../../assets/images/icon/huodong.png" alt="">
重大活动
</div>
<div class="num">
<div class="round" style="background: #2C4DC0;"></div>
<span class="word">已分配</span>
<span class="boldspan">1</span>
</div>
<div class="num">
<div class="round" style="background: #42B983;"></div>
<span class="word">已完成</span>
<span class="boldspan">1</span>
</div>
</div>
<div class="maincontentitemright">
<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">
<span>
<label nz-radio ngModel [ngModel]="xxx"
(click)="radioChange($event)">宣传</label>
</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>
</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 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">
<span>
<label nz-radio ngModel [ngModel]="xxx"
(click)="radioChange($event)">宣传</label>
</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>
</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>
</div>
</div>
</div>
</div>
</div>
<!-- -->
<div class="cutoffrule"></div>
</div>
</div>

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

@ -0,0 +1,384 @@
.box {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
}
.timebox {
width: 100%;
height: 68px;
box-sizing: border-box;
padding: 0 20px;
display: flex;
align-items: center;
border-bottom: 1px dashed #C7CAD0;
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;
}
}
.instrumentpanelbox {
box-sizing: border-box;
padding: 18px;
color: #303133;
.instrumentpanelheader {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.instrumentpanel {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.instrumentpanelitem {
background: #FFFFFF;
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.0800);
border-radius: 4px 4px 4px 4px;
opacity: 1;
border: 1px solid #E4E7EC;
display: flex;
.itemone {
width: 100%;
height: 100%;
display: flex;
.instrumentpanelitemleft {
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: flex-start;
flex: 1;
box-sizing: border-box;
.panelheadername {
width: 80%;
height: 46px;
line-height: 46px;
text-align: center;
box-sizing: border-box;
border-radius: 6px 0px 6px 6px;
color: #fff;
img {
vertical-align: text-top;
}
}
.tasknum {
margin-left: 8px;
p {
margin: 0;
}
}
.btn {
margin-left: 8px;
width: 60%;
max-width: 96px;
height: 36px;
border-radius: 4px 4px 4px 4px;
background: #42B983;
color: white;
cursor: pointer;
}
}
.instrumentpanelitemright {
flex: 1;
display: flex;
align-items: center;
nz-progress {
margin-top: 65px;
}
}
}
.itemtwo {
width: 100%;
height: 100%;
display: flex;
box-sizing: border-box;
padding: 16px;
flex-direction: column;
overflow: hidden;
.itemtwotitle {
display: flex;
justify-content: space-between;
.back {
cursor: pointer;
i {
margin-right: 3px;
}
}
margin-bottom: 0;
}
.itemtwocontent {
flex: 1;
overflow-y: auto;
display: flex;
flex-direction: column;
.itemtwocontentitem {
border-bottom: 1px dashed #C7CAD0;
height: 70px;
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: flex-start;
box-sizing: border-box;
padding: 8px 0;
p {
margin-bottom: 0;
}
.itemtwocontentitemp1 {
width: 100%;
display: flex;
justify-content: space-between;
box-sizing: border-box;
padding-right: 5px;
.itemtwocontentitemp1name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
}
}
}
.instrumentpanelitemopen {
width: 24.3%;
height: 260px;
margin-bottom: 18px;
.itemone {
.instrumentpanelitemleft {
padding: 26px 0 26px 10%;
}
}
}
.instrumentpanelitemclose {
width: 11.7%;
height: 200px;
margin-bottom: 0px;
.itemone {
.instrumentpanelitemleft {
padding: 15px 0 15px 10%;
}
}
}
}
.stationcardlistbox {
.stationcardlistitembox {
width: 100%;
border-top: 1px dashed #C7CAD0;
box-sizing: border-box;
padding: 18px;
.stationcardlistitem {
width: 100%;
background: #FFFFFF;
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.0800);
border-radius: 4px 4px 4px 4px;
border: 1px solid #E4E7EC;
color: #303133;
box-sizing: border-box;
padding: 0 18px;
.header {
width: 100%;
height: 64px;
display: flex;
align-items: center;
text-align: left;
.progress {
width: 200px;
display: flex;
align-items: center;
span {
margin-right: 12px;
}
nz-progress {
width: 230px;
}
}
.expand {
margin-left: 20px;
}
}
.maincontent {
.maincontentitem {
box-sizing: border-box;
padding: 16px;
margin-bottom: 18px;
border-radius: 4px 4px 4px 4px;
border: 1px solid #42B983;
display: flex;
}
.maincontentitemleft {
width: 170px;
box-sizing: border-box;
padding-right: 40px;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
border-right: 1px dashed #C7CAD0;
.panelheadername {
width: 90%;
height: 38px;
line-height: 38px;
text-align: center;
box-sizing: border-box;
border-radius: 6px 0px 6px 6px;
color: #fff;
margin-bottom: 8px;
img {
vertical-align: text-top;
}
}
.num {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
.round {
width: 8px;
height: 8px;
}
.word {
margin: 0 6px;
}
.boldspan {
font-weight: 800;
font-size: 25px;
}
}
}
.maincontentitemright {
flex: 1;
box-sizing: border-box;
padding-left: 40px;
display: flex;
flex-direction: column;
justify-content: space-around;
// align-items: center;
.maincontentitemrightitem {
display: flex;
align-items: center;
box-sizing: border-box;
padding: 12px 0px;
border-bottom: 1px dashed #C7CAD0;
.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;
}
}
.namebox {
width: 28%;
}
.progressbox {
width: 220px;
span:nth-child(1) {
width: 100%;
}
}
.btnbox {
display: flex;
justify-content: flex-end;
align-self: flex-start;
}
}
div:last-child {
border-bottom: 0px;
}
}
}
}
}
}
.cutoffrule {
width: 100%;
border-top: 1px dashed #C7CAD0;
}

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

@ -11,5 +11,61 @@ export class DaOneselfPlanComponent implements OnInit {
ngOnInit(): void {
}
months = [
{ name: '1月', isable: true },
{ name: '2月', isable: true },
{ name: '3月', isable: true },
{ name: '4月', isable: true },
{ name: '5月', isable: true },
{ name: '6月', isable: true },
{ name: '7月', isable: true },
{ name: '8月', isable: true },
{ name: '9月', isable: true },
{ name: '10月', isable: true },
{ name: '11月', isable: true },
{ name: '12月', isable: true }
]
selectedMonth
selectMonth(item) {
this.selectedMonth = item.name
}
isExpand = false
expand() {
this.isExpand = !this.isExpand
}
formatOne = (percent: number): string => `${percent}%\n完成率`;
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: '#FF404D', icon: 'huozai.png' }
]
openDetails(data, type) {
data.isDetails = type
}
xxx = false
radioChange(e) {
setTimeout(() => {
this.xxx = !this.xxx
}, 0);
}
stationData = [
{ name: '历下区A消防救援站', isExpand: true },
{ name: '历下区B消防救援站', isExpand: false },
{ name: '历下区C消防救援站', isExpand: false }
]
expandcarditem(item) {
item.isExpand = !item.isExpand
}
}

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

@ -1 +1,87 @@
<p>da-subordinate-audit works!</p>
<!-- <p>下级任务申请</p> -->
<div class="box">
<div class="timebox">
<nz-select ngModel="2022">
<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.name == selectedMonth}">
{{item.name}}
</div>
</div>
<div class="content">
<div class="tabheader">
<div class="tabtitle" [ngClass]="{'selectedTab': selectedTab == 1}" (click)="selectTab(1)">
<div [ngClass]="{'blue': selectedTab == 1}">
<span>熟悉演练任务</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>
</div>
</div>
</div>
<div class="tabbody" *ngIf="selectedTab == 1">
<div class="card redcard">
<div class="unitname">
<img src="../../../../assets/images/icon/unit.png" alt="">
<span>上海雅特酒店管理有限公司济南泺文路分公司</span>
</div>
<div class="info">
<span>
<img src="../../../../assets/images/icon/main.png" alt="">
未分配
</span>
<span>
<img src="../../../../assets/images/icon/assist.png" alt="">
未分配
</span>
<span class="blue">分配</span>
<span>|</span>
<span>申请人: 历下区A消防救援站</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=""> -->
</div>
</div>
<div class="tabbody" *ngIf="selectedTab == 2">
<div class="card greencard">
<div class="unitname">
<img src="../../../../assets/images/icon/unit.png" alt="">
<span>上海雅特酒店管理有限公司济南泺文路分公司</span>
</div>
<div class="info">
<span>
<img src="../../../../assets/images/icon/main.png" alt="">
未分配
</span>
<span>
<img src="../../../../assets/images/icon/assist.png" alt="">
未分配
</span>
<span class="blue">分配</span>
<span>|</span>
<span>申请人: 历下区A消防救援站</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="">
</div>
</div>
</div>
</div>

146
src/app/home/task/da-subordinate-audit/da-subordinate-audit.component.scss

@ -0,0 +1,146 @@
.box {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
}
.timebox {
width: 100%;
height: 68px;
box-sizing: border-box;
padding: 0 20px;
display: flex;
align-items: center;
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;
}
}
.content {
flex: 1;
overflow: hidden;
margin: 20px;
margin-top: 0px;
background: #fff;
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.0800);
border-radius: 4px 4px 4px 4px;
opacity: 1;
border: 1px solid #E4E7EC;
color: #303133;
text-align: left;
display: flex;
flex-direction: column;
.tabheader {
width: 100%;
height: 52px;
background: #E4E7EC;
display: flex;
.tabtitle {
width: 205px;
height: 52px;
line-height: 52px;
text-align: center;
display: flex;
justify-content: center;
cursor: pointer;
div {
border-top: 2px solid #E4E7EC;
}
}
.selectedTab {
background: #fff;
div {
border-top: 2px solid #2C4DC0;
}
}
}
.tabbody {
flex: 1;
overflow-y: auto;
color: #000;
box-sizing: border-box;
padding: 18px;
.card {
color: #303133;
width: 100%;
height: 70px;
border-radius: 4px 4px 4px 4px;
opacity: 1;
display: flex;
margin-bottom: 18px;
box-sizing: border-box;
padding: 0 20px;
position: relative;
div {
display: flex;
align-items: center;
img {
margin-top: -3px;
}
}
.unitname {
flex: 3;
}
.info {
flex: 6;
span {
margin-right: 20px;
}
}
.btn {
flex: 1;
}
.auditimg {
position: absolute;
right: 18%;
top: 9%;
}
}
.greencard {
background: rgba(66, 185, 131, 0.0400);
border: 1px solid rgba(66, 185, 131, 0.1600);
}
.redcard {
background: rgba(255, 0, 0, 0.0200);
border: 1px solid rgba(255, 0, 0, 0.1000);
}
}
}

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

@ -11,5 +11,28 @@ export class DaSubordinateAuditComponent implements OnInit {
ngOnInit(): void {
}
months = [
{ name: '1月', isable: true },
{ name: '2月', isable: true },
{ name: '3月', isable: true },
{ name: '4月', isable: true },
{ name: '5月', isable: true },
{ name: '6月', isable: true },
{ name: '7月', isable: true },
{ name: '8月', isable: true },
{ name: '9月', isable: true },
{ name: '10月', isable: true },
{ name: '11月', isable: true },
{ name: '12月', isable: true }
]
selectedMonth
selectMonth(item) {
this.selectedMonth = item.name
}
selectedTab = 1
selectTab(item) {
this.selectedTab = item
}
}

16
src/app/home/task/task.component.scss

@ -34,18 +34,18 @@
.content {
box-sizing: border-box;
padding: 16px;
// box-sizing: border-box;
// padding: 16px;
background: #F6F5F8;
.routerbox {
width: 100%;
height: 100%;
background: #FFFFFF;
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.0800);
border-radius: 4px 4px 4px 4px;
opacity: 1;
border: 1px solid #E4E7EC;
overflow-y: auto;
// background: #FFFFFF;
// box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.0800);
// border-radius: 4px 4px 4px 4px;
// opacity: 1;
// border: 1px solid #E4E7EC;
// overflow-y: auto;
}
}

216
src/app/home/task/zhi-audit/zhi-audit.component.html

@ -1 +1,215 @@
<p>zhi-audit works!</p>
<!-- <p>任务审批</p> -->
<div class="box">
<div class="timebox">
<nz-select ngModel="2022">
<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.name == selectedMonth}">
{{item.name}}
</div>
</div>
<div class="content" cdkScrollable>
<!-- 双随机 -->
<div class="panel">
<div class="panelheader">
<div class="panelheaderleft">
<div class="panelheadername panelheadernameblue">
<img src="../../../../assets/images/icon/suiji.png" alt="">
双随机
</div>
<span>
已选择: <span class="blue">15</span> 家单位
</span>
<span class="spanline">|</span>
<span>
已分配: <span class="blue">14</span> 家单位
</span>
<span class="spanline">|</span>
<span>
已通过: <span class="blue">14/15</span> 家单位
</span>
</div>
<div class="panelheaderright">
<button nz-button style="background: #42B983;color: white;">同意</button>
<button nz-button style="background: #FF0000;color: white;margin-left: 20px;">驳回</button>
<span (click)="expand(doubleRandom)" class="expand blue">
{{doubleRandom.isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="doubleRandom.isExpand ? 'down' : 'up'" nzTheme="outline"></i>
</span>
</div>
</div>
<div class="panelcontent" *ngIf="doubleRandom.isExpand">
<nz-table #colSpanTable [nzData]="doubleRandom.data" nzBordered nzSize="small"
[nzShowPagination]="false">
<thead>
<tr>
<th nzWidth="18%">责任机构</th>
<th nzWidth="8%">任务额</th>
<th nzWidth="25%">单位名称</th>
<th nzWidth="15%">监督员</th>
<th>说明</th>
<th nzWidth="8%">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of colSpanTable.data; index as i">
<td>访客</td>
<td>2021-11-19</td>
<td>
22
</td>
<td>
22
</td>
<td class="explain">
一段简短的说明文字...
<img src="../../../../assets/images/icon/agree.png" alt="">
<!-- <img src="../../../../assets/images/icon/reject.png" alt=""> -->
</td>
<td>
<span class="green" style="margin-right: 16px;">同意</span>
<span class="red">驳回</span>
</td>
</tr>
</tbody>
</nz-table>
</div>
</div>
<!-- 熟悉演练 -->
<div class="panel">
<div class="panelheader">
<div class="panelheaderleft">
<div class="panelheadername panelheadernamepurple">
<img src="../../../../assets/images/icon/yanlian.png" alt="">
熟悉演练
</div>
<span>
已选择: <span class="blue">15</span> 家单位
</span>
<span class="spanline">|</span>
<span>
已分配: <span class="blue">14</span> 家单位
</span>
<span class="spanline">|</span>
<span>
已通过: <span class="blue">14/15</span> 家单位
</span>
</div>
<div class="panelheaderright">
<button nz-button style="background: #42B983;color: white;">同意</button>
<button nz-button style="background: #FF0000;color: white;margin-left: 20px;">驳回</button>
<span (click)="expand(rehearsal)" class="expand blue">
{{rehearsal.isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="rehearsal.isExpand ? 'down' : 'up'" nzTheme="outline"></i>
</span>
</div>
</div>
<div class="panelcontent" *ngIf="rehearsal.isExpand">
<nz-table #colSpanTable [nzData]="rehearsal.data" nzBordered nzSize="small" [nzShowPagination]="false">
<thead>
<tr>
<th nzWidth="18%">责任机构</th>
<th nzWidth="8%">任务额</th>
<th nzWidth="25%">单位名称</th>
<th nzWidth="15%">监督员</th>
<th>说明</th>
<th nzWidth="8%">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of colSpanTable.data; index as i">
<td>访客</td>
<td>2021-11-19</td>
<td>
22
</td>
<td>
22
</td>
<td class="explain">
一段简短的说明文字...
<img src="../../../../assets/images/icon/agree.png" alt="">
<!-- <img src="../../../../assets/images/icon/reject.png" alt=""> -->
</td>
<td>
<span class="green" style="margin-right: 16px;">同意</span>
<span class="red">驳回</span>
</td>
</tr>
</tbody>
</nz-table>
</div>
</div>
<div class="panel">
<div class="panelheader">
<div class="panelheaderleft">
<div class="panelheadername panelheadernameor">
<img src="../../../../assets/images/icon/huodong.png" alt="">
重大活动
</div>
<button nz-button nzType="primary">选择单位</button>
<span>
已分配: <span class="blue">0/0</span> 家单位
</span>
</div>
<div class="panelheaderright">
<!-- <button nz-button nzType="primary">提交审核</button>
<span class="expand blue">
收起
<i nz-icon nzType="down" nzTheme="outline"></i>
</span> -->
</div>
</div>
</div>
<div class="panel">
<div class="panelheader">
<div class="panelheaderleft">
<div class="panelheadername panelheadernameor2">
<img src="../../../../assets/images/icon/xuanchuan.png" alt="">
消防宣传
</div>
<button nz-button nzType="primary">选择单位</button>
<span>
已分配: <span class="blue">0/0</span> 家单位
</span>
</div>
<div class="panelheaderright">
<!-- <button nz-button nzType="primary">提交审核</button>
<span class="expand blue">
收起
<i nz-icon nzType="down" nzTheme="outline"></i>
</span> -->
</div>
</div>
</div>
<div class="panel">
<div class="panelheader">
<div class="panelheaderleft">
<div class="panelheadername panelheadernamered">
<img src="../../../../assets/images/icon/huozai.png" alt="">
火灾调查
</div>
<button nz-button nzType="primary">选择单位</button>
<span>
已分配: <span class="blue">0/0</span> 家单位
</span>
</div>
<div class="panelheaderright">
<!-- <button nz-button nzType="primary">提交审核</button>
<span class="expand blue">
收起
<i nz-icon nzType="down" nzTheme="outline"></i>
</span> -->
</div>
</div>
</div>
</div>
</div>

183
src/app/home/task/zhi-audit/zhi-audit.component.scss

@ -0,0 +1,183 @@
.box {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
}
.timebox {
width: 100%;
height: 68px;
box-sizing: border-box;
padding: 0 20px;
display: flex;
align-items: center;
border-bottom: 1px dashed #C7CAD0;
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;
}
}
.content {
box-sizing: border-box;
padding: 20px;
flex: 1;
overflow-y: auto;
color: #606266;
}
.panel {
margin-bottom: 16px;
.panelheader {
justify-content: space-between;
.panelheaderleft {
display: flex;
align-items: center;
.panelheadername {
width: 130px;
height: 36px;
box-sizing: border-box;
padding: 8px 28px;
border-radius: 6px 0px 6px 6px;
color: #fff;
margin-right: 36px;
img {
vertical-align: text-top;
}
}
.spanline {
color: rgba(44, 77, 192, 0.4000);
margin: 0 20px;
}
}
.panelheaderright {
display: flex;
align-items: center;
.expand {
margin-left: 36px;
}
}
}
.panelcontent {
nz-table {
margin-top: 16px;
}
.explain{
position: relative;
img{
width: 36px;
height: 36px;
position: absolute;
right: 20px;
top: 4px;
}
}
}
}
.panelheadernameblue {
background-color: #1D9DFF;
}
.panelheadernamepurple {
background-color: #9D80FF;
}
.panelheadernameblue2 {
background-color: #5087FF;
}
.panelheadernamegreen {
background-color: #42B983;
}
.panelheadernameor {
background-color: #FF9203;
}
.panelheadernameor2 {
background-color: #FF5D2A;
}
.panelheadernamered {
background-color: #FF404D;
}
.selectUnitPopover {
width: 550px;
height: 492px;
nz-form-item {
margin: 12px 0;
}
display: flex;
flex-direction: column;
.popoverTitle {
display: flex;
align-items: center;
span {
color: #C7CAD0;
cursor: pointer;
}
.selectedspan {
color: #2C4DC0;
}
}
.popoverContent {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
.popoverContentitem {
flex: 1;
overflow-y: auto;
}
}
.popoverBtn {
display: flex;
justify-content: flex-end;
margin-top: 16px;
button {
margin-left: 18px;
}
}
}

110
src/app/home/task/zhi-audit/zhi-audit.component.ts

@ -1,5 +1,7 @@
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Component, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { TreeService } from 'src/app/service/tree.service';
@Component({
selector: 'app-zhi-audit',
templateUrl: './zhi-audit.component.html',
@ -7,9 +9,111 @@ import { Component, OnInit } from '@angular/core';
})
export class ZhiAuditComponent implements OnInit {
constructor() { }
validateForm!: FormGroup;
constructor(private fb: FormBuilder, private http: HttpClient, private toTree: TreeService) { }
months = [
{ name: '1月', isable: true },
{ name: '2月', isable: true },
{ name: '3月', isable: true },
{ name: '4月', isable: true },
{ name: '5月', isable: true },
{ name: '6月', isable: true },
{ name: '7月', isable: true },
{ name: '8月', isable: true },
{ name: '9月', isable: true },
{ name: '10月', isable: true },
{ name: '11月', isable: true },
{ name: '12月', isable: true }
]
selectedMonth
selectMonth(item) {
this.selectedMonth = item.name
}
// 双随机
doubleRandom = {
isExpand: true,//卡片展开
isPopover: false,//选择单位气泡卡片
search1: '',//选择单位气泡卡片---单位选择列表
search1Value: [],
search2: '',//选择单位气泡卡片---组织选择列表
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: []
}
// 熟悉演练
rehearsal = {
isExpand: false,//卡片展开
isPopover: false,//选择单位气泡卡片
search1: '',//选择单位气泡卡片---单位选择列表
search1Value: [],
search2: '',//选择单位气泡卡片---组织选择列表
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: []
}
isPopover(data) {
data.isPopover = !data.isPopover
}
//搜索框提交
submitForm(value): void {
// console.log(value)
}
// 弹出 tab
popoverMenuSelect(data, type) {
data.selectedMenu = type
}
expand(data) {
data.isExpand = !data.isExpand
}
ngOnInit(): void {
this.getAllOrganization()
}
nzExpandAll = false;
totalCount: string
allOrList: any
nodes
getAllOrganization() {
let params = {
ContainsChildren: true,
pageSize: 9999
}
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
element.selectable = false
});
this.allOrList = data.items
this.nodes = [...this.toTree.toTree(data.items)]
this.doubleRandom.nodes = JSON.parse(JSON.stringify(this.nodes))
this.rehearsal.nodes = JSON.parse(JSON.stringify(this.nodes))
})
}
orcheckbox(data, $event, node) {
if ($event) {
data.search2Value.push(node.origin.name)
} else {
for (let index = 0; index < data.search2Value.length; index++) {
const element = data.search2Value[index];
if (element == node.origin.name) {
data.search2Value.splice(index, 1)
}
}
}
console.log(data.search2Value)
}
}

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

@ -1 +1,334 @@
<p>zhi-indicators works!</p>
<!-- <p>任务指标</p> -->
<div class="box">
<div class="timebox">
<nz-select ngModel="2022">
<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.name == selectedMonth}">
{{item.name}}
</div>
</div>
<div class="content" cdkScrollable>
<!-- 双随机 -->
<div class="panel">
<div class="panelheader">
<div class="panelheaderleft">
<div class="panelheadername panelheadernameblue">
<img src="../../../../assets/images/icon/suiji.png" alt="">
双随机
</div>
<button nz-button nzType="primary" nz-popover nzPopoverPlacement="bottomLeft"
[nzPopoverContent]="contentTemplate" [nzPopoverTrigger]=null
[nzPopoverVisible]="doubleRandom.isPopover" (click)="isPopover(doubleRandom)">选择单位</button>
<ng-template #contentTemplate>
<div class="selectUnitPopover">
<div class="popoverTitle">
<span (click)="popoverMenuSelect(doubleRandom,1)"
[ngClass]="{'selectedspan': doubleRandom.selectedMenu == 1}">单位名称</span>
<span style="margin: 0 10px;">|</span>
<span (click)="popoverMenuSelect(doubleRandom,2)"
[ngClass]="{'selectedspan': doubleRandom.selectedMenu == 2}">组织机构</span>
</div>
<div class="popoverContent" *ngIf="doubleRandom.selectedMenu == 1">
<div>
<form nz-form (ngSubmit)="submitForm(doubleRandom.search1)">
<nz-form-item>
<nz-form-control>
<nz-input-group nzPrefixIcon="search">
<input type="text" [(ngModel)]="doubleRandom.search1" nz-input
placeholder="请输入单位名称" [ngModelOptions]="{standalone: true}" />
</nz-input-group>
</nz-form-control>
<button style="display: none;" type="submit"></button>
</nz-form-item>
</form>
</div>
<div class="popoverContentitem">
</div>
</div>
<div class="popoverContent" *ngIf="doubleRandom.selectedMenu == 2">
<div>
<form nz-form>
<nz-form-item>
<nz-form-control>
<nz-input-group nzPrefixIcon="search">
<input type="text" [(ngModel)]="doubleRandom.search2" nz-input
placeholder="请输入单位名称" [ngModelOptions]="{standalone: true}" />
</nz-input-group>
</nz-form-control>
</nz-form-item>
</form>
</div>
<div class="popoverContentitem">
<nz-tree [nzHideUnMatched]='true' [nzSearchValue]="doubleRandom.search2"
#nzTreeComponent [nzData]="doubleRandom.nodes" [nzTreeTemplate]="nzTreeTemplate" nzBlockNode
[nzExpandedIcon]="multiExpandedIconTpl">
</nz-tree>
<ng-template #nzTreeTemplate let-node let-origin="origin">
<div class="nodebox">
<span class="name">
<label *ngIf="node.origin.isGasStation"
[(ngModel)]="node.origin.isChecked" nz-checkbox
(ngModelChange)="orcheckbox(doubleRandom,$event,node)"></label>
{{ node.title }}
</span>
</div>
</ng-template>
<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>
</div>
</div>
<div class="popoverBtn">
<button nz-button nzType="primary">确定</button>
<button nz-button nzType="default" (click)="isPopover(doubleRandom)">取消</button>
</div>
</div>
</ng-template>
<span>
已分配: <span class="blue">14/15</span> 家单位
</span>
</div>
<div class="panelheaderright">
<button nz-button nzType="primary">提交审核</button>
<span (click)="expand(doubleRandom)" class="expand blue">
{{doubleRandom.isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="doubleRandom.isExpand ? 'down' : 'up'" nzTheme="outline"></i>
</span>
</div>
</div>
<div class="panelcontent" *ngIf="doubleRandom.isExpand">
<nz-table #colSpanTable [nzData]="doubleRandom.data" nzBordered nzSize="small"
[nzShowPagination]="false">
<thead>
<tr>
<th nzWidth="18%">责任机构</th>
<th nzWidth="8%">任务额</th>
<th nzWidth="25%">单位名称</th>
<th nzWidth="15%">监督员</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of colSpanTable.data; index as i">
<td>访客</td>
<td>2021-11-19</td>
<td>
22
</td>
<td>
22
</td>
<td style="padding:0 2px!important;">
<textarea style="border: 0;" rows="1" nz-input placeholder="一段简短的说明文字..."></textarea>
</td>
</tr>
</tbody>
</nz-table>
</div>
</div>
<!-- 熟悉演练 -->
<div class="panel">
<div class="panelheader">
<div class="panelheaderleft">
<div class="panelheadername panelheadernamepurple">
<img src="../../../../assets/images/icon/yanlian.png" alt="">
熟悉演练
</div>
<button nz-button nzType="primary" nz-popover nzPopoverPlacement="bottomLeft"
[nzPopoverContent]="contentTemplate2" [nzPopoverTrigger]=null
[nzPopoverVisible]="rehearsal.isPopover" (click)="isPopover(rehearsal)">选择单位</button>
<ng-template #contentTemplate2>
<div class="selectUnitPopover">
<div class="popoverTitle">
<span (click)="popoverMenuSelect(rehearsal,1)"
[ngClass]="{'selectedspan': rehearsal.selectedMenu == 1}">单位名称</span>
<span style="margin: 0 10px;">|</span>
<span (click)="popoverMenuSelect(rehearsal,2)"
[ngClass]="{'selectedspan': rehearsal.selectedMenu == 2}">组织机构</span>
</div>
<div class="popoverContent" *ngIf="rehearsal.selectedMenu == 1">
<div>
<form nz-form (ngSubmit)="submitForm(rehearsal.search1)">
<nz-form-item>
<nz-form-control>
<nz-input-group nzPrefixIcon="search">
<input type="text" [(ngModel)]="rehearsal.search1" nz-input
placeholder="请输入单位名称" [ngModelOptions]="{standalone: true}" />
</nz-input-group>
</nz-form-control>
<button style="display: none;" type="submit"></button>
</nz-form-item>
</form>
</div>
<div class="popoverContentitem">
</div>
</div>
<div class="popoverContent" *ngIf="rehearsal.selectedMenu == 2">
<div>
<form nz-form>
<nz-form-item>
<nz-form-control>
<nz-input-group nzPrefixIcon="search">
<input type="text" [(ngModel)]="rehearsal.search2" nz-input
placeholder="请输入单位名称" [ngModelOptions]="{standalone: true}" />
</nz-input-group>
</nz-form-control>
</nz-form-item>
</form>
</div>
<div class="popoverContentitem">
<nz-tree [nzHideUnMatched]='true' [nzSearchValue]="rehearsal.search2"
#nzTreeComponent [nzData]="rehearsal.nodes" [nzTreeTemplate]="nzTreeTemplate" nzBlockNode
[nzExpandedIcon]="multiExpandedIconTpl">
</nz-tree>
<ng-template #nzTreeTemplate let-node let-origin="origin">
<div class="nodebox">
<span class="name">
<label *ngIf="node.origin.isGasStation"
[(ngModel)]="node.origin.isChecked" nz-checkbox
(ngModelChange)="orcheckbox(rehearsal,$event,node)"></label>
{{ node.title }}
</span>
</div>
</ng-template>
<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>
</div>
</div>
<div class="popoverBtn">
<button nz-button nzType="primary">确定</button>
<button nz-button nzType="default" (click)="isPopover(rehearsal)">取消</button>
</div>
</div>
</ng-template>
<span>
已分配: <span class="blue">14/15</span> 家单位
</span>
</div>
<div class="panelheaderright">
<button nz-button nzType="primary">提交审核</button>
<span (click)="expand(rehearsal)" class="expand blue">
{{rehearsal.isExpand ? '收起' :'展开'}}
<i nz-icon [nzType]="rehearsal.isExpand ? 'down' : 'up'" nzTheme="outline"></i>
</span>
</div>
</div>
<div class="panelcontent" *ngIf="rehearsal.isExpand">
<nz-table #colSpanTable [nzData]="rehearsal.data" nzBordered nzSize="small"
[nzShowPagination]="false">
<thead>
<tr>
<th nzWidth="18%">责任机构</th>
<th nzWidth="8%">任务额</th>
<th nzWidth="25%">单位名称</th>
<th nzWidth="15%">监督员</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of colSpanTable.data; index as i">
<td>访客</td>
<td>2021-11-19</td>
<td>
22
</td>
<td>
22
</td>
<td style="padding:0 2px!important;">
<textarea style="border: 0;" rows="1" nz-input placeholder="一段简短的说明文字..."></textarea>
</td>
</tr>
</tbody>
</nz-table>
</div>
</div>
<div class="panel">
<div class="panelheader">
<div class="panelheaderleft">
<div class="panelheadername panelheadernameor">
<img src="../../../../assets/images/icon/huodong.png" alt="">
重大活动
</div>
<button nz-button nzType="primary">选择单位</button>
<span>
已分配: <span class="blue">0/0</span> 家单位
</span>
</div>
<div class="panelheaderright">
<!-- <button nz-button nzType="primary">提交审核</button>
<span class="expand blue">
收起
<i nz-icon nzType="down" nzTheme="outline"></i>
</span> -->
</div>
</div>
</div>
<div class="panel">
<div class="panelheader">
<div class="panelheaderleft">
<div class="panelheadername panelheadernameor2">
<img src="../../../../assets/images/icon/xuanchuan.png" alt="">
消防宣传
</div>
<button nz-button nzType="primary">选择单位</button>
<span>
已分配: <span class="blue">0/0</span> 家单位
</span>
</div>
<div class="panelheaderright">
<!-- <button nz-button nzType="primary">提交审核</button>
<span class="expand blue">
收起
<i nz-icon nzType="down" nzTheme="outline"></i>
</span> -->
</div>
</div>
</div>
<div class="panel">
<div class="panelheader">
<div class="panelheaderleft">
<div class="panelheadername panelheadernamered">
<img src="../../../../assets/images/icon/huozai.png" alt="">
火灾调查
</div>
<button nz-button nzType="primary">选择单位</button>
<span>
已分配: <span class="blue">0/0</span> 家单位
</span>
</div>
<div class="panelheaderright">
<!-- <button nz-button nzType="primary">提交审核</button>
<span class="expand blue">
收起
<i nz-icon nzType="down" nzTheme="outline"></i>
</span> -->
</div>
</div>
</div>
</div>
</div>

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

@ -0,0 +1,144 @@
.box {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
}
.timebox {
width: 100%;
height: 68px;
box-sizing: border-box;
padding: 0 20px;
display: flex;
align-items: center;
border-bottom: 1px dashed #C7CAD0;
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;
}
}
.content {
box-sizing: border-box;
padding: 20px;
flex: 1;
overflow-y: auto;
color: #606266;
}
.panel {
margin-bottom: 16px;
.panelheader {
justify-content: space-between;
.panelheaderleft {
display: flex;
align-items: center;
.panelheadername {
width: 130px;
height: 36px;
box-sizing: border-box;
padding: 8px 28px;
border-radius: 6px 0px 6px 6px;
color: #fff;
margin-right: 36px;
img {
vertical-align: text-top;
}
}
button {
margin-right: 36px;
}
}
.panelheaderright {
display: flex;
align-items: center;
.expand {
margin-left: 36px;
}
}
}
.panelcontent {
nz-table {
margin-top: 16px;
}
}
}
.selectUnitPopover {
width: 550px;
height: 492px;
nz-form-item {
margin: 12px 0;
}
display: flex;
flex-direction: column;
.popoverTitle {
display: flex;
align-items: center;
span {
color: #C7CAD0;
cursor: pointer;
}
.selectedspan {
color: #2C4DC0;
}
}
.popoverContent {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
.popoverContentitem{
flex: 1;
overflow-y: auto;
}
}
.popoverBtn {
display: flex;
justify-content: flex-end;
margin-top: 16px;
button{
margin-left: 18px;
}
}
}

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

@ -1,4 +1,7 @@
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Component, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { TreeService } from 'src/app/service/tree.service';
@Component({
selector: 'app-zhi-indicators',
@ -7,9 +10,111 @@ import { Component, OnInit } from '@angular/core';
})
export class ZhiIndicatorsComponent implements OnInit {
constructor() { }
validateForm!: FormGroup;
constructor(private fb: FormBuilder, private http: HttpClient, private toTree: TreeService) { }
months = [
{ name: '1月', isable: true },
{ name: '2月', isable: true },
{ name: '3月', isable: true },
{ name: '4月', isable: true },
{ name: '5月', isable: true },
{ name: '6月', isable: true },
{ name: '7月', isable: true },
{ name: '8月', isable: true },
{ name: '9月', isable: true },
{ name: '10月', isable: true },
{ name: '11月', isable: true },
{ name: '12月', isable: true }
]
selectedMonth
selectMonth(item) {
this.selectedMonth = item.name
}
// 双随机
doubleRandom = {
isExpand: true,//卡片展开
isPopover: false,//选择单位气泡卡片
search1: '',//选择单位气泡卡片---单位选择列表
search1Value: [],
search2: '',//选择单位气泡卡片---组织选择列表
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: []
}
// 熟悉演练
rehearsal = {
isExpand: false,//卡片展开
isPopover: false,//选择单位气泡卡片
search1: '',//选择单位气泡卡片---单位选择列表
search1Value: [],
search2: '',//选择单位气泡卡片---组织选择列表
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: []
}
isPopover(data) {
data.isPopover = !data.isPopover
}
//搜索框提交
submitForm(value): void {
// console.log(value)
}
// 弹出 tab
popoverMenuSelect(data, type) {
data.selectedMenu = type
}
expand(data) {
data.isExpand = !data.isExpand
}
ngOnInit(): void {
this.getAllOrganization()
}
nzExpandAll = false;
totalCount: string
allOrList: any
nodes
getAllOrganization() {
let params = {
ContainsChildren: true,
pageSize: 9999
}
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
element.selectable = false
});
this.allOrList = data.items
this.nodes = [...this.toTree.toTree(data.items)]
this.doubleRandom.nodes = JSON.parse(JSON.stringify(this.nodes))
this.rehearsal.nodes = JSON.parse(JSON.stringify(this.nodes))
})
}
orcheckbox(data, $event, node) {
if ($event) {
data.search2Value.push(node.origin.name)
} else {
for (let index = 0; index < data.search2Value.length; index++) {
const element = data.search2Value[index];
if (element == node.origin.name) {
data.search2Value.splice(index, 1)
}
}
}
console.log(data.search2Value)
}
}

BIN
src/assets/images/icon/admin.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 B

BIN
src/assets/images/icon/agree.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
src/assets/images/icon/assist.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

BIN
src/assets/images/icon/host.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 B

BIN
src/assets/images/icon/huodong.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

BIN
src/assets/images/icon/huozai.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

BIN
src/assets/images/icon/main.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

BIN
src/assets/images/icon/organization.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 B

BIN
src/assets/images/icon/power.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 484 B

BIN
src/assets/images/icon/push.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 441 B

BIN
src/assets/images/icon/reject.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
src/assets/images/icon/role.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 438 B

BIN
src/assets/images/icon/station.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

BIN
src/assets/images/icon/suiji.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

BIN
src/assets/images/icon/task.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

BIN
src/assets/images/icon/task0.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

BIN
src/assets/images/icon/tousu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

BIN
src/assets/images/icon/unit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

BIN
src/assets/images/icon/user.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 B

BIN
src/assets/images/icon/xuanchuan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

BIN
src/assets/images/icon/xuke.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

BIN
src/assets/images/icon/yanlian.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

BIN
src/assets/images/icon/zhidao.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

56
src/styles.scss

@ -98,7 +98,7 @@ textarea {
/* 滚动条样式 */
// ::-webkit-scrollbar:horizontal { width: 5px; background-color: white; }
::-webkit-scrollbar-thumb {
background-color: #999;
background: #E4E7EC;
}
::-webkit-scrollbar {
@ -106,7 +106,7 @@ textarea {
}
::-webkit-scrollbar-track {
background-color: #999;
// background-color: #999;
}
app-root {
@ -115,17 +115,17 @@ app-root {
.blue {
cursor: pointer;
color: #2C4DC0;
color: #2C4DC0 !important;
}
.green {
cursor: pointer;
color: #42B983;
color: #42B983 !important;
}
.red {
cursor: pointer;
color: #FF0000;
color: #FF0000 !important;
}
@ -161,7 +161,49 @@ app-root {
max-height: 280px;
}
button {
// 可展开面板
.panel {
width: 100%;
background: #FFFFFF;
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.0800);
border-radius: 4px 4px 4px 4px;
opacity: 1;
border: 1px solid #E4E7EC;
box-sizing: border-box;
padding: 16px;
.panelheader {
height: 46px;
display: flex;
align-items: center;
}
}
.panelheadernameblue {
background-color: #1D9DFF;
}
.panelheadernamepurple {
background-color: #9D80FF;
}
.panelheadernameblue2 {
background-color: #5087FF;
}
.panelheadernamegreen {
background-color: #42B983;
}
.panelheadernameor {
background-color: #FF9203;
}
.panelheadernameor2 {
background-color: #FF5D2A;
}
background: #2C4DC0;
.panelheadernamered {
background-color: #FF404D;
}

17
src/theme.less

@ -6,12 +6,23 @@
.ant-table-thead {
.ant-table-cell {
background-color: #EEF1F6!important;
background-color: #EEF1F6 !important;
}
}
.ant-table-cell{
.ant-table-cell {
height: 44px;
box-sizing: border-box;
padding: 0 20px!important;
padding: 0 20px !important;
color: #606266;
}
.ant-progress-circle .ant-progress-text {
white-space: pre;
font-size: 18px;
}
.progresssquare{
.ant-progress-inner{
border-radius: 0px;
}
}
Loading…
Cancel
Save