complete.component.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
  2. import { Router, ActivatedRoute } from '@angular/router';
  3. import { CommonCompModule } from '../../../../services/common.modules';
  4. import { NzEmptyModule } from 'ng-zorro-antd/empty';
  5. import Parse from 'parse';
  6. import { NzModalService } from 'ng-zorro-antd/modal';
  7. @Component({
  8. selector: 'app-complete',
  9. templateUrl: './complete.component.html',
  10. styleUrls: ['./complete.component.scss'],
  11. imports: [CommonCompModule, NzEmptyModule],
  12. standalone: true,
  13. })
  14. export class CompleteComponent implements OnInit {
  15. @Input('eduProcess') eduProcess?: Parse.Object;
  16. count: number = 0;
  17. date: Date = new Date();
  18. t: any;
  19. deadline: string = '';
  20. disabled: boolean = false;
  21. time() {
  22. if (new Date().getTime() > this.date.getTime()) {
  23. clearTimeout(this.t);
  24. this.disabled = false;
  25. return
  26. }
  27. this.t = setTimeout(() => {
  28. let hs = this.date.getTime() - new Date().getTime();
  29. let a = 60 * 60 * 1000;
  30. let day: number = Math.floor(hs / (24 * a));
  31. let h = Math.floor((hs - day * (24 * a)) / a);
  32. let m = Math.floor((hs - day * (24 * a) - h * a) / (60 * 1000));
  33. let s = Math.floor((hs - day * (24 * a) - h * a - m * 60 * 1000) / 1000);
  34. this.deadline = day + '天' + h + '小时' + m + '分' + s + '秒';
  35. this.time();
  36. }, 1000);
  37. }
  38. constructor(
  39. private modal: NzModalService,
  40. private router: Router,
  41. private activeRoute: ActivatedRoute
  42. ) {}
  43. ngOnInit() {
  44. // this.date = new Date(
  45. // this.eduProcess?.get('releaseDate').getTime() + 1000 * 60 * 60 * 24
  46. // );
  47. // this.time();
  48. this.getEduTextbook();
  49. if(this.eduProcess?.get('status') == '400'){
  50. this.modal.confirm({
  51. nzTitle: '流程已完成',
  52. nzContent: `报送已提交,请退出当前页`,
  53. nzOkText: '确认',
  54. nzOkType: 'primary',
  55. nzCancelText:null,
  56. nzOkDanger: false,
  57. nzOnOk: async () => {
  58. history.back()
  59. }
  60. })
  61. }
  62. }
  63. //报送
  64. async getEduTextbook() {
  65. let query = new Parse.Query('EduTextbook');
  66. query.equalTo('eduProcess', this.eduProcess?.id);
  67. query.notEqualTo('isDeleted', true);
  68. query.notEqualTo('discard', true);
  69. query.equalTo('render', true);
  70. query.equalTo('recommend', true);
  71. query.containedIn('status', ['200', '201']);
  72. this.count = await query.count();
  73. }
  74. ngOnDestroy(): void {
  75. //Called once, before the instance is destroyed.
  76. //Add 'implements OnDestroy' to the class.
  77. clearTimeout(this.t);
  78. }
  79. //完成报送
  80. complete(){
  81. this.modal.confirm({
  82. nzTitle: '完成报送',
  83. nzContent: `提交后,提交所有推荐教材且流程将结束不可再遴选教材`,
  84. nzOkText: '确认',
  85. nzOkType: 'primary',
  86. nzOkDanger: false,
  87. nzOnOk: async () => {
  88. this.eduProcess?.set('status', '400');
  89. await this.eduProcess?.save();
  90. let query = new Parse.Query('EduTextbook');
  91. query.equalTo('eduProcess', this.eduProcess?.id);
  92. query.notEqualTo('isDeleted', true);
  93. query.notEqualTo('discard', true);
  94. query.equalTo('render', true);
  95. query.equalTo('recommend', true);
  96. query.containedIn('status', ['201']);
  97. let list = await query.find();
  98. for (let index = 0; index < list.length; index++) {
  99. const item = list[index];
  100. item.set('status', '400');
  101. await item.save();
  102. }
  103. history.go(0)
  104. },
  105. nzCancelText: '取消',
  106. nzOnCancel: () => console.log('Cancel'),
  107. });
  108. }
  109. async revoke() {
  110. this.modal.confirm({
  111. nzTitle: '撤销报送',
  112. nzContent: `提交后,教材将重新进入遴选中。`,
  113. nzOkText: '确认',
  114. nzOkType: 'primary',
  115. nzOkDanger: false,
  116. nzOnOk: async () => {
  117. this.eduProcess?.set('status', '200');
  118. this.eduProcess?.set('releaseDate', null);
  119. await this.eduProcess?.save();
  120. let query = new Parse.Query('EduTextbook');
  121. query.equalTo('eduProcess', this.eduProcess?.id);
  122. query.notEqualTo('isDeleted', true);
  123. query.notEqualTo('discard', true);
  124. query.equalTo('render', true);
  125. query.equalTo('recommend', true);
  126. query.containedIn('status', ['201']);
  127. query.limit(1000)
  128. let list = await query.find();
  129. for (let index = 0; index < list.length; index++) {
  130. const item = list[index];
  131. item.set('status', '200');
  132. await item.save();
  133. }
  134. history.go(0)
  135. },
  136. nzCancelText: '取消',
  137. nzOnCancel: () => console.log('Cancel'),
  138. });
  139. }
  140. }