src/app/crm/lead/lead.component.ts
| selector | crm-lead |
| styleUrls | ./lead.component.scss |
| templateUrl | ./lead.component.html |
Properties |
Methods |
constructor(service: LeadService, dialog: MatDialog)
|
|||||||||
|
Defined in src/app/crm/lead/lead.component.ts:35
|
|||||||||
|
Parameters :
|
| isAllSelected |
isAllSelected()
|
|
Defined in src/app/crm/lead/lead.component.ts:46
|
|
Returns :
boolean
|
| masterToggle |
masterToggle()
|
|
Defined in src/app/crm/lead/lead.component.ts:52
|
|
Returns :
void
|
| ngOnInit |
ngOnInit()
|
|
Defined in src/app/crm/lead/lead.component.ts:39
|
|
Returns :
void
|
| onDeleteTriggered |
onDeleteTriggered()
|
|
Defined in src/app/crm/lead/lead.component.ts:84
|
|
Returns :
void
|
| onEditorTriggered | ||||
onEditorTriggered(item)
|
||||
|
Defined in src/app/crm/lead/lead.component.ts:72
|
||||
|
Parameters :
Returns :
void
|
| onNew | ||||
onNew(event)
|
||||
|
Defined in src/app/crm/lead/lead.component.ts:62
|
||||
|
Parameters :
Returns :
void
|
| rowSelection | ||||||
rowSelection(row, event)
|
||||||
|
Defined in src/app/crm/lead/lead.component.ts:58
|
||||||
|
Parameters :
Returns :
void
|
| dataSource |
Type : any
|
Default value : new MatTableDataSource([])
|
|
Defined in src/app/crm/lead/lead.component.ts:31
|
| displayedColumns |
Type : string[]
|
Default value : [
'select',
'name',
'company',
'tel',
'phone',
'status_mapped',
'lastest_revisit_log',
'real_revisit_at',
'revisit_remind_at',
'star'
]
|
|
Defined in src/app/crm/lead/lead.component.ts:18
|
| paginator |
Type : MatPaginator
|
Decorators :
@ViewChild(MatPaginator, {static: false})
|
|
Defined in src/app/crm/lead/lead.component.ts:34
|
| selection |
Default value : new SelectionModel(true, [])
|
|
Defined in src/app/crm/lead/lead.component.ts:32
|
| sort |
Type : MatSort
|
Decorators :
@ViewChild(MatSort, {static: false})
|
|
Defined in src/app/crm/lead/lead.component.ts:35
|
import { Component, OnInit, ViewChild } from '@angular/core';
import {
MatDialog,
MatPaginator,
MatSort,
MatTableDataSource
} from '@angular/material';
import { SelectionModel } from '@angular/cdk/collections';
import { NewComponent } from './new/new.component';
import { LeadService } from './lead.service';
@Component({
selector: 'crm-lead',
templateUrl: './lead.component.html',
styleUrls: ['./lead.component.scss']
})
export class LeadComponent implements OnInit {
displayedColumns: string[] = [
'select',
'name',
'company',
'tel',
'phone',
'status_mapped',
'lastest_revisit_log',
'real_revisit_at',
'revisit_remind_at',
'star'
];
dataSource: any = new MatTableDataSource([]);
selection = new SelectionModel(true, []);
@ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;
@ViewChild(MatSort, { static: false }) sort: MatSort;
constructor(private service: LeadService, private dialog: MatDialog) { }
ngOnInit() {
this.service.getList().subscribe(res => {
this.dataSource = new MatTableDataSource(res);
this.dataSource.paginator = this.paginator;
});
}
isAllSelected() {
const numSelected = this.selection.selected.length;
const numRows = this.dataSource.data.length;
return numSelected === numRows;
}
masterToggle() {
this.isAllSelected()
? this.selection.clear()
: this.dataSource.data.forEach(row => this.selection.select(row));
}
rowSelection(row, event) {
this.selection.toggle(row);
}
onNew(event) {
let dialogRef = this.dialog.open(NewComponent, {
width: '500px'
});
dialogRef.afterClosed().subscribe(result => {
console.log('The dialog was closed');
});
}
onEditorTriggered(item) {
console.log(item);
let dialogRef = this.dialog.open(NewComponent, {
width: '500px',
data: item
});
dialogRef.afterClosed().subscribe(result => {
console.log('The dialog was closed');
});
}
onDeleteTriggered() {
console.log(this.selection.selected);
// this.service.delete(this.selection.selected);
}
}
<button mat-raised-button (click)="onNew($event)">
<mat-icon>add</mat-icon> 添加
</button>
<button
mat-raised-button
(click)="onDeleteTriggered()"
[disabled]="!selection.hasValue()"
>
<mat-icon>delete</mat-icon> 删除
</button>
<div class="mat-elevation-z4">
<div class="table-container">
<table class="table-hover" mat-table [dataSource]="dataSource">
<ng-container matColumnDef="select">
<th mat-header-cell *matHeaderCellDef>
<mat-checkbox
(change)="$event ? masterToggle() : null"
[checked]="selection.hasValue() && isAllSelected()"
[indeterminate]="selection.hasValue() && !isAllSelected()"
>
</mat-checkbox>
</th>
<td mat-cell *matCellDef="let row">
<mat-checkbox
(click)="$event.stopPropagation()"
(change)="$event ? selection.toggle(row) : null"
[checked]="selection.isSelected(row)"
>
</mat-checkbox>
</td>
</ng-container>
<ng-container matColumnDef="name" sticky>
<th mat-header-cell *matHeaderCellDef>姓名</th>
<td mat-cell *matCellDef="let element">{{ element.name }}</td>
</ng-container>
<ng-container matColumnDef="company">
<th mat-header-cell *matHeaderCellDef>公司名称</th>
<td mat-cell *matCellDef="let element">{{ element.company }}</td>
</ng-container>
<ng-container matColumnDef="tel">
<th mat-header-cell *matHeaderCellDef>电话</th>
<td mat-cell *matCellDef="let element">{{ element.tel }}</td>
</ng-container>
<ng-container matColumnDef="phone">
<th mat-header-cell *matHeaderCellDef>手机</th>
<td mat-cell *matCellDef="let element">{{ element.phone }}</td>
</ng-container>
<ng-container matColumnDef="status_mapped">
<th mat-header-cell *matHeaderCellDef>跟进状态</th>
<td mat-cell *matCellDef="let element">{{ element.status_mapped }}</td>
</ng-container>
<ng-container matColumnDef="lastest_revisit_log">
<th mat-header-cell *matHeaderCellDef>最新跟进记录</th>
<td mat-cell *matCellDef="let element">
{{ element.lastest_revisit_log }}
</td>
</ng-container>
<ng-container matColumnDef="real_revisit_at">
<th mat-header-cell *matHeaderCellDef>实际跟进时间</th>
<td mat-cell *matCellDef="let element">
{{ element.real_revisit_at }}
</td>
</ng-container>
<ng-container matColumnDef="revisit_remind_at">
<th mat-header-cell *matHeaderCellDef>下次跟进时间</th>
<td mat-cell *matCellDef="let element">
{{ element.revisit_remind_at }}
</td>
</ng-container>
<ng-container matColumnDef="star" stickyEnd>
<th mat-header-cell *matHeaderCellDef>操作</th>
<td
mat-cell
*matCellDef="let element"
(click)="onEditorTriggered(element); $event.stopPropagation()"
>
编辑
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr
mat-row
*matRowDef="let row; columns: displayedColumns"
(click)="rowSelection(row)"
></tr>
</table>
</div>
<mat-paginator [pageSize]="10"></mat-paginator>
</div>
./lead.component.scss
:host {
display: block;
margin: 24px;
}
button {
margin: 0 16px 16px 0;
}
.table-container {
position: relative;
overflow: auto;
}
table {
width: 100%;
}