slicingInstance: this.baseUrl + '/resource/nsi/instances/pageNo/{pageNo}/pageSize/{pageSize}',\r
slicingSubnetInstance: this.baseUrl + '/resource/nsi/{nsiId}/nssiInstances',\r
subnetInContext: this.baseUrl + '/resource/nssi/{environmentContext}/instances/pageNo/{pageNo}/pageSize/{pageSize}',\r
+ submitSlicing: this.baseUrl + '/task/auditInfo', \r
//slicing-business-management\r
slicingBusinessList:this.baseUrl+"/resource/business/pageNo/{pageNo}/pageSize/{pageSize}",\r
slicingBusinesQueryOfStatus:this.baseUrl+"/resource/{businessStatus}/business/pageNo/{pageNo}/pageSize/{pageSize}",\r
.replace('{pageSize}', pageSize);\r
return this.http.get<any>(url);\r
}\r
+ submitSlicing (reqbody) {\r
+ return this.http.put<any>(this.url.submitSlicing, reqbody)\r
+ }\r
\r
// Get slicing business list\r
getSlicingBusinessList (paramsObj,isSelect: boolean) {\r
--- /dev/null
+{\r
+ "result_header": {\r
+ "result_code": "200",\r
+ "result_message": "Operation result message."\r
+ },\r
+ "result_body": {}\r
+}
\ No newline at end of file
</nz-list-item>
</nz-list>
</div>
- <app-subnet-params-model [showModel]="isShowParams" [detailData]="params" [title]="paramsTitle"
- (cancel)="isShowParams=$event"></app-subnet-params-model>
+ <app-subnet-params-model
+ [showModel]="isShowParams"
+ [detailData]="params"
+ [title]="paramsTitle"
+ (cancel)="isShowParams=$event"
+ (paramsDataChange)="changeParams($event)"
+ >
+ </app-subnet-params-model>
</nz-modal>
\ No newline at end of file
// 业务需求列表
businessList: object[] = BUSINESS_REQUIREMENT;
// 配置审核详情
- checkDetail: object[] = [{}];
+ checkDetail: any[] = [{}];
//业务需求信息
- businessRequirement: object[] = [{}];
+ businessRequirement: any[] = [];
//匹配NST信息
NSTinfo: object[] = [{}];
// 共享切片实例
this.http.getAuditInfo(this.taskId).subscribe( res => {
const { result_header: { result_code } } = res;
if (+result_code === 200) {
- 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;
+ const {
+ task_id,
+ task_name,
+ create_time,
+ processing_status,
+ business_demand_info,
+ nst_info, nsi_nssi_info,
+ business_demand_info: { service_snssai }
+ } = res.result_body;
const {
suggest_nsi_id,
suggest_nsi_name,
cn_area_traffic_cap_ul
} = nsi_nssi_info;
// 处理配置审核详情数据
- this.checkDetail = [{ task_id, task_name, create_timer, processing_status, service_snssai }];
+ this.checkDetail = [{ task_id, task_name, create_time, processing_status, service_snssai }];
// 业务需求信息数据
this.businessRequirement = [business_demand_info];
+ // 匹配NST信息
this.NSTinfo = [nst_info];
// 共享切片实例
this.selectedServiceId = suggest_nsi_id;
}
restSubnetInstance (instance: any): void {
- if (!this.isDisabled) return;
instance.slicingId = '';
instance.slicingName = '';
}
this.params = item.params
}
+ changeParams (params: any): void {
+ const index = this.paramsTitle === '无线域' ? 0 : (this.paramsTitle === '传输域' ? 1 : 2);
+ this.slicingSubnet[index].params = params
+ }
+
handleCancel() {
this.showDetail = false;
this.cancel.emit(this.showDetail);
}
handleOk() {
- this.handleCancel();
- // 对应操作逻辑未编写
-
+ const { selectedServiceId, selectedServiceName, slicingSubnet, checkDetail, businessRequirement, NSTinfo } = this;
+ const nsi_nssi_info: object = {
+ suggest_nsi_id: selectedServiceId,
+ suggest_nsi_name: selectedServiceName,
+ an_suggest_nssi_id: slicingSubnet[0].slicingId,
+ an_suggest_nssi_name: slicingSubnet[0].slicingName,
+ ...slicingSubnet[0].params,
+ tn_suggest_nssi_id: slicingSubnet[1].slicingId,
+ tn_suggest_nssi_name: slicingSubnet[1].slicingName,
+ ...slicingSubnet[1].params,
+ cn_suggest_nssi_id: slicingSubnet[2].slicingId,
+ cn_suggest_nssi_name: slicingSubnet[2].slicingName,
+ ...slicingSubnet[2].params,
+ }
+ let reqBody = {...checkDetail[0], business_demand_info: businessRequirement[0], nst_info: NSTinfo[0], nsi_nssi_info};
+ delete reqBody.service_snssai;
+ this.http.submitSlicing(reqBody).subscribe (res => {
+ const { result_header: { result_code } } = res;
+ if (+result_code === 200) {
+ console.log('成功提交')
+ this.handleCancel();
+ }
+ })
}
}
<div *ngIf="item.key === 'an_coverage_area_ta_list'">
<div *ngFor="let area of areaList; let i = index">
<nz-form-control [nzSpan]="4" [nzOffset]=" i && !ind ? 5 : 0" class="subnet_params_area" *ngFor="let item of area; let ind = index">
- <nz-select [(ngModel)]="item.selected" [name]="'areaList'+i+'_'+ind">
+ <nz-select [(ngModel)]="item.selected" [name]="'area' +i + ind" (nzOpenChange)="handleChange(area, item)" (ngModelChange)="handleChangeSelected(area,item)">
<nz-option [nzValue]="op.name" *ngFor="let op of item.options" [nzLabel]="op.name" ></nz-option>
</nz-select>
</nz-form-control>
- <button nz-button nzType="primary" nzSize="small" *ngIf="!i && !ind" class="subnet_params_button" (click)="creatAreaList()">
- <i nz-icon class="anticon anticon-plus subnet_params_icon"></i>
- </button>
+ <nz-form-control [nzSpan]="1" [nzOffset]="1">
+ <button nz-button nzType="primary" nzSize="small" class="subnet_params_button" *ngIf="!i" (click)="creatAreaList()">
+ <i nz-icon class="anticon anticon-plus subnet_params_icon"></i>
+ </button>
+ <button nz-button nzType="primary" nzSize="small" class="subnet_params_button" *ngIf="i" (click)="deleteAreaList(i)">
+ <i nz-icon class="anticon anticon-minus subnet_params_icon"></i>
+ </button>
+ </nz-form-control>
</div>
</div>
</nz-form-item>
</form>
<form nz-form *ngIf="title === '核心域'">
- <nz-form-item *ngFor="let item of coreFormItems">
- <nz-form-label [nzSpan]="10" nzRequired [nzFor]="item.key">{{item.title}}</nz-form-label>
- <nz-form-control [nzSpan]="10">
- <input nz-input [(ngModel)]="detailData[item.key]" [name]="item.key" [id]="item.key"/>
- </nz-form-control>
- </nz-form-item>
- </form>
+ <nz-form-item *ngFor="let item of coreFormItems">
+ <nz-form-label [nzSpan]="10" nzRequired [nzFor]="item.key">{{item.title}}</nz-form-label>
+ <nz-form-control [nzSpan]="10" >
+ <input nz-input [(ngModel)]="detailData[item.key]" [name]="item.key" [id]="item.key" [readOnly]="item.title === 'S-NSSAI'" *ngIf="item.title !== '共享等级' && item.title !== '游牧性'"/>
+ <nz-radio-group [name]="item.key" [(ngModel)]="detailData[item.key]" *ngIf="item.title === '共享等级'">
+ <label nz-radio [nzValue]="option.key" *ngFor="let option of item.options">{{option.title}}</label>
+ </nz-radio-group>
+ <nz-select [name]="item.key" [(ngModel)]="detailData[item.key]" *ngIf=" item.title === '游牧性'">
+ <nz-option [nzValue]="option.key" *ngFor="let option of item.options" [nzLabel]="option.title"></nz-option>
+ </nz-select>
+ </nz-form-control>
+
+ </nz-form-item>
+ </form>
</div>
</nz-modal>
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
-import { WIRELESS_FORM_ITEMS, TRANSFRER_FORM_ITEMS, CORE_FORM_ITEMS } from '../.../../../../../../../../constants/constants'
+import { WIRELESS_FORM_ITEMS, TRANSFRER_FORM_ITEMS, CORE_FORM_ITEMS, ADDRESS } from '../.../../../../../../../../constants/constants'
@Component({
selector: 'app-subnet-params-model',
@Input() detailData: any;
@Input() title: string;
@Output() cancel = new EventEmitter<boolean>();
+ @Output() paramsDataChange = new EventEmitter<any>();
transferFormItems = TRANSFRER_FORM_ITEMS;
coreFormItems = CORE_FORM_ITEMS;
let areaList = [...this.detailData.an_coverage_area_ta_list];
this.areaList = areaList.map ( (item: any) => {
let arr = item.split(';');
- item = arr.map( ite => {
- let obj: any = {};
+ item = arr.map( (ite, index) => {
+ let key: string;
+ if (!index) {
+ key = 'province';
+ } else if (index === 1){
+ key = 'city'
+ } else {
+ key = 'district'
+ }
+ const obj: any = {};
+ obj.key = key;
obj.selected = ite
obj.options = [{name: ite, id: ite}]
return obj
})
}
- creatAreaList () {
-
+ creatAreaList (): void {
+ let arr = [
+ {
+ key: 'province',
+ selected: '',
+ options: []
+ },
+ {
+ key: 'city',
+ selected: '',
+ options: []
+ },
+ {
+ key: 'district',
+ selected: '',
+ options: []
+ }
+ ]
+ this.areaList.push(arr)
+ }
+
+ deleteAreaList (index: number): void {
+ this.areaList.splice(index,1);
+ }
+
+ handleChange(area: any[], areaItem: any): void{
+ if (areaItem.key === 'province' && areaItem.options.length <= 1) {
+ areaItem.options = ADDRESS;
+ } else if (areaItem.key === 'city' && areaItem.options.length <= 1) {
+ ADDRESS.forEach( item => {
+ if(item.name === area[0].selected) {
+ areaItem.options = item.city;
+ }
+ })
+ }else if (areaItem.key === 'district' && areaItem.options.length <= 1) {
+ ADDRESS.forEach( (item: any) => {
+ item.city.forEach(city => {
+ if (city.name === area[1].selected) {
+ areaItem.options = city.county;
+ }
+ })
+ })
+ }
+ }
+
+ handleChangeSelected(area: any[], areaItem: any) {
+ if (areaItem.key === 'province') {
+ area[1].selected = ''
+ area[1].options = [];
+ area[2].selected = '';
+ area[2].options = [];
+ } else if (areaItem.key === 'city') {
+ area[2].selected = '';
+ area[2].options = [];
+ }
}
handleCancel() {
}
handleOk(): void {
+ let params: object;
+ if (this.title === '无线域') {
+ const an_coverage_area_ta_list: string[] = [];
+ this.areaList.forEach( item => {
+ let str: string = '';
+ item.forEach( area => {
+ str += area.selected + ';';
+ })
+ an_coverage_area_ta_list.push(str.substring(0, str.length-1));
+ })
+ params = {...this.detailData, an_coverage_area_ta_list}
+ } else {
+ params = {...this.detailData}
+ }
+ this.paramsDataChange.emit(params)
this.handleCancel()
}
]\r
\r
export const BUSINESS_REQUIREMENT = [\r
- {\r
- title: '切片业务名称',\r
- key: 'service_name'\r
- },\r
- {\r
- title: 'S-NSSAI',\r
- key: 'service_snssai'\r
- },\r
- {\r
- title: '用户下行带宽(Mbps)',\r
- key: 'exp_data_rate_dl'\r
- },\r
- {\r
- title: '用户上行带宽(Mbps)',\r
- key: 'exp_data_rate_u'\r
- },\r
- {\r
- title: '游牧性',\r
- key: 'ue_mobility_level'\r
- },\r
- {\r
- title: '时延(ms)',\r
- key: 'latency'\r
- },\r
- {\r
- title: '使用期限(月)',\r
- key: 'use_interval'\r
- },\r
- {\r
- title: '区域',\r
- key: 'coverage_area_ta_list'\r
- },\r
- {\r
- title: '激活因子(%)',\r
- key: 'activity_factor'\r
- },\r
- {\r
- title: '共享等级',\r
- key: 'resource_sharing_level'\r
- },\r
- {\r
- title: '上行区域流量密度(Mbps/km )',\r
- key: 'area_traffic_cap_ul'\r
- },\r
- {\r
- title: '连接规模数',\r
- key: 'max_number_of_ues'\r
- },\r
- {\r
- title: '下行区域流量密度(Mbps/km )',\r
- key: 'area_traffic_cap_dl'\r
- }\r
-] \r
-\r
-export const WIRELESS_FORM_ITEMS = [\r
- {\r
- title: '时延(ms)',\r
- key: 'an_latency'\r
- },\r
- {\r
- title: '5QI',\r
- key: 'an_5qi'\r
- },\r
- {\r
- title: '覆盖小区列表',\r
- key: 'an_coverage_area_ta_list'\r
- }\r
-]\r
-\r
-export const TRANSFRER_FORM_ITEMS = [\r
- {\r
- title: '时延(ms)',\r
- key: 'tn_latency'\r
- },\r
- {\r
- title: '带宽',\r
- key: 'tn_bandwidth'\r
- }\r
-]\r
-\r
-export const CORE_FORM_ITEMS = [\r
[\r
{\r
title: '切片业务名称',\r
title: '使用期限(月)',\r
key: 'use_interval'\r
},\r
- \r
+\r
{\r
title: '激活因子(%)',\r
key: 'activity_factor'\r
title: '区域',\r
key: 'coverage_area_ta_list'\r
},\r
- ]\r
+ ],\r
+ \r
+ \r
+] \r
+\r
+export const WIRELESS_FORM_ITEMS = [\r
+ {\r
+ title: '时延(ms)',\r
+ key: 'an_latency'\r
+ },\r
+ {\r
+ title: '5QI',\r
+ key: 'an_5qi'\r
+ },\r
+ {\r
+ title: '覆盖小区列表',\r
+ key: 'an_coverage_area_ta_list'\r
+ }\r
+]\r
+\r
+export const TRANSFRER_FORM_ITEMS = [\r
+ {\r
+ title: '时延(ms)',\r
+ key: 'tn_latency'\r
+ },\r
+ {\r
+ title: '带宽',\r
+ key: 'tn_bandwidth'\r
+ }\r
+]\r
+\r
+export const CORE_FORM_ITEMS = [\r
+ {\r
+ title: 'S-NSSAI',\r
+ key: 'cn_service_snssai'\r
+ },\r
+ {\r
+ title: '共享等级',\r
+ key: 'cn_resource_sharing_level',\r
+ options: [\r
+ {\r
+ title: '共享',\r
+ key: 'shared'\r
+ },\r
+ {\r
+ title: '独享',\r
+ key: 'no-shared'\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ title: '游牧性',\r
+ key: 'cn_ue_mobility_level',\r
+ options: [\r
+ {\r
+ title: '不可游牧',\r
+ key: 'stageary'\r
+ },\r
+ {\r
+ title: '固定接入',\r
+ key: 'nomadic'\r
+ },\r
+ {\r
+ title: '限定范围内可游牧',\r
+ key: 'spatially restricted mobility'\r
+ },\r
+ {\r
+ title: '自由游牧',\r
+ key: 'fully mobility'\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ title: '时延(ms)',\r
+ key: 'cn_latency'\r
+ },\r
+ {\r
+ title: '连接规模数',\r
+ key: 'cn_max_number_of_ues'\r
+ },\r
+ {\r
+ title: '活动因子(%)',\r
+ key: 'cn_activity_factor'\r
+ },\r
+ {\r
+ title: '用户下行体验速率(Mbps)',\r
+ key: 'cn_exp_data_rate_dl'\r
+ },\r
+ {\r
+ title: '用户上行体验速率(Mbps)',\r
+ key: 'cn_exp_data_rate_ul'\r
+ },\r
+ {\r
+ title: '下行区域流量密度(Mbps/km )',\r
+ key: 'cn_area_traffic_cap_dl'\r
+ },\r
+ {\r
+ title: '下行区域流量密度(Mbps/km )',\r
+ key: 'cn_area_traffic_cap_ul'\r
+ }\r
]\r
\r
-export const ADDRESS = {\r
- "result_header": {\r
- "result_code": 200,\r
- "result_message": "Successfully"\r
- },\r
- \r
- "result_body": {\r
- "province": [\r
- {\r
- "id": "1",\r
- "name": "北京",\r
- "city": [\r
- {\r
- "id": "101",\r
- "name": "北京市",\r
- "county": [\r
- {\r
- "id": "1001",\r
- "name": "海淀区",\r
- "street": [\r
- {\r
- "id": "100101",\r
- "name": "万寿路街道"\r
- },\r
- {\r
- "id": "100102",\r
- "name": "中关村街道"\r
- },\r
- {\r
- "id": "100103",\r
- "name": "海淀街道"\r
- },\r
- {\r
- "id": "100104",\r
- "name": "西三旗街道"\r
- }\r
- ]\r
- },\r
- {\r
- "id": "1002",\r
- "name": "西城区",\r
- "street": [\r
- {\r
- "id": "100201",\r
- "name": "广安门内街道"\r
- },\r
- {\r
- "id": "100202",\r
- "name": "广安门外街道"\r
- },\r
- {\r
- "id": "100203",\r
- "name": "西长安街街道"\r
- },\r
- {\r
- "id": "100204",\r
- "name": "金融街街道"\r
- }\r
- ]\r
- },\r
- {\r
- "id": "1003",\r
- "name": "昌平区",\r
- "street": [\r
- {\r
- "id": "100301",\r
- "name": "城北街道"\r
- },\r
- {\r
- "id": "100302",\r
- "name": "城南街道"\r
- },\r
- {\r
- "id": "100303",\r
- "name": "天通苑北街道"\r
- },\r
- {\r
- "id": "100304",\r
- "name": "天通苑南街道"\r
- }\r
- ]\r
- }\r
- ]\r
- }\r
- ]\r
- },\r
- {\r
- "id": "2",\r
- "name": "上海",\r
- "city": [{\r
- "id": "201",\r
- "name": "上海市",\r
- "county": [{\r
- "id": "2001",\r
- "name": "浦东新区",\r
- "street": [\r
- {\r
- "id": "200101",\r
- "name": "陆家嘴街道"\r
- },\r
- {\r
- "id": "200102",\r
- "name": "周家渡街道"\r
- },\r
- {\r
- "id": "200103",\r
- "name": "塘桥街道"\r
- },\r
- {\r
- "id": "200104",\r
- "name": "南码头路街道"\r
- }\r
- ]\r
- },\r
- {\r
- "id": "2002",\r
- "name": "静安区",\r
- "street": [\r
- {\r
- "id": "200201",\r
- "name": "江宁路街道"\r
- },\r
- {\r
- "id": "200202",\r
- "name": "静安寺街道"\r
- },\r
- {\r
- "id": "200203",\r
- "name": "南京西路街道"\r
- },\r
- {\r
- "id": "200204",\r
- "name": "曹家渡街道"\r
- }\r
- ]\r
- }\r
- ]\r
- }]\r
- }\r
- ]\r
- }\r
-}\r
+export const ADDRESS = [\r
+ {\r
+ "id": "1",\r
+ "name": "北京",\r
+ "city": [\r
+ {\r
+ "id": "101",\r
+ "name": "北京市",\r
+ "county": [\r
+ {\r
+ "id": "1001",\r
+ "name": "海淀区",\r
+ },\r
+ {\r
+ "id": "1002",\r
+ "name": "西城区",\r
+ },\r
+ {\r
+ "id": "1003",\r
+ "name": "昌平区"\r
+ }\r
+ ]\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "id": "2",\r
+ "name": "上海",\r
+ "city": [{\r
+ "id": "201",\r
+ "name": "上海市",\r
+ "county": [\r
+ {\r
+ "id": "2001",\r
+ "name": "浦东新区",\r
+ },\r
+ {\r
+ "id": "2002",\r
+ "name": "静安区"\r
+ }\r
+ ]\r
+ }]\r
+ }\r
+]\r
export const BUSINESS_STATUS = [\r
- "All","activated","deactivated"\r
+ "All", "activated", "deactivated"\r
]
\ No newline at end of file