From 543a2b74349a8395b422471f2bd7b2b17e727fc7 Mon Sep 17 00:00:00 2001
From: lai <371757574@qq.com>
Date: Mon, 29 Jul 2024 10:38:14 +0800
Subject: [PATCH 1/7] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E7=BB=9F=E4=B8=80?=
=?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=BD=91=E5=85=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../quick-start/components/NeInfoConfig.vue | 900 ++++++++++--------
1 file changed, 510 insertions(+), 390 deletions(-)
diff --git a/src/views/system/quick-start/components/NeInfoConfig.vue b/src/views/system/quick-start/components/NeInfoConfig.vue
index 70c8f07f..66e2359e 100644
--- a/src/views/system/quick-start/components/NeInfoConfig.vue
+++ b/src/views/system/quick-start/components/NeInfoConfig.vue
@@ -1,10 +1,11 @@
-
-
-
-
- {{ t('views.ne.neConfPara5G.headerTip') }}
-
- {{ t('views.ne.neConfPara5G.headerTipToPage') }}
-
-
-
-
-
-
-
-
-
-
-
- {{ t('views.ne.neConfPara5G.save') }}
-
-
-
- {{ t('views.ne.neConfPara5G.reload') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- + {{ omittedValues.length }} ...
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/ne/neConfPara5G/components/Para5GForm.vue b/src/views/ne/neQuickSetup/components/Para5GForm.vue
similarity index 98%
rename from src/views/ne/neConfPara5G/components/Para5GForm.vue
rename to src/views/ne/neQuickSetup/components/Para5GForm.vue
index 66ba7738..3189365f 100644
--- a/src/views/ne/neConfPara5G/components/Para5GForm.vue
+++ b/src/views/ne/neQuickSetup/components/Para5GForm.vue
@@ -1,5 +1,5 @@
diff --git a/src/views/ne/neQuickSetup/hooks/usePara5G.ts b/src/views/ne/neQuickSetup/hooks/usePara5G.ts
new file mode 100644
index 00000000..9e3bc050
--- /dev/null
+++ b/src/views/ne/neQuickSetup/hooks/usePara5G.ts
@@ -0,0 +1,139 @@
+import { onMounted, reactive, toRaw } from 'vue';
+import { getPara5GFilee, savePara5GFile, updateNeInfo } from '@/api/ne/neInfo';
+import useNeInfoStore from '@/store/modules/neinfo';
+import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
+
+/**对象信息信息状态类型 */
+type StateType = {
+ /**表单数据 */
+ from: Record;
+ /**OMC信息,需修改当前的IP */
+ omcInfo: Record;
+ /**根据网元显示配置项 */
+ hasNE: {
+ amf: boolean;
+ upf: boolean;
+ ims: boolean;
+ mme: boolean;
+ };
+ /**确定按钮 loading */
+ confirmLoading: boolean;
+};
+
+export function usePara5G({ t }: any) {
+ /**对象信息状态 */
+ let state: StateType = reactive({
+ from: {},
+ omcInfo: {},
+ hasNE: {
+ amf: false,
+ upf: false,
+ ims: false,
+ mme: false,
+ },
+ confirmLoading: false,
+ });
+
+ /**载入数据*/
+ function fnReloadData() {
+ state.confirmLoading = true;
+ Promise.all([getPara5GFilee(), useNeInfoStore().fnRefreshNelist()]).then(
+ resArr => {
+ // 已保存的配置
+ if (resArr[0].code === RESULT_CODE_SUCCESS) {
+ Object.assign(state.from, resArr[0].data);
+ }
+ // 填充固定网元类型的ip
+ if (
+ resArr[1].code === RESULT_CODE_SUCCESS &&
+ Array.isArray(resArr[1].data)
+ ) {
+ for (const item of resArr[1].data) {
+ // 公共配置文件sbi的各网元IP
+ switch (item.neType) {
+ case 'OMC':
+ // state.from.sbi.omc_ip = item.ip;
+ Object.assign(state.omcInfo, item); // 主动改OMC_IP
+ break;
+ case 'IMS':
+ state.from.sbi.ims_ip = item.ip;
+ state.hasNE.ims = true;
+ break;
+ case 'AMF':
+ state.from.sbi.amf_ip = item.ip;
+ state.hasNE.amf = true;
+ break;
+ case 'AUSF':
+ state.from.sbi.ausf_ip = item.ip;
+ break;
+ case 'UDM':
+ state.from.sbi.udm_ip = item.ip;
+ state.from.sbi.db_ip = '0.0.0.0';
+ break;
+ case 'SMF':
+ state.from.sbi.smf_ip = item.ip;
+ break;
+ case 'PCF':
+ state.from.sbi.pcf_ip = item.ip;
+ break;
+ case 'NSSF':
+ state.from.sbi.nssf_ip = item.ip;
+ break;
+ case 'NRF':
+ state.from.sbi.nrf_ip = item.ip;
+ break;
+ case 'UPF':
+ state.from.sbi.upf_ip = item.ip;
+ state.hasNE.upf = true;
+ break;
+ case 'LMF':
+ state.from.sbi.lmf_ip = item.ip;
+ break;
+ case 'NEF':
+ state.from.sbi.nef_ip = item.ip;
+ break;
+ case 'MME':
+ state.from.sbi.mme_ip = item.ip;
+ if (item.ip.includes('.')) {
+ state.from.external.mmes11_ip = item.ip + '/24';
+ }
+ state.hasNE.mme = true;
+ break;
+ case 'N3IWF':
+ state.from.sbi.n3iwf_ip = item.ip;
+ break;
+ }
+ }
+ }
+ state.confirmLoading = false;
+ }
+ );
+ }
+
+ /**保存数据 */
+ async function fnSaveData() {
+ if (state.confirmLoading) return;
+ state.confirmLoading = true;
+ const res = await savePara5GFile({
+ content: toRaw(state.from),
+ syncNe: [],
+ });
+ if (res.code === RESULT_CODE_SUCCESS) {
+ // 更新omc_ip
+ state.omcInfo.ip = state.from.sbi.omc_ip;
+ await updateNeInfo(toRaw(state.omcInfo));
+ }
+ state.confirmLoading = false;
+ return res;
+ }
+
+ onMounted(() => {
+ fnReloadData();
+ });
+
+ return {
+ state,
+ fnReloadData,
+ fnSaveData,
+ };
+}
diff --git a/src/views/ne/neQuickSetup/hooks/useStep.ts b/src/views/ne/neQuickSetup/hooks/useStep.ts
index 210cf113..ec20e2b6 100644
--- a/src/views/ne/neQuickSetup/hooks/useStep.ts
+++ b/src/views/ne/neQuickSetup/hooks/useStep.ts
@@ -1,4 +1,10 @@
-import { reactive } from 'vue';
+import {
+ defineAsyncComponent,
+ onMounted,
+ reactive,
+ shallowRef,
+ watch,
+} from 'vue';
/**步骤信息状态类型 */
type StepStateType = {
@@ -80,3 +86,26 @@ export function fnToStepName(stepName: string) {
stepState.stepName = stepName;
}
+
+export function useStep({ t }: any) {
+ // 异步加载组件
+ const Start = defineAsyncComponent(() => import('../components/Start.vue'));
+
+ // 当前组件
+ const currentComponent = shallowRef(Start);
+
+ watch(
+ () => stepState.stepName,
+ v => {
+ const loadComponent = defineAsyncComponent(
+ () => import(`../components/${v}.vue`)
+ );
+ currentComponent.value = loadComponent;
+ }
+ );
+
+ onMounted(() => {
+ fnRestStepState(t);
+ });
+ return { currentComponent };
+}
diff --git a/src/views/ne/neQuickSetup/index.vue b/src/views/ne/neQuickSetup/index.vue
index 6dec407e..6bb2c66c 100644
--- a/src/views/ne/neQuickSetup/index.vue
+++ b/src/views/ne/neQuickSetup/index.vue
@@ -1,34 +1,27 @@
-
+
@@ -46,6 +39,30 @@ onMounted(() => {
+
+
+
+
+
+
+
+ {{ t('views.ne.neQuickSetup.stepNext') }}
+
+
+
+ {{ t('views.ne.neQuickSetup.reloadPara5G') }}
+
+
+
+
diff --git a/src/views/system/quick-start/components/NeInfoConfigPara5G.vue b/src/views/system/quick-start/components/NeInfoConfigPara5G.vue
index 9268d8dd..99364ae3 100644
--- a/src/views/system/quick-start/components/NeInfoConfigPara5G.vue
+++ b/src/views/system/quick-start/components/NeInfoConfigPara5G.vue
@@ -10,7 +10,7 @@ import {
updateNeInfo,
} from '@/api/ne/neInfo';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
-import Para5GForm from '@/views/ne/neConfPara5G/components/Para5GForm.vue';
+import Para5GForm from '@/views/ne/neQuickSetup/components/Para5GForm.vue';
const { t } = useI18n();
/**对象信息信息状态类型 */
@@ -60,7 +60,7 @@ function fnSave() {
})
.then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
- message.success(t('views.ne.neConfPara5G.saveOk'));
+ message.success(t('views.system.quickStart.savePara5GOk'));
state.saveFile = true;
// 更新omc_ip
state.omcInfo.ip = state.from.sbi.omc_ip;
From 3c1ee63359ad87f252b4ef1e19d587260887f076 Mon Sep 17 00:00:00 2001
From: TsMask <340112800@qq.com>
Date: Tue, 30 Jul 2024 18:23:51 +0800
Subject: [PATCH 6/7] =?UTF-8?q?fix:=20=E5=BC=80=E7=AB=99=E7=BD=91=E5=85=83?=
=?UTF-8?q?=E5=AE=89=E8=A3=85=E4=BF=A1=E6=81=AF=E4=BF=9D=E5=AD=98=E8=A7=A6?=
=?UTF-8?q?=E5=8F=91=E6=93=8D=E4=BD=9C=E4=B8=8D=E4=B8=80=E8=87=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../system/quick-start/components/NeInfoConfig.vue | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/views/system/quick-start/components/NeInfoConfig.vue b/src/views/system/quick-start/components/NeInfoConfig.vue
index 66e2359e..cbe0b7d2 100644
--- a/src/views/system/quick-start/components/NeInfoConfig.vue
+++ b/src/views/system/quick-start/components/NeInfoConfig.vue
@@ -396,10 +396,6 @@ function fnStepPrev() {
/**下一步操作 先全部集体发过去请求新增 */
function fnStepNext(stepName: 'NeInfoConfigPara5G') {
- let promises = tabState.panes.map((item: any) => {
- return item.id ? updateNeInfo(item) : addNeInfo(item);
- });
-
if (stepName === 'NeInfoConfigPara5G') {
Modal.confirm({
title: t('common.tipTitle'),
@@ -408,9 +404,13 @@ function fnStepNext(stepName: 'NeInfoConfigPara5G') {
loading: tabState.confirmLoading,
},
onOk() {
- // 使用 Promise.allSettled 等待所有 Promise 完成
tabState.confirmLoading = true;
- Promise.allSettled(promises).finally(() => {
+ // 使用 Promise.allSettled 等待所有 Promise 完成
+ Promise.allSettled(
+ tabState.panes.map((item: any) =>
+ item.id ? updateNeInfo(item) : addNeInfo(item)
+ )
+ ).finally(() => {
tabState.confirmLoading = false;
fnToStepName('NeInfoConfigPara5G');
});
From e21a8dc8981c208d63174aa37a9152902f4f099b Mon Sep 17 00:00:00 2001
From: TsMask <340112800@qq.com>
Date: Thu, 1 Aug 2024 17:34:16 +0800
Subject: [PATCH 7/7] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=BF=AB?=
=?UTF-8?q?=E9=80=9F=E5=AE=89=E8=A3=85=E9=85=8D=E7=BD=AE=E5=85=AC=E5=85=B1?=
=?UTF-8?q?=E5=8F=82=E6=95=B0=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ne/neQuickSetup/components/Para5GForm.vue | 192 ++++-----
.../ne/neQuickSetup/components/Start.vue | 398 ++++++++++--------
src/views/ne/neQuickSetup/hooks/usePara5G.ts | 16 +-
src/views/ne/neQuickSetup/hooks/useStep.ts | 8 +-
src/views/ne/neQuickSetup/index.vue | 70 +--
5 files changed, 350 insertions(+), 334 deletions(-)
diff --git a/src/views/ne/neQuickSetup/components/Para5GForm.vue b/src/views/ne/neQuickSetup/components/Para5GForm.vue
index 3189365f..b55c1de7 100644
--- a/src/views/ne/neQuickSetup/components/Para5GForm.vue
+++ b/src/views/ne/neQuickSetup/components/Para5GForm.vue
@@ -1,5 +1,5 @@
-
-
- {{ state.info.addr }}
-
-
- {{ state.info.kernelName }}
-
-
- {{ state.info.machine }}
-
-
- {{ state.info.kernelRelease }}
-
-
-
- {{ t('views.ne.neQuickSetup.prettyName') }}
-
-
- {{ t('views.ne.neQuickSetup.prettyNameTip') }}
+
+
+
+ {{ state.info.addr }}
+
+
+ {{ state.info.kernelName }}
+
+
+ {{ state.info.machine }}
+
+
+ {{ state.info.kernelRelease }}
+
+
+
+ {{ t('views.ne.neQuickSetup.prettyName') }}
+
+
+ {{ t('views.ne.neQuickSetup.prettyNameTip') }}
+
+
+
+
+ {{ state.info.prettyName }}
+
+
+ {{ state.info.nodename }}
+
+
+
+
+
+
-
-
-
- {{ state.info.prettyName }}
-
-
- {{ state.info.nodename }}
-
-
-
-
-
-
-
- {{ t('views.ne.neQuickSetup.sudo') }}
-
+ {{ t('views.ne.neQuickSetup.sudo') }}
+
-
-
-
-
-
- {{ t('views.ne.neQuickSetup.sshLink') }}
-
-
-
-
+
+
+
+
+ {{ t('views.ne.neQuickSetup.sshLink') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+ {{ t('views.ne.neHost.test') }}
+
-
-
-
-
-
+ {{ t('views.ne.neHost.authRSA') }}
+
-
-
-
- {{ t('views.ne.neHost.test') }}
-
-
- {{ t('views.ne.neQuickSetup.stepNext') }}
-
+
+ {{ t('common.reset') }}
+
+
+
+
-
- {{ t('views.ne.neHost.authRSA') }}
-
+
+
+
+ {{ t('views.ne.neQuickSetup.stepPrev') }}
+
-
- {{ t('common.reset') }}
-
-
-
-
-
-
+
+ {{ t('views.ne.neQuickSetup.stepNext') }}
+
+
+
+
-
+
diff --git a/src/views/ne/neQuickSetup/hooks/usePara5G.ts b/src/views/ne/neQuickSetup/hooks/usePara5G.ts
index 9e3bc050..21cffcd5 100644
--- a/src/views/ne/neQuickSetup/hooks/usePara5G.ts
+++ b/src/views/ne/neQuickSetup/hooks/usePara5G.ts
@@ -1,4 +1,4 @@
-import { onMounted, reactive, toRaw } from 'vue';
+import { reactive, toRaw } from 'vue';
import { getPara5GFilee, savePara5GFile, updateNeInfo } from '@/api/ne/neInfo';
import useNeInfoStore from '@/store/modules/neinfo';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
@@ -20,7 +20,7 @@ type StateType = {
confirmLoading: boolean;
};
-export function usePara5G({ t }: any) {
+export function usePara5G() {
/**对象信息状态 */
let state: StateType = reactive({
from: {},
@@ -52,7 +52,7 @@ export function usePara5G({ t }: any) {
// 公共配置文件sbi的各网元IP
switch (item.neType) {
case 'OMC':
- // state.from.sbi.omc_ip = item.ip;
+ state.from.sbi.omc_ip = item.ip;
Object.assign(state.omcInfo, item); // 主动改OMC_IP
break;
case 'IMS':
@@ -120,17 +120,15 @@ export function usePara5G({ t }: any) {
});
if (res.code === RESULT_CODE_SUCCESS) {
// 更新omc_ip
- state.omcInfo.ip = state.from.sbi.omc_ip;
- await updateNeInfo(toRaw(state.omcInfo));
+ if (state.omcInfo.id) {
+ state.omcInfo.ip = state.from.sbi.omc_ip;
+ await updateNeInfo(toRaw(state.omcInfo));
+ }
}
state.confirmLoading = false;
return res;
}
- onMounted(() => {
- fnReloadData();
- });
-
return {
state,
fnReloadData,
diff --git a/src/views/ne/neQuickSetup/hooks/useStep.ts b/src/views/ne/neQuickSetup/hooks/useStep.ts
index ec20e2b6..0db07b25 100644
--- a/src/views/ne/neQuickSetup/hooks/useStep.ts
+++ b/src/views/ne/neQuickSetup/hooks/useStep.ts
@@ -22,7 +22,7 @@ type StepStateType = {
/**步骤信息状态 */
export const stepState: StepStateType = reactive({
- stepName: 'Start',
+ stepName: 'Para5G',
steps: [
{
title: '服务器环境',
@@ -41,15 +41,15 @@ export const stepState: StepStateType = reactive({
description: '网元服务授权激活',
},
],
- current: 0,
+ current: -1,
neHost: {},
neInfo: {},
});
/**步骤信息状态复位 */
export function fnRestStepState(t?: any) {
- stepState.stepName = 'Start';
- stepState.current = 0;
+ stepState.stepName = 'Para5G';
+ stepState.current = -1;
stepState.neHost = {};
stepState.neInfo = {};
// 多语言翻译
diff --git a/src/views/ne/neQuickSetup/index.vue b/src/views/ne/neQuickSetup/index.vue
index 6bb2c66c..c4f91521 100644
--- a/src/views/ne/neQuickSetup/index.vue
+++ b/src/views/ne/neQuickSetup/index.vue
@@ -1,45 +1,47 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -63,6 +65,24 @@ function fnNext() {
+
+
+
+
+
+
+
+
+
+
+
+