Browse Source

[新增]统计分析页面

非煤矿山灾害智能感知和预警系统
邵佳豪 2 years ago
parent
commit
6e212a1722
  1. 4
      proxy.config.json
  2. 2
      src/app/home/home-routing.module.ts
  3. 9
      src/app/home/nav/nav.component.ts
  4. 153
      src/app/home/statistic-analysis/home/home.component.html
  5. 328
      src/app/home/statistic-analysis/home/home.component.scss
  6. 371
      src/app/home/statistic-analysis/home/home.component.ts
  7. 5
      src/app/home/statistic-analysis/statistic-analysis.component.html
  8. 12
      src/app/home/task/station-task-apply/station-task-apply.component.html
  9. 7
      src/app/home/task/station-task-apply/station-task-apply.component.scss
  10. 10
      src/app/home/task/station-task-execution/station-task-execution.component.html
  11. 21
      src/app/home/task/station-task-execution/station-task-execution.component.scss
  12. 2
      src/app/home/task/station-task-execution/station-task-execution.component.ts
  13. 1
      src/app/home/task/station-task-execution/upload/upload.component.html
  14. 3
      src/app/home/task/station-weekly-plan/station-weekly-plan.component.html
  15. 40
      src/app/home/task/station-weekly-plan/station-weekly-plan.component.ts
  16. 15
      src/app/home/task/station-weekly-plan/task-details/task-details.component.html
  17. BIN
      src/assets/statistic-analysis/down.png
  18. BIN
      src/assets/statistic-analysis/five.png
  19. BIN
      src/assets/statistic-analysis/four.png
  20. BIN
      src/assets/statistic-analysis/one.png
  21. BIN
      src/assets/statistic-analysis/task.png
  22. BIN
      src/assets/statistic-analysis/three.png
  23. BIN
      src/assets/statistic-analysis/two.png
  24. BIN
      src/assets/statistic-analysis/unit.png
  25. BIN
      src/assets/statistic-analysis/ununit.png
  26. BIN
      src/assets/statistic-analysis/up.png
  27. 9
      src/theme.less

4
proxy.config.json

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

2
src/app/home/home-routing.module.ts

