From 6077654ad074c2c07acf1434dfdec2fc5abd17d9 Mon Sep 17 00:00:00 2001 From: cyuamber Date: Thu, 5 Dec 2019 14:33:09 +0800 Subject: feat: Completed the submit function in the task processing dialog Change-Id: I2ab002ce9876687921684f4834908701d98b0d1e Issue-ID: USECASEUI-352 Signed-off-by: cyuamber --- .../src/app/core/services/slicingTaskServices.ts | 4 + .../src/app/mock/json/PUT_task_auditInfo.json | 7 + .../slicing-task-model.component.html | 10 +- .../slicing-task-model.component.ts | 49 ++- .../subnet-params-model.component.html | 34 +- .../subnet-params-model.component.ts | 88 ++++- usecaseui-portal/src/constants/constants.ts | 372 ++++++++------------- 7 files changed, 312 insertions(+), 252 deletions(-) create mode 100644 usecaseui-portal/src/app/mock/json/PUT_task_auditInfo.json (limited to 'usecaseui-portal') diff --git a/usecaseui-portal/src/app/core/services/slicingTaskServices.ts b/usecaseui-portal/src/app/core/services/slicingTaskServices.ts index fffa5801..44d87cc5 100644 --- a/usecaseui-portal/src/app/core/services/slicingTaskServices.ts +++ b/usecaseui-portal/src/app/core/services/slicingTaskServices.ts @@ -28,6 +28,7 @@ export class SlicingTaskServices { slicingInstance: this.baseUrl + '/resource/nsi/instances/pageNo/{pageNo}/pageSize/{pageSize}', slicingSubnetInstance: this.baseUrl + '/resource/nsi/{nsiId}/nssiInstances', subnetInContext: this.baseUrl + '/resource/nssi/{environmentContext}/instances/pageNo/{pageNo}/pageSize/{pageSize}', + submitSlicing: this.baseUrl + '/task/auditInfo', //slicing-business-management slicingBusinessList:this.baseUrl+"/resource/business/pageNo/{pageNo}/pageSize/{pageSize}", slicingBusinesQueryOfStatus:this.baseUrl+"/resource/{businessStatus}/business/pageNo/{pageNo}/pageSize/{pageSize}", @@ -76,6 +77,9 @@ export class SlicingTaskServices { .replace('{pageSize}', pageSize); return this.http.get(url); } + submitSlicing (reqbody) { + return this.http.put(this.url.submitSlicing, reqbody) + } // Get slicing business list getSlicingBusinessList (paramsObj,isSelect: boolean) { diff --git a/usecaseui-portal/src/app/mock/json/PUT_task_auditInfo.json b/usecaseui-portal/src/app/mock/json/PUT_task_auditInfo.json new file mode 100644 index 00000000..75555639 --- /dev/null +++ b/usecaseui-portal/src/app/mock/json/PUT_task_auditInfo.json @@ -0,0 +1,7 @@ +{ + "result_header": { + "result_code": "200", + "result_message": "Operation result message." + }, + "result_body": {} +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/slicing-task-model.component.html b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/slicing-task-model.component.html index e2c5561e..6c2560ac 100644 --- a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/slicing-task-model.component.html +++ b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/slicing-task-model.component.html @@ -99,7 +99,13 @@ - + + \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/slicing-task-model.component.ts b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/slicing-task-model.component.ts index 5e6fd988..d9c1ec34 100644 --- a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/slicing-task-model.component.ts +++ b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/slicing-task-model.component.ts @@ -18,9 +18,9 @@ export class SlicingTaskModelComponent implements OnInit { // 业务需求列表 businessList: object[] = BUSINESS_REQUIREMENT; // 配置审核详情 - checkDetail: object[] = [{}]; + checkDetail: any[] = [{}]; //业务需求信息 - businessRequirement: object[] = [{}]; + businessRequirement: any[] = []; //匹配NST信息 NSTinfo: object[] = [{}]; // 共享切片实例 @@ -70,7 +70,15 @@ export class SlicingTaskModelComponent implements OnInit { 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, @@ -97,9 +105,10 @@ export class SlicingTaskModelComponent implements OnInit { 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; @@ -216,7 +225,6 @@ export class SlicingTaskModelComponent implements OnInit { } restSubnetInstance (instance: any): void { - if (!this.isDisabled) return; instance.slicingId = ''; instance.slicingName = ''; } @@ -227,13 +235,38 @@ export class SlicingTaskModelComponent implements OnInit { 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(); + } + }) } } diff --git a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.html b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.html index 4d8e54b2..1dfc6338 100644 --- a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.html +++ b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.html @@ -9,13 +9,18 @@
- + - + + + +
@@ -30,13 +35,20 @@
- - {{item.title}} - - - - -
+ + {{item.title}} + + + + + + + + + + + + diff --git a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.ts b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.ts index 1a3a194e..92c50d15 100644 --- a/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.ts +++ b/usecaseui-portal/src/app/views/services/slicing-management/slicing-task-management/slicing-task-model/subnet-params-model/subnet-params-model.component.ts @@ -1,5 +1,5 @@ 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', @@ -12,6 +12,7 @@ export class SubnetParamsModelComponent implements OnInit { @Input() detailData: any; @Input() title: string; @Output() cancel = new EventEmitter(); + @Output() paramsDataChange = new EventEmitter(); transferFormItems = TRANSFRER_FORM_ITEMS; coreFormItems = CORE_FORM_ITEMS; @@ -32,8 +33,17 @@ export class SubnetParamsModelComponent implements OnInit { 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 @@ -42,8 +52,61 @@ export class SubnetParamsModelComponent implements OnInit { }) } - 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() { @@ -52,6 +115,21 @@ export class SubnetParamsModelComponent implements OnInit { } 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() } diff --git a/usecaseui-portal/src/constants/constants.ts b/usecaseui-portal/src/constants/constants.ts index d4a91ea1..e8ab5c48 100644 --- a/usecaseui-portal/src/constants/constants.ts +++ b/usecaseui-portal/src/constants/constants.ts @@ -18,87 +18,6 @@ export const TASK_PROCESSING_STATUS = [ ] export const BUSINESS_REQUIREMENT = [ - { - title: '切片业务名称', - key: 'service_name' - }, - { - title: 'S-NSSAI', - key: 'service_snssai' - }, - { - title: '用户下行带宽(Mbps)', - key: 'exp_data_rate_dl' - }, - { - title: '用户上行带宽(Mbps)', - key: 'exp_data_rate_u' - }, - { - title: '游牧性', - key: 'ue_mobility_level' - }, - { - title: '时延(ms)', - key: 'latency' - }, - { - title: '使用期限(月)', - key: 'use_interval' - }, - { - title: '区域', - key: 'coverage_area_ta_list' - }, - { - title: '激活因子(%)', - key: 'activity_factor' - }, - { - title: '共享等级', - key: 'resource_sharing_level' - }, - { - title: '上行区域流量密度(Mbps/km )', - key: 'area_traffic_cap_ul' - }, - { - title: '连接规模数', - key: 'max_number_of_ues' - }, - { - title: '下行区域流量密度(Mbps/km )', - key: 'area_traffic_cap_dl' - } -] - -export const WIRELESS_FORM_ITEMS = [ - { - title: '时延(ms)', - key: 'an_latency' - }, - { - title: '5QI', - key: 'an_5qi' - }, - { - title: '覆盖小区列表', - key: 'an_coverage_area_ta_list' - } -] - -export const TRANSFRER_FORM_ITEMS = [ - { - title: '时延(ms)', - key: 'tn_latency' - }, - { - title: '带宽', - key: 'tn_bandwidth' - } -] - -export const CORE_FORM_ITEMS = [ [ { title: '切片业务名称', @@ -132,7 +51,7 @@ export const CORE_FORM_ITEMS = [ title: '使用期限(月)', key: 'use_interval' }, - + { title: '激活因子(%)', key: 'activity_factor' @@ -161,151 +80,152 @@ export const CORE_FORM_ITEMS = [ title: '区域', key: 'coverage_area_ta_list' }, - ] + ], + + +] + +export const WIRELESS_FORM_ITEMS = [ + { + title: '时延(ms)', + key: 'an_latency' + }, + { + title: '5QI', + key: 'an_5qi' + }, + { + title: '覆盖小区列表', + key: 'an_coverage_area_ta_list' + } +] + +export const TRANSFRER_FORM_ITEMS = [ + { + title: '时延(ms)', + key: 'tn_latency' + }, + { + title: '带宽', + key: 'tn_bandwidth' + } +] + +export const CORE_FORM_ITEMS = [ + { + title: 'S-NSSAI', + key: 'cn_service_snssai' + }, + { + title: '共享等级', + key: 'cn_resource_sharing_level', + options: [ + { + title: '共享', + key: 'shared' + }, + { + title: '独享', + key: 'no-shared' + } + ] + }, + { + title: '游牧性', + key: 'cn_ue_mobility_level', + options: [ + { + title: '不可游牧', + key: 'stageary' + }, + { + title: '固定接入', + key: 'nomadic' + }, + { + title: '限定范围内可游牧', + key: 'spatially restricted mobility' + }, + { + title: '自由游牧', + key: 'fully mobility' + } + ] + }, + { + title: '时延(ms)', + key: 'cn_latency' + }, + { + title: '连接规模数', + key: 'cn_max_number_of_ues' + }, + { + title: '活动因子(%)', + key: 'cn_activity_factor' + }, + { + title: '用户下行体验速率(Mbps)', + key: 'cn_exp_data_rate_dl' + }, + { + title: '用户上行体验速率(Mbps)', + key: 'cn_exp_data_rate_ul' + }, + { + title: '下行区域流量密度(Mbps/km )', + key: 'cn_area_traffic_cap_dl' + }, + { + title: '下行区域流量密度(Mbps/km )', + key: 'cn_area_traffic_cap_ul' + } ] -export const ADDRESS = { - "result_header": { - "result_code": 200, - "result_message": "Successfully" - }, - - "result_body": { - "province": [ - { - "id": "1", - "name": "北京", - "city": [ - { - "id": "101", - "name": "北京市", - "county": [ - { - "id": "1001", - "name": "海淀区", - "street": [ - { - "id": "100101", - "name": "万寿路街道" - }, - { - "id": "100102", - "name": "中关村街道" - }, - { - "id": "100103", - "name": "海淀街道" - }, - { - "id": "100104", - "name": "西三旗街道" - } - ] - }, - { - "id": "1002", - "name": "西城区", - "street": [ - { - "id": "100201", - "name": "广安门内街道" - }, - { - "id": "100202", - "name": "广安门外街道" - }, - { - "id": "100203", - "name": "西长安街街道" - }, - { - "id": "100204", - "name": "金融街街道" - } - ] - }, - { - "id": "1003", - "name": "昌平区", - "street": [ - { - "id": "100301", - "name": "城北街道" - }, - { - "id": "100302", - "name": "城南街道" - }, - { - "id": "100303", - "name": "天通苑北街道" - }, - { - "id": "100304", - "name": "天通苑南街道" - } - ] - } - ] - } - ] - }, - { - "id": "2", - "name": "上海", - "city": [{ - "id": "201", - "name": "上海市", - "county": [{ - "id": "2001", - "name": "浦东新区", - "street": [ - { - "id": "200101", - "name": "陆家嘴街道" - }, - { - "id": "200102", - "name": "周家渡街道" - }, - { - "id": "200103", - "name": "塘桥街道" - }, - { - "id": "200104", - "name": "南码头路街道" - } - ] - }, - { - "id": "2002", - "name": "静安区", - "street": [ - { - "id": "200201", - "name": "江宁路街道" - }, - { - "id": "200202", - "name": "静安寺街道" - }, - { - "id": "200203", - "name": "南京西路街道" - }, - { - "id": "200204", - "name": "曹家渡街道" - } - ] - } - ] - }] - } - ] - } -} +export const ADDRESS = [ + { + "id": "1", + "name": "北京", + "city": [ + { + "id": "101", + "name": "北京市", + "county": [ + { + "id": "1001", + "name": "海淀区", + }, + { + "id": "1002", + "name": "西城区", + }, + { + "id": "1003", + "name": "昌平区" + } + ] + } + ] + }, + { + "id": "2", + "name": "上海", + "city": [{ + "id": "201", + "name": "上海市", + "county": [ + { + "id": "2001", + "name": "浦东新区", + }, + { + "id": "2002", + "name": "静安区" + } + ] + }] + } +] export const BUSINESS_STATUS = [ - "All","activated","deactivated" + "All", "activated", "deactivated" ] \ No newline at end of file -- cgit 1.2.3-korg