47a497f46f25a3275de94722f08362099ce18953
[usecase-ui.git] /
1 import { Component, OnInit } from '@angular/core';
2 import { BUSINESS_STATUS } from "../../../../../constants/constants";
3 import { SlicingTaskServices } from '.././../../../core/services/slicingTaskServices';
4 import { NzModalService, NzMessageService } from 'ng-zorro-antd';
5 import * as moment from 'moment';
6 @Component({
7     selector: 'app-csmf-slicing-business-management',
8     templateUrl: './csmf-slicing-business-management.component.html',
9     styleUrls: ['./csmf-slicing-business-management.component.less']
10 })
11 export class CsmfSlicingBusinessManagementComponent implements OnInit {
12
13     constructor(
14         private myhttp: SlicingTaskServices,
15         private modalService: NzModalService,
16         private message: NzMessageService
17     ) {
18     }
19
20     ngOnInit() {
21         this.getCSMFBusinessList()
22     }
23     ngOnDestroy() {
24         this.progressingTimer.forEach((item) => {
25             clearInterval(item.timer);
26         });
27         this.progressingTimer = [];
28     }
29
30     selectedValue: string = BUSINESS_STATUS[0];
31     listOfData: any[] = [];
32     pageIndex: number = 1;
33     pageSize: number = 10;
34     total: number = 0;
35     loading = false;
36     statusOptions: any[] = BUSINESS_STATUS;
37     // isSelect: boolean = false;
38     progressingTimer: any[] = [];
39     terminateStart: any[] = [];
40     businessOrderShow: boolean = false;
41     getCSMFBusinessList() {
42         this.loading = true;
43         // this.isSelect = false;
44         this.listOfData = [];
45         let paramsObj = {
46             status: this.selectedValue.toLocaleLowerCase(),
47             pageNo: this.pageIndex,
48             pageSize: this.pageSize
49         };
50         // if (this.selectedValue !== BUSINESS_STATUS[0]) {
51         //     paramsObj["businessStatus"] = this.selectedValue;
52         //     this.isSelect = true;
53         // }
54         this.myhttp.getCSMFSlicingBusinessList(paramsObj).subscribe(res => {
55             const { result_header: { result_code }, result_body: { slicing_order_list, record_number } } = res;
56             this.loading = false;
57             if (+result_code === 200) {
58                 this.total = record_number;
59                 if (slicing_order_list !== null && slicing_order_list.length > 0) {
60                     this.listOfData = slicing_order_list.map((item, index) => {
61                         item.order_creation_time = moment(Number(item.order_creation_time)).format('YYYY-MM-DD HH:mm:ss');
62                         if (item.last_operation_progress && item.last_operation_type && Number(item.last_operation_progress) < 100) {
63                             let updata = (prodata: { operation_progress: string }) => {
64                                 item.last_operation_progress = prodata.operation_progress || item.last_operation_progress;
65                             };
66                             let obj = {
67                                 serviceId: item.order_id
68                             };
69                             if (item.last_operation_type === 'DELETE') this.terminateStart[index] = true
70                             else this.terminateStart[index] = false;
71                             this.queryProgress(obj, index, updata).then((res) => {
72                                 item.last_operation_progress = '100';
73                                 this.getCSMFBusinessList();
74                             })
75                         }
76                         return item
77                     });
78                 }
79             }
80         })
81     }
82
83     getListOfProcessingStatus() {
84         this.pageIndex = 1;
85         this.pageSize = 10;
86         this.progressingTimer.forEach((item) => {
87             clearInterval(item.timer);
88         });
89         this.progressingTimer = [];
90         this.getCSMFBusinessList();
91     }
92
93     searchData(reset: boolean = false) {
94         this.progressingTimer.forEach((item) => {
95             clearInterval(item.timer);
96         });
97         this.progressingTimer = [];
98         this.getCSMFBusinessList();
99     }
100
101     switchChange(slicing, i) {
102         // console.log(slicing, i, "slicing");
103         this.modalService.confirm({
104             nzTitle: '<i>Are you sure you want to perform this task?</i>',
105             nzContent: '<b>Name:' + slicing.order_name + '</b>',
106             nzOnOk: () => {
107                 let paramsObj = {
108                     serviceId: slicing.order_id
109                 };
110                 if (slicing.order_status === 'activated') {
111                     this.changeActivate(paramsObj, false, slicing, "deactivate", "deactivated", i)
112                 } else {
113                     this.changeActivate(paramsObj, true, slicing, "activate", "activated", i);
114                 }
115             },
116             nzCancelText: 'No',
117             nzOnCancel: () => {
118                 let singleSlicing = Object.assign({}, this.listOfData[i]);
119                 this.listOfData[i] = singleSlicing;
120                 this.listOfData = [...this.listOfData];
121             }
122         });
123     }
124     changeActivate(paramsObj, isActivate, slicing, activateValue, finished, index) {
125         this.loading = true;
126         this.myhttp.changeActivateSlicingService(paramsObj, isActivate).subscribe(res => {
127             const { result_header: { result_code, result_message }, result_body: { operation_id } } = res;
128             this.loading = false;
129             if (+result_code === 200) {
130                 this.getCSMFBusinessList();
131             } else {
132                 let singleSlicing = Object.assign({}, this.listOfData[index]);
133                 this.listOfData[index] = singleSlicing;
134                 this.listOfData = [...this.listOfData];
135                 this.getCSMFBusinessList();
136             }
137             this.getCSMFBusinessList();
138         }, () => {
139             this.loading = false;
140             let singleSlicing = Object.assign({}, this.listOfData[index]);
141             this.listOfData[index] = singleSlicing;
142             this.listOfData = [...this.listOfData];
143             this.getCSMFBusinessList();
144         })
145     }
146
147     terminate(slicing, index) {
148         this.modalService.confirm({
149             nzTitle: 'Are you sure you want to terminate this task?',
150             nzContent: '<b>Name:&nbsp;</b>' + slicing.order_name,
151             nzOnOk: () => {
152                 let paramsObj = { serviceId: slicing.order_id };
153                 this.terminateStart[index] = true;
154                 this.loading = true;
155                 this.myhttp.terminateSlicingService(paramsObj).subscribe(res => {
156                     const { result_header: { result_code, result_message }, result_body: { operation_id } } = res;
157                     this.loading = false;
158                     if (+result_code === 200) {
159                         this.getCSMFBusinessList();
160                     } else {
161                         this.terminateStart[index] = false;
162                     }
163                 }, () => {
164                     this.loading = false;
165                     this.terminateStart[index] = false;
166                 })
167             },
168             nzCancelText: 'No',
169             nzOnCancel: () => {
170                 console.info('Cancel termination')
171             }
172         });
173     }
174     queryProgress(obj, index, callback) {
175         return new Promise(res => {
176             let requery = () => {
177                 this.myhttp.getSlicingBusinessProgress(obj)
178                     .subscribe((data) => {
179                         const { result_header: { result_code, result_message }, result_body: { operation_id } } = data;
180                         if (+result_code === 200) {
181                             if (data.result_body.operation_progress && Number(data.result_body.operation_progress) < 100) {
182                                 callback(data.result_body);
183                                 let progressSetTimeOut = setTimeout(() => {
184                                     requery();
185                                 }, 5000);
186                                 this.progressingTimer.push({
187                                     id: obj.serviceId,
188                                     timer: progressSetTimeOut
189                                 })
190                             } else {
191                                 this.progressingTimer.forEach((item) => {
192                                     if (item.serviceId === obj.serviceId) {
193                                         clearInterval(item.timer);
194                                     }
195                                 });
196                                 res(data.result_body);
197                             }
198                         } else {
199                             this.progressingTimer.forEach((item) => {
200                                 if (item.serviceId === obj.serviceId) {
201                                     clearInterval(item.timer);
202                                 }
203                             });
204                             this.getCSMFBusinessList();
205                             this.message.error(result_message);
206                         }
207                     }, (err) => {
208                         this.progressingTimer.forEach((item) => {
209                             if (item.serviceId === obj.serviceId) {
210                                 clearInterval(item.timer);
211                             }
212                         });
213                         this.getCSMFBusinessList();
214                         this.message.error(err);
215                     })
216             };
217             requery();
218         })
219     }
220
221     OrderModelShow() {
222         this.businessOrderShow = true;
223     }
224     orderModelClose($event) {
225         this.businessOrderShow = $event;
226         this.getCSMFBusinessList();
227     }
228 }