From efa1f0bee2d7c54b42bf341e03be0a2b495b894f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Fri, 3 Jul 2020 12:57:51 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=94=A8=E7=BB=84=E4=BB=B6-=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E4=B8=8A=E4=B8=8B=E6=96=87=E5=A2=9E=E5=8A=A0data?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=EF=BC=8C=E5=8F=AF=E7=BC=96=E8=BE=91=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=A2=9E=E5=8A=A0=E5=BC=82=E6=AD=A5=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common-table/common-table.component.ts | 8 +-- .../editable-tag/editable-tag.component.ts | 51 ++++++++++++++----- 2 files changed, 43 insertions(+), 16 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 b9c63bd..0350119 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 @@ -85,15 +85,17 @@ export class CommonTableComponent implements OnInit, OnChanges { getContext = (fieldValue: string, index: number) => { const valueData = this.getValue(index, fieldValue); - let context: { value: string, originValue?: string }; + let context: { value: string, originValue?: string, data: T }; if (this.template[fieldValue].param) { context = { value: this.template[fieldValue].param[valueData], - originValue: valueData + originValue: valueData, + data: this.dataList.list[index] } } else { context = { - value: valueData + value: valueData, + data: this.dataList.list[index] } } return context; diff --git a/src/app/view/admin/components/editable-tag/editable-tag.component.ts b/src/app/view/admin/components/editable-tag/editable-tag.component.ts index 489ab1d..ee8174c 100644 --- a/src/app/view/admin/components/editable-tag/editable-tag.component.ts +++ b/src/app/view/admin/components/editable-tag/editable-tag.component.ts @@ -1,9 +1,19 @@ -import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core'; +import { + Component, + ElementRef, + EventEmitter, + Input, + OnChanges, + OnInit, + Output, + SimpleChanges, + ViewChild +} from '@angular/core'; @Component({ selector: 'editable-tag', template: ` - {{text}} @@ -23,14 +33,14 @@ import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} f style="cursor: pointer;margin-right: 8px;" (click)="showInput(false)"> - `, - styles: [`.editable-tag { - background: rgb(255, 255, 255); - }`] + ` }) -export class EditableTagComponent implements OnInit { +export class EditableTagComponent implements OnInit, OnChanges { + + private static instanceArray: EditableTagComponent[] = [] constructor() { + EditableTagComponent.instanceArray.push(this); } inputVisible = false; @@ -42,7 +52,9 @@ export class EditableTagComponent implements OnInit { @Input() showEditIcon: boolean; @Input() showBorder: boolean; @Input() text: string; + @Input() key: any; + private tmpKey: any; private doubleClickInfo = { date: null, }; @@ -56,6 +68,13 @@ export class EditableTagComponent implements OnInit { } } + ngOnChanges(changes: SimpleChanges): void { + if (changes.key && !changes.key.isFirstChange()) { + this.key = changes.key.currentValue; + this.getFocus(this.tmpKey); + } + } + showInput(doubleClick: boolean): void { this.inputValue = this.text; if (doubleClick) { @@ -65,19 +84,25 @@ export class EditableTagComponent implements OnInit { } if (new Date().getTime() - this.doubleClickInfo.date < 200) { this.inputVisible = true; - setTimeout(() => { - this.inputElement?.nativeElement.focus(); - }, 10); + setTimeout(() => this.inputElement?.nativeElement.focus(), 10); } this.doubleClickInfo.date = new Date().getTime(); } else { this.inputVisible = true; - setTimeout(() => { - this.inputElement?.nativeElement.focus(); - }, 10); + setTimeout(() => this.inputElement?.nativeElement.focus(), 10); } } + getFocus(key: any) { + this.tmpKey = key; + EditableTagComponent.instanceArray.forEach(tag => { + if (tag.key === this.tmpKey) { + tag.showInput(false); + } + }) + } + + handleInputConfirm(): void { this.valueChange.emit({ value: this.inputValue,