b9c7827efaab3e4ea4cd8aaa7d291a315061746d
[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   isDisabled: boolean = true;
60
61   ngOnInit() { }
62   
63   ngOnChanges() {
64     if (this.showDetail) {
65       this.getautidInfo();
66     }
67   }
68
69   getautidInfo(): void {
70     this.http.getAuditInfo(this.taskId).subscribe( res => {
71       const { result_header: { result_code } } = res;
72       if (+result_code === 200) {
73         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;
74         const { 
75           suggest_nsi_id, 
76           suggest_nsi_name, 
77           an_suggest_nssi_id, 
78           an_suggest_nssi_name, 
79           tn_suggest_nssi_id, 
80           tn_suggest_nssi_name, 
81           cn_suggest_nssi_id, 
82           cn_suggest_nssi_name,
83           an_latency,
84           an_5qi,
85           an_coverage_area_ta_list, 
86           tn_latency,
87           tn_bandwidth,
88           cn_service_snssai,
89           cn_resource_sharing_level,
90           cn_ue_mobility_level,
91           cn_latency,
92           cn_max_number_of_ues,
93           cn_activity_factor,
94           cn_exp_data_rate_dl,
95           cn_exp_data_rate_ul,
96           cn_area_traffic_cap_dl,
97           cn_area_traffic_cap_ul
98         } = nsi_nssi_info;
99         // 处理配置审核详情数据
100         this.checkDetail = [{ task_id, task_name, create_timer, processing_status, service_snssai }];
101         // 业务需求信息数据
102         this.businessRequirement = [business_demand_info];
103         this.NSTinfo = [nst_info];
104         // 共享切片实例
105         this.selectedServiceId = suggest_nsi_id;
106         this.selectedServiceName = suggest_nsi_name;
107         this.slicingInstances = [{
108           service_instance_id: this.selectedServiceId,
109           service_instance_name: this.selectedServiceName
110         }];
111         // 子网实例
112        
113         let subnetData = { an_suggest_nssi_id, an_suggest_nssi_name, tn_suggest_nssi_id, tn_suggest_nssi_name, cn_suggest_nssi_id, cn_suggest_nssi_name};
114         this.subnetDataFormatting(subnetData);
115         this.slicingSubnet[0].params = { an_latency, an_5qi, an_coverage_area_ta_list } 
116        
117         this.slicingSubnet[1].params = { tn_latency, tn_bandwidth };
118
119        
120         this.slicingSubnet[2].params = { 
121           cn_service_snssai,
122           cn_resource_sharing_level,
123           cn_ue_mobility_level,
124           cn_latency,
125           cn_max_number_of_ues,
126           cn_activity_factor,
127           cn_exp_data_rate_dl,
128           cn_exp_data_rate_ul,
129           cn_area_traffic_cap_dl,
130           cn_area_traffic_cap_ul 
131         };
132       }
133     })
134   }
135
136   getSlicingData ( bool: boolean): void {
137     this.loading = true;
138     if (bool && this.slicingInstances.length === 1) {
139       this.http.getSlicingInstance('1', '10').subscribe ( res => {
140         this.loading = false;
141         const { result_header: { result_code }, result_body: { nsi_service_instances } } = res
142         if (+result_code === 200) {
143           this.slicingInstances = nsi_service_instances;
144         }
145       })
146     }
147   }
148
149   slicingInstanceChange ():void {
150     this.isDisabled = true;
151     // 获取切片子网实例数据
152     this.http.getSlicingSubnetInstance(this.selectedServiceId).subscribe( res => {
153       const { result_header: { result_code }, result_body} = res;
154       if (+result_code === 200) {
155         this.subnetDataFormatting(result_body)
156       }
157     }) 
158     this.slicingInstances.forEach (item => {
159       if (item.service_instance_id === this.selectedServiceId) {
160         this.selectedServiceName = item.service_instance_name;
161       }
162     })
163   }
164
165   subnetDataFormatting ( subnetData: any): void{
166     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 } = subnetData;
167     this.slicingSubnet[0].slicingId = an_suggest_nssi_id;
168     this.slicingSubnet[0].slicingName = an_suggest_nssi_name;
169     this.slicingSubnet[0].instances = [{
170       service_instance_id: an_suggest_nssi_id,
171       service_instance_name: an_suggest_nssi_name
172     }];
173
174     this.slicingSubnet[1].slicingId = tn_suggest_nssi_id;
175     this.slicingSubnet[1].slicingName = tn_suggest_nssi_name;
176     this.slicingSubnet[1].instances = [{
177       service_instance_id: tn_suggest_nssi_id,
178       service_instance_name: tn_suggest_nssi_name
179     }]; 
180
181     this.slicingSubnet[2].slicingId = cn_suggest_nssi_id;
182     this.slicingSubnet[2].slicingName = cn_suggest_nssi_name;
183     this.slicingSubnet[2].instances = [{
184       service_instance_id: cn_suggest_nssi_id,
185       service_instance_name: cn_suggest_nssi_name
186     }];
187   }
188
189   resetSlicingInstance (): void {
190     this.selectedServiceId = '';
191     this.selectedServiceName = '';
192     this.slicingSubnet.map( item => {
193       item.slicingId = '';
194       item.slicingName = '';
195     })
196     this.isDisabled = false;
197   }
198
199   getSubnetInstances (bool: boolean, instance: any): void {
200     if(bool && instance.instances.length === 1) {
201       this.http.getSubnetInContext(instance.context, '1', '10').subscribe( res => {
202         const { result_header: { result_code }, result_body } = res;
203         if (+result_code === 200) {
204           this.slicingSubnet.map (item => {
205             if (item.context === instance.context) {
206               item.instances = result_body.nssi_service_instances;
207             }
208           })
209         }
210       })
211     }
212   }
213
214   slicingSubnetChange (instance: any): void {
215     instance.instances.forEach( item => {
216       if (instance.slicingId === item.service_instance_id) {
217         instance.slicingName = item.service_instance_name; 
218       }
219     })
220   }
221
222   restSubnetInstance (instance: any): void {
223     if (!this.isDisabled) return;
224     instance.slicingId = '';
225     instance.slicingName = '';
226   }
227
228   showParamsModel (item: any): void {
229     this.isShowParams = true;
230     this.paramsTitle = item.title;
231     this.params = item.params
232   }
233
234   handleCancel() {
235     this.showDetail = false;
236     this.cancel.emit(this.showDetail);
237   }
238   handleOk() {
239     this.handleCancel();
240     // 对应操作逻辑未编写
241
242   }
243 }