import { Component , Injector , OnInit } from '@angular/core' ; import { NzMessageService } from 'ng-zorro-antd' ; import { getRule , saveRule , removeRule } from '../_mock/rule.service' ; import { AppComponentBase } from '@shared/component-base' ; @ Component ( { templateUrl : './tenants.component.html' } ) export class TenantsComponent extends AppComponentBase implements OnInit { q : any = { pi : 1 , ps : 10 , sorter : '' , status : - 1 , statusList : [ ] } ; data : any [ ] = [ ] ; loading = false ; selectedRows : any [ ] = [ ] ; curRows : any [ ] = [ ] ; totalCallNo = 0 ; allChecked = false ; indeterminate = false ; status = [ { text : '关闭' , value : false , type : 'default' } , { text : '运行中' , value : false , type : 'processing' } , { text : '已上线' , value : false , type : 'success' } , { text : '异常' , value : false , type : 'error' } ] ; sortMap : any = { } ; expandForm = false ; modalVisible = false ; description = '' ; constructor ( injector , public msg ) { super ( injector ) ; } ngOnInit ( ) { this . getData ( ) ; } getData ( ) { this . pageChange ( 1 ) . then ( ( ) => { this . q . statusList = this . status . map ( ( i , index ) => i . value ? index : - 1 ) . filter ( w => w !== - 1 ) ; if ( this . q . status && this . q . status > - 1 ) this . q . statusList . push ( this . q . status ) ; console . log ( this . q ) ; this . data = getRule ( this . q ) . map ( i => { const statusItem = this . status [ i . status ] ; i . statusText = statusItem . text ; i . statusType = statusItem . type ; return i ; } ) ; } ) ; } add ( ) { this . modalVisible = true ; this . description = '' ; } save ( ) { this . loading = true ; saveRule ( this . description ) ; this . getData ( ) ; setTimeout ( ( ) => this . modalVisible = false , 500 ) ; } remove ( ) { this . selectedRows . forEach ( i => removeRule ( i . no ) ) ; this . getData ( ) ; this . clear ( ) ; } approval ( ) { this . msg . success ( `审批了 ${ this . selectedRows . length } 笔` ) ; } clear ( ) { this . selectedRows = [ ] ; this . totalCallNo = 0 ; this . data . forEach ( i => i . checked = false ) ; this . refreshStatus ( ) ; } checkAll ( value ) { this . curRows . forEach ( i => { if ( ! i . disabled ) i . checked = value ; } ) ; this . refreshStatus ( ) ; } refreshStatus ( ) { const allChecked = this . curRows . every ( value => value . disabled || value . checked ) ; const allUnChecked = this . curRows . every ( value => value . disabled || ! value . checked ) ; this . allChecked = allChecked ; this . indeterminate = ( ! allChecked ) && ( ! allUnChecked ) ; this . selectedRows = this . data . filter ( value => value . checked ) ; this . totalCallNo = this . selectedRows . reduce ( ( total , cv ) => total + cv . callNo , 0 ) ; } sort ( field , value ) { this . sortMap = { } ; this . sortMap [ field ] = value ; this . q . sorter = value ? `${ field }_${ value }` : '' ; this . getData ( ) ; } dataChange ( res ) { this . curRows = res ; this . refreshStatus ( ) ; } pageChange ( pi ) { this . q . pi = pi ; this . loading = true ; return new Promise ( ( resolve ) => { setTimeout ( ( ) => { this . loading = false ; resolve ( ) ; } , 500 ) ; } ) ; } reset ( ls ) { for ( const item of ls ) item . value = false ; this . getData ( ) ; } }