From 8cc8f8e8d51eee16c77ae5100efa742a01e46f1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Wed, 1 Jul 2020 13:54:32 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=94=A8=E7=BB=84=E4=BB=B6-TemplateRe?= =?UTF-8?q?f=E5=BA=94=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common-table/common-table.component.html | 9 ++++- .../common-table/common-table.component.ts | 33 ++++++++++++++++--- .../common-table/common-table.module.ts | 5 +-- .../admin/components/common-table/data.ts | 10 +++++- .../test-common-table.component.html | 24 +++++++++++++- .../test-common-table.component.ts | 4 ++- .../test-common-table.module.ts | 7 +++- 7 files changed, 80 insertions(+), 12 deletions(-) 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 {