import { HttpClient } from '@angular/common/http' ;
import { Component , OnInit , ViewContainerRef , ElementRef } from '@angular/core' ;
import { FormBuilder , FormGroup , Validators } from '@angular/forms' ;
import * as echarts from 'echarts' ;
import { NzModalService } from 'ng-zorro-antd/modal' ;
import { GetOutOfLineDetailsComponent } from '../today-warning/get-out-of-line-details/get-out-of-line-details.component' ;
import * as moment from 'moment' ;
import { fromEvent } from 'rxjs' ;
import { debounceTime } from 'rxjs/operators' ;
import { Router } from '@angular/router' ;
import { OilUnloadingProcessComponent } from '../oil-unloading-process/oil-unloading-process.component' ;
import { TreeService } from 'src/app/service/tree.service' ;
@Component ( {
selector : 'app-oil-unloading-process-list' ,
templateUrl : './oil-unloading-process-list.component.html' ,
styleUrls : [ './oil-unloading-process-list.component.scss' ]
} )
export class OilUnloadingProcessListComponent implements OnInit {
validateForm ! : FormGroup ;
constructor ( private toTree : TreeService , private http : HttpClient , private fb : FormBuilder , private router : Router , private modal : NzModalService , private viewContainerRef : ViewContainerRef , private element : ElementRef ) { }
myChart : any //左侧饼图
mybarChart : any //柱状图
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 ;
}
isEcharts : boolean = true
isEchartsShow() {
this . isEcharts = ! this . isEcharts
}
startdate
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 ( ) ;
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 ( {
state : [ null ] ,
organization : [ null ] ,
datePicker : [ [ this . startdate , this . enddate ] ]
} ) ;
// 饼图
this . myChart = echarts . init ( document . getElementById ( 'piechart' ) ) ;
//柱状折线图
this . mybarChart = echarts . init ( document . getElementById ( 'barchart' ) ) ;
this . tableSpin = true
this . getAllOrganization ( )
this . getAggregations ( )
if ( this . router . url . indexOf ( 'petrolStation' ) != - 1 ) {
this . isOrShow = false
} else {
this . isOrShow = true
}
}
//刷新饼图图表数据
num
echartsData : any
//一级饼图
oilchartpieOption = {
color : [ '#FF4B65' , '#36A2FF' ] ,
tooltip : {
trigger : 'item' //触发类型
} ,
legend : {
bottom : '12%' ,
left : 'center' ,
itemGap : 40 ,
itemWidth : 8 ,
itemHeight : 8 ,
formatter : ( name ) = > {
let data = this . oilchartpieOptionPieData1
let value
for ( var i = 0 , l = data . length ; i < l ; i ++ ) {
if ( data [ i ] . name == name ) {
value = data [ i ] . value ;
}
}
return '{a|' + name + '}' + '{b|' + value + '}' ;
} ,
textStyle : {
color : '#fff' ,
rich : {
a : {
width : 80
}
}
}
} ,
series : [
{
type : 'pie' ,
radius : [ '50%' , '60%' ] ,
bottom : '10%' ,
avoidLabelOverlap : false , //防止标签重叠策略
label : { //每一个标签外网延伸的引导说明
show : false ,
position : 'outside'
} ,
data : [ ] ,
tooltip : { //鼠标移入提示
position : 'right' ,
padding : [ 14 , 19 ] ,
backgroundColor : 'rgba(28, 129, 218, 0.4)' ,
textStyle : {
color : '#fff' ,
fontSize : 12
}
}
}
]
} ;
oilchartpieOptionPieData1 : any
//一级柱状图
oilchartbarOption = {
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 : [
{
name : '卸油事件' ,
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%'
} ,
{
name : '卸油预警' ,
data : [ ] ,
type : 'line' ,
symbol : 'circle' ,
symbolSize : 8 ,
label : {
show : true
} ,
itemStyle : {
color : '#fff' ,
shadowColor : '#fff' ,
shadowBlur : 10
} ,
lineStyle : {
color : '#FFCC8A' ,
width : 1
}
}
] ,
legend : {
selectedMode : false , // 是否允许点击
data : [ '卸油事件' , '卸油预警' ] ,
textStyle : {
color : '#fff'
} ,
right : 28 ,
top : 18 ,
itemWidth : 8 ,
itemHeight : 8 ,
} ,
grid : {
left : '42px' ,
right : '30px' ,
bottom : '38px' ,
top : '80px'
}
} ;
//二级饼图
oilchartpieOption2 = {
color : [ '#36A2FF' , '#FFBD4B' , '#46DFFF' ] ,
tooltip : {
trigger : 'item' //触发类型
} ,
legend : {
bottom : '8%' ,
left : 'center' ,
itemGap : 10 ,
itemWidth : 8 ,
itemHeight : 8 ,
formatter : ( name ) = > {
let data = this . oilchartpieOptionPieData2
let value
for ( var i = 0 , l = data . length ; i < l ; i ++ ) {
if ( data [ i ] . name == name ) {
value = data [ i ] . value ;
}
}
return '{a|' + name + '}' + '{b|' + value + '}' ;
} ,
textStyle : {
color : '#fff' ,
rich : {
a : {
width : 60
}
}
}
} ,
series : [
{
type : 'pie' ,
radius : [ '50%' , '60%' ] ,
bottom : '10%' ,
avoidLabelOverlap : false , //防止标签重叠策略
label : { //每二个标签外网延伸的引导说明
show : false ,
position : 'outside'
} ,
data : [ ] ,
tooltip : { //鼠标移入提示
position : 'right' ,
padding : [ 14 , 19 ] ,
backgroundColor : 'rgba(28, 129, 218, 0.4)' ,
textStyle : {
color : '#fff' ,
fontSize : 12
}
}
}
]
} ;
oilchartpieOptionPieData2 : any
//二级柱状图
oilchartbarOption2 = {
tooltip : {
// trigger: 'axis'
} ,
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'
}
}
} ,
legend : {
selectedMode : false , // 是否允许点击
data : [ '事前准备' , '事中操作' , '全程监测' ] ,
textStyle : {
color : '#fff'
} ,
right : 18 ,
top : 18 ,
itemWidth : 8 ,
itemHeight : 8 ,
} ,
series : [
{
name : '' ,
data : [ ] ,
type : 'bar' ,
itemStyle : {
color : {
type : 'linear' ,
x : 0 ,
y : 0 ,
x2 : 0 ,
y2 : 1 ,
colorStops : [ {
offset : 0 , color : 'rgba(54, 162, 255, 1)' // 0% 处的颜色
} , {
offset : 1 , color : 'rgba(54, 162, 255, 0.1)' // 100% 处的颜色
} ] ,
global : false // 缺省为 false
}
} ,
barWidth : '25%'
} ,
{
name : '' ,
data : [ ] ,
type : 'bar' ,
itemStyle : {
color : {
type : 'linear' ,
x : 0 ,
y : 0 ,
x2 : 0 ,
y2 : 1 ,
colorStops : [ {
offset : 0 , color : 'rgba(255, 189, 75, 1)' // 0% 处的颜色
} , {
offset : 1 , color : 'rgba(255, 189, 75, 0.1)' // 100% 处的颜色
} ] ,
global : false // 缺省为 false
}
} ,
barWidth : '25%'
} ,
{
name : '' ,
data : [ ] ,
type : 'bar' ,
itemStyle : {
color : {
type : 'linear' ,
x : 0 ,
y : 0 ,
x2 : 0 ,
y2 : 1 ,
colorStops : [ {
offset : 0 , color : 'rgba(70, 223, 255, 1)' // 0% 处的颜色
} , {
offset : 1 , color : 'rgba(70, 223, 255, 0.1)' // 100% 处的颜色
} ] ,
global : false // 缺省为 false
}
} ,
barWidth : '25%'
}
] ,
grid : {
left : '42px' ,
right : '30px' ,
bottom : '38px' ,
top : '80px'
}
} ;
isgoback : boolean = false
refreshEchartsData1 ( data ) {
this . num = data . totalCount
//饼图
this . oilchartpieOptionPieData1 = [
{ name : '预警事件' , value : data.notCorrectCount } ,
{ name : '正常操作' , value : data.correctCount } ,
]
this . oilchartpieOption . series [ 0 ] . data = this . oilchartpieOptionPieData1
this . myChart . setOption ( this . oilchartpieOption ) ;
this . myChart . off ( 'legendselectchanged' )
this . myChart . off ( 'click' )
this . myChart . on ( 'legendselectchanged' , ( params ) = > {
this . myChart . setOption ( {
legend : { selected : { [ params . name ] : true } }
} )
if ( params . name == '预警事件' ) {
this . isgoback = true
this . refreshEchartsData2 ( this . echartsData )
this . validateForm . patchValue ( {
state : '0'
} ) ;
this . list = [ ]
this . SkipCount = '0'
this . getViolateRecordList ( )
}
} ) ;
this . myChart . on ( 'click' , ( params ) = > {
if ( params . name == '预警事件' ) {
this . isgoback = true
this . refreshEchartsData2 ( this . echartsData )
this . validateForm . patchValue ( {
state : '0'
} ) ;
this . list = [ ]
this . SkipCount = '0'
this . getViolateRecordList ( )
}
} ) ;
//柱状图
let monthArr = [ ]
let valuedata = [ ]
let valuedata2 = [ ]
data . list . forEach ( element = > {
monthArr . push ( moment ( element . key ) . format ( 'MM.DD' ) )
valuedata . push ( element . totalCount )
let item = Number ( element . proccessBeforeCount + element . proccessingCount )
valuedata2 . push ( item )
} ) ;
// console.log('卸油预警',valuedata2)
this . oilchartbarOption . xAxis . data = monthArr
this . oilchartbarOption . series [ 0 ] . data = valuedata
this . oilchartbarOption . series [ 1 ] . data = valuedata2
this . mybarChart . setOption ( this . oilchartbarOption ) ;
}
refreshEchartsData2 ( data ) {
this . num = Number ( data . proccessBeforeCount + data . proccessingCount + data . allProccessCount )
//饼图
this . oilchartpieOptionPieData2 = [
{ name : '事前准备' , value : data.proccessBeforeCount } ,
{ name : '事中操作' , value : data.proccessingCount } ,
{ name : '全程检测' , value : data.allProccessCount }
]
this . oilchartpieOption2 . series [ 0 ] . data = this . oilchartpieOptionPieData2
this . myChart . setOption ( this . oilchartpieOption2 ) ;
//柱状图
let monthArr = [ ]
let valuedataBefore = [ ]
let valuedataIng = [ ]
let valuedataAll = [ ]
data . list . forEach ( element = > {
monthArr . push ( moment ( element . key ) . format ( 'MM.DD' ) )
valuedataBefore . push ( element . proccessBeforeCount )
valuedataIng . push ( element . proccessingCount )
valuedataAll . push ( element . allProccessCount )
} ) ;
this . oilchartbarOption2 . xAxis . data = monthArr
this . oilchartbarOption2 . series [ 0 ] . name = '事前准备'
this . oilchartbarOption2 . series [ 0 ] . data = valuedataBefore
this . oilchartbarOption2 . series [ 1 ] . name = '事中操作'
this . oilchartbarOption2 . series [ 1 ] . data = valuedataIng
this . oilchartbarOption2 . series [ 2 ] . name = '全程监测'
this . oilchartbarOption2 . series [ 2 ] . data = valuedataAll
this . mybarChart . setOption ( this . oilchartbarOption2 ) ;
}
goback() {
this . isgoback = false
this . myChart . clear ( ) ;
this . mybarChart . clear ( ) ;
this . refreshEchartsData1 ( this . echartsData )
this . validateForm . patchValue ( {
state : null
} ) ;
this . list = [ ]
this . SkipCount = '0'
this . getViolateRecordList ( )
}
stateChange ( $event ) {
if ( ! $event ) {
this . list = [ ]
this . SkipCount = '0'
this . getViolateRecordList ( )
}
}
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 = JSON . parse ( sessionStorage . getItem ( 'userdata' ) ) . organization . id
this . validateForm . patchValue ( {
datePicker : [ this . startdate , this . enddate ]
} ) ;
this . list = [ ]
this . SkipCount = '0'
this . getViolateRecordList ( )
} )
}
//获取统计信息
chartsSpin : boolean = false
getAggregations() {
this . chartsSpin = true
let organizationUnitId
if ( this . router . url . indexOf ( 'petrolStation' ) != - 1 ) {
organizationUnitId = JSON . parse ( sessionStorage . getItem ( 'userdataOfgasstation' ) ) . organization . id
} else {
organizationUnitId = JSON . parse ( sessionStorage . getItem ( 'userdata' ) ) . organization . id
}
let params : any = {
OrganizationUnitId : organizationUnitId ,
IsContainsChildren : 'true'
}
this . http . get ( '/api/services/app/OilUnloadingProcess/GetAllCountByDays' , { params : params } ) . subscribe ( ( data : any ) = > {
console . log ( '统计信息' , data )
this . chartsSpin = false
this . echartsData = data . result
this . refreshEchartsData1 ( this . echartsData )
// this.refreshBarLineData(this.echartsData)
} )
}
//获得卸油记录列表
SkipCount : string = '0'
MaxResultCount : string = '50'
list : any = [ ]
totalCount : string
tableSpin : boolean = false
getViolateRecordList() {
this . tableSpin = true
let organizationUnitId
if ( this . router . url . indexOf ( 'petrolStation' ) != - 1 ) {
organizationUnitId = JSON . parse ( sessionStorage . getItem ( 'userdataOfgasstation' ) ) . organization . id
} else {
organizationUnitId = this . validateForm . value . organization
}
let IsCorrect = null
if ( this . validateForm . value . state ) {
this . validateForm . value . state == '0' ? IsCorrect = 'false' : IsCorrect = 'true'
}
let params = {
IsCorrect : IsCorrect ,
StartTime : moment ( this . validateForm . value . datePicker [ 0 ] ) . format ( 'yyyy-MM-DD' ) ,
EndTime : moment ( this . validateForm . value . datePicker [ 1 ] ) . format ( 'yyyy-MM-DD' ) ,
IsContainsChildren : 'true' ,
OrganizationUnitId : organizationUnitId ,
SkipCount : this.SkipCount ,
MaxResultCount : this.MaxResultCount
}
this . http . get ( '/api/services/app/OilUnloadingProcess/GetAll' , {
params : params
} ) . subscribe ( ( data : any ) = > {
this . tableSpin = false
this . list = this . list . concat ( data . result . items ) ;
this . list = [ . . . this . list ]
this . totalCount = data . result . totalCount
console . log ( '获取卸油流程列表' , data . result . items )
} )
}
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 ( )
}
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 ( ) ;
}
console . log ( JSON . parse ( sessionStorage . getItem ( 'userdata' ) ) . organization . id )
// this.validateForm.value.organization = JSON.parse(sessionStorage.getItem('userdata')).organization.id
this . validateForm . patchValue ( {
organization : JSON.parse ( sessionStorage . getItem ( 'userdata' ) ) . organization . id ,
datePicker : [ this . startdate , this . enddate ]
} ) ;
this . list = [ ]
this . SkipCount = '0'
this . getViolateRecordList ( )
}
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 ( )
}
}
} ) ;
}
look ( item ) {
// console.log(item)
let arr = [ ]
let arr1 = item . oilUnloadingNodes . find ( ( item ) = > { return item . nodeName == '车辆进场' } ) ;
let arr2 = item . oilUnloadingNodes . find ( ( item ) = > { return item . nodeName == '设置卸油隔离区' } ) ;
let arr3 = item . oilUnloadingNodes . find ( ( item ) = > { return item . nodeName == '卸油连接静电接地' } ) ;
let arr4 = item . oilUnloadingNodes . find ( ( item ) = > { return item . nodeName == '卸油设置消防器材' } ) ;
let arr5 = item . oilUnloadingNodes . find ( ( item ) = > { return item . nodeName == '连接卸油管' } ) ;
let arr6 = item . oilUnloadingNodes . find ( ( item ) = > { return item . nodeName == '卸油中无人监卸' } ) ;
let arr7 = item . oilUnloadingNodes . find ( ( item ) = > { return item . nodeName == '拆除卸油管' } ) ;
let arr8 = item . oilUnloadingNodes . find ( ( item ) = > { return item . nodeName == '车辆离场' || item . nodeName == '车辆离厂' || item . nodeName == '车辆出厂' } ) ;
// console.log(1, arr1)
// console.log(2, arr2)
// console.log(3, arr3)
// console.log(4, arr4)
// console.log(5, arr5)
// console.log(6, arr6)
// console.log(7, arr7)
// console.log(8, arr8)
arr = [ arr1 , arr2 , arr3 , arr4 , arr5 , arr6 , arr7 , arr8 ]
console . log ( '卸油流程' , arr )
const modal = this . modal . create ( {
nzContent : OilUnloadingProcessComponent ,
nzViewContainerRef : this.viewContainerRef ,
nzWidth : 1000 ,
nzBodyStyle : {
'border' : '1px solid #6d9cc7' ,
'border-radius' : '0px' ,
'padding' : '0px' ,
'box-shadow' : '0 0 8px 0 #fff' ,
'background' : '#000D21' ,
} ,
nzComponentParams : {
data : arr
} ,
nzFooter : null ,
nzOnOk : async ( ) = > {
}
} ) ;
const instance = modal . getContentComponent ( ) ;
}
gorecordList() {
if ( this . router . url . indexOf ( 'petrolStation' ) != - 1 ) {
this . router . navigate ( [ '/records/petrolStation' ] )
} else {
this . router . navigate ( [ '/records' ] )
}
}
goWarningList() {
if ( this . router . url . indexOf ( 'petrolStation' ) != - 1 ) {
this . router . navigate ( [ '/records/petrolStation/warningstatisticslist' ] )
} else {
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' ] )
}
}
}