diff --git a/src/app/pages/criminal-records-admin/criminal-records-admin.component.html b/src/app/pages/criminal-records-admin/criminal-records-admin.component.html index dd5414c..b5e5c4d 100644 --- a/src/app/pages/criminal-records-admin/criminal-records-admin.component.html +++ b/src/app/pages/criminal-records-admin/criminal-records-admin.component.html @@ -1,5 +1,4 @@
-
@@ -8,6 +7,7 @@
预警类型统计 + 卸油统计 证照预警统计
@@ -89,7 +89,19 @@
- + + + + + + + + + @@ -234,8 +246,13 @@ {{item.violateTime | date:"yyyy-MM-dd HH:mm:ss"}}
- 已处置 - 未处置 + + 误报 + + + 已处置 + 未处置 +
查看 diff --git a/src/app/pages/criminal-records-admin/criminal-records-admin.component.ts b/src/app/pages/criminal-records-admin/criminal-records-admin.component.ts index 43dbba4..0a4efee 100644 --- a/src/app/pages/criminal-records-admin/criminal-records-admin.component.ts +++ b/src/app/pages/criminal-records-admin/criminal-records-admin.component.ts @@ -290,7 +290,24 @@ export class CriminalRecordsAdminComponent implements OnInit { } startdate enddate + + isMisinformation: boolean = false//误报按钮的显隐 ngOnInit(): void { + let loginUserInfo + if (sessionStorage.getItem('isGasStation') == 'true') { + loginUserInfo = JSON.parse(sessionStorage.getItem('userdataOfgasstation')) + } else { + loginUserInfo = JSON.parse(sessionStorage.getItem('userdata')) + } + + if (loginUserInfo.roles.find((item) => { + return item.name == 'ViolationPositiveCensorer' + })) { + this.isMisinformation = true + } else { + this.isMisinformation = false + } + //当前日期 let myDate: any = new Date(); let nowY = myDate.getFullYear(); @@ -311,7 +328,8 @@ export class CriminalRecordsAdminComponent implements OnInit { event: [null], site: [null], disposalState: [null], - datePicker: [[this.startdate, this.enddate]] + datePicker: [[this.startdate, this.enddate]], + misinformation: ['true'], }); //饼图 @@ -467,7 +485,8 @@ export class CriminalRecordsAdminComponent implements OnInit { IsHandled: disposalState, ViolateTime: this.validateForm.value.datePicker ? [moment(this.validateForm.value.datePicker[0]).format('yyyy-MM-DD'), moment(this.validateForm.value.datePicker[1]).format('yyyy-MM-DD')] : null, SkipCount: this.SkipCount, - MaxResultCount: this.MaxResultCount + MaxResultCount: this.MaxResultCount, + Positive: this.validateForm.value.misinformation } this.tableSpin = true this.http.get('/api/services/app/ViolateRecord/GetAll', { @@ -475,12 +494,9 @@ export class CriminalRecordsAdminComponent implements OnInit { }).subscribe((data: any) => { this.list = this.list.concat(data.result.items); this.list = [...this.list] - // this.list = data.result.items this.totalCount = data.result.totalCount console.log('违规记录列表', data) this.tableSpin = false - - console.log(this.list.length) }) } @@ -556,10 +572,12 @@ export class CriminalRecordsAdminComponent implements OnInit { } this.validateForm.patchValue({ organization: JSON.parse(sessionStorage.getItem('userdata')).organization.id, - datePicker: [this.startdate, this.enddate] + datePicker: [this.startdate, this.enddate], + misinformation: 'true', }); this.list = [] this.SkipCount = '0' + console.log('xxxx',this.validateForm.value) this.getViolateRecordList() } @@ -744,7 +762,9 @@ export class CriminalRecordsAdminComponent implements OnInit { goWarningList() { this.router.navigate(['/records/warningstatisticslist']) } - + goMisinformationList() { + this.router.navigate(['records/misinformationList']) + } dispose(item) { console.log(item) const modal = this.modal.create({ diff --git a/src/app/pages/criminal-records/criminal-records.component.html b/src/app/pages/criminal-records/criminal-records.component.html index 4e090e5..3579eb5 100644 --- a/src/app/pages/criminal-records/criminal-records.component.html +++ b/src/app/pages/criminal-records/criminal-records.component.html @@ -7,6 +7,7 @@
预警类型统计 + 卸油统计 证照预警统计
@@ -69,7 +70,14 @@
- + + + + + + + + @@ -193,8 +201,13 @@ {{item.violateTime | date:"yyyy-MM-dd HH:mm:ss"}}
- 已处置 - 未处置 + + 误报 + + + 已处置 + 未处置 +
查看 diff --git a/src/app/pages/criminal-records/criminal-records.component.ts b/src/app/pages/criminal-records/criminal-records.component.ts index 795d9f4..0d3262f 100644 --- a/src/app/pages/criminal-records/criminal-records.component.ts +++ b/src/app/pages/criminal-records/criminal-records.component.ts @@ -297,7 +297,23 @@ export class CriminalRecordsComponent implements OnInit { } startdate enddate + + isMisinformation: boolean = false//误报按钮的显隐 ngOnInit(): void { + let loginUserInfo + if (sessionStorage.getItem('isGasStation') == 'true') { + loginUserInfo = JSON.parse(sessionStorage.getItem('userdataOfgasstation')) + } else { + loginUserInfo = JSON.parse(sessionStorage.getItem('userdata')) + } + + if (loginUserInfo.roles.find((item) => { + return item.name == 'ViolationPositiveCensorer' + })) { + this.isMisinformation = true + } else { + this.isMisinformation = false + } //当前日期 let myDate: any = new Date(); let nowY = myDate.getFullYear(); @@ -316,7 +332,8 @@ export class CriminalRecordsComponent implements OnInit { event: [null], disposalState: [null], site: [null], - datePicker: [[this.startdate, this.enddate]] + datePicker: [[this.startdate, this.enddate]], + misinformation: ['true'], }); // 饼图 this.myChart = echarts.init(document.getElementById('piechart')); @@ -446,7 +463,8 @@ export class CriminalRecordsComponent implements OnInit { ViolateTime: this.validateForm.value.datePicker ? [moment(this.validateForm.value.datePicker[0]).format('yyyy-MM-DD'), moment(this.validateForm.value.datePicker[1]).format('yyyy-MM-DD')] : null, IsHandled: disposalState, SkipCount: this.SkipCount, - MaxResultCount: this.MaxResultCount + MaxResultCount: this.MaxResultCount, + Positive: this.validateForm.value.misinformation } this.tableSpin = true this.http.get('/api/services/app/ViolateRecord/GetAll', { @@ -490,7 +508,8 @@ export class CriminalRecordsComponent implements OnInit { this.validateForm.controls[key].updateValueAndValidity(); } this.validateForm.patchValue({ - datePicker: [this.startdate, this.enddate] + datePicker: [this.startdate, this.enddate], + misinformation: 'true' }); this.list = [] this.SkipCount = '0' @@ -643,6 +662,9 @@ export class CriminalRecordsComponent implements OnInit { goWarningList() { this.router.navigate(['/records/petrolStation/warningstatisticslist']) } + goMisinformationList() { + this.router.navigate(['records/petrolStation/misinformationList']) + } dispose(item) { console.log(item) const modal = this.modal.create({ diff --git a/src/app/pages/home/home.component.html b/src/app/pages/home/home.component.html index 3d367ba..e0a1bcd 100644 --- a/src/app/pages/home/home.component.html +++ b/src/app/pages/home/home.component.html @@ -30,9 +30,9 @@
  • 预警记录
  • -
  • +
  • diff --git a/src/app/pages/misinformation-list/misinformation-list.component.html b/src/app/pages/misinformation-list/misinformation-list.component.html new file mode 100644 index 0000000..98b6949 --- /dev/null +++ b/src/app/pages/misinformation-list/misinformation-list.component.html @@ -0,0 +1,260 @@ +
    +
    + +
    +
    + +
    +
    + 预警类型统计 + 预警误报统计 + 卸油统计 + 证照预警统计 +
    +
    +
    + +
    + + + + + + + +
    +
    +
    +
    + 序号 +
    +
    + + 预警级别 + +
    +
    + 预警类型 +
    +
    + 预警事件 +
    +
    + 所属公司 +
    +
    + 管理区域 +
    +
    + 加油站 +
    +
    + 预警区域 +
    +
    + 摄像头名称 +
    +
    + 预警时间 +
    +
    + 状态 +
    +
    + 操作 +
    +
    +
    +
    +
    + {{key + 1}} +
    +
    + + + + + Ⅰ级 + Ⅱ级 + Ⅲ级 + Ⅳ级 +
    +
    + {{item.violation.violationType}} +
    +
    + {{item.violation.eventSystemName}} +
    +
    + {{item.gasStation.companyName}} +
    +
    + {{item.gasStation.locationName}} +
    +
    + {{item.gasStation.stationName}} +
    +
    + {{item.violateArea}} +
    +
    + {{item.cameraNo}} +
    +
    + {{item.violateTime | date:"yyyy-MM-dd HH:mm:ss"}} +
    +
    + 已处置 + 未处置 +
    +
    + 查看 + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    \ No newline at end of file diff --git a/src/app/pages/misinformation-list/misinformation-list.component.scss b/src/app/pages/misinformation-list/misinformation-list.component.scss new file mode 100644 index 0000000..33965e7 --- /dev/null +++ b/src/app/pages/misinformation-list/misinformation-list.component.scss @@ -0,0 +1,612 @@ +.recordsboxadmin { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; +} + +.search { + box-sizing: border-box; + padding: 0 36px; + width: 100%; + height: 32px; + margin-bottom: 16px; + + form { + width: 100%; + height: 32px; + display: flex; + justify-content: flex-start; + + .searchParams, + .btn { + margin: 0 3px; + } + + .searchParams { + // flex: 5; + width: 150px; + } + + .searchParamsLong { + width: 250px; + } + + .searchParams2 { + width: 220px; + } + + .btn { + // flex: 1; + } + + nz-select { + color: rgba(145, 204, 255, 0.95); + } + + nz-tree-select { + color: rgba(145, 204, 255, 0.95); + } + + nz-range-picker { + background-color: rgba(0, 0, 0, 0); + width: 100%; + } + + } + + +} + +.content { + flex: 1; + display: flex; + flex-direction: column; + overflow: hidden; + + .title { + width: 100%; + height: 64px; + box-sizing: border-box; + padding: 0 28px; + margin: 13px 0; + position: relative; + + .titlebox { + width: 100%; + height: 100%; + display: flex; + align-items: center; + + img { + width: 65px; + height: 65px; + } + + .content { + flex: 1; + height: 48px; + display: flex; + align-items: center; + justify-content: center; + // background-image: linear-gradient(to right, #002147, #033565, #064e8e, #064e8e, #033565, #002147); + background: linear-gradient(270deg, rgba(35, 153, 255, 0) 0%, rgba(35, 153, 255, 0.32) 50%, rgba(35, 153, 255, 0) 100%); + + .contentitem { + width: 100%; + height: 32px; + display: flex; + align-items: center; + // background-image: linear-gradient(to right, #002147, #0f5ca0, #1c88e6, #1c88e6, #0f5ca0, #002147); + background: linear-gradient(270deg, rgba(35, 153, 255, 0) 0%, rgba(35, 153, 255, 0.8) 50%, rgba(35, 153, 255, 0) 100%); + + span { + margin-left: 10px; + color: #bce0ff; + font-size: 20px; + font-family: titlefont; + cursor: pointer; + } + + span:nth-child(1) { + margin-left: 12px; + } + + .grey { + color: #68829F; + } + } + + } + } + + .packup { + position: absolute; + right: 33px; + top: 16px; + cursor: pointer; + } + } + + .chartsbox { + width: 100%; + display: flex; + justify-content: center; + + .chartname { + position: absolute; + left: 20px; + top: 12px; + } + + .chart { + width: 98%; + height: 350px; + box-sizing: border-box; + padding: 0 10px; + display: flex; + + div { + display: flex; + flex-direction: column; + + span { + font-family: titlefont; + display: flex; + align-items: center; + height: 28px; + color: #bee1ff; + font-size: 16px; + } + + div { + flex: 1; + } + + } + + .leftbox { + width: 360px; + position: relative; + border: 0px; + box-shadow: 0 0 26px 0px #1a7fd7 inset; + margin-right: 16px; + + .centerContent { + position: absolute; + top: 42%; + left: 50%; + transform: translateX(-50%); + width: 170px; + + div { + text-align: center; + } + + .numname { + font-family: titlefont; + color: #bee1ff; + } + + .num { + color: #FFFFFF; + font-size: 42px; + text-shadow: 0px 0px 16px #3A9AFF; + font-weight: bold; + height: 49px; + line-height: 50px; + } + } + } + + .rightbox { + flex: 1; + position: relative; + border: 0px; + box-shadow: 0 0 26px 0px #1a7fd7 inset; + + .btnbox { + position: absolute; + right: 28px; + top: 12px; + display: flex; + flex-direction: row; + z-index: 999; + + .btn { + width: 64px; + height: 30px; + text-align: center; + line-height: 30px; + // border: 1px solid #91CCFF; + color: #91CCFF; + border-radius: 0px; + box-shadow: 0 0 5px 1px #2399FF inset; + background: none; + cursor: pointer; + } + + .rankingBtnbox { + display: flex; + flex-direction: column; + } + + .selectedbtn { + background: linear-gradient(180deg, #000D21 0%, #001331 27%, #2399FF 100%); + color: white; + } + } + } + } + } + + .tablebox { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + overflow: hidden; + + .table { + color: white; + flex: 1; + width: 96%; + display: flex; + flex-direction: column; + overflow: hidden; + + .th { + height: 38px; + line-height: 38px; + background: rgba(35, 153, 255, 0.2); + border: 1px solid rgba(35, 217, 255, 0.4); + box-shadow: 0 0 3px 0 rgba(35, 217, 255, 0.4) inset; + color: #23D9FF; + } + + .tbody { + flex: 1; + overflow-y: auto; + + .tr { + height: 38px; + line-height: 38px; + border-bottom: 1px solid #0d3761; + + div { + color: #91CCFF; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + .look { + color: #36A2FF; + cursor: pointer; + } + } + + img { + width: 36px; + } + + } + } + } + + .pagination { + margin: 15px 0; + display: flex; + align-items: center; + justify-content: center; + } + + ::-webkit-scrollbar { + width: 0px; + } + + } +} + + +// 适配125% +@media screen and (max-height: 750px) { + .search { + box-sizing: border-box; + padding: 0 30px; + height: 32px; + margin-bottom: 12px; + + form { + width: 100%; + height: 32px; + } + } + + .content { + flex: 1; + display: flex; + flex-direction: column; + overflow: hidden; + + .title { + height: 42px; + padding: 0 20px; + margin: 8px 0; + + .titlebox { + width: 100%; + height: 100%; + display: flex; + align-items: center; + + img { + width: 46px; + height: 46px; + } + + .content { + height: 36px; + + .contentitem { + width: 100%; + height: 25px; + + span { + margin-left: 6px; + font-size: 16px; + } + + span:nth-child(1) { + margin-left: 8px; + } + } + + } + } + + .packup { + position: absolute; + right: 33px; + top: 4px; + cursor: pointer; + } + } + + .chartsbox { + width: 100%; + height: 43%; + + .chartname { + position: absolute; + left: 20px; + top: 12px; + } + + .chart { + height: 100%; + + div { + span { + font-size: 14px; + } + + div { + flex: 1; + } + + } + + .leftbox { + width: 300px; + box-shadow: 0 0 20px 0px #1a7fd7 inset; + margin-right: 12px; + + .centerContent { + .num { + color: #FFFFFF; + font-size: 42px; + text-shadow: 0px 0px 16px #3A9AFF; + font-weight: bold; + height: 49px; + line-height: 50px; + } + } + } + + .rightbox { + flex: 1; + position: relative; + border: 0px; + box-shadow: 0 0 26px 0px #1a7fd7 inset; + + .btnbox { + position: absolute; + right: 28px; + top: 12px; + display: flex; + flex-direction: row; + z-index: 999; + + .rankingBtn { + margin-right: 12px; + } + } + } + } + } + + .tablebox { + .table { + .th { + height: 32px; + line-height: 32px; + font-size: 12px !important; + } + + .tbody { + + .tr { + height: 32px; + line-height: 32px; + + div { + font-size: 12px !important; + } + + img { + width: 32px; + } + } + } + } + } + } +} + +// 适配150% +@media screen and (max-height: 600px) { + .search { + box-sizing: border-box; + padding: 0 22px; + height: 32px; + margin-bottom: 6px; + + form { + width: 100%; + height: 32px; + } + } + + .content { + .title { + height: 36px; + padding: 0 20px; + margin: 3px 0; + + .titlebox { + width: 100%; + height: 100%; + display: flex; + align-items: center; + + img { + width: 36px; + height: 36px; + } + + .content { + height: 30px; + + .contentitem { + width: 100%; + height: 22px; + + span { + margin-left: 6px; + font-size: 13px; + } + + span:nth-child(1) { + margin-left: 12px; + } + } + + } + } + + .packup { + position: absolute; + right: 33px; + top: 2px; + cursor: pointer; + } + } + + .chartsbox { + width: 100%; + height: 40%; + + .chartname { + position: absolute; + left: 20px; + top: 12px; + } + + .chart { + height: 100%; + + div { + span { + font-size: 14px; + } + + div { + flex: 1; + } + + } + + .leftbox { + width: 260px; + box-shadow: 0 0 20px 0px #1a7fd7 inset; + margin-right: 8px; + + .centerContent { + .num { + color: #FFFFFF; + font-size: 32px; + text-shadow: 0px 0px 12px #3A9AFF; + font-weight: bold; + height: 42px; + line-height: 42px; + } + } + } + + .rightbox { + box-shadow: 0 0 22px 0px #1a7fd7 inset; + + .btnbox { + position: absolute; + right: 28px; + top: 12px; + display: flex; + flex-direction: row; + z-index: 999; + + .rankingBtn { + margin-right: 8px; + } + } + } + } + } + + .tablebox { + .table { + .th { + height: 28px; + line-height: 28px; + font-size: 10px !important; + } + + .tbody { + + .tr { + height: 28px; + line-height: 28px; + + div { + font-size: 10px !important; + } + + img { + width: 30px; + } + } + } + } + + } + } +} diff --git a/src/app/pages/misinformation-list/misinformation-list.component.ts b/src/app/pages/misinformation-list/misinformation-list.component.ts new file mode 100644 index 0000000..00899e8 --- /dev/null +++ b/src/app/pages/misinformation-list/misinformation-list.component.ts @@ -0,0 +1,822 @@ +import { HttpClient } from '@angular/common/http'; +import { Component, ElementRef, OnInit, ViewContainerRef } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Router } from '@angular/router' +import * as echarts from 'echarts'; + +import { fromEvent } from 'rxjs'; +import { debounceTime } from 'rxjs/operators'; + +import * as moment from 'moment'; +import { NzModalService } from 'ng-zorro-antd/modal'; +import { GetOutOfLineDetailsComponent } from '../today-warning/get-out-of-line-details/get-out-of-line-details.component'; +import { OilUnloadingProcessComponent } from '../oil-unloading-process/oil-unloading-process.component'; +import { DispositionComponent } from '../disposition/disposition.component'; +import { NzMessageService } from 'ng-zorro-antd/message'; +import { TreeService } from 'src/app/service/tree.service'; +import { DisposeequipmentComponent } from '../warning-statistics-list/disposeequipment/disposeequipment.component'; + +@Component({ + selector: 'app-misinformation-list', + templateUrl: './misinformation-list.component.html', + styleUrls: ['./misinformation-list.component.scss'] +}) +export class MisinformationListComponent implements OnInit { + + validateForm!: FormGroup; + constructor(private element: ElementRef, private toTree: TreeService, private http: HttpClient, private fb: FormBuilder, private router: Router, private modal: NzModalService, private viewContainerRef: ViewContainerRef, private message: NzMessageService) { } + //饼图 + myChart + option = { + color: ['#FF4B65', '#23D9FF', '#608AFF', '#B2FF6D', '#FFFF99', '#C4E2FC', '#FF7F00', '#0090FF', '#FFD634', '#105597', '#FF4B65', '#23D9FF', '#71FFF5', '#B2FF6D'], + tooltip: { + trigger: 'item'//触发类型 + }, + series: [ + { + // name: 'Access From', + type: 'pie', + radius: ['58%', '75%'],//内半径外,外半径 + left: '0', + top: '9%', + avoidLabelOverlap: false,//防止标签重叠策略 + label: {//每一个标签外网延伸的引导说明 + show: false, + position: 'outside' + }, + labelLine: {//引导线 + show: true, + showAbove: true + }, + emphasis: {//中间高亮区域 + label: { + show: false, + fontSize: '40', + fontWeight: 'bold' + } + }, + data: [ + + ], + tooltip: {//鼠标移入提示 + position: 'right', + padding: [14, 19], + backgroundColor: 'rgba(28, 129, 218, 0.4)', + textStyle: { + color: '#fff', + fontSize: 12 + }, + formatter: "{b} : {c} ({d}%)" + } + } + ] + }; + //柱状图 + mybarChart: any + baroption = { + xAxis: { + type: 'category', + data: [], + axisLine: { + show: false, + lineStyle: { + color: '#91CCFF' + } + }, + axisTick: {//刻度线 + show: false + }, + inverse: true + }, + yAxis: { + type: 'value', + nameTextStyle: { + color: '#C4E2FC' + }, + splitLine: {//分割线 + lineStyle: { + color: ['#0f4374'], + width: 2 + } + }, + axisTick: {//刻度线 + show: false + }, + axisLine: {//轴线 + show: false, + lineStyle: { + color: '#C4E2FC' + } + } + }, + tooltip: { + // trigger: 'axis' + }, + series: [ + { + data: [], + type: 'bar', + itemStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#23F0FF' // 0% 处的颜色 + }, { + offset: 1, color: 'rgba(35, 153, 255, 0.1)' // 100% 处的颜色 + }], + global: false // 缺省为 false + } + }, + barWidth: '25%' + }, + { + data: [], + type: 'line', + symbol: 'circle', + symbolSize: 8, + label: { + show: true + }, + itemStyle: { + color: '#fff', + shadowColor: '#fff', + shadowBlur: 10 + }, + lineStyle: { + color: '#FFCC8A', + width: 1 + } + } + ], + grid: { + left: '42px', + right: '30px', + bottom: '38px', + top: '80px' + } + }; + baroption2 = { + xAxis: { + type: 'value', + show: false + }, + tooltip: { + // trigger: 'axis' + }, + yAxis: { + type: 'category', + data: [], + axisLine: { + show: false, + lineStyle: { + color: '#91CCFF', + } + }, + axisTick: {//刻度线 + show: false + }, + axisLabel: { + formatter: function (value, index) { + let newParamsName = ''; + const paramsNameNumber = value.length; + const provideNumber = 1000; + const rowNumber = Math.ceil(paramsNameNumber / provideNumber); + if (paramsNameNumber > provideNumber) { + for (let p = 0; p < rowNumber; p++) { + let tempStr = ''; + const start = p * provideNumber; + const end = start + provideNumber; + if (p == rowNumber - 1) { + tempStr = value.substring(start, paramsNameNumber); + } else { + tempStr = value.substring(start, end) + '\n'; + } + newParamsName += tempStr; + } + } else { + newParamsName = value; + } + // 格式化成月/日,只在第一个刻度显示年份 + return '{s|·}' + `{a|${newParamsName}}`; + }, + rich: { + a: { + color: '#C4E2FC', + padding: [0, 0, 0, 8], + }, + s: { + color: '#fff', + borderWidth: 1, + borderColor: '#23D9FF', + backgroundColor: '#fff', + width: 4, + height: 4, + shadowBlur: 3, + shadowColor: "#fff" + } + } + }, + inverse: true//倒序 + + }, + series: + { + label: { + // 柱图头部显示值 + show: true, + position: "right", + color: "#fff", + fontSize: 12, + formatter: '{c}', + offset: [6, 0] + }, + data: [], + type: 'bar', + itemStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, color: '#063d72' // 0% 处的颜色 + }, { + offset: 1, color: '#FF9963' // 100% 处的颜色 + }], + global: false // 缺省为 false + } + }, + barWidth: '36%' + } + , + grid: { + left: '175px', + right: '60px', + bottom: '3px', + top: '36px' + }, + // dataZoom: [ //Y轴滑动条 + // { + // type: 'slider', //滑动条 + // show: true, //开启 + // yAxisIndex: 0,//表示控制第几个y轴 + // left: '97%', //滑动条位置 + // start: 1, //初始化时,滑动条宽度开始标度 + // end: 100, //初始化时,滑动条宽度结束标度
    + // maxValueSpan: 10,//显示数据的条数(默认显示10个) + // showDataShadow: false,//是否显示数据阴影 默认auto + // showDetail: false,//即拖拽时候是否显示详细数值信息 默认true + // realtime: true, //是否实时更新 + // filterMode: 'filter', + // backgroundColor: '#001735', + // width: '18' + // }, + // { + // type: 'inside', + // yAxisIndex: 0, + // zoomOnMouseWheel: false, //滚轮是否触发缩放 + // moveOnMouseMove: true, //鼠标滚轮触发滚动 + // moveOnMouseWheel: true + // } + // ] + } + isEcharts: boolean = true + isEchartsShow() { + this.isEcharts = !this.isEcharts + } + startdate + enddate + + isMisinformation: boolean = false//误报按钮的显隐 + ngOnInit(): void { + let loginUserInfo + if (sessionStorage.getItem('isGasStation') == 'true') { + loginUserInfo = JSON.parse(sessionStorage.getItem('userdataOfgasstation')) + } else { + loginUserInfo = JSON.parse(sessionStorage.getItem('userdata')) + } + + if (loginUserInfo.roles.find((item) => { + return item.name == 'ViolationPositiveCensorer' + })) { + this.isMisinformation = true + } else { + this.isMisinformation = false + } + + //当前日期 + let myDate: any = new Date(); + let nowY = myDate.getFullYear(); + let nowM = myDate.getMonth() + 1; + let nowD = myDate.getDate(); + this.enddate = nowY + "-" + (nowM < 10 ? "0" + nowM : nowM) + "-" + (nowD < 10 ? "0" + nowD : nowD);//当前日期 + //获取三十天前日期 + let lw = new Date(myDate - 1000 * 60 * 60 * 24 * 30);//最后一个数字30可改,30天的意思 + let lastY = lw.getFullYear(); + let lastM = lw.getMonth() + 1; + let lastD = lw.getDate(); + this.startdate = lastY + "-" + (lastM < 10 ? "0" + lastM : lastM) + "-" + (lastD < 10 ? "0" + lastD : lastD);//三十天之前日期 + + this.validateForm = this.fb.group({ + level: [null], + organization: [null], + type: [null], + event: [null], + site: [null], + disposalState: [null], + datePicker: [[this.startdate, this.enddate]] + }); + + //饼图 + this.myChart = echarts.init(document.getElementById('piechart')); + this.myChart.setOption(this.option); + //柱状折线图 + this.mybarChart = echarts.init(document.getElementById('barchart')); + this.mybarChart.setOption(this.baroption); + + this.warningType() + this.tableSpin = true + this.getAllOrganization() + this.getAggregations() + } + + defaultOrId: string + //获取所有组织机构 + nodes: any = [] + getAllOrganization() { + let OrganizationUnitId = sessionStorage.getItem('isGasStation') == 'true' ? JSON.parse(sessionStorage.getItem('userdataOfgasstation')).organization.id : JSON.parse(sessionStorage.getItem('userdata')).organization.id + let params = { + OrganizationUnitId: OrganizationUnitId, + IsContainsChildren: "true" + } + this.http.get('/api/services/app/Organization/GetAll', { + params: params + }).subscribe((data: any) => { + data.result.items.forEach(element => { + if (element.id == OrganizationUnitId) { + element.parentId = null + } + element.key = element.id + element.title = element.displayName + }); + this.nodes = [...this.toTree.toTree(data.result.items)] + this.defaultOrId = JSON.parse(sessionStorage.getItem('userdata')).organization.id + this.validateForm.value.organization = this.defaultOrId + this.getViolateRecordList() + }) + } + //刷新饼图图表数据 + num + echartsData: any + refreshPieData(data) { + //饼图 + let option = this.myChart.getOption(); + var num = 0 + data.pieTop.forEach(element => { + num += element.count + element.name = element.key + element.value = element.count + }); + this.num = num + option.series[0].data = data.pieTop; + this.myChart.setOption(option); + } + //刷新柱状折线图表数据 + refreshBarLineData(data, type) { + console.log('统计图表数据', data) + //柱状图 + let option = this.mybarChart.getOption(); + console.log('柱图option', option) + if (type == 'month') {//近一个月柱状折线图 + option = this.baroption + let monthArr = [] + let valuedata = [] + data.timeTop.forEach(element => { + monthArr.push(moment(element.key).format('MM.DD')) + valuedata.push(element.count) + }); + option.xAxis.data = monthArr + option.series[0].data = valuedata + option.series[1].data = valuedata + } else if (type == 'eventTop') { + option = this.baroption2 + let ydata = [] + let valuedata = [] + data.eventTop.forEach(element => { + ydata.push(element.key) + valuedata.push(element.count) + }); + option.yAxis.data = ydata + option.series.data = valuedata + } else if (type == 'siteTop') { + option = this.baroption2 + let ydata = [] + let valuedata = [] + data.siteTop.forEach(element => { + ydata.push(element.key) + valuedata.push(element.count) + }); + option.yAxis.data = ydata + option.series.data = valuedata + } + this.mybarChart.setOption(option); + } + + //获取统计信息 + chartsSpin: boolean = false + getAggregations() { + this.chartsSpin = true + let ViolationIds = [] + if (this.validateForm.value.type) { + this.warningTypesDetails.forEach(item => { + item.id ? ViolationIds.push(item.id) : null + }); + } + let body: any = { + organizationUnitId: JSON.parse(sessionStorage.getItem('userdata')).organization.id, + isContainsChildren: true, + ViolateTime: this.validateForm.value.datePicker ? [moment(this.validateForm.value.datePicker[0]).format('yyyy-MM-DD'), moment(this.validateForm.value.datePicker[1]).format('yyyy-MM-DD')] : null + } + this.validateForm.value.level ? body.level = this.validateForm.value.level : null + this.validateForm.value.site ? body.violateArea = this.validateForm.value.site : null + ViolationIds.length != 0 ? body.violationType = ViolationIds : null + this.http.post('/api/services/app/ViolateRecord/Aggregations', body).subscribe((data: any) => { + this.echartsData = data.result + this.chartsSpin = false + this.refreshPieData(data.result) + this.refreshBarLineData(this.echartsData, 'month') + }) + } + //获得违规记录列表 + SkipCount: string = '0' + MaxResultCount: string = '50' + list: any = [] + totalCount: string + tableSpin: boolean = false + getViolateRecordList() { + let ViolationIds = [] + if (this.validateForm.value.event) { + ViolationIds.push(this.validateForm.value.event) + } + if (this.validateForm.value.type && !this.validateForm.value.event) { + this.warningTypesDetails.forEach(item => { + item.id ? ViolationIds.push(item.id) : null + }); + } + let disposalState + if (this.validateForm.value.disposalState == '0') { + disposalState = true + } else if (this.validateForm.value.disposalState == '1') { + disposalState = false + } else { + disposalState = null + } + let params = { + Level: this.validateForm.value.level, + ViolationIds: ViolationIds, + ViolateArea: this.validateForm.value.site, + OrganizationUnitId: JSON.parse(sessionStorage.getItem('userdata')).organization.id, + IsContainsChildren: 'true', + IsHandled: disposalState, + ViolateTime: this.validateForm.value.datePicker ? [moment(this.validateForm.value.datePicker[0]).format('yyyy-MM-DD'), moment(this.validateForm.value.datePicker[1]).format('yyyy-MM-DD')] : null, + SkipCount: this.SkipCount, + MaxResultCount: this.MaxResultCount + } + this.tableSpin = true + this.http.get('/api/services/app/ViolateRecord/GetAll', { + params: params + }).subscribe((data: any) => { + this.list = this.list.concat(data.result.items); + this.list = [...this.list] + // this.list = data.result.items + this.totalCount = data.result.totalCount + console.log('违规记录列表', data) + this.tableSpin = false + + console.log(this.list.length) + }) + } + + isMouseEnter = false + mouseEnter() { + this.isMouseEnter = true + } + mouseleave() { + this.isMouseEnter = false + } + + ngAfterViewInit(): void { + fromEvent(this.element.nativeElement.querySelector(`#tbody`) as HTMLCanvasElement, 'scroll').pipe(debounceTime(100)).subscribe((event: any) => { //监听 DOM 滚动事件 + if (event.target.scrollHeight - (event.target.scrollTop + event.target.clientHeight) <= 10) { + if (this.totalCount > this.list.length) { + console.log('需要加载数据了', event) + this.SkipCount = String(Number(this.SkipCount) + 50) + this.getViolateRecordList() + } + } + }); + } + getThirtyDays() { + //获取当前日期 + let myDate = new Date(); + var nowY = myDate.getFullYear(); + var nowM = myDate.getMonth() + 1; + var nowD = myDate.getDate(); + var enddateStr = nowY + "-" + (nowM < 10 ? "0" + nowM : nowM) + "-" + (nowD < 10 ? "0" + nowD : nowD);//当前日期 + var enddate = new Date(enddateStr); + + + //获取三十天前日期 + var lw = new Date(new Date().getTime() - 1000 * 60 * 60 * 24 * 30);//最后一个数字30可改,30天的意思 + var lastY = lw.getFullYear(); + var lastM = lw.getMonth() + 1; + var lastD = lw.getDate(); + var startdateStr = lastY + "-" + (lastM < 10 ? "0" + lastM : lastM) + "-" + (lastD < 10 ? "0" + lastD : lastD);//三十天之前日期 + var startDate = new Date(startdateStr); + + const dateList = [] + while (true) { + startDate.setDate(startDate.getDate() + 1) + if (startDate.getTime() <= enddate.getTime()) { + if (startDate.getDate() < 10) { + // startDate.getFullYear() 获取年,此处没加上年份 + dateList.push((startDate.getMonth() + 1) + '.0' + startDate.getDate()) + } else { + dateList.push((startDate.getMonth() + 1) + '.' + startDate.getDate()) + } + } else { + break + } + } + return dateList; + } + submitForm(): void { + for (const i in this.validateForm.controls) { + this.validateForm.controls[i].markAsDirty(); + this.validateForm.controls[i].updateValueAndValidity(); + } + this.list = [] + this.SkipCount = '0' + this.getViolateRecordList() + // this.getAggregations() + } + resetForm(e: MouseEvent): void { + e.preventDefault(); + this.validateForm.reset(); + for (const key in this.validateForm.controls) { + this.validateForm.controls[key].markAsPristine(); + this.validateForm.controls[key].updateValueAndValidity(); + } + this.validateForm.patchValue({ + organization: JSON.parse(sessionStorage.getItem('userdata')).organization.id, + datePicker: [this.startdate, this.enddate] + }); + this.list = [] + this.SkipCount = '0' + this.getViolateRecordList() + } + + //预警类型接口 + warningTypes: any //预警接口数据 + warningTypesDetails: any + warningType() { + this.http.get('/api/services/app/Violation/GetAllList').subscribe((data: any) => { + this.warningTypesDetails = data.result + this.warningTypes = (data.result as any).groupBy((t) => { return t.violationType }); + }) + } + typeChange(e) { + this.warningTypes.forEach(element => { + if (element.key == e) { + this.warningTypesDetails = element + } + }); + this.validateForm.patchValue({ + event: null, + }); + } + + + + look(item) { + console.log('点击item', item) + if (item.violation.eventSystemName == '灭火器维护') { + item.violatedItemSnapshotObj = JSON.parse(item.violatedItemSnapshot) + const modal = this.modal.create({ + nzContent: DisposeequipmentComponent, + nzViewContainerRef: this.viewContainerRef, + nzWidth: 380, + nzBodyStyle: { + 'border': '1px solid #91CCFF', + 'border-radius': '0px', + 'padding': '7px', + 'box-shadow': '0 0 8px 0 #fff', + 'background-image': 'linear-gradient(#003665, #000f25)' + }, + nzComponentParams: { + data: item + }, + nzFooter: null, + nzClosable: false, + nzOnOk: async () => { + if (instance.isScrap) { + await new Promise(resolve => { + let body = { + id: item.violatedItemSnapshotObj.id, + name: instance.copydata2.violatedItemSnapshotObj.name, + storageLocation: instance.copydata2.violatedItemSnapshotObj.storageLocation, + productionDate: moment(instance.copydata2.violatedItemSnapshotObj.productionDate).format('yyyy-MM-DD'), + maintenanceDate: moment(instance.copydata2.violatedItemSnapshotObj.maintenanceDate).format('yyyy-MM-DD'), + validityEndTime: moment(instance.copydata2.violatedItemSnapshotObj.validityEndTime).format('yyyy-MM-DD'), + isScrapped: true, + organizationUnitId: item.violatedItemSnapshotObj.organizationUnitId + } + this.http.put('/api/services/app/FireEquipment/Update', body).subscribe((data: any) => { + let body = { + id: item.id, + handleRecord: '报废成功!' + } + this.http.post('/api/services/app/ViolateRecord/HandleViolateRecord', body).subscribe(data => { + resolve(data) + this.message.create('success', '报废成功!'); + item.handleTime = new Date() + return true + }) + }) + }) + + } else { + if (instance.validateForm.valid) { + await new Promise(resolve => { + let body = { + id: item.violatedItemSnapshotObj.id, + name: instance.validateForm.value.name, + storageLocation: instance.validateForm.value.storageLocation, + productionDate: moment(instance.validateForm.value.productionDate).format('yyyy-MM-DD'), + maintenanceDate: moment(instance.validateForm.value.maintenanceDate).format('yyyy-MM-DD'), + validityEndTime: moment(instance.validateForm.value.validityEndTime).format('yyyy-MM-DD'), + organizationUnitId: item.violatedItemSnapshotObj.organizationUnitId + } + this.http.put('/api/services/app/FireEquipment/Update', body).subscribe((data: any) => { + // item.violatedItemSnapshotObj = data.result + let body = { + id: item.id, + handleRecord: '维保成功!' + } + this.http.post('/api/services/app/ViolateRecord/HandleViolateRecord', body).subscribe(data => { + resolve(data) + this.message.create('success', '维保成功!'); + item.handleTime = new Date() + return true + }) + }) + }) + } else { + this.message.create('warning', '请填写完整!'); + return false + } + } + } + }); + const instance = modal.getContentComponent(); + } else { + const modal = this.modal.create({ + nzContent: GetOutOfLineDetailsComponent, + nzWrapClassName: "vertical-center-modal", + nzViewContainerRef: this.viewContainerRef, + nzWidth: (document.documentElement.clientHeight < 650 || document.documentElement.clientWidth < 1400) ? 1000 : 1200, + nzBodyStyle: { + 'border': '1px solid #6d9cc7', + 'border-radius': '0px', + 'padding': '0px', + 'box-shadow': '0 0 8px 0 #fff', + 'background': '#000D21', + }, + nzComponentParams: { + data: item + }, + nzFooter: null, + nzOnOk: async () => { + console.log('误报处理') + for (let index = 0; index < this.list.length; index++) { + const element = this.list[index]; + if (element.id == item.id) { + this.list.splice(index, 1) + this.totalCount = String(Number(this.totalCount) - 1) + this.SkipCount = String(Number(this.SkipCount) - 1) + } + } + } + }); + const instance = modal.getContentComponent(); + } + + } + + + selectedType = '分布' + selectedRankingType = null + echartClick(type) { + this.selectedType = type + this.mybarChart.dispose() + this.mybarChart = echarts.init(document.getElementById('barchart')); + // if (type == '排名') { + + // console.log(this.selectedRankingType) + // if (this.selectedRankingType == '站点排名') { + // this.refreshBarLineData(this.echartsData, 'siteTop') + // } + // if (this.selectedRankingType == '事件排名') { + // this.refreshBarLineData(this.echartsData, 'eventTop') + // } + // } else { + + // } + this.selectedRankingType = null + this.refreshBarLineData(this.echartsData, 'month') + + } + echartClick2(type) { + this.mybarChart.dispose() + this.mybarChart = echarts.init(document.getElementById('barchart')); + this.selectedType = null + this.selectedRankingType = type + if (this.selectedRankingType == '站点排名') { + this.refreshBarLineData(this.echartsData, 'siteTop') + } + if (this.selectedRankingType == '事件排名') { + this.refreshBarLineData(this.echartsData, 'eventTop') + } + } + + + //跳转卸油统计页面 + goOilList() { + + if (this.router.url.indexOf('petrolStation') != -1) { + this.router.navigate(['/records/petrolStation/oliunloadinglist']) + } else { + this.router.navigate(['/records/oliunloadinglist']) + } + } + + goWarningList() { + if (this.router.url.indexOf('petrolStation') != -1) { + this.router.navigate(['/records/petrolStation/warningstatisticslist']) + } else { + this.router.navigate(['/records/warningstatisticslist']) + } + } + gorecordList() { + if (this.router.url.indexOf('petrolStation') != -1) { + this.router.navigate(['/records/petrolStation']) + } else { + this.router.navigate(['/records']) + } + } + dispose(item) { + console.log(item) + const modal = this.modal.create({ + nzContent: DispositionComponent, + nzWrapClassName: "vertical-center-modal", + nzViewContainerRef: this.viewContainerRef, + nzWidth: 380, + nzBodyStyle: { + 'border': '1px solid #91CCFF', + 'border-radius': '0px', + 'padding': '7px', + 'box-shadow': '0 0 8px 0 #fff', + 'background-image': 'linear-gradient(#003665, #000f25)' + }, + nzComponentParams: {}, + nzFooter: null, + nzClosable: false, + nzOnOk: async () => { + if (instance.validateForm.valid) { + await new Promise(resolve => { + let body = { + id: item.id, + handleRecord: instance.validateForm.value.content + } + this.http.post('/api/services/app/ViolateRecord/HandleViolateRecord', body).subscribe(data => { + resolve(data) + this.message.create('success', '处置成功!'); + item.handleTime = new Date() + return true + }) + }) + } else { + this.message.create('warning', '请填写完整!'); + return false + } + }, + }); + const instance = modal.getContentComponent(); + } + +} diff --git a/src/app/pages/oil-unloading-process-list/oil-unloading-process-list.component.html b/src/app/pages/oil-unloading-process-list/oil-unloading-process-list.component.html index 38a01ff..353003e 100644 --- a/src/app/pages/oil-unloading-process-list/oil-unloading-process-list.component.html +++ b/src/app/pages/oil-unloading-process-list/oil-unloading-process-list.component.html @@ -7,6 +7,7 @@
    预警类型统计 + 卸油统计 证照预警统计
    diff --git a/src/app/pages/oil-unloading-process-list/oil-unloading-process-list.component.ts b/src/app/pages/oil-unloading-process-list/oil-unloading-process-list.component.ts index ec0f578..949407a 100644 --- a/src/app/pages/oil-unloading-process-list/oil-unloading-process-list.component.ts +++ b/src/app/pages/oil-unloading-process-list/oil-unloading-process-list.component.ts @@ -67,7 +67,23 @@ export class OilUnloadingProcessListComponent implements OnInit { enddate isOrShow: boolean + + isMisinformation: boolean = false//误报按钮的显隐 ngOnInit(): void { + let loginUserInfo + if (sessionStorage.getItem('isGasStation') == 'true') { + loginUserInfo = JSON.parse(sessionStorage.getItem('userdataOfgasstation')) + } else { + loginUserInfo = JSON.parse(sessionStorage.getItem('userdata')) + } + + if (loginUserInfo.roles.find((item) => { + return item.name == 'ViolationPositiveCensorer' + })) { + this.isMisinformation = true + } else { + this.isMisinformation = false + } //当前日期 let myDate: any = new Date(); let nowY = myDate.getFullYear(); @@ -729,4 +745,12 @@ export class OilUnloadingProcessListComponent implements OnInit { this.router.navigate(['/records/warningstatisticslist']) } } + + goMisinformationList() { + if (this.router.url.indexOf('petrolStation') != -1) { + this.router.navigate(['records/petrolStation/misinformationList']) + } else { + this.router.navigate(['records/misinformationList']) + } + } } diff --git a/src/app/pages/pages-routing.module.ts b/src/app/pages/pages-routing.module.ts index 9372cd2..9d8f0a9 100644 --- a/src/app/pages/pages-routing.module.ts +++ b/src/app/pages/pages-routing.module.ts @@ -14,6 +14,7 @@ import { OilUnloadingProcessListComponent } from './oil-unloading-process-list/o import { init3DGuard } from './init3D.guard'; import { WarningStatisticsListComponent } from './warning-statistics-list/warning-statistics-list.component'; import { NavBarComponent } from './license/nav-bar/nav-bar.component'; +import { MisinformationListComponent } from './misinformation-list/misinformation-list.component'; const routes: Routes = [ { path: 'homepage', component: HomePageComponent }, @@ -29,7 +30,9 @@ const routes: Routes = [ { path: 'records/petrolStation/warningstatisticslist', component: WarningStatisticsListComponent }, { path: 'equipmentInfo', component: EquipmentInfoComponent }, { path: 'oliStationInfo', component: OilStationInfoComponent }, - { path: 'license/petrolStation', component: NavBarComponent } + { path: 'license/petrolStation', component: NavBarComponent }, + { path: 'records/misinformationList', component: MisinformationListComponent }, + { path: 'records/petrolStation/misinformationList', component: MisinformationListComponent } ]; @NgModule({ diff --git a/src/app/pages/pages.module.ts b/src/app/pages/pages.module.ts index d7c58aa..076b4da 100644 --- a/src/app/pages/pages.module.ts +++ b/src/app/pages/pages.module.ts @@ -70,11 +70,12 @@ import { EditFileCategoryComponent } from './license/file-category/edit-file-cat import { DetailsFileCategoryComponent } from './license/file-category/details-file-category/details-file-category.component'; import { NzTimelineModule } from 'ng-zorro-antd/timeline'; import { PdfWordLookComponent } from './license/pdf-word-look/pdf-word-look.component'; +import { MisinformationListComponent } from './misinformation-list/misinformation-list.component'; @NgModule({ declarations: [LoginComponent, RegisterComponent, HomeComponent, PlanComponent, TodayWarningComponent, CriminalRecordsComponent, TodayWarningAdminComponent, CriminalRecordsAdminComponent, LeftDomainComponent, EquipmentInfoComponent, OilStationInfoComponent, - AddequipmentComponent, EditequipmentComponent, PlanAdminComponent, GetOutOfLineDetailsComponent, DispositionComponent, OilUnloadingProcessComponent, HomePageComponent, OilUnloadingProcessListComponent, ChangePasswordComponent, FacilitySortPipe, WarningStatisticsListComponent, DisposeequipmentComponent, NavBarComponent, InformComponent, UpdateCategoryComponent, FileCategoryComponent, HistoriesComponent, EditUpdateCategoryComponent, DetailsUpdateCategoryComponent, EditFileCategoryComponent, DetailsFileCategoryComponent,PdfWordLookComponent], + AddequipmentComponent, EditequipmentComponent, PlanAdminComponent, GetOutOfLineDetailsComponent, DispositionComponent, OilUnloadingProcessComponent, HomePageComponent, OilUnloadingProcessListComponent, ChangePasswordComponent, FacilitySortPipe, WarningStatisticsListComponent, DisposeequipmentComponent, NavBarComponent, InformComponent, UpdateCategoryComponent, FileCategoryComponent, HistoriesComponent, EditUpdateCategoryComponent, DetailsUpdateCategoryComponent, EditFileCategoryComponent, DetailsFileCategoryComponent,PdfWordLookComponent, MisinformationListComponent], imports: [ diff --git a/src/app/pages/today-warning/get-out-of-line-details/get-out-of-line-details.component.html b/src/app/pages/today-warning/get-out-of-line-details/get-out-of-line-details.component.html index 8f8773a..f07f779 100644 --- a/src/app/pages/today-warning/get-out-of-line-details/get-out-of-line-details.component.html +++ b/src/app/pages/today-warning/get-out-of-line-details/get-out-of-line-details.component.html @@ -26,12 +26,21 @@
    处置内容 -
    - 误报 - 提交 - 已处置 -
    + + + 已进行误报处置 + + +
    + 误报 + 提交 + 已处置 +
    +
    + + +
    diff --git a/src/app/pages/warning-statistics-list/warning-statistics-list.component.html b/src/app/pages/warning-statistics-list/warning-statistics-list.component.html index f6f97d6..f4182d3 100644 --- a/src/app/pages/warning-statistics-list/warning-statistics-list.component.html +++ b/src/app/pages/warning-statistics-list/warning-statistics-list.component.html @@ -6,6 +6,7 @@
    预警类型统计 + 卸油统计 证照预警统计
    diff --git a/src/app/pages/warning-statistics-list/warning-statistics-list.component.ts b/src/app/pages/warning-statistics-list/warning-statistics-list.component.ts index 9a1630a..3275d22 100644 --- a/src/app/pages/warning-statistics-list/warning-statistics-list.component.ts +++ b/src/app/pages/warning-statistics-list/warning-statistics-list.component.ts @@ -33,7 +33,23 @@ export class WarningStatisticsListComponent implements OnInit { enddate isOrShow: boolean + + isMisinformation: boolean = false//误报按钮的显隐 ngOnInit(): void { + let loginUserInfo + if (sessionStorage.getItem('isGasStation') == 'true') { + loginUserInfo = JSON.parse(sessionStorage.getItem('userdataOfgasstation')) + } else { + loginUserInfo = JSON.parse(sessionStorage.getItem('userdata')) + } + + if (loginUserInfo.roles.find((item) => { + return item.name == 'ViolationPositiveCensorer' + })) { + this.isMisinformation = true + } else { + this.isMisinformation = false + } //当前日期 let myDate: any = new Date(); let nowY = myDate.getFullYear(); @@ -737,5 +753,11 @@ export class WarningStatisticsListComponent implements OnInit { this.router.navigate(['/records']) } } - + goMisinformationList() { + if (this.router.url.indexOf('petrolStation') != -1) { + this.router.navigate(['records/petrolStation/misinformationList']) + } else { + this.router.navigate(['records/misinformationList']) + } + } } diff --git a/src/app/system-management/analysis-of-the-host/analysis-of-the-host.component.html b/src/app/system-management/analysis-of-the-host/analysis-of-the-host.component.html index 6f0708f..ca8b9dc 100644 --- a/src/app/system-management/analysis-of-the-host/analysis-of-the-host.component.html +++ b/src/app/system-management/analysis-of-the-host/analysis-of-the-host.component.html @@ -48,7 +48,7 @@
    - + ip @@ -77,7 +77,7 @@
    - + 名称 diff --git a/src/app/system-management/file-of-license/add-file-of-license/add-file-of-license.component.html b/src/app/system-management/file-of-license/add-file-of-license/add-file-of-license.component.html new file mode 100644 index 0000000..8f6d510 --- /dev/null +++ b/src/app/system-management/file-of-license/add-file-of-license/add-file-of-license.component.html @@ -0,0 +1,11 @@ +
    +
    + + + + + + + +
    +
    \ No newline at end of file diff --git a/src/app/system-management/file-of-license/add-file-of-license/add-file-of-license.component.scss b/src/app/system-management/file-of-license/add-file-of-license/add-file-of-license.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/system-management/file-of-license/add-file-of-license/add-file-of-license.component.ts b/src/app/system-management/file-of-license/add-file-of-license/add-file-of-license.component.ts new file mode 100644 index 0000000..e08d323 --- /dev/null +++ b/src/app/system-management/file-of-license/add-file-of-license/add-file-of-license.component.ts @@ -0,0 +1,24 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { NzModalRef } from 'ng-zorro-antd/modal'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { HttpClient } from '@angular/common/http'; + +@Component({ + selector: 'app-add-file-of-license', + templateUrl: './add-file-of-license.component.html', + styleUrls: ['./add-file-of-license.component.scss'] +}) +export class AddFileOfLicenseComponent implements OnInit { + + validateForm!: FormGroup; + constructor(private modal: NzModalRef, private fb: FormBuilder, private http: HttpClient) { } + + ngOnInit(): void { + this.validateForm = this.fb.group({ + name: [null, [Validators.required]] + }); + } + destroyModal(): void { + this.modal.destroy({ data: 'this the result data' }); + } +} diff --git a/src/app/system-management/file-of-license/edit-file-of-license/edit-file-of-license.component.html b/src/app/system-management/file-of-license/edit-file-of-license/edit-file-of-license.component.html new file mode 100644 index 0000000..8f6d510 --- /dev/null +++ b/src/app/system-management/file-of-license/edit-file-of-license/edit-file-of-license.component.html @@ -0,0 +1,11 @@ +
    +
    + + + + + + + +
    +
    \ No newline at end of file diff --git a/src/app/system-management/file-of-license/edit-file-of-license/edit-file-of-license.component.scss b/src/app/system-management/file-of-license/edit-file-of-license/edit-file-of-license.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/system-management/file-of-license/edit-file-of-license/edit-file-of-license.component.ts b/src/app/system-management/file-of-license/edit-file-of-license/edit-file-of-license.component.ts new file mode 100644 index 0000000..c99154e --- /dev/null +++ b/src/app/system-management/file-of-license/edit-file-of-license/edit-file-of-license.component.ts @@ -0,0 +1,24 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { NzModalRef } from 'ng-zorro-antd/modal'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { HttpClient } from '@angular/common/http'; + +@Component({ + selector: 'app-edit-file-of-license', + templateUrl: './edit-file-of-license.component.html', + styleUrls: ['./edit-file-of-license.component.scss'] +}) +export class EditFileOfLicenseComponent implements OnInit { + @Input() data?: any; + validateForm!: FormGroup; + constructor(private modal: NzModalRef, private fb: FormBuilder, private http: HttpClient) { } + + ngOnInit(): void { + this.validateForm = this.fb.group({ + name: [this.data.licenseName, [Validators.required]] + }); + } + destroyModal(): void { + this.modal.destroy({ data: 'this the result data' }); + } +} diff --git a/src/app/system-management/file-of-license/file-of-license.component.html b/src/app/system-management/file-of-license/file-of-license.component.html new file mode 100644 index 0000000..75f0d11 --- /dev/null +++ b/src/app/system-management/file-of-license/file-of-license.component.html @@ -0,0 +1,30 @@ +
    +
    +
    + 档案类证件列表 +
    +
    + +
    +
    +
    + + + + 档案类证件 + 操作 + + + + + {{data.licenseName}} + + 编辑 + 删除 + + + + +
    +
    \ No newline at end of file diff --git a/src/app/system-management/file-of-license/file-of-license.component.scss b/src/app/system-management/file-of-license/file-of-license.component.scss new file mode 100644 index 0000000..2c00b6f --- /dev/null +++ b/src/app/system-management/file-of-license/file-of-license.component.scss @@ -0,0 +1,57 @@ +.licenseBox { + width: 100%; + height: 100%; + background: #FFFFFF; + box-sizing: border-box; + padding: 20px; + overflow: hidden; + display: flex; + flex-direction: column; + + tbody { + tr { + td { + span { + margin-right: 18px; + } + } + + td:nth-child(1) { + padding-left: 40px; + } + } + + .operation { + a { + color: #2399FF; + margin-right: 8px; + } + + a:last-child { + color: rgba(0, 13, 33, 0.48); + } + } + + } +} + +.topbox { + width: 100%; + height: 36px; + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 12px; + + .lefttop { + span { + color: #000D21; + } + } +} + +.tablebox { + flex: 1; + overflow-y: auto; + +} diff --git a/src/app/system-management/file-of-license/file-of-license.component.ts b/src/app/system-management/file-of-license/file-of-license.component.ts new file mode 100644 index 0000000..6a2d6fb --- /dev/null +++ b/src/app/system-management/file-of-license/file-of-license.component.ts @@ -0,0 +1,134 @@ +import { Component, OnInit, TemplateRef, ViewContainerRef } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { NzModalService } from 'ng-zorro-antd/modal'; +import { NzMessageService } from 'ng-zorro-antd/message'; +import { HttpClient } from '@angular/common/http'; +import { AddFileOfLicenseComponent } from './add-file-of-license/add-file-of-license.component'; +import { EditFileOfLicenseComponent } from './edit-file-of-license/edit-file-of-license.component'; + +@Component({ + selector: 'app-file-of-license', + templateUrl: './file-of-license.component.html', + styleUrls: ['./file-of-license.component.scss'] +}) +export class FileOfLicenseComponent implements OnInit { + + constructor(private modal: NzModalService, private viewContainerRef: ViewContainerRef, private message: NzMessageService, private http: HttpClient) { } + + ngOnInit(): void { + this.getLicense() + } + + listOfData: any[] = []; + + //获取证照列表 + isLoading = false + getLicense() { + this.isLoading = true + let params = { + SkipCount: '0', + MaxResultCount: '999' + } + this.http.get('/api/services/app/FileLicenseType/GetAll', { + params: params + }).subscribe((data: any) => { + console.log('证照列表', data.result.items) + this.isLoading = false + this.listOfData = data.result.items + }) + } + + addRole(): void { + const modal = this.modal.create({ + nzTitle: '新增证照', + nzContent: AddFileOfLicenseComponent, + nzViewContainerRef: this.viewContainerRef, + nzWidth: 288, + nzComponentParams: {}, + nzOnOk: async () => { + if (instance.validateForm.valid) { + await new Promise(resolve => { + console.log('表单信息', instance.validateForm) + let body = { + licenseName: instance.validateForm.value.name, + } + this.http.post('/api/services/app/FileLicenseType/Create', body).subscribe(data => { + resolve(data) + this.message.create('success', '创建成功!'); + this.getLicense() + return true + }) + }) + } else { + this.message.create('warning', '请填写完整!'); + return false + } + } + }); + const instance = modal.getContentComponent(); + modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!')); + // Return a result when closed + modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result)); + } + + + edit(item) { + const modal = this.modal.create({ + nzTitle: '编辑证照', + nzContent: EditFileOfLicenseComponent, + nzViewContainerRef: this.viewContainerRef, + nzWidth: 325, + nzComponentParams: { + data: item + }, + nzOnOk: async () => { + if (instance.validateForm.valid) { + await new Promise(resolve => { + console.log('表单信息', instance.validateForm) + let body = { + id: item.id, + licenseName: instance.validateForm.value.name + } + this.http.put('/api/services/app/FileLicenseType/Update', body).subscribe(data => { + resolve(data) + this.message.create('success', '修改成功!'); + this.getLicense() + return true + }) + }) + } else { + this.message.create('warning', '请填写完整!'); + return false + } + } + }); + const instance = modal.getContentComponent(); + modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!')); + // Return a result when closed + modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result)); + } + + delete(item) { + console.log(item) + this.modal.confirm({ + nzTitle: `确定要删除${item.licenseName}这个证照吗?`, + nzOkText: '确定', + nzOkType: 'danger', + nzOnOk: () => { + this.http.delete('/api/services/app/FileLicenseType/Delete', { + params: { + Id: item.id + } + }).subscribe(data => { + this.message.create('success', '删除成功!'); + this.getLicense() + }) + }, + nzCancelText: '取消', + nzOnCancel: () => { + + } + }); + } + +} diff --git a/src/app/system-management/navigation/navigation.component.html b/src/app/system-management/navigation/navigation.component.html index d7010d6..96453ce 100644 --- a/src/app/system-management/navigation/navigation.component.html +++ b/src/app/system-management/navigation/navigation.component.html @@ -18,6 +18,8 @@
  • 角色管理
  • 分析主机管理
  • 推送管理
  • + +
    diff --git a/src/app/system-management/role/role.component.html b/src/app/system-management/role/role.component.html index a3db2a4..b91e611 100644 --- a/src/app/system-management/role/role.component.html +++ b/src/app/system-management/role/role.component.html @@ -9,7 +9,7 @@
    - + 角色 diff --git a/src/app/system-management/system-management-routing.module.ts b/src/app/system-management/system-management-routing.module.ts index c21a207..a8990e2 100644 --- a/src/app/system-management/system-management-routing.module.ts +++ b/src/app/system-management/system-management-routing.module.ts @@ -7,13 +7,17 @@ import { OrganizationComponent } from './organization/organization.component'; import { UserComponent } from './user/user.component'; import { AnalysisOfTheHostComponent } from './analysis-of-the-host/analysis-of-the-host.component'; import { PushComponent } from './push/push.component'; +import { UpdateOfLicenseComponent } from './update-of-license/update-of-license.component'; +import { FileOfLicenseComponent } from './file-of-license/file-of-license.component'; const routes: Routes = [ { path: 'organization', component: OrganizationComponent }, { path: 'user', component: UserComponent }, { path: 'role', component: RoleComponent }, { path: 'host', component: AnalysisOfTheHostComponent }, - { path: 'push', component: PushComponent } + { path: 'push', component: PushComponent }, + { path: 'fileOfLicense', component: FileOfLicenseComponent }, + { path: 'updateOfLicense', component: UpdateOfLicenseComponent } ]; @NgModule({ diff --git a/src/app/system-management/system-management.module.ts b/src/app/system-management/system-management.module.ts index f5d4321..b4231bb 100644 --- a/src/app/system-management/system-management.module.ts +++ b/src/app/system-management/system-management.module.ts @@ -34,8 +34,14 @@ import { AddcameraComponent } from './analysis-of-the-host/addcamera/addcamera.c import { EditcameraComponent } from './analysis-of-the-host/editcamera/editcamera.component'; import { PushComponent } from './push/push.component'; import { EditPushItemComponent } from './push/edit-push-item/edit-push-item.component'; +import { FileOfLicenseComponent } from './file-of-license/file-of-license.component'; +import { UpdateOfLicenseComponent } from './update-of-license/update-of-license.component'; +import { AddFileOfLicenseComponent } from './file-of-license/add-file-of-license/add-file-of-license.component'; +import { EditFileOfLicenseComponent } from './file-of-license/edit-file-of-license/edit-file-of-license.component'; +import { AddUpdateOfLicenseComponent } from './update-of-license/add-update-of-license/add-update-of-license.component'; +import { EditUpdateOfLicenseComponent } from './update-of-license/edit-update-of-license/edit-update-of-license.component'; @NgModule({ - declarations: [OrganizationComponent, UserComponent, RoleComponent, NavigationComponent, AdduserComponent, EdituserComponent, AddroleComponent, EditroleComponent, AddorComponent, EditorComponent, AnalysisOfTheHostComponent, AddhostComponent, EdithostComponent, AddcameraComponent, EditcameraComponent, PushComponent, EditPushItemComponent], + declarations: [OrganizationComponent, UserComponent, RoleComponent, NavigationComponent, AdduserComponent, EdituserComponent, AddroleComponent, EditroleComponent, AddorComponent, EditorComponent, AnalysisOfTheHostComponent, AddhostComponent, EdithostComponent, AddcameraComponent, EditcameraComponent, PushComponent, EditPushItemComponent, FileOfLicenseComponent, UpdateOfLicenseComponent, AddFileOfLicenseComponent, EditFileOfLicenseComponent, AddUpdateOfLicenseComponent, EditUpdateOfLicenseComponent], imports: [ CommonModule, SystemRoutingModule, @@ -57,7 +63,7 @@ import { EditPushItemComponent } from './push/edit-push-item/edit-push-item.comp NzTreeSelectModule, NzCheckboxModule ], - entryComponents :[AdduserComponent,EdituserComponent,AddroleComponent,EditroleComponent,AddorComponent,EditorComponent,AddhostComponent,EdithostComponent,AddcameraComponent,EditcameraComponent,EditPushItemComponent] - + entryComponents: [AdduserComponent, EdituserComponent, AddroleComponent, EditroleComponent, AddorComponent, EditorComponent, AddhostComponent, EdithostComponent, AddcameraComponent, EditcameraComponent, EditPushItemComponent, AddFileOfLicenseComponent, EditFileOfLicenseComponent, AddUpdateOfLicenseComponent, EditUpdateOfLicenseComponent] + }) export class SystemManagementModule { } diff --git a/src/app/system-management/update-of-license/add-update-of-license/add-update-of-license.component.html b/src/app/system-management/update-of-license/add-update-of-license/add-update-of-license.component.html new file mode 100644 index 0000000..8f177ee --- /dev/null +++ b/src/app/system-management/update-of-license/add-update-of-license/add-update-of-license.component.html @@ -0,0 +1,28 @@ +
    +
    + + 证照名称 + + + + + + + + 办理提醒时间 + + + + + + + + 临期提醒时间 + + + + + + +
    +
    \ No newline at end of file diff --git a/src/app/system-management/update-of-license/add-update-of-license/add-update-of-license.component.scss b/src/app/system-management/update-of-license/add-update-of-license/add-update-of-license.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/system-management/update-of-license/add-update-of-license/add-update-of-license.component.ts b/src/app/system-management/update-of-license/add-update-of-license/add-update-of-license.component.ts new file mode 100644 index 0000000..14a809b --- /dev/null +++ b/src/app/system-management/update-of-license/add-update-of-license/add-update-of-license.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { NzModalRef } from 'ng-zorro-antd/modal'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { HttpClient } from '@angular/common/http'; + + +@Component({ + selector: 'app-add-update-of-license', + templateUrl: './add-update-of-license.component.html', + styleUrls: ['./add-update-of-license.component.scss'] +}) +export class AddUpdateOfLicenseComponent implements OnInit { + + validateForm!: FormGroup; + constructor(private modal: NzModalRef, private fb: FormBuilder, private http: HttpClient) { } + + ngOnInit(): void { + this.validateForm = this.fb.group({ + name: [null, [Validators.required]], + handleRemindDays: [90, [Validators.required]], + closingRemindDays: [30, [Validators.required]] + }); + } + destroyModal(): void { + this.modal.destroy({ data: 'this the result data' }); + } +} diff --git a/src/app/system-management/update-of-license/edit-update-of-license/edit-update-of-license.component.html b/src/app/system-management/update-of-license/edit-update-of-license/edit-update-of-license.component.html new file mode 100644 index 0000000..8f177ee --- /dev/null +++ b/src/app/system-management/update-of-license/edit-update-of-license/edit-update-of-license.component.html @@ -0,0 +1,28 @@ +
    +
    + + 证照名称 + + + + + + + + 办理提醒时间 + + + + + + + + 临期提醒时间 + + + + + + +
    +
    \ No newline at end of file diff --git a/src/app/system-management/update-of-license/edit-update-of-license/edit-update-of-license.component.scss b/src/app/system-management/update-of-license/edit-update-of-license/edit-update-of-license.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/system-management/update-of-license/edit-update-of-license/edit-update-of-license.component.ts b/src/app/system-management/update-of-license/edit-update-of-license/edit-update-of-license.component.ts new file mode 100644 index 0000000..f96e458 --- /dev/null +++ b/src/app/system-management/update-of-license/edit-update-of-license/edit-update-of-license.component.ts @@ -0,0 +1,28 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { NzModalRef } from 'ng-zorro-antd/modal'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { HttpClient } from '@angular/common/http'; + +@Component({ + selector: 'app-edit-update-of-license', + templateUrl: './edit-update-of-license.component.html', + styleUrls: ['./edit-update-of-license.component.scss'] +}) +export class EditUpdateOfLicenseComponent implements OnInit { + + @Input() data?: any; + validateForm!: FormGroup; + constructor(private modal: NzModalRef, private fb: FormBuilder, private http: HttpClient) { } + + ngOnInit(): void { + this.validateForm = this.fb.group({ + name: [this.data.licenseName, [Validators.required]], + handleRemindDays: [this.data.handleRemindDays, [Validators.required]], + closingRemindDays: [this.data.closingRemindDays, [Validators.required]] + }); + } + destroyModal(): void { + this.modal.destroy({ data: 'this the result data' }); + } + +} diff --git a/src/app/system-management/update-of-license/update-of-license.component.html b/src/app/system-management/update-of-license/update-of-license.component.html new file mode 100644 index 0000000..2dcaaf6 --- /dev/null +++ b/src/app/system-management/update-of-license/update-of-license.component.html @@ -0,0 +1,34 @@ +
    +
    +
    + 更新类证件列表 +
    +
    + +
    +
    +
    + + + + 更新类证件 + 办理提醒时间 + 临期提醒时间 + 操作 + + + + + {{data.licenseName}} + {{data.handleRemindDays}}天 + {{data.closingRemindDays}}天 + + 编辑 + 删除 + + + + +
    +
    \ No newline at end of file diff --git a/src/app/system-management/update-of-license/update-of-license.component.scss b/src/app/system-management/update-of-license/update-of-license.component.scss new file mode 100644 index 0000000..2c00b6f --- /dev/null +++ b/src/app/system-management/update-of-license/update-of-license.component.scss @@ -0,0 +1,57 @@ +.licenseBox { + width: 100%; + height: 100%; + background: #FFFFFF; + box-sizing: border-box; + padding: 20px; + overflow: hidden; + display: flex; + flex-direction: column; + + tbody { + tr { + td { + span { + margin-right: 18px; + } + } + + td:nth-child(1) { + padding-left: 40px; + } + } + + .operation { + a { + color: #2399FF; + margin-right: 8px; + } + + a:last-child { + color: rgba(0, 13, 33, 0.48); + } + } + + } +} + +.topbox { + width: 100%; + height: 36px; + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 12px; + + .lefttop { + span { + color: #000D21; + } + } +} + +.tablebox { + flex: 1; + overflow-y: auto; + +} diff --git a/src/app/system-management/update-of-license/update-of-license.component.ts b/src/app/system-management/update-of-license/update-of-license.component.ts new file mode 100644 index 0000000..4517a3e --- /dev/null +++ b/src/app/system-management/update-of-license/update-of-license.component.ts @@ -0,0 +1,139 @@ +import { Component, OnInit, TemplateRef, ViewContainerRef } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { NzModalService } from 'ng-zorro-antd/modal'; +import { NzMessageService } from 'ng-zorro-antd/message'; +import { HttpClient } from '@angular/common/http'; +import { AddUpdateOfLicenseComponent } from './add-update-of-license/add-update-of-license.component'; +import { EditUpdateOfLicenseComponent } from './edit-update-of-license/edit-update-of-license.component'; + +@Component({ + selector: 'app-update-of-license', + templateUrl: './update-of-license.component.html', + styleUrls: ['./update-of-license.component.scss'] +}) +export class UpdateOfLicenseComponent implements OnInit { + + constructor(private modal: NzModalService, private viewContainerRef: ViewContainerRef, private message: NzMessageService, private http: HttpClient) { } + + ngOnInit(): void { + this.getLicense() + } + + listOfData: any[] = []; + + //获取证照列表 + isLoading = false + getLicense() { + this.isLoading = true + let params = { + SkipCount: '0', + MaxResultCount: '999' + } + this.http.get('/api/services/app/ValidityLicenseType/GetAll', { + params: params + }).subscribe((data: any) => { + console.log('证照列表', data.result.items) + this.isLoading = false + this.listOfData = data.result.items + }) + } + + addRole(): void { + const modal = this.modal.create({ + nzTitle: '新增证照', + nzContent: AddUpdateOfLicenseComponent, + nzViewContainerRef: this.viewContainerRef, + nzWidth: 588, + nzComponentParams: {}, + nzOnOk: async () => { + if (instance.validateForm.valid) { + await new Promise(resolve => { + console.log('表单信息', instance.validateForm) + let body = { + licenseName: instance.validateForm.value.name, + handleRemindDays: instance.validateForm.value.handleRemindDays, + closingRemindDays: instance.validateForm.value.closingRemindDays + } + this.http.post('/api/services/app/ValidityLicenseType/Create', body).subscribe(data => { + resolve(data) + this.message.create('success', '创建成功!'); + this.getLicense() + return true + }) + }) + } else { + this.message.create('warning', '请填写完整!'); + return false + } + } + }); + const instance = modal.getContentComponent(); + modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!')); + // Return a result when closed + modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result)); + } + + + edit(item) { + const modal = this.modal.create({ + nzTitle: '编辑证照', + nzContent: EditUpdateOfLicenseComponent, + nzViewContainerRef: this.viewContainerRef, + nzWidth: 588, + nzComponentParams: { + data: item + }, + nzOnOk: async () => { + if (instance.validateForm.valid) { + await new Promise(resolve => { + console.log('表单信息', instance.validateForm) + let body = { + id: item.id, + licenseName: instance.validateForm.value.name, + handleRemindDays: instance.validateForm.value.handleRemindDays, + closingRemindDays: instance.validateForm.value.closingRemindDays + } + this.http.put('/api/services/app/ValidityLicenseType/Update', body).subscribe(data => { + resolve(data) + this.message.create('success', '修改成功!'); + this.getLicense() + return true + }) + }) + } else { + this.message.create('warning', '请填写完整!'); + return false + } + } + }); + const instance = modal.getContentComponent(); + modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!')); + // Return a result when closed + modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result)); + } + + delete(item) { + console.log(item) + this.modal.confirm({ + nzTitle: `确定要删除${item.licenseName}这个证照吗?`, + nzOkText: '确定', + nzOkType: 'danger', + nzOnOk: () => { + this.http.delete('/api/services/app/ValidityLicenseType/Delete', { + params: { + Id: item.id + } + }).subscribe(data => { + this.message.create('success', '删除成功!'); + this.getLicense() + }) + }, + nzCancelText: '取消', + nzOnCancel: () => { + + } + }); + } + + +} diff --git a/src/assets/images/icon/license.png b/src/assets/images/icon/license.png new file mode 100644 index 0000000..4c3d396 Binary files /dev/null and b/src/assets/images/icon/license.png differ diff --git a/src/theme.less b/src/theme.less index 0c3320b..eb9a8eb 100644 --- a/src/theme.less +++ b/src/theme.less @@ -504,7 +504,9 @@ //管理员界面 ---- 表格 #userBox, #roleBox, -#hostbox { +#hostbox, +#licenseBox, +#licenseBox2 { .ant-table-thead>tr>th { background: rgba(145, 204, 255, 0.15); }