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] =?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" + />