5e6fd9885ce56c4a14bf290fb269ffe671030271
[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         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};
113         this.subnetDataFormatting(subnetData);
114         this.slicingSubnet[0].params = { an_latency, an_5qi, an_coverage_area_ta_list } 
115         this.slicingSubnet[1].params = { tn_latency, tn_bandwidth };
116         this.slicingSubnet[2].params = { 
117           cn_service_snssai,
118           cn_resource_sharing_level,
119           cn_ue_mobility_level,
120           cn_latency,
121           cn_max_number_of_ues,
122           cn_activity_factor,
123           cn_exp_data_rate_dl,
124           cn_exp_data_rate_ul,
125           cn_area_traffic_cap_dl,
126           cn_area_traffic_cap_ul 
127         };
128       }
129     })
130   }
131
132   getSlicingData ( bool: boolean): void {
133     this.loading = true;
134     if (bool && this.slicingInstances.length === 1) {
135       this.http.getSlicingInstance('1', '10').subscribe ( res => {
136         this.loading = false;
137         const { result_header: { result_code }, result_body: { nsi_service_instances } } = res
138         if (+result_code === 200) {
139           this.slicingInstances = nsi_service_instances;
140         }
141       })
142     }
143   }
144
145   slicingInstanceChange ():void {
146     this.isDisabled = true;
147     // 获取切片子网实例数据
148     this.http.getSlicingSubnetInstance(this.selectedServiceId).subscribe( res => {
149       const { result_header: { result_code }, result_body} = res;
150       if (+result_code === 200) {
151         this.subnetDataFormatting(result_body)
152       }
153     }) 
154     this.slicingInstances.forEach (item => {
155       if (item.service_instance_id === this.selectedServiceId) {
156         this.selectedServiceName = item.service_instance_name;
157       }
158     })
159   }
160
161   subnetDataFormatting ( subnetData: any): void{
162     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;
163     this.slicingSubnet[0].slicingId = an_suggest_nssi_id;
164     this.slicingSubnet[0].slicingName = an_suggest_nssi_name;
165     this.slicingSubnet[0].instances = [{
166       service_instance_id: an_suggest_nssi_id,
167       service_instance_name: an_suggest_nssi_name
168     }];
169
170     this.slicingSubnet[1].slicingId = tn_suggest_nssi_id;
171     this.slicingSubnet[1].slicingName = tn_suggest_nssi_name;
172     this.slicingSubnet[1].instances = [{
173       service_instance_id: tn_suggest_nssi_id,
174       service_instance_name: tn_suggest_nssi_name
175     }]; 
176
177     this.slicingSubnet[2].slicingId = cn_suggest_nssi_id;
178     this.slicingSubnet[2].slicingName = cn_suggest_nssi_name;
179     this.slicingSubnet[2].instances = [{
180       service_instance_id: cn_suggest_nssi_id,
181       service_instance_name: cn_suggest_nssi_name
182     }];
183   }
184
185   resetSlicingInstance (): void {
186     this.selectedServiceId = '';
187     this.selectedServiceName = '';
188     this.slicingSubnet.map( item => {
189       item.slicingId = '';
190       item.slicingName = '';
191     })
192     this.isDisabled = false;
193   }
194
195   getSubnetInstances (bool: boolean, instance: any): void {
196     if(bool && instance.instances.length === 1) {
197       this.http.getSubnetInContext(instance.context, '1', '10').subscribe( res => {
198         const { result_header: { result_code }, result_body } = res;
199         if (+result_code === 200) {
200           this.slicingSubnet.map (item => {
201             if (item.context === instance.context) {
202               item.instances = result_body.nssi_service_instances;
203             }
204           })
205         }
206       })
207     }
208   }
209
210   slicingSubnetChange (instance: any): void {
211     instance.instances.forEach( item => {
212       if (instance.slicingId === item.service_instance_id) {
213         instance.slicingName = item.service_instance_name; 
214       }
215     })
216   }
217
218   restSubnetInstance (instance: any): void {
219     if (!this.isDisabled) return;
220     instance.slicingId = '';
221     instance.slicingName = '';
222   }
223
224   showParamsModel (item: any): void {
225     this.isShowParams = true;
226     this.paramsTitle = item.title;
227     this.params = item.params
228   }
229
230   handleCancel() {
231     this.showDetail = false;
232     this.cancel.emit(this.showDetail);
233   }
234   handleOk() {
235     this.handleCancel();
236     // 对应操作逻辑未编写
237
238   }
239 }