column-add.component.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
  2. import { FormBuilder, FormGroup, Validators } from '@angular/forms';
  3. import { NzMessageService } from 'ng-zorro-antd/message';
  4. import { firstValueFrom } from 'rxjs';
  5. import { FormUtils } from 'src/app/lib/utils/form-utils';
  6. import { ContentService } from '../content/content.service';
  7. import { EpgService } from './epg.service';
  8. @Component({
  9. selector: 'app-column-add',
  10. template: `
  11. <form [formGroup]="form" autocomplete="off" (ngSubmit)="onSubmit()" novalidate class="form-horizontal ">
  12. <nz-form-item>
  13. <nz-form-control i18n-nzErrorTip nzErrorTip="请输入栏目id">
  14. <nz-input-group nzPrefixIcon="user">
  15. <input nz-input formControlName="id" i18n-placeholder placeholder="栏目id">
  16. </nz-input-group>
  17. </nz-form-control>
  18. </nz-form-item>
  19. <nz-form-item>
  20. <nz-form-control i18n-nzErrorTip nzErrorTip="请选择多语翻译">
  21. <nz-input-group nzPrefixIcon="global">
  22. <nz-select [(ngModel)]="translate" formControlName="translate" i18n-placeholder placeholder="请选择多语翻译">
  23. <nz-option *ngFor="let item of translateOptions; let i=index" [nzValue]="item.value" [nzLabel]="item.label"></nz-option>
  24. </nz-select>
  25. </nz-input-group>
  26. </nz-form-control>
  27. </nz-form-item>
  28. <!-- <nz-form-item>
  29. <nz-form-control i18n-nzErrorTip nzErrorTip="请输入栏目英文名">
  30. <nz-input-group nzPrefixIcon="user">
  31. <input nz-input formControlName="en" placeholder="英文名">
  32. </nz-input-group>
  33. </nz-form-control>
  34. </nz-form-item>
  35. <nz-form-item>
  36. <nz-form-control i18n-nzErrorTip nzErrorTip="请输入栏目中文名">
  37. <nz-input-group nzPrefixIcon="user">
  38. <input nz-input formControlName="zh" placeholder="中文名">
  39. </nz-input-group>
  40. </nz-form-control>
  41. </nz-form-item> -->
  42. <div class="d-flex flex-row-reverse">
  43. <button nz-button nzType="primary" nzBlock type="submit" [disabled]="isLoading" i18n>添加</button>
  44. </div>
  45. </form>
  46. `,
  47. styles: [
  48. ]
  49. })
  50. export class ColumnAddComponent implements OnInit {
  51. @Input() epgId: string;
  52. @Output() onSuccess = new EventEmitter<any>();
  53. @Output() onError = new EventEmitter<any>();
  54. form: FormGroup;
  55. isLoading = false;
  56. translateOptions: any[] = [];
  57. translate: string; // 多语翻译ID
  58. constructor(
  59. private epgService: EpgService,
  60. private contentService: ContentService,
  61. private fb: FormBuilder,
  62. private message: NzMessageService,
  63. ) {
  64. firstValueFrom(this.contentService.translateOptions()).then((resp: any[]) => {
  65. this.translateOptions = resp;
  66. })
  67. }
  68. ngOnInit(): void {
  69. this.form = this.fb.group({
  70. id: [null, [Validators.required]],
  71. visible: [false, [Validators.required]],
  72. translate: [null, [Validators.required]],
  73. // en: [null, [Validators.required]],
  74. // zh: [null, [Validators.required]],
  75. })
  76. }
  77. onSubmit() {
  78. if (this.form.invalid) {
  79. FormUtils.markAsDirty(this.form);
  80. return;
  81. }
  82. this.isLoading = true;
  83. Object.assign(this.form.value, { _id: this.epgId });
  84. firstValueFrom(this.epgService.columnAdd(this.form.value))
  85. .then(res => {
  86. this.onSuccess.emit(this.form.value);
  87. this.message.success($localize`添加成功`);
  88. })
  89. .catch(err => {
  90. this.message.error(err.error?.message || err.message);
  91. this.onError.emit(err);
  92. }).then(() => {
  93. this.isLoading = false;
  94. })
  95. }
  96. }