88eb586a38729cc28aba007cdf543183e5818445
[usecase-ui.git] /
1 import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
2 import { SlicingTaskServices } from '../../../../../core/services/slicingTaskServices';
3 import { BUSINESS_REQUIREMENT } from '../../../../../../constants/constants';
4
5 @Component({
6   selector: 'app-slicing-task-model',
7   templateUrl: './slicing-task-model.component.html',
8   styleUrls: ['./slicing-task-model.component.less']
9 })
10 export class SlicingTaskModelComponent implements OnInit {
11   @Input() showDetail: boolean;
12   @Input() moduleTitle: string;
13   @Input() taskId: string;
14   @Output() cancel = new EventEmitter<boolean>();
15
16   constructor(private http: SlicingTaskServices) { }
17
18   // 业务需求列表
19   businessList: object[] = BUSINESS_REQUIREMENT;
20   // 配置审核详情
21   checkDetail: object[] = [{}];
22   //业务需求信息
23   businessRequirement: object[] = [{}];
24   //匹配NST信息 
25   NSTinfo: object[] = [{}];
26   // 共享切片实例
27   selectedServiceId: string;
28   selectedServiceName: string;
29   slicingInstances: any[];
30   loading: boolean = false;
31   // 子网实例
32   slicingSubnet: any[] =  [
33     {
34       title: '无线域',
35       context: 'an',
36       slicingId: '',
37       slicingName: '',
38       instances: []
39     },
40     {
41       title: '传输域',
42       context: 'tn',
43       slicingId: '',
44       slicingName: '',
45       instances: []
46     },
47     {
48       title: '核心网域',
49       context: 'cn',
50       slicingId: '',
51       slicingName: '',
52       instances: []
53     }
54   ]
55   // 子网参数
56   isShowParams: boolean;
57   paramsTitle: string;
58   params: any;
59
60   ngOnInit() { }
61   
62   ngOnChanges() {
63     if (this.showDetail) {
64       this.getautidInfo();
65     }
66   }
67
68   getautidInfo(): void {
69     this.http.getAuditInfo(this.taskId).subscribe( res => {
70       const { result_header: { result_code } } = res;
71       if (+result_code === 200) {
72         const { task_id, task_name, create_timer, processing_status, business_demand_info, nst_info, nsi_nssi_info, business_demand_info: { service_snssai } } = res.result_body;
73         const { 
74           suggest_nsi_id, 
75           suggest_nsi_name, 
76           an_suggest_nssi_id, 
77           an_suggest_nssi_name, 
78           tn_suggest_nssi_id, 
79           tn_suggest_nssi_name, 
80           cn_suggest_nssi_id, 
81           cn_suggest_nssi_name,
82           an_latency,
83           an_5qi,
84           an_coverage_area_ta_list, 
85           tn_latency,
86           tn_bandwidth,
87           cn_service_snssai,
88           cn_resource_sharing_level,
89           cn_ue_mobility_level,
90           cn_latency,
91           cn_max_number_of_ues,
92           cn_activity_factor,
93           cn_exp_data_rate_dl,
94           cn_exp_data_rate_ul,
95           cn_area_traffic_cap_dl,
96           cn_area_traffic_cap_ul
97         } = nsi_nssi_info;
98         // 处理配置审核详情数据
99         this.checkDetail = [{ task_id, task_name, create_timer, processing_status, service_snssai }];
100         // 业务需求信息数据
101         this.businessRequirement = [business_demand_info];
102         this.NSTinfo = [nst_info];
103         // 共享切片实例
104         this.selectedServiceId = suggest_nsi_id;
105         this.selectedServiceName = suggest_nsi_name;
106         this.slicingInstances = [{
107           service_instance_id: this.selectedServiceId,
108           service_instance_name: this.selectedServiceName
109         }];
110         // 子网实例
111         this.slicingSubnet[0].slicingId = an_suggest_nssi_id;
112         this.slicingSubnet[0].slicingName = an_suggest_nssi_name;
113         this.slicingSubnet[0].instances = [{
114           service_instance_id: an_suggest_nssi_id,
115           service_instance_name: an_suggest_nssi_name
116         }];
117         this.slicingSubnet[0].params = { an_latency, an_5qi, an_coverage_area_ta_list } 
118
119         this.slicingSubnet[1].slicingId = tn_suggest_nssi_id;
120         this.slicingSubnet[1].slicingName = tn_suggest_nssi_name;
121         this.slicingSubnet[1].instances = [{
122           service_instance_id: tn_suggest_nssi_id,
123           service_instance_name: tn_suggest_nssi_name
124         }]; 
125         this.slicingSubnet[1].params = { tn_latency, tn_bandwidth };
126
127         this.slicingSubnet[2].slicingId = cn_suggest_nssi_id;
128         this.slicingSubnet[2].slicingName = cn_suggest_nssi_name;
129         this.slicingSubnet[2].instances = [{
130           service_instance_id: cn_suggest_nssi_id,
131           service_instance_name: cn_suggest_nssi_name
132         }];
133         this.slicingSubnet[2].params = { 
134           cn_service_snssai,
135           cn_resource_sharing_level,
136           cn_ue_mobility_level,
137           cn_latency,
138           cn_max_number_of_ues,
139           cn_activity_factor,
140           cn_exp_data_rate_dl,
141           cn_exp_data_rate_ul,
142           cn_area_traffic_cap_dl,
143           cn_area_traffic_cap_ul 
144         };
145       }
146     })
147   }
148
149   getSlicingData ( bool: boolean): void {
150     this.loading = true
151     if (bool && this.slicingInstances.length === 1) {
152       this.http.getSlicingInstance('1', '10').subscribe ( res => {
153         this.loading = false;
154         const { result_header: { result_code }, result_body: { nsi_service_instances } } = res
155         if (+result_code === 200) {
156           this.slicingInstances = nsi_service_instances;
157         }
158       })
159     }
160   }
161
162   slicingInstanceChange ():void {
163     // 获取切片子网实例数据
164     this.http.getSlicingSubnetInstance(this.selectedServiceId).subscribe( res => {
165       const { result_header: { result_code }, result_body} = res;
166       if (+result_code === 200) {
167         const { an_suggest_nssi_id, an_suggest_nssi_name, tn_suggest_nssi_id, tn_suggest_nssi_name, cn_suggest_nssi_id, cn_suggest_nssi_name } = result_body;
168         this.slicingSubnet[0].slicingId = an_suggest_nssi_id;
169         this.slicingSubnet[0].slicingName = an_suggest_nssi_name;
170         this.slicingSubnet[1].slicingId = tn_suggest_nssi_id;
171         this.slicingSubnet[1].slicingName = tn_suggest_nssi_name;
172         this.slicingSubnet[2].slicingId = cn_suggest_nssi_id;
173         this.slicingSubnet[2].slicingName = cn_suggest_nssi_name;
174       }
175     }) 
176     this.slicingInstances.forEach (item => {
177       if (item.service_instance_id === this.selectedServiceId) {
178         this.selectedServiceName = item.service_instance_name;
179       }
180     })
181   }
182
183   resetSlicingInstance (): void {
184     this.selectedServiceId = '';
185     this.selectedServiceName = '';
186     this.slicingSubnet.map( item => {
187       item.slicingId = '';
188       item.slicingName = '';
189     })
190   }
191
192   getSubnetInstances (bool: boolean, instance: any): void {
193     if(bool && instance.instances.length === 1) {
194       this.http.getSubnetInContext(instance.context, '1', '10').subscribe( res => {
195         const { result_header: { result_code }, result_body } = res;
196         if (+result_code === 200) {
197           this.slicingSubnet.map (item => {
198             if (item.context === instance.context) {
199               item.instances = result_body.nssi_service_instances;
200             }
201           })
202         }
203       })
204     }
205   }
206
207   slicingSubnetChange (instance: any): void {
208     instance.instances.forEach( item => {
209       if (instance.slicingId === item.service_instance_id) {
210         instance.slicingName = item.service_instance_name; 
211       }
212     })
213   }
214
215   restSubnetInstance (instance: any): void {
216     instance.slicingId = '';
217     instance.slicingName = '';
218   }
219
220   showParamsModel (item: any): void {
221     this.isShowParams = true;
222     this.paramsTitle = item.title;
223     this.params = item.params
224   }
225
226   handleCancel() {
227     this.showDetail = false;
228     this.cancel.emit(this.showDetail);
229   }
230   handleOk() {
231     this.handleCancel();
232     // 对应操作逻辑未编写
233
234   }
235 }