diff --git a/src/app/view/admin/components/common-table/common-table.component.html b/src/app/view/admin/components/common-table/common-table.component.html index 0b1c2f9..9aa373e 100644 --- a/src/app/view/admin/components/common-table/common-table.component.html +++ b/src/app/view/admin/components/common-table/common-table.component.html @@ -26,7 +26,14 @@ nzTooltipPlacement="top" nz-tooltip> - {{ getValue(index, headData.fieldValue) }} + + + + + + {{ getValue(index, headData.fieldValue) }} + implements OnInit, OnChanges { /** * 设置readonly data 因为后面有使用eval 为了安全 TODO */ - @Input() readonly data: Data[] - @Input() request: RequestObj - @Input() cardTitle: string + @Input() readonly data: Data[]; + @Input() request: RequestObj; + @Input() cardTitle: string; + @Input() template: { + [fieldValue: string]: { + temp: TemplateRef, + param?: { [key: string]: string } + } + }; loading: boolean = true; dataList: PageList = new PageList(); @@ -58,6 +64,23 @@ export class CommonTableComponent implements OnInit, OnChanges { getValue(index: number, fieldValue: string) { // todo: 过滤 // tslint:disable-next-line:no-eval - return eval(`this.dataList.list[${index}].` + fieldValue); + const value = eval(`this.dataList.list[${index}].` + fieldValue); + return value ? value : '暂无数据'; + } + + getContext = (fieldValue: string, index: number) => { + const valueData = this.getValue(index, fieldValue); + let context: { value: string, originValue?: string }; + if (this.template[fieldValue].param) { + context = { + value: this.template[fieldValue].param[valueData], + originValue: valueData + } + } else { + context = { + value: valueData + } + } + return context; } } diff --git a/src/app/view/admin/components/common-table/common-table.module.ts b/src/app/view/admin/components/common-table/common-table.module.ts index e546f2a..4244f58 100644 --- a/src/app/view/admin/components/common-table/common-table.module.ts +++ b/src/app/view/admin/components/common-table/common-table.module.ts @@ -4,7 +4,7 @@ import {CommonTableComponent} from './common-table.component'; import { NzCardModule, NzDividerModule, - NzIconModule, + NzIconModule, NzOutletModule, NzTableModule, NzToolTipModule, NzTypographyModule @@ -25,7 +25,8 @@ import { NzTypographyModule, NzToolTipModule, NzCardModule, - NzIconModule + NzIconModule, + NzOutletModule ] }) export class CommonTableModule { diff --git a/src/app/view/admin/components/common-table/data.ts b/src/app/view/admin/components/common-table/data.ts index 83a6c7b..421f3bb 100644 --- a/src/app/view/admin/components/common-table/data.ts +++ b/src/app/view/admin/components/common-table/data.ts @@ -1,10 +1,18 @@ +import {TemplateRef} from '@angular/core'; + export class Data { fieldName: string; fieldValue: string; show: boolean = true; primaryKey?: boolean = false; isActionColumns?: boolean = false; - action?: { + template?: { + template: TemplateRef, + keymap?: { + [value: string]: string + } + }; + action ?: { name: string, color?: string, order?: number, diff --git a/src/app/view/admin/test-common-table/test-common-table.component.html b/src/app/view/admin/test-common-table/test-common-table.component.html index 09d986b..c02b31e 100644 --- a/src/app/view/admin/test-common-table/test-common-table.component.html +++ b/src/app/view/admin/test-common-table/test-common-table.component.html @@ -1 +1,23 @@ - + + + + {{value}} + + + + {{value}} + + + + {{value}} + + + + + diff --git a/src/app/view/admin/test-common-table/test-common-table.component.ts b/src/app/view/admin/test-common-table/test-common-table.component.ts index b02b194..035aae1 100644 --- a/src/app/view/admin/test-common-table/test-common-table.component.ts +++ b/src/app/view/admin/test-common-table/test-common-table.component.ts @@ -1,4 +1,4 @@ -import {Component, OnInit} from '@angular/core'; +import {Component, OnInit, TemplateRef, ViewChild} from '@angular/core'; import {Data} from '../components/common-table/data'; import {Article} from '../../../class/Article'; import {RequestObj} from '../../../class/HttpReqAndResp'; @@ -24,6 +24,8 @@ summary: a tags: [{id: 26, name: "脚本"}, {id: 27, name: "网课"}] title: "教你动手写一个刷课脚本" updateDateFormat: "2020-05-27 00:55:05"*/ + // @ViewChild('tag') tagTemp: TemplateRef; + constructor() { this.data = [ {fieldName: '主键', fieldValue: 'id', show: false, primaryKey: true}, diff --git a/src/app/view/admin/test-common-table/test-common-table.module.ts b/src/app/view/admin/test-common-table/test-common-table.module.ts index 97f6e8e..7d9aced 100644 --- a/src/app/view/admin/test-common-table/test-common-table.module.ts +++ b/src/app/view/admin/test-common-table/test-common-table.module.ts @@ -3,6 +3,8 @@ import {CommonModule} from '@angular/common'; import {TestCommonTableComponent} from './test-common-table.component'; import {Router, RouterModule} from '@angular/router'; import {CommonTableModule} from '../components/common-table/common-table.module'; +import {NzCheckboxModule, NzTagModule} from 'ng-zorro-antd'; +import {FormsModule} from '@angular/forms'; @NgModule({ @@ -10,7 +12,10 @@ import {CommonTableModule} from '../components/common-table/common-table.module' imports: [ CommonModule, RouterModule.forChild([{path: '', component: TestCommonTableComponent}]), - CommonTableModule + CommonTableModule, + NzTagModule, + NzCheckboxModule, + FormsModule ] }) export class TestCommonTableModule {