@ -1,96 +1,138 @@
import { Component , OnInit , ViewChild , ElementRef , ViewContainerRef } from '@angular/core' ;
import { HttpClient } from '@angular/common/http' ;
import { TreeService } from 'src/app/service/tree.service' ;
import { FormBuilder , FormGroup , Validators } from '@angular/forms' ;
import { NzContextMenuService , NzDropdownMenuComponent } from 'ng-zorro-antd/dropdown' ;
import { NzFormatEmitEvent , NzTreeComponent , NzTreeNode } from 'ng-zorro-antd/tree' ;
import { Router } from '@angular/router' ;
import { NavChangeService } from 'src/app/service/navChange.service' ;
import { fromEvent } from 'rxjs' ;
import { debounceTime } from 'rxjs/operators' ;
import 'linqjs' ;
import { DetailsUpdateCategoryComponent } from '../../license/update-category/details-update-category/details-update-category.component' ;
import { NzModalService } from 'ng-zorro-antd/modal' ;
import { NzMessageService } from 'ng-zorro-antd/message' ;
import {
Component ,
OnInit ,
ViewChild ,
ElementRef ,
ViewContainerRef ,
} from "@angular/core" ;
import { HttpClient } from "@angular/common/http" ;
import { TreeService } from "src/app/service/tree.service" ;
import { FormBuilder , FormGroup , Validators } from "@angular/forms" ;
import {
NzContextMenuService ,
NzDropdownMenuComponent ,
} from "ng-zorro-antd/dropdown" ;
import {
NzFormatEmitEvent ,
NzTreeComponent ,
NzTreeNode ,
} from "ng-zorro-antd/tree" ;
import { Router } from "@angular/router" ;
import { NavChangeService } from "src/app/service/navChange.service" ;
import { fromEvent } from "rxjs" ;
import { debounceTime } from "rxjs/operators" ;
import "linqjs" ;
import { DetailsUpdateCategoryComponent } from "../../license/update-category/details-update-category/details-update-category.component" ;
import { NzModalService } from "ng-zorro-antd/modal" ;
import { NzMessageService } from "ng-zorro-antd/message" ;
@Component ( {
selector : 'app-update-license-list' ,
templateUrl : './update-license-list.component.html' ,
styleUrls : [ './update-license-list.component.scss' ]
selector : "app-update-license-list" ,
templateUrl : "./update-license-list.component.html" ,
styleUrls : [ "./update-license-list.component.scss" ] ,
} )
export class UpdateLicenseListComponent implements OnInit {
validateForm ! : FormGroup ;
constructor ( private modal : NzModalService , private viewContainerRef : ViewContainerRef , private element : ElementRef , private navChangeService : NavChangeService , private http : HttpClient , private toTree : TreeService , private fb : FormBuilder , private nzContextMenuService : NzContextMenuService , private router : Router , private message : NzMessageService ) { }
button = false
tableScrollHeight
tableScrollWeight
resizeListener
constructor (
private modal : NzModalService ,
private viewContainerRef : ViewContainerRef ,
private element : ElementRef ,
private navChangeService : NavChangeService ,
private http : HttpClient ,
private toTree : TreeService ,
private fb : FormBuilder ,
private nzContextMenuService : NzContextMenuService ,
private router : Router ,
private message : NzMessageService
) { }
button = false ;
tableScrollHeight ;
tableScrollWeight ;
resizeListener ;
async ngOnInit ( ) : Promise < void > {
this . tableScrollHeight = '100px'
this . tableScrollWeight = '100px'
this . tableScrollHeight = "100px" ;
this . tableScrollWeight = "100px" ;
// 页面监听
this . resizeListener = fromEvent ( window , 'resize' ) . pipe ( debounceTime ( 100 ) ) . subscribe ( ( event ) = > {
let tableHeader = this . element . nativeElement . querySelector ( ` .ant-table-header ` ) . clientHeight
this . tableScrollHeight = ( document . getElementById ( 'tablebox' ) . clientHeight - tableHeader - 10 ) + 'px'
} ) ;
this . resizeListener = fromEvent ( window , "resize" )
. pipe ( debounceTime ( 100 ) )
. subscribe ( ( event ) = > {
let tableHeader =
this . element . nativeElement . querySelector (
` .ant-table-header `
) . clientHeight ;
this . tableScrollHeight =
document . getElementById ( "tablebox" ) . clientHeight -
tableHeader -
10 +
"px" ;
} ) ;
this . validateForm = this . fb . group ( {
organization : [ null ] ,
name : [ null ]
name : [ null ] ,
} ) ;
this . tableSpin = true
await this . getAllOrganization ( )
this . getStationLicenses ( )
this . returnLastMenus ( )
this . tableSpin = true ;
await this . getAllOrganization ( ) ;
this . getStationLicenses ( ) ;
this . returnLastMenus ( ) ;
}
ngOnDestroy ( ) : void {
this . resizeListener . unsubscribe ( )
this . resizeListener . unsubscribe ( ) ;
}
//获取所有组织机构
nodes : any = [ ]
nodes : any = [ ] ;
async getAllOrganization() {
let OrganizationUnitId = JSON . parse ( sessionStorage . getItem ( 'userdata' ) ) . organization . id
let OrganizationUnitId = JSON . parse ( sessionStorage . getItem ( "userdata" ) )
. organization . id ;
let params = {
OrganizationUnitId : OrganizationUnitId ,
IsContainsChildren : "true"
}
IsContainsChildren : "true" ,
} ;
await new Promise ( ( resolve , reject ) = > {
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 . validateForm . patchValue ( {
organization : JSON.parse ( sessionStorage . getItem ( 'userdata' ) ) . organization . id ,
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 . validateForm . patchValue ( {
organization : JSON.parse ( sessionStorage . getItem ( "userdata" ) )
. organization . id ,
} ) ;
resolve ( data ) ;
} ) ;
resolve ( data )
} )
} )
} ) ;
}
ngAfterViewInit ( ) : void {
fromEvent ( this . element . nativeElement . querySelector ( ` .ant-table-body ` ) as HTMLCanvasElement , 'scroll' ) . pipe ( debounceTime ( 100 ) ) . subscribe ( async ( 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 )
await this . getStationLicenses ( )
fromEvent (
this . element . nativeElement . querySelector (
` .ant-table-body `
) as HTMLCanvasElement ,
"scroll"
)
. pipe ( debounceTime ( 100 ) )
. subscribe ( async ( 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 ) ;
await this . getStationLicenses ( ) ;
}
}
}
} ) ;
} ) ;
}
submitForm ( ) : void {
@ -98,9 +140,9 @@ export class UpdateLicenseListComponent implements OnInit {
this . validateForm . controls [ i ] . markAsDirty ( ) ;
this . validateForm . controls [ i ] . updateValueAndValidity ( ) ;
}
this . list = [ ]
this . SkipCount = '0'
this . getStationLicenses ( )
this . list = [ ] ;
this . SkipCount = "0" ;
this . getStationLicenses ( ) ;
}
resetForm ( e : MouseEvent ) : void {
e . preventDefault ( ) ;
@ -109,157 +151,194 @@ export class UpdateLicenseListComponent implements OnInit {
this . validateForm . controls [ key ] . markAsPristine ( ) ;
this . validateForm . controls [ key ] . updateValueAndValidity ( ) ;
}
this . list = [ ]
this . SkipCount = '0'
this . list = [ ] ;
this . SkipCount = "0" ;
this . validateForm . patchValue ( {
organization : JSON.parse ( sessionStorage . getItem ( 'userdata' ) ) . organization . id ,
organization : JSON.parse ( sessionStorage . getItem ( "userdata" ) ) . organization
. id ,
} ) ;
this . getStationLicenses ( )
this . getStationLicenses ( ) ;
}
tableSpin : boolean
totalCount : any //总数
tableSpin : boolean ;
totalCount : any ; //总数
//获取点击组织机构的所有加油站
SkipCount : string = '0'
MaxResultCount : string = '50'
list : any = [ ]
isLoading = false
SkipCount : string = "0" ;
MaxResultCount : string = "50" ;
list : any = [ ] ;
isLoading = false ;
async getStationLicenses() {
this . isLoading = true
this . isLoading = true ;
let params = {
StationName : this.validateForm.value.name ,
OrganizationUnitId : this.validateForm.value.organization ,
IsContainsChildren : 'true' ,
IsContainsChildren : "true" ,
SkipCount : this.SkipCount ,
MaxResultCount : this.MaxResultCount
}
this . tableSpin = true
MaxResultCount : this.MaxResultCount ,
} ;
this . tableSpin = true ;
await new Promise ( ( resolve , reject ) = > {
this . http . get ( '/api/services/app/StationValidityLicense/GetStationLicenses' , {
params : params
} ) . subscribe ( ( data : any ) = > {
this . totalCount = data . result . totalCount
let arr = [ ]
data . result . data . forEach ( element = > {
let keyArr = Object . keys ( element ) ;
let valueArr = Object . values ( element ) ;
let newElement = ( keyArr as any ) . zip ( valueArr , ( a , b ) = > { return { name : a , value : b } } ) ;
this . http
. get ( "/api/services/app/StationValidityLicense/GetStationLicenses" , {
params : params ,
} )
. subscribe ( ( data : any ) = > {
this . totalCount = data . result . totalCount ;
let arr = [ ] ;
data . result . data . forEach ( ( element ) = > {
let keyArr = Object . keys ( element ) ;
let valueArr = Object . values ( element ) ;
let newElement = ( keyArr as any ) . zip ( valueArr , ( a , b ) = > {
return { name : a , value : b } ;
} ) ;
//修改排头
let newArr = [ ]
for ( let index = 0 ; index < newElement . length ; index ++ ) {
const item = newElement [ index ] ;
let arr = [
'公司名称' , '区域名称' , '油站名称' , '营业执照' , '成品油零售经营批准证书' , '危险化学品经营许可证' , '食品经营许可证' , '烟草经营许可证' , '安全生产标准化认证证书' , '排污许可证' , '防雷检测报告' , '计量检测报告' , '职业危害因素检测报告' , '安全现状评价报告' , '安全应急预案备案回执' , '环境应急预案备案回执' , '油气回收系统年检报告' , '大气污染物合规性监测报告' , '主要负责人证书' , '安全管理人员资格证书1' , '安全管理人员资格证书2'
]
for ( let i = 0 ; i < arr . length ; i ++ ) {
const element = arr [ i ] ;
if ( item . name == element ) {
newArr [ i ] = item
newElement . splice ( index -- , 1 )
//修改排头
let newArr = [ ] ;
for ( let index = 0 ; index < newElement . length ; index ++ ) {
const item = newElement [ index ] ;
let arr = [
"公司名称" ,
"区域名称" ,
"油站名称" ,
"营业执照" ,
"成品油零售经营批准证书" ,
"危险化学品经营许可证" ,
"食品经营许可证" ,
"烟草经营许可证" ,
"安全生产标准化认证证书" ,
"排污许可证" ,
"防雷检测报告" ,
"计量检测报告" ,
"职业危害因素检测报告" ,
"安全现状评价报告" ,
"安全应急预案备案回执" ,
"环境应急预案备案回执" ,
"油气回收系统年检报告" ,
"大气污染物合规性监测报告" ,
"主要负责人证书" ,
"安全管理人员资格证书1" ,
"安全管理人员资格证书2" ,
] ;
for ( let i = 0 ; i < arr . length ; i ++ ) {
const element = arr [ i ] ;
if ( item . name == element ) {
newArr [ i ] = item ;
newElement . splice ( index -- , 1 ) ;
}
}
}
}
newArr = newArr . filter ( ( item ) = > {
return item
} )
let atLastArr = newArr . concat ( newElement ) ;
arr . push ( atLastArr )
} ) ;
newArr = newArr . filter ( ( item ) = > {
return item ;
} ) ;
let atLastArr = newArr . concat ( newElement ) ;
arr . push ( atLastArr ) ;
} ) ;
setTimeout ( ( ) = > {
let tableHeader = this . element . nativeElement . querySelector ( ` .ant-table-header ` ) . clientHeight
this . tableScrollHeight = ( document . getElementById ( 'tablebox' ) . clientHeight - tableHeader - 10 ) + 'px'
this . tableScrollWeight = ( this . list [ 0 ] . length + 1 ) * 100 + 'px'
} , 0 ) ;
setTimeout ( ( ) = > {
let tableHeader =
this . element . nativeElement . querySelector (
` .ant-table-header `
) . clientHeight ;
this . tableScrollHeight =
document . getElementById ( "tablebox" ) . clientHeight -
tableHeader -
10 +
"px" ;
this . tableScrollWeight = ( this . list [ 0 ] . length + 1 ) * 100 + "px" ;
} , 0 ) ;
this . list = this . list . concat ( arr ) ;
this . list = [ . . . this . list ]
console . log ( '证照表格' , this . list )
this . tableSpin = false
this . isLoading = false
resolve ( data )
} )
} )
this . list = this . list . concat ( arr ) ;
this . list = [ . . . this . list ] ;
console . log ( "证照表格" , this . list ) ;
this . tableSpin = false ;
this . isLoading = false ;
resolve ( data ) ;
} ) ;
} ) ;
}
//父组件调用子组件方法
public onChildMethod() {
this . getStationLicenses ( )
this . getStationLicenses ( ) ;
}
lookDetails ( i ) {
console . log ( i )
console . log ( i ) ;
let params = {
Id : i.licenseId
}
this . http . get ( '/api/services/app/StationValidityLicense/Get' , { params : params } ) . subscribe ( ( data : any ) = > {
console . log ( '证照信息' , data )
const modal = this . modal . create ( {
nzContent : DetailsUpdateCategoryComponent ,
nzViewContainerRef : this.viewContainerRef ,
nzWidth : 450 ,
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 : data.result
} ,
nzFooter : null ,
nzClosable : false ,
nzOnOk : async ( ) = > {
}
Id : i.licenseId ,
} ;
this . http
. get ( "/api/services/app/StationValidityLicense/Get" , { params : params } )
. subscribe ( ( data : any ) = > {
console . log ( "证照信息" , data ) ;
const modal = this . modal . create ( {
nzContent : DetailsUpdateCategoryComponent ,
nzViewContainerRef : this.viewContainerRef ,
nzWidth : 450 ,
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 : data.result ,
} ,
nzFooter : null ,
nzClosable : false ,
nzKeyboard :false ,
nzOnOk : async ( ) = > { } ,
} ) ;
const instance = modal . getContentComponent ( ) ;
modal . afterClose . subscribe ( ( result ) = > { } ) ;
} ) ;
const instance = modal . getContentComponent ( ) ;
modal . afterClose . subscribe ( result = > { } ) ;
} )
}
returnLastMenus() {
let userMenu = JSON . parse ( sessionStorage . getItem ( 'userdata' ) ) . menus
let userMenu = JSON . parse ( sessionStorage . getItem ( "userdata" ) ) . menus ;
for ( let index = 0 ; index < userMenu . length ; index ++ ) {
for ( let k = 0 ; k < userMenu . length ; k ++ ) {
if ( userMenu [ index ] . name == "经营类证照" ) {
if ( userMenu [ index ] . id == userMenu [ k ] . parentId ) {
this . button = true
if ( userMenu [ index ] . name == "经营类证照" ) {
if ( userMenu [ index ] . id == userMenu [ k ] . parentId ) {
this . button = true ;
}
}
}
}
return
return ;
}
exportExcel() {
// console.log(this.validateForm)
const httpOptions = {
responseType : 'blob' as 'json' ,
responseType : "blob" as "json" ,
params : {
OrganizationUnitId : this.validateForm.value.organization
}
OrganizationUnitId : this.validateForm.value.organization ,
} ,
} ;
this . http . get ( ` /api/services/app/StationValidityLicense/ExportStationLicenses ` , httpOptions ) . subscribe ( ( data : any ) = > {
// console.log('导出成功')
// 文件名中有中文 则对文件名进行转码
const link = document . createElement ( 'a' ) ;
const blob = new Blob ( [ data ] , { type : 'application/vnd.ms-excel' } ) ;
link . setAttribute ( 'href' , window . URL . createObjectURL ( blob ) ) ;
link . setAttribute ( 'download' , '经营类证照' + '.xls' ) ;
link . style . visibility = 'hidden' ;
document . body . appendChild ( link ) ;
link . click ( ) ;
document . body . removeChild ( link ) ;
this . message . create ( 'success' , ` 导出成功 ` ) ;
} , err = > {
this . message . create ( 'error' , ` 导出失败 ` ) ;
} )
this . http
. get (
` /api/services/app/StationValidityLicense/ExportStationLicenses ` ,
httpOptions
)
. subscribe (
( data : any ) = > {
// console.log('导出成功')
// 文件名中有中文 则对文件名进行转码
const link = document . createElement ( "a" ) ;
const blob = new Blob ( [ data ] , { type : "application/vnd.ms-excel" } ) ;
link . setAttribute ( "href" , window . URL . createObjectURL ( blob ) ) ;
link . setAttribute ( "download" , "经营类证照" + ".xls" ) ;
link . style . visibility = "hidden" ;
document . body . appendChild ( link ) ;
link . click ( ) ;
document . body . removeChild ( link ) ;
this . message . create ( "success" , ` 导出成功 ` ) ;
} ,
( err ) = > {
this . message . create ( "error" , ` 导出失败 ` ) ;
}
) ;
}
}