bixi
Version:
企业级中后台前端解决方案
307 lines (295 loc) • 6.7 kB
text/typescript
import { Component } from '@angular/core';
import { EColType, EProgressStatus, EStatus, ICols, IRows } from '@bixi/core/table';
import { BehaviorSubject } from 'rxjs';
({
selector: 'apps-idea-table',
templateUrl: './table.component.html',
styleUrls: ['./table.component.less']
})
export class IdeaTableComponent {
time = (new Date()).getTime() / 1000;
radio = 1000;
loading = false;
rows: IRows = [{
name: 'loooooooooooooooooooongtext',
created_at: 1592997888072,
blog: 'http://baidu.com',
status: 0,
progress: 0.3,
rate: 3,
bbb: 2
}, {
name: '222',
created_at: 1592997888072,
blog: 'http://sina.com',
progress: 0.7,
status: 1,
bbb: 2
}, {
name: '333',
created_at: (new Date()).getTime(),
blog: 'http://datagrand.com',
progress: 1,
status: 2,
rate: 5,
online: true,
bbb: 2
}, {
name: '333',
created_at: (new Date()).getTime(),
blog: 'http://datagrand.com',
progress: 0.6,
status: 'success',
rate: 5,
online: true,
bbb: 2
}];
cols: ICols = [
{
name: 'text_01',
key: 'name',
keyAlias: 'name_01',
fixed: 'left',
width: '100px',
ellipsis: true,
tooltip: true
},
{
name: 'text_02',
key: 'name',
keyAlias: 'name_02',
fixed: 'left',
width: '100px',
ellipsis: true,
tooltip: true
},
{
name: 'text_03',
key: 'name',
keyAlias: 'name_03',
fixed: 'left',
width: '100px',
ellipsis: true,
tooltip: true
},
{
name: 'text_04',
key: 'name',
keyAlias: 'name_04',
fixed: 'left',
width: '100px',
ellipsis: true,
tooltip: true
},
{
name: 'time',
key: 'created_at',
type: EColType.time,
fixed: 'left',
width: '100px',
value(val) {
return val * 1;
},
sort: {
key: 'created_at'
}
},
{
name: 'status',
key: 'status',
type: EColType.status,
tooltip(val) {
return val;
},
options: [{
value: 0,
text: '上线',
type: EStatus.success
}, {
value: 1,
text: 'token测试_style',
type: 'typeA'
}, {
value: 2,
text: 'token测试_class',
type: 'typeB'
}, {
value: 3,
type: EStatus.success
}],
filter: {
key: 'status',
multiple: true,
options: this.getStatusOptions()
},
sort: {
key: 'status_sort'
}
},
{
name: 'link',
key: 'blog',
type: EColType.link,
href: false,
tooltip: true,
ellipsis: true,
nameRef: 'headerRef'
},
{
name: 'progress',
key: 'progress',
type: EColType.progress,
tooltip(val: number) {
return `${(val * 100)}%`;
},
status: (val) => {
if (val === 0) {
return EProgressStatus.starting;
}
if (val === 0.3) {
return EProgressStatus.stop;
}
if (val === 1) {
return EProgressStatus.success;
}
if (val === 0.6) {
return EProgressStatus.failed;
}
return EProgressStatus.processing;
}
},
{
name: 'Template',
key: 'bbb',
type: EColType.template,
ref: 'ref'
},
{
name: 'operations',
key: 'ope',
fixed: 'right',
width: '240px',
type: EColType.operations,
operations() {
return [
{
name: `查看`,
disabled: true,
visible: true,
onClick: (row, index) => {
console.log(row, index);
}
},
{
name: `编辑`,
// tslint:disable-next-line: no-any
tooltip(row: any) {
return `${row.name}_tooltip`;
},
disabled(_row, index) {
return index === 1;
},
onClick(row, index) {
console.log('xoxo', row, index);
},
children: []
},
{
name: `删除`,
visible: true,
children: []
},
// 允许是一个组,会以 '...' 的图标显示
{
name: '',
children: [
{
name: '删除',
disabled: false,
visible: true,
// tslint:disable-next-line: no-any
tooltip(row: any) {
return row.name;
}
},
{
name: '下线',
children: [
{
name: '立即上线',
// tslint:disable-next-line: no-any
tooltip(row: any) {
return row.name;
},
onClick: (row, index) => {
console.log(row, index);
}
},
{
name: '10小时候上线',
onClick: (row, index) => {
console.log(row, index);
}
}
]
}
]
}
];
}
}
];
queryParams = {
status: '1',
status_sort: 'descend'
};
// tslint:disable-next-line:no-any
onQueryParamsChange(val: any) {
console.log('onQueryParamsChange', val);
console.log(val);
}
// tslint:disable-next-line:no-any
onSearch(value: any) {
console.log('onSearch', value);
// this.loading = true;
// setTimeout(() => {
// this.rows = Math.random() > 0.5 ? [] : [{
// name: 'loooooooooooooooooooongtext',
// created_at: 1592997888072,
// blog: 'http://baidu.com',
// status: 0,
// progress: 0.34,
// rate: 3,
// bbb: 2
// }, {
// name: '222',
// created_at: 1592997888072,
// blog: 'http://sina.com',
// progress: 0.76,
// status: 1,
// bbb: 2
// }, {
// name: '333',
// created_at: (new Date()).getTime(),
// blog: 'http://datagrand.com',
// progress: 1,
// status: 2,
// rate: 5,
// bbb: 2
// }];
// this.loading = false;
// }, 1000);
}
getStatusOptions() {
return new BehaviorSubject([
{
text: '已上线',
value: '1'
},
{
text: '等待上线',
value: '2'
}
]);
}
}