incident-ser-visit.component.ts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. import { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angular/core';
  2. import { ToolService } from 'src/app/services/tool.service';
  3. import { MainService } from 'src/app/services/main.service';
  4. import { OverlayScrollbarsComponent } from 'overlayscrollbars-ngx';
  5. import cloneDeep from 'lodash-es/cloneDeep'
  6. import { format, addHours, addDays } from 'date-fns';
  7. @Component({
  8. selector: 'app-incident-ser-visit',
  9. templateUrl: './incident-ser-visit.component.html',
  10. styleUrls: ['./incident-ser-visit.component.less']
  11. })
  12. export class IncidentSerVisitComponent implements OnInit {
  13. @ViewChild("osComponentRef1", {
  14. read: OverlayScrollbarsComponent,
  15. static: false,
  16. })
  17. osComponentRef1: OverlayScrollbarsComponent;
  18. // 切换科室,切换弹窗
  19. loading = false;
  20. visitList: any = [];// 列表
  21. pageIndex: number = 1;//表格当前页码
  22. pageSize: number = 10;//表格每页展示条数
  23. total: number = 0;//表格总数据量
  24. @Input() itsmData:any;
  25. @Output() closeModelHs = new EventEmitter<any>();//1.组件暴露一个 EventEmitter 属性,当事件发生时,子组件利用该属性 emits(向上弹射)事件
  26. constructor(private mainService: MainService, private tool: ToolService) { }
  27. ngOnInit() {
  28. this.getVisitList();
  29. }
  30. // 关闭弹窗
  31. hideModal() {
  32. this.closeModelHs.emit(JSON.stringify({ show: false }));//emits(向上弹射)事件
  33. }
  34. // 优先级颜色
  35. priorityColor(priorityId) {
  36. // 极低|低
  37. if(priorityId == 1 || priorityId == 2){
  38. return '';
  39. } else if(priorityId == 3){
  40. return 'yellow';
  41. } else if(priorityId == 4 || priorityId == 5){
  42. return 'red';
  43. }
  44. }
  45. // 处理人
  46. computedHandlerUser(item){
  47. if(item.state.value == 'pending' && item.currentLog){
  48. return item.currentLog.workerName;
  49. }
  50. if(item.state.value != 'pending' && item.handlingPersonnelUser){
  51. return item.handlingPersonnelUser.name;
  52. }
  53. }
  54. // 查看ITSM工单详情
  55. detailModalShow = false; //弹窗开关
  56. coopData:any = {};
  57. openItsmDetails(data) {
  58. this.coopData = data;
  59. this.detailModalShow = true;
  60. }
  61. // 关闭弹窗
  62. closeDetailModelOrder(e) {
  63. this.detailModalShow = JSON.parse(e).show;
  64. }
  65. // 弹窗确定
  66. confirmDetailModelOrder(e){
  67. console.log(e);
  68. this.detailModalShow = false;
  69. }
  70. // 回访-弹窗
  71. visitModalShow = false; //弹窗开关
  72. visit(data) {
  73. this.coopData = data;
  74. this.visitModalShow = true;
  75. }
  76. // 关闭弹窗
  77. closeVisitModelOrder(e) {
  78. this.visitModalShow = JSON.parse(e).show;
  79. }
  80. // 弹窗确定
  81. confirmVisitModelOrder(e){
  82. console.log(e);
  83. this.visitModalShow = false;
  84. this.getList();
  85. }
  86. // 分页获取数据
  87. getList(){
  88. this.getVisitList();
  89. }
  90. // 延期记录
  91. transferHandlerLog = function (currentLog) {
  92. if(!currentLog){
  93. return '';
  94. }
  95. currentLog = cloneDeep(currentLog);
  96. if(currentLog.extra1DTO && currentLog.extra2 && currentLog.startTime){
  97. if(currentLog.extra2==0.5){
  98. currentLog.extra2 = 4;
  99. return currentLog.extra1DTO.name+" "+ format(addHours(currentLog.startTime, +currentLog.extra2), "MM月dd日") + format(addHours(currentLog.startTime, +currentLog.extra2), "HH时mm分前完成");
  100. }else{
  101. return currentLog.extra1DTO.name+" "+ format(addDays(currentLog.startTime, +currentLog.extra2), "MM月dd日前完成");
  102. }
  103. }else{
  104. return '';
  105. }
  106. }
  107. // 获取回访列表
  108. getVisitList(){
  109. this.loading = true;
  110. let postData: any = {
  111. idx: 0,
  112. sum: 9999,
  113. incident: {
  114. // "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
  115. "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
  116. "urgentType": +this.itsmData.orderScopeRadio + 1,
  117. "queryTask": "callback",
  118. "assignee": this.tool.getCurrentUserId(),
  119. "deleteFlag": 0,
  120. },
  121. };
  122. this.mainService
  123. .getFetchDataList("simple/data", "incident", postData)
  124. .subscribe((result) => {
  125. this.loading = false;
  126. this.visitList = result.list.map(v => ({...v, endDeptsName: v.endDepts ? v.endDepts.map(v => v.dept).toString() : ''}));
  127. });
  128. }
  129. }