@ -74,7 +74,7 @@ const routes: Routes = [
{
path: 'statistic', component: StatisticAnalysisComponent,
children: [
{ path: '', redirectTo: '/statistic', pathMatch: 'full' },
{ path: '', redirectTo: '/statistic/home', pathMatch: 'full' },
{
path: 'home',
component: HomeComponent,

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

@ -42,15 +42,16 @@ export class NavComponent implements OnInit {
//1.右下角弹窗(新增任务提示)
console.log('收到消息---', message)
this.methodService.notificationsList.unshift(message)
if (message.planTaskState == 'added') {
// if (message.planTaskState == 'added') {
this.createBasicNotification(message)
}
// }
//2.右上角消息栏目(全部消息)
//3.生成周计划新增徽章(新增任务提示)
if (this.router.url.indexOf('weeklyplan') != -1) {
this.methodService.getTaskDetails(message.planTaskId).then((data: any) => {
data.signalRData = message
this.newTaskMessage.sendMessage(data);//发布一条消息
})
}
@ -63,8 +64,8 @@ export class NavComponent implements OnInit {
createBasicNotification(data): void {
this.notification.blank(
'任务提示',
data.senderName + '向你发起一个任务,' + data.content,
{ nzPlacement: 'bottomRight' }
data.content,
{ nzPlacement: 'bottomRight', nzDuration: 5 }
);
}

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

@ -1,5 +1,156 @@
<div class="box">
<div class="mapbox" id="mapbox">
<div class="topbox">
<div class="top1">
<div class="top1-1 fffcard">
<div class="top1-1item flexcolumn">
<div class="title">
任务总数&nbsp;&nbsp;&nbsp;100个
</div>
<div class="taskNum" id="taskNumCharts">
</div>
</div>
<div class="top1-1item flexcolumn">
<div class="title">
协助任务数量排名TOP5
</div>
<div class="assistTaskRanking">
<div class="taskRankingItem" *ngFor="let item of assistTaskRankingData">
<img [src]="item.url" alt="">
{{item.name}}
<div class="border"></div>
<div class="num">
{{item.num}}
</div>
</div>
</div>
</div>
</div>
<div class="top1-2 fffcard flexcolumn">
<div class="title ">
不合格单位趋势图
</div>
<div class="disqualificationUnit ">
<div class="searchbox">
<div class="searchitem1">
<div class="titleblue">
27%
</div>
<span>9月合格率</span>
</div>
<div class="searchitem1">
<div class="titlered">
111
</div>
<span>9月不合格数量</span>
</div>
<div class="rangepicker">
<nz-range-picker></nz-range-picker>
</div>
</div>
<div id="disqualificationUnit">
</div>
</div>
</div>
</div>
<div class="top2">
<div class="mapcardbox">
<div class="mapcarditem" *ngFor="let item of maocard">
<div class="mapcarditemname">
<span class="mapcarditemname1">
{{item.name}}
</span>
<span class="mapcarditemname2">
{{item.num}}
</span>
</div>
<div class="mapcarditemimg">
<img [src]="item.url" alt="">
</div>
</div>
</div>
<div class="mapbox" id="mapbox">
</div>
</div>
<div class="top3">
<div class="top3-1 fffcard flexcolumn">
<div class="title ">
企业支持度排名
</div>
<div class="companySupport">
<div class="companySupporttitle">
<span>
消防机构
</span>
<span>
支持度
</span>
</div>
<div class="rankingListBox">
<div class="rankingListItem" *ngFor="let item of rankingList1">
<div class="name">
{{item.name}}
</div>
<div class="progress">
<nz-progress [nzStrokeColor]="'#2C4DC0'" [nzStrokeLinecap]="'square'"
[nzShowInfo]="false" [nzPercent]="item.num"></nz-progress>
</div>
<div class="num">
<span>{{item.num}}%</span>
<ng-container *ngIf="item.type == 'up'; else elseTemplate">
<img src="../../../../assets/statistic-analysis/up.png" alt="">
</ng-container>
<ng-template #elseTemplate>
<img src="../../../../assets/statistic-analysis/down.png" alt="">
</ng-template>
</div>
</div>
</div>
</div>
</div>
<div class="top3-2 fffcard flexcolumn">
<div class="title">
持证人数排名
</div>
<div class="holdCertificate">
<div class="rankingListBox">
<div class="rankingListItem" *ngFor="let item of rankingList2">
<div class="name">
{{item.name}}
</div>
<div class="progress">
<nz-progress [nzStrokeColor]="'#2C4DC0'" [nzStrokeLinecap]="'square'"
[nzShowInfo]="false" [nzPercent]="item.num"></nz-progress>
</div>
<div class="num">
<span>{{item.num}}</span>
<ng-container *ngIf="item.type == 'up'; else elseTemplate">
<img src="../../../../assets/statistic-analysis/up.png" alt="">
</ng-container>
<ng-template #elseTemplate>
<img src="../../../../assets/statistic-analysis/down.png" alt="">
</ng-template>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="bottombox fffcard flexcolumn">
<div class="title">
任务完成情况
</div>
<div class="completionOfTask">
<div class="completionOfTask1" id="completionOfTask1">
</div>
<div class="completionOfTask2" id="completionOfTask2">
</div>
</div>
</div>
</div>

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

@ -1,12 +1,326 @@
.box {
width: 100%;
height: 100%;
box-sizing: border-box;
padding: 18px;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
color: #303133;
text-align: left;
}
.fffcard {
background: #fff;
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.08);
border-radius: 4px 4px 4px 4px;
border: 1px solid #E4E7EC;
}
.flexcolumn {
display: flex;
flex-direction: column;
}
.taskNum,
.assistTaskRanking,
.disqualificationUnit,
.companySupport,
.holdCertificate,
.completionOfTask {
flex: 1;
}
.assistTaskRanking {
display: flex;
flex-direction: column;
justify-content: space-around;
box-sizing: border-box;
padding: 18px 0 18px 16px;
.taskRankingItem {
display: flex;
align-items: center;
img {
margin-right: 3px;
}
.border {
flex: 1;
border-bottom: 1px dashed #E4E7EC;
margin: 0 3px;
}
.num {
width: 50px;
}
}
}
.disqualificationUnit {
display: flex;
flex-direction: column;
.searchbox {
width: 100%;
height: 60px;
display: flex;
align-items: center;
.searchitem1 {
display: flex;
flex-direction: column;
justify-content: center;
box-sizing: border-box;
padding: 0 18px;
.titleblue {
font-size: 16px;
font-weight: 600;
color: #2C4DC0;
margin-right: 5%;
}
.titlered {
font-size: 16px;
font-weight: 600;
color: #FF0000;
}
}
.rangepicker {
height: 32px;
width: 45%;
text-align: right;
margin-left: 10%;
}
}
#disqualificationUnit {
flex: 1;
}
}
.companySupport,
.holdCertificate {
display: flex;
flex-direction: column;
.companySupporttitle {
width: 100%;
height: 42px;
display: flex;
justify-content: space-between;
align-items: center;
color: #C7CAD0;
box-sizing: border-box;
padding: 0 18px;
}
.rankingListBox {
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-around;
box-sizing: border-box;
padding: 0px 18px;
padding-bottom: 8px;
.rankingListItem {
display: flex;
align-items: center;
.name {
width: 35%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-right: 8%;
}
.progress {
flex: 1;
margin-bottom: 2px;
}
.num {
display: flex;
align-items: center;
margin-left: 12%;
img {
margin-left: 3px;
}
}
}
}
}
.holdCertificate {
.rankingListBox {
padding-bottom: 8px;
padding-top: 8px;
}
}
.completionOfTask {
display: flex;
.completionOfTask1 {
flex: 1;
}
.completionOfTask2 {
flex: 4.6;
}
}
.title {
width: 100%;
height: 50px;
line-height: 50px;
box-sizing: border-box;
padding-left: 18px;
border-bottom: 1px solid #E4E7EC;
}
.topbox {
flex: 2;
display: flex;
justify-content: space-between;
margin-bottom: 18px;
.top1 {
flex: 1;
display: flex;
flex-direction: column;
.top1-1 {
flex: 1;
margin-bottom: 18px;
display: flex;
.top1-1item {
flex: 1;
}
}
.top1-2 {
flex: 1.3;
}
}
.top2 {
flex: 1.5;
margin: 0 18px;
position: relative;
.mapcardbox {
position: absolute;
left: 0;
top: 18px;
height: 100px;
width: 100%;
z-index: 999;
display: flex;
padding: 0 18px;
box-sizing: border-box;
.mapcarditem {
flex: 1;
height: 100%;
background: #FFFFFF;
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.08);
border-radius: 4px 4px 4px 4px;
border: 1px solid #E4E7EC;
box-sizing: border-box;
padding: 16px;
display: flex;
.mapcarditemname {
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
.mapcarditemname1 {
font-size: 16px;
}
.mapcarditemname2 {
font-size: 26px;
font-weight: 600;
}
}
.mapcarditemimg {
width: 68px;
height: 68px;
border-radius: 68px;
text-align: center;
line-height: 68px;
}
}
.mapcarditem:nth-child(1) {
.mapcarditemname2 {
color: #2C4DC0;
}
.mapcarditemimg {
background: linear-gradient(to bottom, #94ACFF, #2C4DC0);
}
}
.mapcarditem:nth-child(2) {
margin: 0 18px;
.mapcarditemname2 {
color: #FF0000;
}
.mapcarditemimg {
background: linear-gradient(to bottom, #FF9191, #FF0000);
}
}
.mapcarditem:nth-child(3) {
.mapcarditemname2 {
color: #42B983;
}
.mapcarditemimg {
background: linear-gradient(to bottom, #AFF8D7, #42B983);
}
}
}
.mapbox {
width: 100%;
height: 100%;
box-shadow: 0px 3px 8px 1px rgba(0, 0, 0, 0.08);
border-radius: 4px 4px 4px 4px;
border: 1px solid #E4E7EC;
}
}
.top3 {
flex: .8;
display: flex;
flex-direction: column;
.top3-1 {
flex: 1.1;
margin-bottom: 18px;
}
.top3-2 {
flex: 1;
}
}
}
.bottombox {
flex: 0.9;
}
.mapbox{
width: 600px;
height: 500px;
border: 1px solid red;
}

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

@ -1,7 +1,7 @@
import { Component, OnInit } from '@angular/core';
declare var AMap: any;
declare var AMapUI: any;
import * as echarts from 'echarts';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
@ -10,13 +10,374 @@ declare var AMapUI: any;
export class HomeComponent implements OnInit {
constructor() { }
taskNumCharts
taskNumChartsOption = {
title: [
{
text: `{val|100}\n{name|单位总数}`,
top: 'center',
left: '61%',
textStyle: {
rich: {
val: {
fontSize: 28,
fontWeight: 'bold',
color: '#333333'
},
name: {
fontSize: 14,
color: '#666666',
padding: [2, 0]
}
}
}
},
],
color: ['#5483EA', '#34E0A3', '#E4E7EC'],
tooltip: {
trigger: 'item'
},
legend: {
top: 'center',
left: '5%',
itemGap: 15,
itemWidth: 10,
itemHeight: 10,
orient: 'vertical',
formatter: (name) => {
let data = this.taskNumChartsOption.series[0].data
let total = 0
let tarValue
for (let i = 0; i < data.length; i++) {
total += data[i].value
if (data[i].name == name) {
tarValue = data[i].value
}
}
let v = tarValue + '个'
//计算出百分比
// let p = Math.round((tarValue / total) * 100) + '%'
return `${name} ${v}`
//name是名称,v是数值
},
},
series: [
{
type: 'pie',
radius: ['50%', '65%'],
center: ['72%', '50%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
labelLine: {
show: false
},
data: [
{ value: 48, name: '上级派发任务' },
{ value: 20, name: '自主任务' },
{ value: 32, name: '协助任务' }
]
}
]
};
disqualificationUnitCharts
disqualificationUnitChartsOption = {
grid: {
left: '8%',
right: '5%',
top: '15%',
bottom: '15%'
},
xAxis: {
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
axisTick: { //x轴刻度尺
show: false
},
axisLine: {//x轴线条颜色
show: false,
lineStyle: {
color: '#C7CAD0'
}
},
},
yAxis: {
type: 'value',
splitLine: {//网格线
lineStyle: {
type: 'solid', //设置网格线类型 dotted:虚线 solid:实线
color: '#ECEFF1' //网格线颜色
},
},
axisLine: {//y轴线条颜色
show: false,
lineStyle: {
color: '#C7CAD0'
}
},
},
series: [
{
data: [20, 16, 30, 20, 60, 80, 55, 90, 60, 70, 50, 20],
type: 'line',
showSymbol: false,//去除面积图节点圆
smooth: true,//面积图改成弧形状
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgba(84,131,234,0.6)'
}, {
offset: 1,
color: 'rgba(255,255,255,0)'
}])
}
}
]
};
completionOfTaskPie
completionOfTaskPieOption = {
title: [
{
text: `{val|260}\n{name|任务总数}`,
top: 'center',
left: '26%',
textStyle: {
rich: {
val: {
fontSize: 28,
fontWeight: 'bold',
color: '#333333'
},
name: {
fontSize: 14,
color: '#666666',
padding: [2, 0]
}
}
}
},
],
color: ['#34E0A3', '#E4E7EC'],
tooltip: {
trigger: 'item'
},
legend: {
top: 'center',
right: '10%',
itemGap: 15,
itemWidth: 10,
itemHeight: 10,
orient: 'vertical',
formatter: (name) => {
let data = this.completionOfTaskPieOption.series[0].data
let total = 0
let tarValue
for (let i = 0; i < data.length; i++) {
total += data[i].value
if (data[i].name == name) {
tarValue = data[i].value
}
}
let v = tarValue
//计算出百分比
// let p = Math.round((tarValue / total) * 100) + '%'
return `${name} ${v}`
//name是名称,v是数值
},
},
series: [
{
type: 'pie',
radius: ['50%', '65%'],
center: ['35%', '50%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
labelLine: {
show: false
},
data: [
{ value: 180, name: '已完成' },
{ value: 80, name: '未完成' }
]
}
]
};
completionOfTaskBar
completionOfTaskBarOption = {
grid: {
left: '3%',
right: '7%',
top: '15%',
bottom: '20%'
},
legend: {
top: 'center',
right: '2%',
itemGap: 15,
itemWidth: 10,
itemHeight: 10,
orient: 'vertical'
},
tooltip: {
trigger: 'axis',
axisPointer: {
// Use axis to trigger tooltip
type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
}
},
color: ['#34E0A3', '#39CCF4'],
xAxis: {
type: 'category',
data: ['历下区大队', '南部山区大队', '市中区大队', '槐荫区大队', '天桥区大队', '历城区大队', '高新技术产业开发区大队', '长清区大队', '章丘区大队', '平阴县大队', '商河县大队', '济阳县大队', '莱芜区大队'],
axisTick: { //x轴刻度尺
show: false
},
axisLine: {//x轴线条颜色
show: false,
lineStyle: {
color: '#C7CAD0'
}
},
axisLabel: {
show: true,
interval: 0,//使x轴上的文字显示完全,
//设置一行显示几个字,自己设置
formatter: function (params) {
var newParamsName = "";
var paramsNameNumber = params.length;
var provideNumber = 6;
var rowNumber = Math.ceil(paramsNameNumber / provideNumber);
if (paramsNameNumber > provideNumber) {
for (var p = 0; p < rowNumber; p++) {
var tempStr = "";
var start = p * provideNumber;
var end = start + provideNumber;
if (p == rowNumber - 1) {
tempStr = params.substring(start, paramsNameNumber);
} else {
tempStr = params.substring(start, end) + "\n";
}
newParamsName += tempStr;
}
} else {
newParamsName = params;
}
return newParamsName;
}
}
},
yAxis: {
type: 'value',
splitLine: {//网格线
lineStyle: {
type: 'solid', //设置网格线类型 dotted:虚线 solid:实线
color: '#ECEFF1' //网格线颜色
},
},
axisLine: {//y轴线条颜色
show: false,
lineStyle: {
color: '#C7CAD0'
}
},
},
series: [
{
name: '已完成',
type: 'bar',
barWidth: 16, // 柱子宽度
stack: 'total',
label: {
show: false
},
emphasis: {
focus: 'series'
},
data: [20, 20, 30, 10, 20, 30, 40, 50, 50, 40, 20, 30, 40]
},
{
name: '未完成',
type: 'bar',
barWidth: 16, // 柱子宽度
stack: 'total',
label: {
show: false
},
emphasis: {
focus: 'series'
},
data: [30, 10, 20, 10, 20, 30, 40, 30, 50, 40, 20, 10, 30]
}
]
};
ngOnInit(): void {
window.setTimeout(()=>{
window.setTimeout(() => {
this.mapInit() //初始化地图
},0)
}, 0)
// 任务总数
this.taskNumCharts = echarts.init(document.getElementById('taskNumCharts'), null, { devicePixelRatio: 2 });
this.disqualificationUnitCharts = echarts.init(document.getElementById('disqualificationUnit'), null, { devicePixelRatio: 2 });
this.completionOfTaskPie = echarts.init(document.getElementById('completionOfTask1'), null, { devicePixelRatio: 2 });
this.completionOfTaskBar = echarts.init(document.getElementById('completionOfTask2'), null, { devicePixelRatio: 2 });
this.echartsSetData()
}
echartsSetData() {
this.taskNumCharts && this.taskNumCharts.setOption(this.taskNumChartsOption);
this.disqualificationUnitCharts && this.disqualificationUnitCharts.setOption(this.disqualificationUnitChartsOption);
this.completionOfTaskPie && this.completionOfTaskPie.setOption(this.completionOfTaskPieOption);
this.completionOfTaskBar && this.completionOfTaskBar.setOption(this.completionOfTaskBarOption);
}
assistTaskRankingData = [
{ name: '济南市消防救援支队', num: 120, url: "../../../../assets/statistic-analysis/one.png" },
{ name: '历下区大队', num: 100, url: "../../../../assets/statistic-analysis/two.png" },
{ name: '南部山区大队', num: 80, url: "../../../../assets/statistic-analysis/three.png" },
{ name: '市中区大队', num: 60, url: "../../../../assets/statistic-analysis/four.png" },
{ name: '天桥区大队', num: 40, url: "../../../../assets/statistic-analysis/five.png" }
]
rankingList1 = [
{ name: '济南市消防救援支队', num: 80, type: "up" },
{ name: '历下区大队', num: 75, type: "down" },
{ name: '南部山区大队', num: 75, type: "up" },
{ name: '市中区大队', num: 75, type: "up" },
{ name: '槐荫区大队', num: 70, type: "up" },
{ name: '天桥区大队', num: 60, type: "up" }
]
rankingList2 = [
{ name: '长清区大队', num: 120, type: "up" },
{ name: '章丘区大队', num: 100, type: "down" },
{ name: '平阴县消防救援大队', num: 95, type: "down" },
{ name: '商河县消防救援大队', num: 90, type: "up" },
{ name: '济阳县消防救援大队', num: 40, type: "up" },
{ name: '莱芜区消防救援大队', num: 35, type: "up" }
]
maocard = [
{ name: "重点单位数量", num: 72674, url: '../../../../assets/statistic-analysis/unit.png' },
{ name: "不合格单位数量", num: 674, url: '../../../../assets/statistic-analysis/ununit.png' },
{ name: "协作任务数量", num: 32260, url: '../../../../assets/statistic-analysis/task.png' }
]
map
mapInit() {
//创建地图
@ -58,7 +419,7 @@ export class HomeComponent implements OnInit {
//绘制子区域
districtExplorer.renderSubFeatures(areaNode, (feature, i) => {
console.log(111,feature)
// console.log(111, feature)
let fillColor = colors[i % colors.length];
let strokeColor = colors[colors.length - 1 - i % colors.length];
return {
@ -68,7 +429,7 @@ export class HomeComponent implements OnInit {
strokeOpacity: 1, //线透明度
strokeWeight: 1, //线宽
fillColor: fillColor, //填充色
fillOpacity: 0.5, //填充透明度
fillOpacity: 0.8, //填充透明度
};
});

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

@ -1,4 +1 @@
<div class="box">
<nz-empty></nz-empty>
</div>
<!-- <router-outlet></router-outlet> -->
<router-outlet></router-outlet>

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

@ -93,7 +93,7 @@
</span>
</div>
<div class="flexcol unitnamebox">
<span>
<span class="ellipsi" [title]="item.company.companyName">
{{item.company.companyName}}
</span>
<span>
@ -101,16 +101,18 @@
</span>
</div>
<div class="flexcol flexcollevel">
<span>
<span class="ellipsi" [title]="item.company.useNature">
{{item.company.useNature}}
</span>
<span>
级别
</span>
</div>
<div class="flexcol">
<span class="ellipsi">
{{isSupervisor ? item.creator.name :item.organization.name}}
<div class="flexcol flexcolmain">
<span class="ellipsi" [title]="item.organization.level == 'battalion'? item.creator.name :
item.organization.name">
{{item.organization.level == 'battalion'? item.creator.name :
item.organization.name}}
</span>
<span>
主负责人

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

@ -207,7 +207,7 @@
}
.flexcollevel {
flex: 2.5;
flex: 2;
}
.ellipsi{
width: 100%;
@ -239,7 +239,10 @@
}
.unitnamebox {
flex: 3;
flex: 2;
}
.flexcolmain{
flex: 2;
}
}

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

@ -99,7 +99,7 @@
</div>
<div class="flexcol unitnamebox">
<span>
<span class="ellipsi" [title]="item.company.companyName">
{{item.company.companyName}}
</span>
<span>
@ -107,7 +107,7 @@
</span>
</div>
<div class="flexcol">
<span>
<span class="ellipsi" [title]="item.company.useNature">
{{item.company.useNature}}
</span>
<span>
@ -115,8 +115,10 @@
</span>
</div>
<div class="flexcol">
<span>
{{item.organization.name}}
<span class="ellipsi" [title]="item.organization.level == 'battalion'? item.creator.name :
item.organization.name">
{{item.organization.level == 'battalion'? item.creator.name :
item.organization.name}}
</span>
<span>
主负责人

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

@ -169,15 +169,17 @@
div {
flex: 1;
overflow:hidden;
overflow: hidden;
span {
display: inline-block;
height: 33px;
line-height: 33px;
text-align: left;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
img {
width: 32px;
height: 32px;
@ -191,6 +193,7 @@
align-items: flex-start;
margin-right: 3%;
width: 100%;
span:nth-child(1) {
color: #303133;
}
@ -227,15 +230,19 @@
}
}
.result{
.ellipsi {
width: 100%;
}
.result {
flex: 2;
}
.unitnamebox {
flex: 3;
flex: 2;
}
.flexcolcenter{
.flexcolcenter {
flex: 0.5;
align-items: center;
}

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

@ -74,7 +74,7 @@ export class StationTaskExecutionComponent implements OnInit {
TaskName: this.searchForm.taskname,
CompanyName: this.searchForm.unitname,
SupervisorId: this.isSupervisor ? this.userId : null,
AssitantOrganizationId: this.isSupervisor ? null : this.OrganizationId,
AssistantOrganizationId: this.isSupervisor ? null : this.OrganizationId,
approvalStatuses: ['待检查', '已检查'],
PageNumber: this.PageNumber,
PageSize: this.PageSize

1
src/app/home/task/station-task-execution/upload/upload.component.html

@ -4,6 +4,7 @@
<nz-form-label [nzSpan]="5" nzFor="result" nzRequired>检查结果</nz-form-label>
<nz-form-control [nzSpan]="12" nzErrorTip="请选择结果!" style="max-width: 100%;">
<nz-select id="result" formControlName="result" nzPlaceHolder="请选择结果">
<nz-option nzValue="检查完成" nzLabel="检查完成"></nz-option>
<nz-option nzValue="未发现违法违规情况" nzLabel="未发现违法违规情况"></nz-option>
<nz-option nzValue="责令限期改正" nzLabel="责令限期改正"></nz-option>
<nz-option nzValue="因客观原因无法开展检查" nzLabel="因客观原因无法开展检查"></nz-option>

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

@ -187,7 +187,8 @@
</div>
<div class="flexcol">
<span>
{{i.organization.name}}
{{i.organization.level == 'battalion'? i.creator.name :
i.organization.name}}
</span>
<span>
主负责人

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

@ -389,18 +389,40 @@ export class StationWeeklyPlanComponent implements OnInit {
this.newTaskMessage.getMessage().subscribe((data: any) => {
console.log('具体任务信息', data);
this.cardData.forEach((item: any) => {
if (item.name == data.taskType) {
item.data.unshift(data)
if (!item.isDetails) {
item.badgeNum += 1
if (data.signalRData.planTaskState == 'added') {
this.cardData.forEach((item: any) => {
if (item.name == data.taskType) {
item.data.unshift(data)
if (!item.isDetails) {
item.badgeNum += 1
}
if (data.approvalStatus == '通过') {
item.passed += 1
this.getTaskListPass(this.stationData[0])
}
}
if (data.approvalStatus == '通过') {
item.passed += 1
})
}
if (data.signalRData.planTaskState == 'deleted') {
this.cardData.forEach((item: any) => {
if (item.name == data.taskType) {
for (let index = 0; index < item.data.length; index++) {
const element = item.data[index];
if (element.id == data.signalRData.planTaskId) {
item.data.splice(index, 1)
index--
}
}
if (!item.isDetails) {
item.badgeNum -= 1
}
this.getTaskListPass(this.stationData[0])
}
}
})
})
}
});

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

@ -4,17 +4,18 @@
<div class="text">
<p>单位名称 : {{item.company.companyName}}</p>
<p>单位级别 : {{item.company.useNature}}</p>
<p>主负责人 : {{item.organization.name}}</p>
<p>主负责人 : {{item.organization.level == 'battalion'? item.creator.name :
item.organization.name}}</p>
<p>协助人员 :
<span class="assistant">
<span *ngFor="let o of item.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 *ngFor="let i of item.assistantOrganizations">
{{i.name}}
</span>
<span *ngFor="let i of item.supervisors">
{{i.name}}
</span>
</span>
</p>
</div>
<div class="state">

BIN
src/assets/statistic-analysis/down.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

BIN
src/assets/statistic-analysis/five.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/assets/statistic-analysis/four.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/assets/statistic-analysis/one.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1012 B

BIN
src/assets/statistic-analysis/task.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

BIN
src/assets/statistic-analysis/three.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/assets/statistic-analysis/two.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/assets/statistic-analysis/unit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 B

BIN
src/assets/statistic-analysis/ununit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

BIN
src/assets/statistic-analysis/up.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

9
src/theme.less

@ -146,6 +146,9 @@
}
}
}
.xxx{
padding: 0;
}
.rankingListBox {
.ant-progress-inner {
border-radius: 0px;
}
}

Loading…
Cancel
Save