diff --git a/src/views/ne/neConfPara5G/index.vue b/src/views/ne/neConfPara5G/index.vue index 9a2ec169..9757dbd7 100644 --- a/src/views/ne/neConfPara5G/index.vue +++ b/src/views/ne/neConfPara5G/index.vue @@ -4,7 +4,7 @@ import { PageContainer } from 'antdv-pro-layout'; import { message } from 'ant-design-vue/lib'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import useI18n from '@/hooks/useI18n'; -import { getPara5GFilee, savePara5GFile } from '@/api/ne/neInfo'; +import { getPara5GFilee, listNeInfo, savePara5GFile } from '@/api/ne/neInfo'; import useNeInfoStore from '@/store/modules/neinfo'; const { t } = useI18n(); @@ -32,29 +32,50 @@ let state: StateType = reactive({ syncNe: [], syncMsg: '', from: { - basic: { - dnn_data: 'internet', - dnn_ims: 'ims', - oamEnable: true, - plmnId: { - mcc: '001', - mnc: '01', - }, - snmpEnable: false, - snssai: { - sd: '000001', - sst: '1', - }, - tac: 4388, - }, - external: { - amfn2_ip: '192.168.8.120', - ue_pool: '10.2.1.0/24', - upfn3_gw: '192.168.1.1', - upfn3_ip: '192.168.8.190/24', - upfn6_gw: '192.168.1.1', - upfn6_ip: '192.168.8.191/24', - }, + SIPIP: '192.168.5.90', + N2IP: '192.168.5.90', + + OMCIP: '172.60.5.100', + AMFIP: '172.60.5.120', + AUSFIP: '172.60.5.130', + UDMIP: '172.60.5.140', + SMFIP: '172.60.5.150', + PCFIP: '172.60.5.160', + NSSFIP: '172.60.5.170', + NRFIP: '172.60.5.180', + UPFIP: '172.60.5.190', + ADBIP: '172.60.5.140', + IMSIP: '172.60.5.110', + + S1_MMEIP: '192.168.5.90', + S20_MMEIP: '172.60.5.220', + S21_MMEIP: '172.60.5.221', + + LTETAC: '88', + MCC: '460', + MNC: '00', + SST: '1', + SD: '010204', + DNN: 'cmnet', + + NRTAC: '88', + KPI_TIMER: '60', // KPI上报周期秒 + + UPFType: 'Light', // UPF类型 Standard标准版 Light轻量版 + UEIP: '10.10.40.0', + UEIPMask: '255.255.255.0', + + N3IP: '192.168.5.191', + N3Mask: '255.255.240.0', + N3GW: '192.168.1.1', + N3PCI: '0000:13:00.0', + N3MAC: '00:0c:29:10:ac:d7', + + N6IP: '192.168.5.191', + N6Mask: '255.255.240.0', + N6GW: '192.168.1.1', + N6PCI: '0000:1b:00.0', + N6MAC: '00:0c:29:10:ac:e1', }, confirmLoading: false, }); @@ -84,6 +105,7 @@ function fnModalCancel() { state.visible = false; state.sync = false; state.syncNe = []; + state.syncMsg = ''; } /**保存文件数据*/ @@ -93,17 +115,58 @@ function fnSaveData() { /**获取文件数据*/ function fnGetData() { - if (state.confirmLoading) return; state.confirmLoading = true; - getPara5GFilee() - .then(res => { - if (typeof res.data === 'object') { - Object.assign(state.from, res.data); + Promise.all([ + getPara5GFilee(), + listNeInfo({ + pageNum: 1, + pageSize: 20, + }), + ]).then(resArr => { + // 已保存的配置 + if (resArr[0].code === RESULT_CODE_SUCCESS) { + state.from = resArr[0].data; + } + // 填充固定网元类型的ip + if ( + resArr[1].code === RESULT_CODE_SUCCESS && + Array.isArray(resArr[1].rows) + ) { + for (const item of resArr[1].rows) { + switch (item.neType) { + case 'AMF': + state.from.AMFIP = item.ip; + break; + case 'AUSF': + state.from.AUSFIP = item.ip; + break; + case 'UDM': + state.from.UDMIP = item.ip; + state.from.ADBIP = item.ip; + break; + case 'SMF': + state.from.SMFIP = item.ip; + break; + case 'PCF': + state.from.PCFIP = item.ip; + break; + case 'NSSF': + state.from.NSSFIP = item.ip; + break; + case 'NRF': + state.from.NRFIP = item.ip; + break; + case 'UPF': + state.from.UPFIP = item.ip; + break; + case 'IMS': + state.from.IMSIP = item.ip; + break; + } } - }) - .finally(() => { - state.confirmLoading = false; - }); + } + state.confirmLoading = false; + }); } onMounted(() => { @@ -165,114 +228,111 @@ onMounted(() => { :label-col="{ span: 6 }" :label-wrap="true" > - Basic Data + Basic - + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + OMC + + + + + + + + + + { - External Data + MME - + + + + - + + + + + { - - - + + UPF + + + + - - - - - - - - - - - - - - - - - - - + + Standard + + + Light + + + + + + diff --git a/src/views/system/quick-start/components/NeInfoConfigPara5G.vue b/src/views/system/quick-start/components/NeInfoConfigPara5G.vue index 6692f430..142d27ee 100644 --- a/src/views/system/quick-start/components/NeInfoConfigPara5G.vue +++ b/src/views/system/quick-start/components/NeInfoConfigPara5G.vue @@ -3,19 +3,16 @@ import { Modal, message } from 'ant-design-vue/lib'; import { onMounted, reactive, toRaw } from 'vue'; import { fnToStepName } from '../hooks/useStep'; import useI18n from '@/hooks/useI18n'; -import { savePara5GFile } from '@/api/ne/neInfo'; +import { listNeInfo, getPara5GFilee, savePara5GFile } from '@/api/ne/neInfo'; +import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; const { t } = useI18n(); /**对象信息信息状态类型 */ type StateType = { - /**保存选择同步到网元窗 */ - visible: boolean; - /**网元选择 */ - neSelectOtions: any[]; - /**同步到网元 */ - sync: boolean; - syncNe: string[]; - syncMsg: string; + /**加载等待 */ + loading: boolean; + /**保存文件标记 */ + saveFile: boolean; /**表单数据 */ from: Record; /**确定按钮 loading */ @@ -24,35 +21,53 @@ type StateType = { /**对象信息状态 */ let state: StateType = reactive({ - visible: false, - neSelectOtions: [], - sync: false, - syncNe: [], - syncMsg: '', + loading: false, + saveFile: false, from: { - basic: { - dnn_data: 'internet', - dnn_ims: 'ims', - oamEnable: true, - plmnId: { - mcc: '001', - mnc: '01', - }, - snmpEnable: false, - snssai: { - sd: '000001', - sst: '1', - }, - tac: 4388, - }, - external: { - amfn2_ip: '192.168.8.120', - ue_pool: '10.2.1.0/24', - upfn3_gw: '192.168.1.1', - upfn3_ip: '192.168.8.190/24', - upfn6_gw: '192.168.1.1', - upfn6_ip: '192.168.8.191/24', - }, + SIPIP: '192.168.5.90', + N2IP: '192.168.5.90', + + OMCIP: '172.60.5.100', + AMFIP: '172.60.5.120', + AUSFIP: '172.60.5.130', + UDMIP: '172.60.5.140', + SMFIP: '172.60.5.150', + PCFIP: '172.60.5.160', + NSSFIP: '172.60.5.170', + NRFIP: '172.60.5.180', + UPFIP: '172.60.5.190', + ADBIP: '172.60.5.140', + IMSIP: '172.60.5.110', + + S1_MMEIP: '192.168.5.90', + S20_MMEIP: '172.60.5.220', + S21_MMEIP: '172.60.5.221', + + LTETAC: '88', + MCC: '460', + MNC: '00', + SST: '1', + SD: '010204', + DNN: 'cmnet', + + NRTAC: '88', + KPI_TIMER: '60', // KPI上报周期秒 + + UPFType: 'Light', // UPF类型 Standard标准版 Light轻量版 + UEIP: '10.10.40.0', + UEIPMask: '255.255.255.0', + + N3IP: '192.168.5.191', + N3Mask: '255.255.240.0', + N3GW: '192.168.1.1', + N3PCI: '0000:13:00.0', + N3MAC: '00:0c:29:10:ac:d7', + + N6IP: '192.168.5.191', + N6Mask: '255.255.240.0', + N6GW: '192.168.1.1', + N6PCI: '0000:1b:00.0', + N6MAC: '00:0c:29:10:ac:e1', }, confirmLoading: false, }); @@ -64,13 +79,14 @@ function fnSave() { savePara5GFile({ fileType: 'yaml', content: toRaw(state.from), - syncNe: state.sync ? state.syncNe : [], + syncNe: [], }) .then(res => { - if (state.sync) { - state.syncMsg = res.msg; - } else { + if (res.code === RESULT_CODE_SUCCESS) { message.success('Save Success'); + state.saveFile = true; + } else { + message.warning(res.nsg); } }) .finally(() => { @@ -78,6 +94,62 @@ function fnSave() { }); } +/**获取网元列表填充IP */ +function fnGetList() { + state.loading = true; + Promise.all([ + getPara5GFilee(), + listNeInfo({ + pageNum: 1, + pageSize: 20, + }), + ]).then(resArr => { + // 已保存的配置 + if (resArr[0].code === RESULT_CODE_SUCCESS) { + state.from = resArr[0].data; + } + // 填充固定网元类型的ip + if ( + resArr[1].code === RESULT_CODE_SUCCESS && + Array.isArray(resArr[1].rows) + ) { + for (const item of resArr[1].rows) { + switch (item.neType) { + case 'AMF': + state.from.AMFIP = item.ip; + break; + case 'AUSF': + state.from.AUSFIP = item.ip; + break; + case 'UDM': + state.from.UDMIP = item.ip; + state.from.ADBIP = item.ip; + break; + case 'SMF': + state.from.SMFIP = item.ip; + break; + case 'PCF': + state.from.PCFIP = item.ip; + break; + case 'NSSF': + state.from.NSSFIP = item.ip; + break; + case 'NRF': + state.from.NRFIP = item.ip; + break; + case 'UPF': + state.from.UPFIP = item.ip; + break; + case 'IMS': + state.from.IMSIP = item.ip; + break; + } + } + } + state.loading = false; + }); +} + /**返回上一步 */ function fnStepPrev() { Modal.confirm({ @@ -101,202 +173,342 @@ function fnStepNext(stepName: 'NeInfoSoftwareInstall') { }); } } + +onMounted(() => { + fnGetList(); +});