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
new file mode 100644
index 0000000..89d185f
--- /dev/null
+++ b/src/app/view/admin/components/editable-tag/editable-tag.component.ts
@@ -0,0 +1,71 @@
+import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';
+
+@Component({
+ selector: 'editable-tag',
+ template: `
+
+
+
+
+
+ `,
+ styles: [`.editable-tag {
+ background: rgb(255, 255, 255);
+ border-style: none;
+ }`]
+})
+export class EditableTagComponent implements OnInit {
+
+ constructor() {
+ }
+
+ inputVisible = false;
+ inputValue = '';
+ @ViewChild('inputElement', {static: false}) inputElement?: ElementRef;
+
+ @Output() valueChange = new EventEmitter();
+ @Input() color: string;
+ private doubleClickInfo = {
+ date: null,
+ };
+
+ ngOnInit(): void {
+ }
+
+ showInput(doubleClick: boolean): void {
+ if (doubleClick) {
+ if (!this.doubleClickInfo.date) {
+ this.doubleClickInfo.date = new Date().getTime();
+ return
+ }
+ if (new Date().getTime() - this.doubleClickInfo.date < 200) {
+ this.inputVisible = true;
+ setTimeout(() => {
+ this.inputElement?.nativeElement.focus();
+ }, 10);
+ }
+ this.doubleClickInfo.date = new Date().getTime();
+ } else {
+ this.inputVisible = true;
+ setTimeout(() => {
+ this.inputElement?.nativeElement.focus();
+ }, 10);
+ }
+ }
+
+ handleInputConfirm(): void {
+ this.valueChange.emit(this.inputValue)
+ this.inputValue = '';
+ this.inputVisible = false;
+ }
+
+}
diff --git a/src/app/view/admin/components/editable-tag/editable-tag.module.ts b/src/app/view/admin/components/editable-tag/editable-tag.module.ts
new file mode 100644
index 0000000..e3cd5cd
--- /dev/null
+++ b/src/app/view/admin/components/editable-tag/editable-tag.module.ts
@@ -0,0 +1,22 @@
+import {NgModule} from '@angular/core';
+import {CommonModule} from '@angular/common';
+import {EditableTagComponent} from './editable-tag.component';
+import {NzIconModule, NzInputModule, NzTagModule} from 'ng-zorro-antd';
+import {FormsModule} from '@angular/forms';
+
+
+@NgModule({
+ declarations: [EditableTagComponent],
+ exports: [
+ EditableTagComponent
+ ],
+ imports: [
+ CommonModule,
+ NzTagModule,
+ FormsModule,
+ NzInputModule,
+ NzIconModule
+ ]
+})
+export class EditableTagModule {
+}