page-textbook.component.ts 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. import { Component, OnInit, ViewChild, Input } from '@angular/core';
  2. import { ActivatedRoute, RouterOutlet, Router } from '@angular/router';
  3. import { CompTableListComponent } from '../../../app/comp-table/comp-table-list/comp-table-list.component';
  4. import { EduTextbook } from '../../../schemas/EduTextbook';
  5. import { NzPageHeaderModule } from 'ng-zorro-antd/page-header';
  6. import { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';
  7. import * as Parse from 'parse';
  8. import { CommonModule } from '@angular/common';
  9. import { textbookServer } from '../../../services/textbook';
  10. import { TextbookComponent } from '../../../app/textbook/textbook.component';
  11. import { NzSpaceModule } from 'ng-zorro-antd/space';
  12. import { CommonCompModule } from '../../../services/common.modules';
  13. import { NzTabsModule } from 'ng-zorro-antd/tabs';
  14. import { NzMessageService } from 'ng-zorro-antd/message';
  15. @Component({
  16. selector: 'app-page-textbook',
  17. templateUrl: './page-textbook.component.html',
  18. styleUrls: ['./page-textbook.component.scss'],
  19. imports: [
  20. CommonModule,
  21. RouterOutlet,
  22. TextbookComponent,
  23. CompTableListComponent,
  24. NzPageHeaderModule,
  25. CommonCompModule,
  26. NzBreadCrumbModule,
  27. NzSpaceModule,
  28. NzTabsModule,
  29. ],
  30. standalone: true,
  31. })
  32. export class PageTextbookComponent implements OnInit {
  33. @ViewChild(CompTableListComponent) list: CompTableListComponent | undefined;
  34. @Input('discard') discard: boolean = false;
  35. @Input('render') render: boolean = false;
  36. active: number = 0;
  37. EduTextbook = EduTextbook;
  38. user: Parse.User | undefined;
  39. className: string | undefined;
  40. queryParams: any | undefined;
  41. fieldsArray: Array<any> | undefined;
  42. //待审核
  43. beforeFilterObj: any = {
  44. showMore: true, //显示更多字段
  45. isCheck: true,
  46. noStared: true,
  47. status: ['200'],
  48. btns: {
  49. // reject: true, //退回教材
  50. // star: true, //移除推荐
  51. export: true,
  52. eduReivew: true,
  53. scoreRview:true
  54. },
  55. };
  56. //已加入推荐
  57. afterFilterObj: any = {
  58. showMore: true, //显示更多字段
  59. isCheck: true,
  60. status: ['200', '201', '400'],
  61. btns: {
  62. // remove: true, //移除推荐
  63. export: true,
  64. eduReivew: true,
  65. scoreRview:true
  66. },
  67. };
  68. eduProcess?: Parse.Object;
  69. editLoading: boolean = true;
  70. //可导出汇总表
  71. filterObj: any = {
  72. isCheck: false,
  73. status: ['201', '400'],
  74. btns: {},
  75. };
  76. constructor(
  77. public tbookSer: textbookServer,
  78. private message: NzMessageService,
  79. private router: Router,
  80. private activeRoute: ActivatedRoute // private translate:TranslateService,
  81. ) {
  82. this.user = Parse.User.current();
  83. // this.className = this.EduTextbook.className;
  84. // this.fieldsArray = this.EduTextbook.fieldsArray;
  85. // this.queryParams = {
  86. // where: {
  87. // isDeleted: { $ne: true },
  88. // render: true,
  89. // discard: { $ne: true },
  90. // department: this.tbookSer.profile.user.department?.objectId,
  91. // },
  92. // };
  93. }
  94. ngOnInit(): void {
  95. this.getProcess();
  96. }
  97. async getProcess() {
  98. let parentMap = await this.tbookSer.formatNode(
  99. this.tbookSer?.profile?.user?.department?.objectId
  100. );
  101. if (!parentMap[1]?.key) return;
  102. let query = new Parse.Query('EduProcess');
  103. // query.equalTo('department', parentMap[1]?.key);
  104. // query.lessThanOrEqualTo('startDate', new Date());
  105. // query.greaterThan('deadline', new Date());
  106. query.notEqualTo('isDeleted', true);
  107. // query.notEqualTo('status', '100');
  108. query.equalTo('profileSubmitted', this.tbookSer?.profile?.objectId);
  109. let res = await query.first();
  110. let vrifly = await this.tbookSer.getEduProcess(parentMap[1]?.key);
  111. if (vrifly) {
  112. this.beforeFilterObj.btns['reject'] = true
  113. this.beforeFilterObj.btns['star'] = true
  114. this.afterFilterObj.btns['remove'] = true
  115. }
  116. this.editLoading = false;
  117. this.eduProcess = res;
  118. }
  119. toUrl(url: string, params?: object) {
  120. if (params) {
  121. this.router.navigate([url, params]);
  122. } else {
  123. this.router.navigate([url]);
  124. }
  125. }
  126. //报送
  127. async submitted() {
  128. if (this.eduProcess?.get('status') == '400') {
  129. this.message.warning('已提交报送,无需重复提交');
  130. this.toUrl(
  131. `/nav-province-contact/manage/submitted/${this.eduProcess?.id}`
  132. );
  133. return;
  134. }
  135. if (
  136. this.eduProcess?.get('deadline') &&
  137. new Date() > new Date(this.eduProcess?.get('deadline'))
  138. ) {
  139. this.message.warning('流程已逾期');
  140. return;
  141. }
  142. // this.eduProcess?.set('status', '400');
  143. // this.eduProcess?.set('releaseDate', new Date());
  144. let query = new Parse.Query('EduTextbook');
  145. query.equalTo('eduProcess', this.eduProcess?.id);
  146. query.notEqualTo('isDeleted', true);
  147. query.notEqualTo('discard', true);
  148. query.equalTo('render', true);
  149. query.equalTo('recommend', true);
  150. query.equalTo('status', '200');
  151. let list = await query.find();
  152. query.containedIn('approval', [
  153. '首届全国教材建设奖优秀教材(高等教育类)教材',
  154. '否',
  155. ]);
  156. let count = await query.count();
  157. if (count > this.eduProcess?.get('num')) {
  158. this.message.warning('当前推荐教材数量已超额');
  159. return;
  160. }
  161. // await this.eduProcess?.save();
  162. // for (let index = 0; index < list.length; index++) {
  163. // const item = list[index];
  164. // item.set('status', '400');
  165. // await item.save();
  166. // }
  167. // this.message.success('提交成功');
  168. this.toUrl(`/nav-province-contact/manage/submitted/${this.eduProcess?.id}`);
  169. }
  170. }