From c271b1a8cf49364a9ba5eaea3b16e2d6855278ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Tue, 30 Jun 2020 18:12:23 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E7=BC=96=E5=86=99=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common-table/common-table.component.html | 25 +++++++++++++++++++ .../common-table/common-table.component.less | 0 .../common-table/common-table.component.ts | 19 ++++++++++++++ .../common-table/common-table.module.ts | 17 +++++++++++++ .../admin/components/common-table/data.d.ts | 15 +++++++++++ 5 files changed, 76 insertions(+) create mode 100644 src/app/view/admin/components/common-table/common-table.component.html create mode 100644 src/app/view/admin/components/common-table/common-table.component.less create mode 100644 src/app/view/admin/components/common-table/common-table.component.ts create mode 100644 src/app/view/admin/components/common-table/common-table.module.ts create mode 100644 src/app/view/admin/components/common-table/data.d.ts 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 new file mode 100644 index 0000000..f2c6b45 --- /dev/null +++ b/src/app/view/admin/components/common-table/common-table.component.html @@ -0,0 +1,25 @@ + + + + + {{headData.fieldName}} + + + + + + + + {{headData.fieldName}} + + + + {{action.name}} + + + + + + + diff --git a/src/app/view/admin/components/common-table/common-table.component.less b/src/app/view/admin/components/common-table/common-table.component.less new file mode 100644 index 0000000..e69de29 diff --git a/src/app/view/admin/components/common-table/common-table.component.ts b/src/app/view/admin/components/common-table/common-table.component.ts new file mode 100644 index 0000000..f4beb4e --- /dev/null +++ b/src/app/view/admin/components/common-table/common-table.component.ts @@ -0,0 +1,19 @@ +import {Component, Input, OnInit} from '@angular/core'; +import {Data} from './data'; + +@Component({ + selector: 'app-common-table', + templateUrl: './common-table.component.html', + styleUrls: ['./common-table.component.less'] +}) +export class CommonTableComponent implements OnInit { + + constructor() { + } + + @Input() data: Data[] + + ngOnInit(): void { + } + +} 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 new file mode 100644 index 0000000..298ce25 --- /dev/null +++ b/src/app/view/admin/components/common-table/common-table.module.ts @@ -0,0 +1,17 @@ +import {NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {CommonTableComponent} from './common-table.component'; +import {NzTableModule} from "ng-zorro-antd"; + + +@NgModule({ + declarations: [ + CommonTableComponent + ], + imports: [ + CommonModule, + NzTableModule + ] +}) +export class CommonTableModule { +} diff --git a/src/app/view/admin/components/common-table/data.d.ts b/src/app/view/admin/components/common-table/data.d.ts new file mode 100644 index 0000000..6c8ccd5 --- /dev/null +++ b/src/app/view/admin/components/common-table/data.d.ts @@ -0,0 +1,15 @@ +export class Data { + fieldName: string; + fieldValue: string; + show: boolean; + bindData?: T; + isActionColumns: boolean; + action: { + name: string, + color: string, + order: number, + fontSize: string, + click: (data: T) => void, + hover: (data: T) => void; + }[] +} From 781513d8c90acee0ae84e4fbbdcead06cfb334d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Tue, 30 Jun 2020 23:56:16 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E7=BC=96=E5=86=99=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/view/admin/admin-routing.module.ts | 4 ++ .../common-table/common-table.component.html | 39 ++++++++++++------- .../common-table/common-table.component.ts | 19 ++++++++- .../common-table/common-table.module.ts | 8 +++- .../admin/components/common-table/data.d.ts | 15 ------- .../admin/components/common-table/data.ts | 15 +++++++ 6 files changed, 67 insertions(+), 33 deletions(-) delete mode 100644 src/app/view/admin/components/common-table/data.d.ts create mode 100644 src/app/view/admin/components/common-table/data.ts diff --git a/src/app/view/admin/admin-routing.module.ts b/src/app/view/admin/admin-routing.module.ts index 3e715e6..dee7c4e 100644 --- a/src/app/view/admin/admin-routing.module.ts +++ b/src/app/view/admin/admin-routing.module.ts @@ -45,6 +45,10 @@ const routes: Routes = [ loadChildren: () => import('./admin-visitor/admin-visitor.module').then(mod => mod.AdminVisitorModule), // canActivate: [AuthGuard] }, + { + path: 'test', + loadChildren: () => import('./test-common-table/test-common-table.module').then(Mod => Mod.TestCommonTableModule) + }, { path: '**', loadChildren: () => import('./admin-dashboard/admin-dashboard.module').then(mod => mod.AdminDashboardModule), 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 f2c6b45..670afdf 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 @@ -1,24 +1,33 @@ - - {{headData.fieldName}} - + + + {{headData.fieldName}} + + - - - - {{headData.fieldName}} - - - - {{action.name}} - - - + + + + + {{t[headData.fieldValue]}} + + + + {{action.name}} + + + + + + + + diff --git a/src/app/view/admin/components/common-table/common-table.component.ts b/src/app/view/admin/components/common-table/common-table.component.ts index f4beb4e..b17761a 100644 --- a/src/app/view/admin/components/common-table/common-table.component.ts +++ b/src/app/view/admin/components/common-table/common-table.component.ts @@ -1,5 +1,7 @@ import {Component, Input, OnInit} from '@angular/core'; import {Data} from './data'; +import {PageList, RequestObj} from '../../../../class/HttpReqAndResp'; +import {HttpService} from '../../../../api/http/http.service'; @Component({ selector: 'app-common-table', @@ -8,12 +10,27 @@ import {Data} from './data'; }) export class CommonTableComponent implements OnInit { - constructor() { + constructor(private httpService: HttpService) { + } @Input() data: Data[] + @Input() request: RequestObj + + dataList: PageList = new PageList(); ngOnInit(): void { + this.httpService.Service>(this.request).subscribe(resp => { + this.dataList = resp.result; + }); + this.data.forEach(dat => { + if (!dat.action) return; + dat.action.forEach(act => { + if (!act.hover) { + act.hover = () => null; + } + }) + }) } } 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 298ce25..3e832b6 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 @@ -1,16 +1,20 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {CommonTableComponent} from './common-table.component'; -import {NzTableModule} from "ng-zorro-antd"; +import {NzDividerModule, NzTableModule} from 'ng-zorro-antd'; @NgModule({ declarations: [ CommonTableComponent ], + exports: [ + CommonTableComponent + ], imports: [ CommonModule, - NzTableModule + NzTableModule, + NzDividerModule ] }) export class CommonTableModule { diff --git a/src/app/view/admin/components/common-table/data.d.ts b/src/app/view/admin/components/common-table/data.d.ts deleted file mode 100644 index 6c8ccd5..0000000 --- a/src/app/view/admin/components/common-table/data.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -export class Data { - fieldName: string; - fieldValue: string; - show: boolean; - bindData?: T; - isActionColumns: boolean; - action: { - name: string, - color: string, - order: number, - fontSize: string, - click: (data: T) => void, - hover: (data: T) => void; - }[] -} diff --git a/src/app/view/admin/components/common-table/data.ts b/src/app/view/admin/components/common-table/data.ts new file mode 100644 index 0000000..83a6c7b --- /dev/null +++ b/src/app/view/admin/components/common-table/data.ts @@ -0,0 +1,15 @@ +export class Data { + fieldName: string; + fieldValue: string; + show: boolean = true; + primaryKey?: boolean = false; + isActionColumns?: boolean = false; + action?: { + name: string, + color?: string, + order?: number, + fontSize?: string, + click: (data: T) => void, + hover?: (data: T) => void | null; + }[] = [] +} From e3a4862e1395baeabe62c6bb7d25f6a3e2e73272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Tue, 30 Jun 2020 23:56:45 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E7=BC=96=E5=86=99=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=B5=8B=E8=AF=95=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test-common-table.component.html | 1 + .../test-common-table.component.less | 0 .../test-common-table.component.ts | 70 +++++++++++++++++++ .../test-common-table.module.ts | 17 +++++ 4 files changed, 88 insertions(+) create mode 100644 src/app/view/admin/test-common-table/test-common-table.component.html create mode 100644 src/app/view/admin/test-common-table/test-common-table.component.less create mode 100644 src/app/view/admin/test-common-table/test-common-table.component.ts create mode 100644 src/app/view/admin/test-common-table/test-common-table.module.ts 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 new file mode 100644 index 0000000..bbb6b23 --- /dev/null +++ b/src/app/view/admin/test-common-table/test-common-table.component.html @@ -0,0 +1 @@ + diff --git a/src/app/view/admin/test-common-table/test-common-table.component.less b/src/app/view/admin/test-common-table/test-common-table.component.less new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..06e8651 --- /dev/null +++ b/src/app/view/admin/test-common-table/test-common-table.component.ts @@ -0,0 +1,70 @@ +import {Component, OnInit} from '@angular/core'; +import {Data} from '../components/common-table/data'; +import {Article} from '../../../class/Article'; +import {RequestObj} from "../../../class/HttpReqAndResp"; + +@Component({ + selector: 'app-test-common-table', + templateUrl: './test-common-table.component.html', + styleUrls: ['./test-common-table.component.less'] +}) +export class TestCommonTableComponent implements OnInit { + + /* + * author: {id: 1, email: "a@celess.cn", displayName: "禾几海",…} +category: "前端" +dislikeCount: 0 +id: 1293 +likeCount: 0 +open: true +original: true +publishDateFormat: "2020-03-17 01:22:35" +readingNumber: 234 +summary: a +tags: [{id: 26, name: "脚本"}, {id: 27, name: "网课"}] +title: "教你动手写一个刷课脚本" +updateDateFormat: "2020-05-27 00:55:05"*/ + constructor() { + this.data = [ + {fieldName: '主键', fieldValue: 'id', show: false}, + {fieldName: '标题', fieldValue: 'title', show: true}, + {fieldName: '标签', fieldValue: 'category', show: true}, + {fieldName: '👎数', fieldValue: 'dislikeCount', show: true}, + {fieldName: '👍数', fieldValue: 'likeCount', show: true}, + {fieldName: '状态', fieldValue: 'open', show: true}, + {fieldName: '简介', fieldValue: 'summary', show: false}, + { + fieldName: '操作', fieldValue: '', show: true, isActionColumns: true, + action: [ + { + name: '新增', + click: (d) => console.log('新增', d) + }, { + name: '删除', + color: '#ff0000', + click: (d) => console.log('删除', d) + }, { + name: '编辑', + color: 'blue', + click: (d) => console.log('编辑', d) + }, + ] + } + ] + } + + data: Data
[]; + req: RequestObj; + + ngOnInit(): void { + this.req = { + path: '/admin/articles', + method: 'GET', + queryParam: { + page: 1, + count: 10 + } + } + } + +} 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 new file mode 100644 index 0000000..2f88ee4 --- /dev/null +++ b/src/app/view/admin/test-common-table/test-common-table.module.ts @@ -0,0 +1,17 @@ +import {NgModule} from '@angular/core'; +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"; + + +@NgModule({ + declarations: [TestCommonTableComponent], + imports: [ + CommonModule, + RouterModule.forChild([{path: '', component: TestCommonTableComponent}]), + CommonTableModule + ] +}) +export class TestCommonTableModule { +} From 718a7516af7e9c6f0584ec46f0ae4027a4a22ef9 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 00:05:00 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E7=BC=96=E5=86=99=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common-table/common-table.component.html | 8 +++++++- .../common-table/common-table.component.ts | 17 ++++++++++++----- 2 files changed, 19 insertions(+), 6 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 670afdf..22e3c51 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 @@ -1,4 +1,10 @@ - + diff --git a/src/app/view/admin/components/common-table/common-table.component.ts b/src/app/view/admin/components/common-table/common-table.component.ts index b17761a..f40273b 100644 --- a/src/app/view/admin/components/common-table/common-table.component.ts +++ b/src/app/view/admin/components/common-table/common-table.component.ts @@ -1,4 +1,4 @@ -import {Component, Input, OnInit} from '@angular/core'; +import {Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core'; import {Data} from './data'; import {PageList, RequestObj} from '../../../../class/HttpReqAndResp'; import {HttpService} from '../../../../api/http/http.service'; @@ -8,7 +8,7 @@ import {HttpService} from '../../../../api/http/http.service'; templateUrl: './common-table.component.html', styleUrls: ['./common-table.component.less'] }) -export class CommonTableComponent implements OnInit { +export class CommonTableComponent implements OnInit, OnChanges { constructor(private httpService: HttpService) { @@ -20,9 +20,7 @@ export class CommonTableComponent implements OnInit { dataList: PageList = new PageList(); ngOnInit(): void { - this.httpService.Service>(this.request).subscribe(resp => { - this.dataList = resp.result; - }); + this.getData(); this.data.forEach(dat => { if (!dat.action) return; dat.action.forEach(act => { @@ -33,4 +31,13 @@ export class CommonTableComponent implements OnInit { }) } + getData = () => { + this.httpService.Service>(this.request).subscribe(resp => { + this.dataList = resp.result; + }); + } + + ngOnChanges(changes: SimpleChanges): void { + } + } From c265ff68fcc73b89fd3f4b09e42753f3a0b1a8e3 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 00:08:13 +0800 Subject: [PATCH 05/11] =?UTF-8?q?Request=20=E8=B7=AF=E5=BE=84=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/api/http/http.service.ts | 11 ++++++----- src/app/class/HttpReqAndResp.ts | 1 + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/app/api/http/http.service.ts b/src/app/api/http/http.service.ts index a9e4e04..7d3171c 100644 --- a/src/app/api/http/http.service.ts +++ b/src/app/api/http/http.service.ts @@ -23,6 +23,7 @@ export class HttpService { } Service(request: RequestObj) { + request.url = null; // 设置默认值 request.contentType = request.contentType == null ? 'application/x-www-form-urlencoded' : request.contentType; request.header = { @@ -32,7 +33,7 @@ export class HttpService { if (token != null) { request.header.Authorization = token; } - request.path = this.checkUrl(request); + request.url = this.checkUrl(request); let observable: Observable>>; switch (request.method) { @@ -73,7 +74,7 @@ export class HttpService { } private get(request: RequestObj) { - return this.httpClient.get(request.path, + return this.httpClient.get(request.url, { headers: request.header, withCredentials: true, @@ -82,7 +83,7 @@ export class HttpService { } private post(request: RequestObj) { - return this.httpClient.post(request.path, request.data, + return this.httpClient.post(request.url, request.data, { headers: request.header, withCredentials: true, @@ -91,7 +92,7 @@ export class HttpService { } private put(request: RequestObj) { - return this.httpClient.put(request.path, request.data, + return this.httpClient.put(request.url, request.data, { headers: request.header, withCredentials: true, @@ -100,7 +101,7 @@ export class HttpService { } private delete(request: RequestObj) { - return this.httpClient.delete(request.path, + return this.httpClient.delete(request.url, { headers: request.header, withCredentials: true, diff --git a/src/app/class/HttpReqAndResp.ts b/src/app/class/HttpReqAndResp.ts index 33ba9f1..4371115 100644 --- a/src/app/class/HttpReqAndResp.ts +++ b/src/app/class/HttpReqAndResp.ts @@ -2,6 +2,7 @@ import {HttpHeaders} from '@angular/common/http'; export class RequestObj { path: string; + url?: string; // 仅在httpService里面进行使用 method: 'GET' | 'POST' | 'PUT' | 'DELETE'; data?: {}; contentType?: 'application/json' | 'application/x-www-form-urlencoded'; From 5e2dfe056b419328e24b652893fd7e81c9b321e1 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 00:18:49 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E9=80=9A=E7=94=A8=E7=BB=84=E4=BB=B6-?= =?UTF-8?q?=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/components/common-table/common-table.component.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app/view/admin/components/common-table/common-table.component.ts b/src/app/view/admin/components/common-table/common-table.component.ts index f40273b..309368f 100644 --- a/src/app/view/admin/components/common-table/common-table.component.ts +++ b/src/app/view/admin/components/common-table/common-table.component.ts @@ -32,6 +32,10 @@ export class CommonTableComponent implements OnInit, OnChanges { } getData = () => { + this.request.queryParam = { + page: this.dataList.pageNum ? this.dataList.pageNum : 1, + count: this.dataList.pageSize ? this.dataList.pageSize : 10 + } this.httpService.Service>(this.request).subscribe(resp => { this.dataList = resp.result; }); From 7a788dc559f79919d7904a9b8df0fb3b8dca6464 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 12:08:47 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E9=80=9A=E7=94=A8=E7=BB=84=E4=BB=B6-?= =?UTF-8?q?=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common-table/common-table.component.html | 87 +++++++++++-------- .../common-table/common-table.component.ts | 11 ++- .../common-table/common-table.module.ts | 15 +++- .../test-common-table.component.html | 2 +- 4 files changed, 72 insertions(+), 43 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 22e3c51..d81c2ba 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 @@ -1,40 +1,51 @@ - - - - - - {{headData.fieldName}} - - - - - - - - - - {{t[headData.fieldValue]}} - - - - {{action.name}} - - - - - - - + + + + + + + {{headData.fieldName}} + + + + + + + + + + {{t[headData.fieldValue]}} + + + + {{action.name}} + + + + + + + + + + + - - - + + + diff --git a/src/app/view/admin/components/common-table/common-table.component.ts b/src/app/view/admin/components/common-table/common-table.component.ts index 309368f..a2e6fdf 100644 --- a/src/app/view/admin/components/common-table/common-table.component.ts +++ b/src/app/view/admin/components/common-table/common-table.component.ts @@ -16,6 +16,8 @@ export class CommonTableComponent implements OnInit, OnChanges { @Input() data: Data[] @Input() request: RequestObj + @Input() title: string + loading: boolean = true; dataList: PageList = new PageList(); @@ -32,12 +34,17 @@ export class CommonTableComponent implements OnInit, OnChanges { } getData = () => { + this.loading = true; this.request.queryParam = { page: this.dataList.pageNum ? this.dataList.pageNum : 1, count: this.dataList.pageSize ? this.dataList.pageSize : 10 } - this.httpService.Service>(this.request).subscribe(resp => { - this.dataList = resp.result; + this.httpService.Service>(this.request).subscribe({ + next: resp => { + this.dataList = resp.result; + this.loading = false; + }, + error: err => this.loading = false }); } 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 3e832b6..e546f2a 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 @@ -1,7 +1,14 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {CommonTableComponent} from './common-table.component'; -import {NzDividerModule, NzTableModule} from 'ng-zorro-antd'; +import { + NzCardModule, + NzDividerModule, + NzIconModule, + NzTableModule, + NzToolTipModule, + NzTypographyModule +} from 'ng-zorro-antd'; @NgModule({ @@ -14,7 +21,11 @@ import {NzDividerModule, NzTableModule} from 'ng-zorro-antd'; imports: [ CommonModule, NzTableModule, - NzDividerModule + NzDividerModule, + NzTypographyModule, + NzToolTipModule, + NzCardModule, + NzIconModule ] }) export class CommonTableModule { 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 bbb6b23..51b3df4 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 @@ - + From 014a9eebe4ebd5f456e0025a1fdf719091ee6b89 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 12:40:45 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E9=80=9A=E7=94=A8=E7=BB=84=E4=BB=B6-?= =?UTF-8?q?=E5=A4=9A=E7=BA=A7=E5=B1=9E=E6=80=A7=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common-table/common-table.component.html | 12 ++++++------ .../common-table/common-table.component.ts | 13 +++++++++++-- .../test-common-table.component.html | 2 +- .../test-common-table.component.ts | 12 +++++++++--- .../test-common-table/test-common-table.module.ts | 2 +- 5 files changed, 28 insertions(+), 13 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 d81c2ba..0b1c2f9 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 @@ -1,4 +1,4 @@ - + - + - {{t[headData.fieldValue]}} + {{ getValue(index, headData.fieldValue) }} - + diff --git a/src/app/view/admin/components/common-table/common-table.component.ts b/src/app/view/admin/components/common-table/common-table.component.ts index a2e6fdf..c7dd62e 100644 --- a/src/app/view/admin/components/common-table/common-table.component.ts +++ b/src/app/view/admin/components/common-table/common-table.component.ts @@ -14,9 +14,12 @@ export class CommonTableComponent implements OnInit, OnChanges { } - @Input() data: Data[] + /** + * 设置readonly data 因为后面有使用eval 为了安全 TODO + */ + @Input() readonly data: Data[] @Input() request: RequestObj - @Input() title: string + @Input() cardTitle: string loading: boolean = true; dataList: PageList = new PageList(); @@ -51,4 +54,10 @@ export class CommonTableComponent implements OnInit, OnChanges { ngOnChanges(changes: SimpleChanges): void { } + + getValue(index: number, fieldValue: string) { + // todo: 过滤 + // tslint:disable-next-line:no-eval + return eval(`this.dataList.list[${index}].` + fieldValue); + } } 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 51b3df4..09d986b 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 @@ - + 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 06e8651..b02b194 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,7 +1,7 @@ import {Component, OnInit} from '@angular/core'; import {Data} from '../components/common-table/data'; import {Article} from '../../../class/Article'; -import {RequestObj} from "../../../class/HttpReqAndResp"; +import {RequestObj} from '../../../class/HttpReqAndResp'; @Component({ selector: 'app-test-common-table', @@ -26,13 +26,19 @@ title: "教你动手写一个刷课脚本" updateDateFormat: "2020-05-27 00:55:05"*/ constructor() { this.data = [ - {fieldName: '主键', fieldValue: 'id', show: false}, + {fieldName: '主键', fieldValue: 'id', show: false, primaryKey: true}, {fieldName: '标题', fieldValue: 'title', show: true}, - {fieldName: '标签', fieldValue: 'category', show: true}, + {fieldName: '发布日期', fieldValue: 'publishDateFormat', show: true}, + {fieldName: '更新日期', fieldValue: 'updateDateFormat', show: true}, + {fieldName: '文章类型', fieldValue: 'original', show: true}, + {fieldName: '阅读量', fieldValue: 'readingNumber', show: true}, + {fieldName: '分类', fieldValue: 'category', show: true}, {fieldName: '👎数', fieldValue: 'dislikeCount', show: true}, {fieldName: '👍数', fieldValue: 'likeCount', show: true}, {fieldName: '状态', fieldValue: 'open', show: true}, {fieldName: '简介', fieldValue: 'summary', show: false}, + {fieldName: '作者', fieldValue: 'author.displayName', show: true}, + {fieldName: '标签数', fieldValue: 'tags.length', show: true}, { fieldName: '操作', fieldValue: '', show: true, isActionColumns: true, action: [ 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 2f88ee4..97f6e8e 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 @@ -2,7 +2,7 @@ import {NgModule} from '@angular/core'; 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 {CommonTableModule} from '../components/common-table/common-table.module'; @NgModule({ 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 09/11] =?UTF-8?q?=E9=80=9A=E7=94=A8=E7=BB=84=E4=BB=B6-Temp?= =?UTF-8?q?lateRef=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 { From 6bd15f3cc08905cc8b851e1d82f59e12ca60e758 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 14:11:17 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E9=80=9A=E7=94=A8=E7=BB=84=E4=BB=B6-?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=86=E9=A1=B5=E4=BF=A1=E6=81=AF=E6=94=B9?= =?UTF-8?q?=E5=8F=98=E9=80=9A=E7=9F=A5=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common-table/common-table.component.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/app/view/admin/components/common-table/common-table.component.ts b/src/app/view/admin/components/common-table/common-table.component.ts index 5ea5047..973da13 100644 --- a/src/app/view/admin/components/common-table/common-table.component.ts +++ b/src/app/view/admin/components/common-table/common-table.component.ts @@ -1,4 +1,4 @@ -import {Component, Input, OnChanges, OnInit, SimpleChanges, TemplateRef} from '@angular/core'; +import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, TemplateRef} from '@angular/core'; import {Data} from './data'; import {PageList, RequestObj} from '../../../../class/HttpReqAndResp'; import {HttpService} from '../../../../api/http/http.service'; @@ -15,7 +15,7 @@ export class CommonTableComponent implements OnInit, OnChanges { } /** - * 设置readonly data 因为后面有使用eval 为了安全 TODO + * 设置readonly data 因为后面有使用eval 为了安全 */ @Input() readonly data: Data[]; @Input() request: RequestObj; @@ -26,6 +26,7 @@ export class CommonTableComponent implements OnInit, OnChanges { param?: { [key: string]: string } } }; + @Output() pageInfo = new EventEmitter<{ page: number, pageSize: number }>(); loading: boolean = true; dataList: PageList = new PageList(); @@ -44,10 +45,13 @@ export class CommonTableComponent implements OnInit, OnChanges { getData = () => { this.loading = true; + const pageValue = this.dataList.pageNum ? this.dataList.pageNum : 1; + const countValue = this.dataList.pageSize ? this.dataList.pageSize : 10 this.request.queryParam = { - page: this.dataList.pageNum ? this.dataList.pageNum : 1, - count: this.dataList.pageSize ? this.dataList.pageSize : 10 + page: pageValue, + count: countValue } + this.pageInfo.emit({page: pageValue, pageSize: countValue}) this.httpService.Service>(this.request).subscribe({ next: resp => { this.dataList = resp.result; @@ -62,9 +66,11 @@ export class CommonTableComponent implements OnInit, OnChanges { getValue(index: number, fieldValue: string) { - // todo: 过滤 + let str = `this.dataList.list[${index}].` + fieldValue; + const regexp = /<|>|=|onload|$|{|}|《/ + str = str.replace(regexp, ''); // tslint:disable-next-line:no-eval - const value = eval(`this.dataList.list[${index}].` + fieldValue); + const value = eval(str); return value ? value : '暂无数据'; } From 845752b4322073fdc5b1b7eac0b1cdc8034f7c8a 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 14:17:54 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E9=80=9A=E7=94=A8=E7=BB=84=E4=BB=B6-getV?= =?UTF-8?q?alue=E5=87=BD=E6=95=B0=E7=9A=840=E5=80=BCbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/components/common-table/common-table.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/view/admin/components/common-table/common-table.component.ts b/src/app/view/admin/components/common-table/common-table.component.ts index 973da13..1ca9836 100644 --- a/src/app/view/admin/components/common-table/common-table.component.ts +++ b/src/app/view/admin/components/common-table/common-table.component.ts @@ -71,7 +71,7 @@ export class CommonTableComponent implements OnInit, OnChanges { str = str.replace(regexp, ''); // tslint:disable-next-line:no-eval const value = eval(str); - return value ? value : '暂无数据'; + return value !== undefined ? value : '暂无数据'; } getContext = (fieldValue: string, index: number) => {