import {ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core'; @Component({ selector: 'app-demo-list-show', template: `
{{data.d.No}} {{data.d.index}} {{data.d.name}} {{data.d.desc}} 操作
`, styles: [` `] }) export class DemoListShowComponent implements OnInit { @ViewChild('dcListShow') dcListShow; @ViewChild('tableNew') tableNew; itemWidth = 100; // number 每个元素的宽度,默认80 canDelete = true; // boolean 是否可删除, 默认false idKey = 'id'; showKey = 'name'; text; listData = [ { name: 'namenamenamenamename1', id: '1' }, ]; tableOptions = { // maxHeight: '200px', // minHeight: '100px', checkbox: true, // loading: true, multiple: true, showIndex: true }; headerConfig = [ { field: 'No', // 显示字段 title: '编号', // 表头显示 canSort: true, // 是否可排序 width: '100px', // 单元格宽度 filter: { // 过滤配置 type: 'text', // 过滤类型 offset: 'right', // 过滤框是否右偏移 fn: (filter) => { // 过滤回调方法 console.log(filter, 'No'); } }, hideTitle: true, /*alignTd: 'center', alignTh: 'center',*/ }, { field: 'index', // 显示字段 title: '序号', // 表头显示 width: '100px', // 单元格宽度 hideTitle: true, flex: '1', // 单元格自适应宽度优先级, filter: { // 过滤配置 type: 'text', // 过滤类型 offset: 'left', // 过滤框是否左偏移 fn: (filter) => { // 过滤回调方法 console.log(filter, 'index'); } }, /*alignTd: 'center', alignTh: 'center',*/ }, { field: 'name', // 显示字段 title: '名称名称名称名称名称名称名称名称', // 表头显示 canSort: true, // 是否可排序 width: '150px', // 单元格宽度 isGroup: true, hideHeaderGroup: false, filter: { // 过滤配置 type: 'checkList', optionList: [ { checked: true, name: '状态1' }, { checked: true, name: '状态2' }, { checked: true, name: '状态3' }, { checked: true, name: '状态4' }, { checked: true, name: '状态5' } ], fn: (filter) => { console.log(filter, 'name'); } }, /*alignTd: 'center', alignTh: 'center',*/ }, { field: 'desc', // 显示字段 title: '描述', // 表头显示 width: '500px', // 单元格宽度 filter: { type: 'date', offset: 'left', option: { minDate: new Date('2015-12-31'), // Minimal selectable date maxDate: new Date(Date.now()), // Maximal selectable date width: '180px' // 单日期必须写这个值 }, fn: (filter) => { console.log(filter, 'desc', 'datepicker'); } } }, { field: 'action', // 显示字段 title: '操作', // 表头显示 width: '150px', // 单元格宽度 filter: { type: 'date', offset: 'left', isCross: true, // 是否有开始结束选项,默认为单日期选择 option: { minDate: new Date('2015-12-31'), // Minimal selectable date maxDate: new Date(Date.now()), // Maximal selectable date }, fn: (filter) => { console.log(filter, 'action', 'datepicker'); } } } ]; tableData = []; constructor(private cdr: ChangeDetectorRef) { } ngOnInit() { this.tableData = [ { id: '1', name: 'namenamenamenamename1', desc: '描述1', checked: true }, { id: '2', name: 'name2', desc: '描述2' }, { id: '3', name: 'name3', desc: '描述3', }, { id: '4', name: 'name4', desc: '描述4' }, { id: '5', name: 'name5', desc: '描述4' }, { id: '6', name: 'name6', desc: '描述4' }, { id: '7', name: 'name7', desc: '描述4' } ]; } removeList() { this.dcListShow.removeItem({ id: '1' }); } getData() { console.log(this.dcListShow.getData()); } removeItemEmit(ev: any) { for (let i = 0; i < this.tableData.length; i++) { if (this.tableData[i].id == ev.id) { this.tableNew.checkedDataByIndex(i, false); } } } checkEvent(ev: any) { console.log('demo checkEvent', ev); if (ev.type === 'single' && ev.data) { if (ev.data.checkModel && ev.data.checkModel.checked) { this.dcListShow.addItem({ id: ev.data.id, name: ev.data.name }); } else { this.dcListShow.removeItem({ id: ev.data.id, name: ev.data.name }); } } else if (ev.type === 'all' && ev.data) { const temp = []; if (ev.data[0].checkModel && ev.data[0].checkModel.checked) { for (let i = 0; i < ev.data.length; i++) { temp.push({ id: ev.data[i].id, name: ev.data[i].name }); } // item自行去重 this.dcListShow.getData(); this.dcListShow.addItems(temp); } else { const selectItems = this.dcListShow.getData(); this.dcListShow.removeItems(selectItems); } } } }