From 1c8cc134367287a909e6ffd788adfdd87e97059b Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Wed, 24 Apr 2024 16:04:22 +0800 Subject: [PATCH 01/17] =?UTF-8?q?style:=20PCF=E6=89=B9=E9=87=8F=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E7=82=B9=E5=87=BB=E5=B1=95=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/neUser/pcf/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/neUser/pcf/index.vue b/src/views/neUser/pcf/index.vue index 30c47a78..956b5e69 100644 --- a/src/views/neUser/pcf/index.vue +++ b/src/views/neUser/pcf/index.vue @@ -664,7 +664,7 @@ onMounted(() => { {{ t('views.neUser.pcf.checkDel') }} - + {{ t('views.neUser.pcf.batchOper') }} From a23284da4c83c9588bf41c65c05acd19ac962e76 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Thu, 25 Apr 2024 11:56:41 +0800 Subject: [PATCH 02/17] =?UTF-8?q?fix:=20=E9=89=B4=E6=9D=83=E7=94=A8?= =?UTF-8?q?=E6=88=B7sst-sd=E8=BE=93=E5=85=A5=E9=99=90=E5=88=B61-3=EF=BC=8C?= =?UTF-8?q?sd=E8=A1=A5=E9=9B=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/neUser/sub/index.vue | 63 +++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/src/views/neUser/sub/index.vue b/src/views/neUser/sub/index.vue index b8e2358a..42103c7d 100644 --- a/src/views/neUser/sub/index.vue +++ b/src/views/neUser/sub/index.vue @@ -493,10 +493,7 @@ const modalStateFrom = Form.useForm( */ function transformData(data: any) { let transformedData = data.map((item: any) => { - if ( - !item.sst || - !item.smallRows.every((smallRow: any) => smallRow.dnn) - ) { + if (!item.sst || !item.smallRows.every((smallRow: any) => smallRow.dnn)) { message.error({ content: `${t('views.neUser.sub.smDataArrTip')}`, duration: 3, @@ -504,7 +501,7 @@ function transformData(data: any) { throw new Error('sst, sd, and all dnn are required fields'); } - let sstSd = item.sd?item.sst + '-' + item.sd:item.sst; + let sstSd = item.sd ? item.sst + '-' + item.sd.padStart(6, '0') : item.sst; let smallRowData = item.smallRows .map((smallRow: any) => { let parts = [smallRow.dnn]; @@ -536,7 +533,9 @@ function transformFormData(data: any) { let json: any = { id: bigIDFlag++, sst: item.split('&')[0].split('-')[0], - sd: item.split('&')[0].split('-')[1]?item.split('&')[0].split('-')[1]:'', + sd: item.split('&')[0].split('-')[1] + ? item.split('&')[0].split('-')[1] + : '', smallRows: [], }; item @@ -1543,17 +1542,21 @@ onMounted(() => { name="row.sst" :label-col="{ span: 5 }" > - - - - - - - - - - - - +
+ + - + +
@@ -2068,17 +2071,21 @@ onMounted(() => { - - - - - - - - - - - - +
+ + - + +
From 0ab51413698c596acabd5dff12365ea57e3b9a53 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Thu, 25 Apr 2024 11:59:19 +0800 Subject: [PATCH 03/17] =?UTF-8?q?chore:=20=E7=89=88=E6=9C=AC=E6=97=A5?= =?UTF-8?q?=E6=9C=9F240425?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- .env.production | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.development b/.env.development index aafdecb5..4ca4be23 100644 --- a/.env.development +++ b/.env.development @@ -11,7 +11,7 @@ VITE_APP_NAME = "Core Network EMS" VITE_APP_CODE = "CN EMS" # 应用版本 -VITE_APP_VERSION = "2.240418.1" +VITE_APP_VERSION = "2.240425.1" # 接口基础URL地址-不带/后缀 VITE_API_BASE_URL = "/omc-api" diff --git a/.env.production b/.env.production index 4e7562ef..c59776c8 100644 --- a/.env.production +++ b/.env.production @@ -11,7 +11,7 @@ VITE_APP_NAME = "Core Network EMS" VITE_APP_CODE = "CN EMS" # 应用版本 -VITE_APP_VERSION = "2.240418.1" +VITE_APP_VERSION = "2.240425.1" # 接口基础URL地址-不带/后缀 VITE_API_BASE_URL = "/omc-api" From fe9f458465ee5814d3a6aa46f3641bb0910d48e5 Mon Sep 17 00:00:00 2001 From: lai <371757574@qq.com> Date: Thu, 25 Apr 2024 14:30:59 +0800 Subject: [PATCH 04/17] =?UTF-8?q?pcf=E5=8A=A8=E6=80=81=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/configManage/configParam.ts | 141 +++++++++++++++++++++ src/views/neUser/pcf/index.vue | 186 +++++++++++++--------------- 2 files changed, 224 insertions(+), 103 deletions(-) diff --git a/src/api/configManage/configParam.ts b/src/api/configManage/configParam.ts index c7c9a2f4..f9adfc79 100644 --- a/src/api/configManage/configParam.ts +++ b/src/api/configManage/configParam.ts @@ -462,3 +462,144 @@ export async function updateNeConfigReload(neType: string, neId: string) { } return result; } + +/** + * 从参数配置PCF中获取对应信息提供给PCC用户策略输入框 + * @param neType 网元类型 + * @param topTag + * @param neId + * @returns object { wrRule, dataArr } + */ +export async function getPCCRule(neId: any) { + return await Promise.allSettled([ + // 获取参数规则 + request({ + url: `/api/rest/systemManagement/v1/elementType/pcf/objectType/config/pccRules`, + method: 'get', + params: { + ne_id: neId, + }, + timeout: 1_000, + }), + // 获取对应信息 + request({ + url: `/api/rest/systemManagement/v1/elementType/pcf/objectType/config/sessionRules`, + method: 'get', + params: { + ne_id: neId, + }, + timeout: 1_000, + }), + request({ + url: `/api/rest/systemManagement/v1/elementType/pcf/objectType/config/qosTemplate`, + method: 'get', + params: { + ne_id: neId, + }, + timeout: 1_000, + }), + request({ + url: `/api/rest/systemManagement/v1/elementType/pcf/objectType/config/headerEnrichTemplate`, + method: 'get', + params: { + ne_id: neId, + }, + timeout: 1_000, + }), + request({ + url: `/api/rest/systemManagement/v1/elementType/pcf/objectType/config/serviceAreaRestriction`, + method: 'get', + params: { + ne_id: neId, + }, + timeout: 1_000, + }), + ]).then(resArr => { + let pccJson: any = new Map(); + let sessJson: any = new Map(); + let qosJson: any = new Map(); + let headerJson: any = new Map(); + let sarJson: any = new Map(); + // 规则数据 + if (resArr[0].status === 'fulfilled') { + const itemV = resArr[0].value; + // 解析数据 + if ( + itemV.code === RESULT_CODE_SUCCESS && + Array.isArray(itemV.data?.data) + ) { + let itemData = itemV.data.data; + itemData.forEach((item: any) => { + pccJson.set(item.ruleId,{ value: item.ruleId, label: item.ruleId }); + }); + } + } + + if (resArr[1].status === 'fulfilled') { + const itemV = resArr[1].value; + // 解析数据 + if ( + itemV.code === RESULT_CODE_SUCCESS && + Array.isArray(itemV.data?.data) + ) { + let itemData = itemV.data.data; + itemData.forEach((item: any) => { + sessJson.set(item.ruleId,{ value: item.ruleId, label: item.ruleId }); + }); + } + } + + if (resArr[2].status === 'fulfilled') { + const itemV = resArr[2].value; + // 解析数据 + if ( + itemV.code === RESULT_CODE_SUCCESS && + Array.isArray(itemV.data?.data) + ) { + let itemData = itemV.data.data; + itemData.forEach((item: any) => { + qosJson.set(item.qosId,{ value: item.qosId, label: item.qosId }); + }); + } + } + + if (resArr[3].status === 'fulfilled') { + const itemV = resArr[3].value; + // 解析数据 + if ( + itemV.code === RESULT_CODE_SUCCESS && + Array.isArray(itemV.data?.data) + ) { + let itemData = itemV.data.data; + itemData.forEach((item: any) => { + headerJson.set(item.templateName,{ + value: item.templateName, + label: item.templateName, + }); + }); + } + } + + if (resArr[4].status === 'fulfilled') { + const itemV = resArr[4].value; + // 解析数据 + if ( + itemV.code === RESULT_CODE_SUCCESS && + Array.isArray(itemV.data?.data) + ) { + let itemData = itemV.data.data; + itemData.forEach((item: any) => { + sarJson.set(item.name,{ value: item.name, label: item.name }); + }); + } + } + + pccJson = Array.from(pccJson.values()); + sessJson = Array.from(sessJson.values()); + qosJson = Array.from(qosJson.values()); + headerJson = Array.from(headerJson.values()); + sarJson = Array.from(sarJson.values()); + + return { pccJson, sessJson, qosJson, headerJson, sarJson }; + }); +} diff --git a/src/views/neUser/pcf/index.vue b/src/views/neUser/pcf/index.vue index 956b5e69..379b1b4f 100644 --- a/src/views/neUser/pcf/index.vue +++ b/src/views/neUser/pcf/index.vue @@ -17,6 +17,7 @@ import { batchDelRule, batchUpdateRule, } from '@/api/neUser/pcf'; +import { getPCCRule } from '@/api/configManage/configParam'; import useNeInfoStore from '@/store/modules/neinfo'; import useI18n from '@/hooks/useI18n'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; @@ -27,6 +28,15 @@ const { t } = useI18n(); /**网元参数 */ let neOtions = ref[]>([]); +/**表单中多选的OPTION */ +const pcfRuleOption = reactive({ + pccOpt: [], + sessOpt: [], + qosOpt: [], + headerOpt: [], + sarOpt: [], +}); + /**查询参数 */ let queryParams = reactive({ /**网元ID */ @@ -214,10 +224,10 @@ let modalState: ModalStateType = reactive({ imsi: '', msisdn: '', qosAudio: '', - pccRules: 'internet|ims_sig', + pccRules: undefined, rfsp: 0, uePolicy: '', - sessRules: 'internet|ims_sig', + sessRules: undefined, sar: '', hdrEnrich: '', qosVideo: '', @@ -247,35 +257,46 @@ const modalStateFrom = Form.useForm( * @param noticeId 网元id, 不传为新增 */ function fnModalVisibleByEdit(row?: Record) { - modalState.isBatch = false; - if (!row) { - modalStateFrom.resetFields(); //重置表单 - modalState.title = t('views.neUser.pcf.addTitle'); - modalState.visibleByEdit = true; - modalState.type = 'add'; - } else { - if (modalState.confirmLoading) return; - const hide = message.loading(t('common.loading'), 0); - modalState.confirmLoading = true; - const neID = queryParams.neId || '-'; - getRule(neID, row.imsi) - .then(res => { - if (res.code === RESULT_CODE_SUCCESS) { - modalState.from = Object.assign(modalState.from, res.data); - modalState.title = t('views.neUser.pcf.updateTitle', { - imsi: row.imsi, + getPCCRule(queryParams.neId) + .then((res: any) => { + console.log(res); + pcfRuleOption.pccOpt = res.pccJson; + pcfRuleOption.sessOpt = res.sessJson; + pcfRuleOption.qosOpt = res.qosJson; + pcfRuleOption.headerOpt = res.headerJson; + pcfRuleOption.sarOpt = res.sarJson; + }) + .finally(() => { + modalState.isBatch = false; + if (!row) { + modalStateFrom.resetFields(); //重置表单 + modalState.title = t('views.neUser.pcf.addTitle'); + modalState.visibleByEdit = true; + modalState.type = 'add'; + } else { + if (modalState.confirmLoading) return; + const hide = message.loading(t('common.loading'), 0); + modalState.confirmLoading = true; + const neID = queryParams.neId || '-'; + getRule(neID, row.imsi) + .then(res => { + if (res.code === RESULT_CODE_SUCCESS) { + modalState.from = Object.assign(modalState.from, res.data); + modalState.title = t('views.neUser.pcf.updateTitle', { + imsi: row.imsi, + }); + modalState.visibleByEdit = true; + modalState.type = 'update'; + } else { + message.error(t('common.getInfoFail'), 2); + } + }) + .finally(() => { + hide(); + modalState.confirmLoading = false; }); - modalState.visibleByEdit = true; - modalState.type = 'update'; - } else { - message.error(t('common.getInfoFail'), 2); - } - }) - .finally(() => { - hide(); - modalState.confirmLoading = false; - }); - } + } + }); } /** @@ -551,6 +572,10 @@ function fnModalUploadImportUpload(file: File) { }); } +function filterOption(value: any, option: any) { + return option.value.toUpperCase().indexOf(value.toUpperCase()) >= 0; +} + onMounted(() => { // 获取网元网元列表 useNeInfoStore() @@ -945,38 +970,26 @@ onMounted(() => { - - - + mode="tags" + :token-separators="['|']" + :options="pcfRuleOption.pccOpt" + :title="t('views.neUser.pcf.pccRuleTip')" + /> - - - + mode="tags" + :token-separators="['|']" + :options="pcfRuleOption.sessOpt" + :title="t('views.neUser.pcf.sessRuleTip')" + /> @@ -984,38 +997,22 @@ onMounted(() => { - - - + :options="pcfRuleOption.qosOpt" + :filter-option="filterOption" + /> - - - + :options="pcfRuleOption.qosOpt" + :filter-option="filterOption" + /> @@ -1023,20 +1020,12 @@ onMounted(() => { - - - + :options="pcfRuleOption.headerOpt" + :filter-option="filterOption" + /> @@ -1062,21 +1051,12 @@ onMounted(() => { - - - + :options="pcfRuleOption.sarOpt" + :filter-option="filterOption" + /> From 5a2aa383fe7e676ddd299efad398a9e3f08c45e7 Mon Sep 17 00:00:00 2001 From: lai <371757574@qq.com> Date: Thu, 25 Apr 2024 14:32:53 +0800 Subject: [PATCH 05/17] =?UTF-8?q?=E5=9B=BE=E6=A0=87=E5=90=8D=E5=AD=97?= =?UTF-8?q?=E4=B8=BAicon001=E4=B8=80=E7=9B=B4=E5=BE=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/system/menu/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index 9d09e47a..dc7193fa 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -32,7 +32,7 @@ const { t } = useI18n(); const { getDict } = useDictStore(); /**字体图标可选择数据 */ -let icons = reactive(iconFonts.map(item => ({ value: item, label: item }))); +let icons = reactive(iconFonts.map((item,i) => ({ value: item, label: `icon${String(i+1).padStart(3, '0')}` }))); /**字典数据 */ let dict: { From e64d558c271378574e9d232333d6c9f68607f4bf Mon Sep 17 00:00:00 2001 From: lai <371757574@qq.com> Date: Thu, 25 Apr 2024 17:10:22 +0800 Subject: [PATCH 06/17] =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/neUser/pcf/index.vue | 45 +++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/src/views/neUser/pcf/index.vue b/src/views/neUser/pcf/index.vue index 379b1b4f..f756be4b 100644 --- a/src/views/neUser/pcf/index.vue +++ b/src/views/neUser/pcf/index.vue @@ -259,7 +259,6 @@ const modalStateFrom = Form.useForm( function fnModalVisibleByEdit(row?: Record) { getPCCRule(queryParams.neId) .then((res: any) => { - console.log(res); pcfRuleOption.pccOpt = res.pccJson; pcfRuleOption.sessOpt = res.sessJson; pcfRuleOption.qosOpt = res.qosJson; @@ -307,7 +306,8 @@ function fnModalOk() { const from = toRaw(modalState.from); from.neId = queryParams.neId || '-'; from.rfsp = Number(from.rfsp) || 0; - + from.pccRules = modalState.from.pccRules.join('|'); + from.sessRules = modalState.from.sessRules.join('|'); let validateArr = ['imsi', 'msisdn']; if (modalState.isBatch) { validateArr.push('num'); @@ -403,21 +403,31 @@ function fnModalCancel() { * @param type 类型 */ function fnModalVisibleByBatch(type: 'delete' | 'add' | 'update') { - modalStateFrom.resetFields(); //重置表单 - modalState.isBatch = true; - modalState.type = type; - if (type === 'add') { - modalState.title = t('views.neUser.pcf.batchAddText'); - modalState.visibleByEdit = true; - } - if (type === 'update') { - modalState.title = t('views.neUser.pcf.batchUpdateText'); - modalState.visibleByEdit = true; - } - if (type === 'delete') { - modalState.title = t('views.neUser.pcf.batchDelText'); - modalState.visibleByEdit = true; - } + getPCCRule(queryParams.neId) + .then((res: any) => { + pcfRuleOption.pccOpt = res.pccJson; + pcfRuleOption.sessOpt = res.sessJson; + pcfRuleOption.qosOpt = res.qosJson; + pcfRuleOption.headerOpt = res.headerJson; + pcfRuleOption.sarOpt = res.sarJson; + }) + .finally(() => { + modalStateFrom.resetFields(); //重置表单 + modalState.isBatch = true; + modalState.type = type; + if (type === 'add') { + modalState.title = t('views.neUser.pcf.batchAddText'); + modalState.visibleByEdit = true; + } + if (type === 'update') { + modalState.title = t('views.neUser.pcf.batchUpdateText'); + modalState.visibleByEdit = true; + } + if (type === 'delete') { + modalState.title = t('views.neUser.pcf.batchDelText'); + modalState.visibleByEdit = true; + } + }); } /** @@ -572,6 +582,7 @@ function fnModalUploadImportUpload(file: File) { }); } +/**使其忽略大小写 */ function filterOption(value: any, option: any) { return option.value.toUpperCase().indexOf(value.toUpperCase()) >= 0; } From 3df9ee4f3ad7de01ebe7fccb5759d22092c84e75 Mon Sep 17 00:00:00 2001 From: lai <371757574@qq.com> Date: Thu, 25 Apr 2024 17:16:12 +0800 Subject: [PATCH 07/17] QOS=>Qos --- src/views/neUser/pcf/index.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/neUser/pcf/index.vue b/src/views/neUser/pcf/index.vue index f756be4b..5009f813 100644 --- a/src/views/neUser/pcf/index.vue +++ b/src/views/neUser/pcf/index.vue @@ -1007,7 +1007,7 @@ onMounted(() => { - + { - + Date: Thu, 25 Apr 2024 17:17:02 +0800 Subject: [PATCH 08/17] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/neUser/ue/index.vue | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/views/neUser/ue/index.vue b/src/views/neUser/ue/index.vue index c2d16379..5b43ddc3 100644 --- a/src/views/neUser/ue/index.vue +++ b/src/views/neUser/ue/index.vue @@ -18,6 +18,8 @@ let neOtions = ref[]>([]); let queryParams = reactive({ /**网元ID */ neId: undefined, + /**用户在线状态 */ + upState: 'Active', /**IMSI */ imsi: '', /**msisdn */ @@ -33,6 +35,7 @@ function fnQueryReset() { queryParams = Object.assign(queryParams, { imsi: '', msisdn: '', + upState: 'Active', pageNum: 1, pageSize: 20, }); @@ -59,7 +62,7 @@ type TabeStateType = { let tableState: TabeStateType = reactive({ loading: false, size: 'middle', - seached: true, + seached: false, data: [], selectedRowKeys: [], }); @@ -118,6 +121,12 @@ let tableColumns: ColumnsType = [ }, width: 150, }, + { + title: 'Up State', + dataIndex: 'upState', + align: 'center', + width: 100, + }, { title: t('common.operate'), key: 'imsi', @@ -290,7 +299,7 @@ onMounted(() => { - + { /> - + + + + Inactive + Active + + + + - + - + + From 2b86f724b1e7856382cf4cf844810578b452fce9 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Thu, 25 Apr 2024 19:37:03 +0800 Subject: [PATCH 09/17] =?UTF-8?q?style:=20=E7=B3=BB=E7=BB=9F=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E5=9B=BE=E6=A0=87=E9=80=89=E6=8B=A9=E7=BC=96=E5=8F=B7?= =?UTF-8?q?icon-001?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/system/menu/index.vue | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index dc7193fa..b0515a8e 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -32,7 +32,20 @@ const { t } = useI18n(); const { getDict } = useDictStore(); /**字体图标可选择数据 */ -let icons = reactive(iconFonts.map((item,i) => ({ value: item, label: `icon${String(i+1).padStart(3, '0')}` }))); +let icons = reactive( + iconFonts.map((item, i) => { + if (i === 0) { + return { + value: item, + label: item, + }; + } + return { + value: item, + label: 'icon-' + `${i}`.padStart(3, '0'), + }; + }) +); /**字典数据 */ let dict: { @@ -1173,5 +1186,4 @@ onMounted(() => { - + From 86a939f2065b03e4c50816b916509c68783cabab Mon Sep 17 00:00:00 2001 From: lai <371757574@qq.com> Date: Thu, 25 Apr 2024 19:53:35 +0800 Subject: [PATCH 10/17] =?UTF-8?q?=E4=B8=AD=E8=8B=B1=E6=96=87=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/logManage/forwarding/index.vue | 32 ++++++++++++++---------- src/views/neUser/pcf/index.vue | 6 ++--- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/views/logManage/forwarding/index.vue b/src/views/logManage/forwarding/index.vue index ac5c9376..097afc9b 100644 --- a/src/views/logManage/forwarding/index.vue +++ b/src/views/logManage/forwarding/index.vue @@ -80,6 +80,24 @@ let tableColumns: ColumnsType = [ align: 'center', width: 3, }, + { + title: t('views.logManage.forwarding.alarmInter'), + dataIndex: 'interface', + align: 'center', + width: 5, + }, + { + title: t('views.logManage.forwarding.alarmObj'), + dataIndex: 'toUser', + align: 'center', + width: 5, + }, + { + title: t('views.logManage.forwarding.alarmInfo'), + dataIndex: 'operResult', + align: 'center', + width: 6, + }, { title: t('views.logManage.forwarding.type'), dataIndex: 'neType', @@ -104,24 +122,12 @@ let tableColumns: ColumnsType = [ align: 'center', width: 4, }, - { - title: t('views.logManage.forwarding.alarmObj'), - dataIndex: 'toUser', - align: 'center', - width: 5, - }, { title: t('views.logManage.forwarding.alarmTitle'), dataIndex: 'alarmTitle', - align: 'left', + align: 'center', width: 5, }, - { - title: t('views.logManage.forwarding.alarmInfo'), - dataIndex: 'operResult', - align: 'left', - width: 6, - }, { title: t('views.logManage.forwarding.eventTime'), dataIndex: 'eventTime', diff --git a/src/views/neUser/pcf/index.vue b/src/views/neUser/pcf/index.vue index 5009f813..2b10ba9e 100644 --- a/src/views/neUser/pcf/index.vue +++ b/src/views/neUser/pcf/index.vue @@ -112,13 +112,13 @@ let tableColumns = ref([ width: 50, }, { - title: 'QOS Video', + title: 'QoS Video', dataIndex: 'qosVideo', align: 'left', width: 100, }, { - title: 'QOS Audio', + title: 'QoS Audio', dataIndex: 'qosAudio', align: 'left', resizable: true, @@ -1061,7 +1061,7 @@ onMounted(() => { - + Date: Thu, 25 Apr 2024 19:54:00 +0800 Subject: [PATCH 11/17] =?UTF-8?q?=E4=B8=AD=E8=8B=B1=E6=96=87=E7=BF=BB?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/locales/en-US.ts | 9 +++++---- src/i18n/locales/zh-CN.ts | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts index 7c25ba90..47676d17 100644 --- a/src/i18n/locales/en-US.ts +++ b/src/i18n/locales/en-US.ts @@ -1012,11 +1012,12 @@ export default { neId:'NE UID', alarmId:'Alarm ID', alarmSeq:'Sequence Number', - alarmObj:'Object', + alarmObj:'Forward Users', + alarmInter:'Forward Interface', alarmTitle:'Alarm Title', - alarmInfo:'Alarm Content', - eventTime:'Generation Time', - logTime:'Record Time' + alarmInfo:'Operation Results', + eventTime:'Event Time', + logTime:'Log Time' }, neFile: { neType:'NE Type', diff --git a/src/i18n/locales/zh-CN.ts b/src/i18n/locales/zh-CN.ts index ae09f536..d7ceeb43 100644 --- a/src/i18n/locales/zh-CN.ts +++ b/src/i18n/locales/zh-CN.ts @@ -1013,8 +1013,9 @@ export default { alarmId:'告警唯一标识', alarmSeq:'告警流水号', alarmObj:'告警前转对象', + alarmInter:'告警前转接口', alarmTitle:'告警标题', - alarmInfo:'告警内容', + alarmInfo:'操作结果', eventTime:'告警产生时间', logTime:'记录时间' }, From 55863c1c58199904782aac73e81527b7d30bba4d Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 26 Apr 2024 12:15:01 +0800 Subject: [PATCH 12/17] =?UTF-8?q?fix:=20pcf=E6=96=B0=E5=A2=9E=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E6=95=B0=E6=8D=AE=E6=96=B0=E5=A2=9E=E5=9B=9E=E6=98=BE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/neUser/pcf/index.vue | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/views/neUser/pcf/index.vue b/src/views/neUser/pcf/index.vue index 2b10ba9e..63389fda 100644 --- a/src/views/neUser/pcf/index.vue +++ b/src/views/neUser/pcf/index.vue @@ -280,7 +280,10 @@ function fnModalVisibleByEdit(row?: Record) { getRule(neID, row.imsi) .then(res => { if (res.code === RESULT_CODE_SUCCESS) { - modalState.from = Object.assign(modalState.from, res.data); + Object.assign(modalState.from, res.data, { + pccRules: res.data.pccRules.split('|'), + sessRules: res.data.sessRules.split('|'), + }); modalState.title = t('views.neUser.pcf.updateTitle', { imsi: row.imsi, }); @@ -303,7 +306,7 @@ function fnModalVisibleByEdit(row?: Record) { * 进行表达规则校验 */ function fnModalOk() { - const from = toRaw(modalState.from); + const from = JSON.parse(JSON.stringify(modalState.from)); from.neId = queryParams.neId || '-'; from.rfsp = Number(from.rfsp) || 0; from.pccRules = modalState.from.pccRules.join('|'); From c93e6935175543e1519ef299e9bfca7f6c15a386 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 26 Apr 2024 17:13:07 +0800 Subject: [PATCH 13/17] =?UTF-8?q?fix:=20pcf=E6=96=B0=E5=A2=9E=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E8=A1=A8=E5=8D=95=E6=95=B0=E6=8D=AE=E7=BB=84=E8=A3=85?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=EF=BC=8C=E4=B8=8A=E4=BC=A0=E8=B6=85=E6=97=B6?= =?UTF-8?q?30s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/tool/file.ts | 1 + src/views/neUser/pcf/index.vue | 47 ++++++++++++++++++++++++++++------ 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/api/tool/file.ts b/src/api/tool/file.ts index d19717cd..25b468ba 100644 --- a/src/api/tool/file.ts +++ b/src/api/tool/file.ts @@ -241,6 +241,7 @@ export async function uploadFileToNE( neType, neId, }, + timeout: 30_000, }); return transferToNeFileRes; } diff --git a/src/views/neUser/pcf/index.vue b/src/views/neUser/pcf/index.vue index 63389fda..3ad0f5ad 100644 --- a/src/views/neUser/pcf/index.vue +++ b/src/views/neUser/pcf/index.vue @@ -280,10 +280,28 @@ function fnModalVisibleByEdit(row?: Record) { getRule(neID, row.imsi) .then(res => { if (res.code === RESULT_CODE_SUCCESS) { - Object.assign(modalState.from, res.data, { - pccRules: res.data.pccRules.split('|'), - sessRules: res.data.sessRules.split('|'), - }); + Object.assign(modalState.from, res.data); + + let pccRules = res.data.pccRules; + if (!pccRules) { + pccRules = []; + } else if (pccRules.includes('|')) { + pccRules = pccRules.split('|'); + } else { + pccRules = [pccRules]; + } + modalState.from.pccRules = pccRules; + let sessRules = res.data.sessRules; + if (!sessRules) { + sessRules = []; + } else if (sessRules.includes('|')) { + sessRules = sessRules.split('|'); + } else { + sessRules = [sessRules]; + } + modalState.from.sessRules = sessRules; + console.log(modalState.from); + modalState.title = t('views.neUser.pcf.updateTitle', { imsi: row.imsi, }); @@ -309,8 +327,23 @@ function fnModalOk() { const from = JSON.parse(JSON.stringify(modalState.from)); from.neId = queryParams.neId || '-'; from.rfsp = Number(from.rfsp) || 0; - from.pccRules = modalState.from.pccRules.join('|'); - from.sessRules = modalState.from.sessRules.join('|'); + console.log(from); + let pccRules = modalState.from.pccRules; + if (Array.isArray(pccRules)) { + pccRules = pccRules.join('|'); + } else { + pccRules = ''; + } + from.pccRules = pccRules; + + let sessRules = modalState.from.sessRules; + if (Array.isArray(sessRules)) { + sessRules = sessRules.join('|'); + } else { + sessRules = ''; + } + from.sessRules = sessRules; + let validateArr = ['imsi', 'msisdn']; if (modalState.isBatch) { validateArr.push('num'); @@ -988,7 +1021,6 @@ onMounted(() => { v-model:value="modalState.from.pccRules" allow-clear mode="tags" - :token-separators="['|']" :options="pcfRuleOption.pccOpt" :title="t('views.neUser.pcf.pccRuleTip')" /> @@ -1000,7 +1032,6 @@ onMounted(() => { v-model:value="modalState.from.sessRules" allow-clear mode="tags" - :token-separators="['|']" :options="pcfRuleOption.sessOpt" :title="t('views.neUser.pcf.sessRuleTip')" /> From ff228daae73e5f90a39da5d154a163d8e0a1e724 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 26 Apr 2024 19:21:44 +0800 Subject: [PATCH 14/17] =?UTF-8?q?fix:=20UE=20SMF=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2Up=20State=E5=8F=AF=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/neUser/ue/index.vue | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/views/neUser/ue/index.vue b/src/views/neUser/ue/index.vue index 5b43ddc3..e8695366 100644 --- a/src/views/neUser/ue/index.vue +++ b/src/views/neUser/ue/index.vue @@ -19,7 +19,7 @@ let queryParams = reactive({ /**网元ID */ neId: undefined, /**用户在线状态 */ - upState: 'Active', + upState: undefined, /**IMSI */ imsi: '', /**msisdn */ @@ -35,7 +35,7 @@ function fnQueryReset() { queryParams = Object.assign(queryParams, { imsi: '', msisdn: '', - upState: 'Active', + upState: undefined, pageNum: 1, pageSize: 20, }); @@ -310,7 +310,11 @@ onMounted(() => { - + Inactive Active @@ -318,12 +322,20 @@ onMounted(() => { - + - + From 6e616c63f0b500a18070e909cd25fa4844398240 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Sun, 28 Apr 2024 11:46:30 +0800 Subject: [PATCH 15/17] =?UTF-8?q?fix:=20UDM=E7=AD=BE=E7=BA=A6=E6=95=B0?= =?UTF-8?q?=E6=8D=AEsst-sd=E6=A0=BC=E5=BC=8F=E6=97=A0sd=E4=B9=9F=E5=B8=A6-?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/neUser/sub/index.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/views/neUser/sub/index.vue b/src/views/neUser/sub/index.vue index 42103c7d..88cb6449 100644 --- a/src/views/neUser/sub/index.vue +++ b/src/views/neUser/sub/index.vue @@ -501,7 +501,9 @@ function transformData(data: any) { throw new Error('sst, sd, and all dnn are required fields'); } - let sstSd = item.sd ? item.sst + '-' + item.sd.padStart(6, '0') : item.sst; + let sstSd = item.sd + ? item.sst + '-' + item.sd.padStart(6, '0') + : item.sst + '-'; let smallRowData = item.smallRows .map((smallRow: any) => { let parts = [smallRow.dnn]; From a6be5190eca225940b43760a10e7a27bc814fd02 Mon Sep 17 00:00:00 2001 From: lai <371757574@qq.com> Date: Tue, 30 Apr 2024 10:15:02 +0800 Subject: [PATCH 16/17] =?UTF-8?q?=E8=AF=A6=E6=83=85=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0upState=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/neUser/ue/index.vue | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/views/neUser/ue/index.vue b/src/views/neUser/ue/index.vue index e8695366..fd4ced19 100644 --- a/src/views/neUser/ue/index.vue +++ b/src/views/neUser/ue/index.vue @@ -322,20 +322,12 @@ onMounted(() => { - + - + From d7aa0fc91a4a0f855bb3b4f1300b1a403baded55 Mon Sep 17 00:00:00 2001 From: lai <371757574@qq.com> Date: Tue, 30 Apr 2024 10:22:43 +0800 Subject: [PATCH 17/17] =?UTF-8?q?=E6=9B=B4=E6=AD=A3-=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=B7=BB=E5=8A=A0upState=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/neUser/ue/index.vue | 38 +++++++++-------------------------- 1 file changed, 10 insertions(+), 28 deletions(-) diff --git a/src/views/neUser/ue/index.vue b/src/views/neUser/ue/index.vue index fd4ced19..dca1aaba 100644 --- a/src/views/neUser/ue/index.vue +++ b/src/views/neUser/ue/index.vue @@ -18,8 +18,6 @@ let neOtions = ref[]>([]); let queryParams = reactive({ /**网元ID */ neId: undefined, - /**用户在线状态 */ - upState: undefined, /**IMSI */ imsi: '', /**msisdn */ @@ -35,7 +33,6 @@ function fnQueryReset() { queryParams = Object.assign(queryParams, { imsi: '', msisdn: '', - upState: undefined, pageNum: 1, pageSize: 20, }); @@ -121,12 +118,6 @@ let tableColumns: ColumnsType = [ }, width: 150, }, - { - title: 'Up State', - dataIndex: 'upState', - align: 'center', - width: 100, - }, { title: t('common.operate'), key: 'imsi', @@ -308,18 +299,6 @@ onMounted(() => { /> - - - - Inactive - Active - - - @@ -462,24 +441,27 @@ onMounted(() => { v-for="v in modalState.from.pduSessionInfo" :key="v.dnn" > + + {{ v.pduSessionID }} + + + {{ v.upState }} + {{ v.ipv4 }} {{ v.ipv6 }} {{ v.tai }} - + {{ v.sstSD }} - + {{ v.upfN3IP }} - + {{ v.ranN3IP }} - + {{ v.activeTime }} - - {{ v.pduSessionID }} -