fix: 优化PCF用户策略页面及接口调整
This commit is contained in:
@@ -33,53 +33,3 @@ export async function updateNeConfigReload(neType: string, neId: string) {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从参数配置PCF中获取对应信息提供给PCC用户策略输入框
|
||||
* @param neId
|
||||
* @returns object {pccRules,sessionRules,qosTemplate,headerEnrichTemplate,serviceAreaRestriction}
|
||||
*/
|
||||
export async function getPCCRule(neId: any) {
|
||||
const paramNameArr = [
|
||||
'pccRules',
|
||||
'sessionRules',
|
||||
'qosTemplate',
|
||||
'headerEnrichTemplate',
|
||||
'serviceAreaRestriction',
|
||||
];
|
||||
const reqArr = [];
|
||||
for (const paramName of paramNameArr) {
|
||||
reqArr.push(
|
||||
request({
|
||||
url: `/ne/config/data`,
|
||||
params: { neType: 'PCF', neId, paramName },
|
||||
method: 'GET',
|
||||
})
|
||||
);
|
||||
}
|
||||
return await Promise.allSettled(reqArr).then(resArr => {
|
||||
// 规则数据
|
||||
const obj: any = {};
|
||||
resArr.forEach((item, i: number) => {
|
||||
if (item.status === 'fulfilled') {
|
||||
const res = item.value;
|
||||
if (res.code === RESULT_CODE_SUCCESS) {
|
||||
const key = paramNameArr[i];
|
||||
obj[key] = res.data.map((item: any) => {
|
||||
if ('qosTemplate' === key) {
|
||||
return { value: item.qosId, label: item.qosId };
|
||||
}
|
||||
if ('headerEnrichTemplate' === key) {
|
||||
return { value: item.templateName, label: item.templateName };
|
||||
}
|
||||
if ('serviceAreaRestriction' === key) {
|
||||
return { value: item.name, label: item.name };
|
||||
}
|
||||
return { value: item.ruleId, label: item.ruleId };
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
return obj;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
||||
import { request } from '@/plugins/http-fetch';
|
||||
|
||||
/**
|
||||
@@ -64,3 +65,53 @@ export function delNeConfigData(params: Record<string, any>) {
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 从参数配置PCF中获取对应信息提供给PCF用户策略输入框
|
||||
* @param neId
|
||||
* @returns object {pccRules,sessionRules,qosTemplate,headerEnrichTemplate,serviceAreaRestriction}
|
||||
*/
|
||||
export async function getPCFRule(neId: any) {
|
||||
const paramNameArr = [
|
||||
'pccRules',
|
||||
'sessionRules',
|
||||
'qosTemplate',
|
||||
'headerEnrichTemplate',
|
||||
'serviceAreaRestriction',
|
||||
];
|
||||
const reqArr = [];
|
||||
for (const paramName of paramNameArr) {
|
||||
reqArr.push(
|
||||
request({
|
||||
url: `/ne/config/data`,
|
||||
params: { neType: 'PCF', neId, paramName },
|
||||
method: 'GET',
|
||||
})
|
||||
);
|
||||
}
|
||||
return await Promise.allSettled(reqArr).then(resArr => {
|
||||
// 规则数据
|
||||
const obj: any = {};
|
||||
resArr.forEach((item, i: number) => {
|
||||
if (item.status === 'fulfilled') {
|
||||
const res = item.value;
|
||||
if (res.code === RESULT_CODE_SUCCESS) {
|
||||
const key = paramNameArr[i];
|
||||
obj[key] = res.data.map((item: any) => {
|
||||
if ('qosTemplate' === key) {
|
||||
return { value: item.qosId, label: item.qosId };
|
||||
}
|
||||
if ('headerEnrichTemplate' === key) {
|
||||
return { value: item.templateName, label: item.templateName };
|
||||
}
|
||||
if ('serviceAreaRestriction' === key) {
|
||||
return { value: item.name, label: item.name };
|
||||
}
|
||||
return { value: item.ruleId, label: item.ruleId };
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
return obj;
|
||||
});
|
||||
}
|
||||
|
||||
82
src/api/neData/pcf.ts
Normal file
82
src/api/neData/pcf.ts
Normal file
@@ -0,0 +1,82 @@
|
||||
import { request } from '@/plugins/http-fetch';
|
||||
|
||||
/**
|
||||
* PCF-策略配置列表
|
||||
* @param query 查询参数
|
||||
* @returns object
|
||||
*/
|
||||
export function listPCFRule(query: Record<string, any>) {
|
||||
return request({
|
||||
url: '/neData/pcf/rule/list',
|
||||
method: 'GET',
|
||||
params: query,
|
||||
timeout: 60_000,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* PCF-策略配置添加
|
||||
* @param data 参数
|
||||
* @returns object
|
||||
*/
|
||||
export function addPCFRule(data: Record<string, any>) {
|
||||
return request({
|
||||
url: `/neData/pcf/rule`,
|
||||
method: 'POST',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* PCF-策略配置更新
|
||||
* @param data 参数
|
||||
* @returns object
|
||||
*/
|
||||
export function editPCFRule(data: Record<string, any>) {
|
||||
return request({
|
||||
url: `/neData/pcf/rule`,
|
||||
method: 'PUT',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* PCF-策略配置删除
|
||||
*@param data 参数
|
||||
* @returns object
|
||||
*/
|
||||
export function delPCFRule(data: Record<string, any>) {
|
||||
return request({
|
||||
url: `/neData/pcf/rule`,
|
||||
method: 'DELETE',
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* PCF-策略配置导出
|
||||
* @param data 参数{ neId, fileType }
|
||||
* @returns object
|
||||
*/
|
||||
export function exportPCFRule(data: Record<string, any>) {
|
||||
return request({
|
||||
url: '/neData/pcf/rule/export',
|
||||
method: 'GET',
|
||||
params: data,
|
||||
responseType: 'blob',
|
||||
timeout: 60_000,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* PCF-策略配置导入
|
||||
* @param data 参数
|
||||
* @returns object
|
||||
*/
|
||||
export function importPCFRule(data: Record<string, any>) {
|
||||
return request({
|
||||
url: '/neData/pcf/rule/import',
|
||||
method: 'PUT',
|
||||
data,
|
||||
});
|
||||
}
|
||||
@@ -1,233 +0,0 @@
|
||||
import {
|
||||
RESULT_CODE_ERROR,
|
||||
RESULT_CODE_SUCCESS,
|
||||
} from '@/constants/result-constants';
|
||||
import { request } from '@/plugins/http-fetch';
|
||||
import { parseObjLineToHump } from '@/utils/parse-utils';
|
||||
|
||||
/**
|
||||
* 规则导出
|
||||
* @param data 表单数据对象
|
||||
* @returns bolb
|
||||
*/
|
||||
export function exportRule(data: Record<string, any>) {
|
||||
return request({
|
||||
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/file/export`,
|
||||
method: 'GET',
|
||||
params: data,
|
||||
responseType: 'blob',
|
||||
timeout: 180_000,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入规则数据
|
||||
* @param data 表单数据对象
|
||||
* @returns object
|
||||
*/
|
||||
export function importRuleData(data: Record<string, any>) {
|
||||
return request({
|
||||
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/file/import?neId=${data.neId}&filePath=${data.filePath}&fileType=${data.fileType}`,
|
||||
method: 'PUT',
|
||||
data,
|
||||
timeout: 60_000,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询规则列表
|
||||
* @param query 查询参数
|
||||
* @returns object
|
||||
*/
|
||||
export async function listRules(query: Record<string, any>) {
|
||||
const result = await request({
|
||||
url: '/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo',
|
||||
method: 'GET',
|
||||
params: query,
|
||||
});
|
||||
const data = {
|
||||
data: { total: 0, rows: [] } as any,
|
||||
code: result.code,
|
||||
msg: result.msg,
|
||||
};
|
||||
|
||||
// 解析数据
|
||||
if (result.code === RESULT_CODE_SUCCESS) {
|
||||
if (result.data?.status) {
|
||||
return {
|
||||
code: RESULT_CODE_ERROR,
|
||||
msg: result.data?.cause,
|
||||
data: result.data,
|
||||
};
|
||||
}
|
||||
if (Array.isArray(result.data.data)) {
|
||||
const rows = parseObjLineToHump(result.data.data);
|
||||
data.data.total = rows.length;
|
||||
data.data.rows = rows;
|
||||
}
|
||||
}
|
||||
|
||||
// 模拟数据
|
||||
// data.rows = [
|
||||
// {
|
||||
// "hdrEnrich": "dnn",
|
||||
// "imsi": "160990100000003",
|
||||
// "msisdn": "86755900011",
|
||||
// "pccRules": "internet|ims_sig",
|
||||
// "qosAudio": "qos_audio",
|
||||
// "qosVideo": "qos_video",
|
||||
// "rfsp": 0,
|
||||
// "sar": "def_sar",
|
||||
// "sessRules": "internet|ims_sig",
|
||||
// "uePolicy": "uep_001"
|
||||
// }
|
||||
// ]
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询规则详细
|
||||
* @param neId 网元ID
|
||||
* @returns object
|
||||
*/
|
||||
export async function getRule(neId: string, imsi: string) {
|
||||
const result = await request({
|
||||
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${neId}&imsi=${imsi}`,
|
||||
method: 'GET',
|
||||
});
|
||||
// 解析数据
|
||||
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
|
||||
result.data = result.data.data[0];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改规则
|
||||
* @param data 规则对象
|
||||
* @returns object
|
||||
*/
|
||||
export async function updateRule(data: Record<string, any>) {
|
||||
const result = await request({
|
||||
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${data.neId}`,
|
||||
method: 'PUT',
|
||||
data: data,
|
||||
});
|
||||
// 解析数据
|
||||
if (result.code === RESULT_CODE_SUCCESS && result.data?.status) {
|
||||
return {
|
||||
code: RESULT_CODE_ERROR,
|
||||
msg: result.data?.cause,
|
||||
data: result.data,
|
||||
};
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量修改规则
|
||||
* @param data 规则对象
|
||||
* @returns object
|
||||
*/
|
||||
export async function batchUpdateRule(data: Record<string, any>) {
|
||||
const result = await request({
|
||||
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/batch/${data.num}?neId=${data.neId}`,
|
||||
method: 'PUT',
|
||||
data: data,
|
||||
timeout: 60_000,
|
||||
});
|
||||
// 解析数据
|
||||
if (result.code === RESULT_CODE_SUCCESS) {
|
||||
if (result.data?.status) {
|
||||
return {
|
||||
code: RESULT_CODE_ERROR,
|
||||
msg: result.data?.cause,
|
||||
data: result.data,
|
||||
};
|
||||
}
|
||||
if (result.data?.data) {
|
||||
result.data = result.data.data;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增规则
|
||||
* @param data 规则对象
|
||||
* @returns object
|
||||
*/
|
||||
export async function addRule(data: Record<string, any>) {
|
||||
const result = await request({
|
||||
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${data.neId}`,
|
||||
method: 'POST',
|
||||
data: data,
|
||||
timeout: 60_000,
|
||||
});
|
||||
// 解析数据
|
||||
if (result.code === RESULT_CODE_SUCCESS && result.data?.status) {
|
||||
return {
|
||||
code: RESULT_CODE_ERROR,
|
||||
msg: result.data?.cause,
|
||||
data: result.data,
|
||||
};
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增规则
|
||||
* @param data 规则对象
|
||||
* @returns object
|
||||
*/
|
||||
export async function batchAddRule(data: Record<string, any>) {
|
||||
const result = await request({
|
||||
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/batch/${data.num}?neId=${data.neId}`,
|
||||
method: 'POST',
|
||||
data: data,
|
||||
timeout: 60_000,
|
||||
});
|
||||
// 解析数据
|
||||
if (result.code === RESULT_CODE_SUCCESS) {
|
||||
if (result.data?.status) {
|
||||
return {
|
||||
code: RESULT_CODE_ERROR,
|
||||
msg: result.data?.cause,
|
||||
data: result.data,
|
||||
};
|
||||
}
|
||||
if (result.data?.data) {
|
||||
result.data = result.data.data;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除规则
|
||||
* @param data 规则对象
|
||||
* @returns object
|
||||
*/
|
||||
export function delRule(neId: string, imsi: string) {
|
||||
return request({
|
||||
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${neId}&imsi=${imsi}`,
|
||||
method: 'DELETE',
|
||||
timeout: 60_000,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除规则
|
||||
* @param data 规则对象
|
||||
* @returns object
|
||||
*/
|
||||
export async function batchDelRule(data: Record<string, any>) {
|
||||
return request({
|
||||
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/batch/${data.num}?neId=${data.neId}&imsi=${data.imsi}`,
|
||||
method: 'DELETE',
|
||||
timeout: 60_000,
|
||||
});
|
||||
}
|
||||
@@ -6,24 +6,20 @@ import { message, Modal, Form, TableColumnsType } from 'ant-design-vue/es';
|
||||
import { SizeType } from 'ant-design-vue/es/config-provider';
|
||||
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
|
||||
import UploadModal from '@/components/UploadModal/index.vue';
|
||||
import {
|
||||
listRules,
|
||||
getRule,
|
||||
updateRule,
|
||||
addRule,
|
||||
delRule,
|
||||
exportRule,
|
||||
importRuleData,
|
||||
batchAddRule,
|
||||
batchDelRule,
|
||||
batchUpdateRule,
|
||||
} from '@/api/neUser/pcf';
|
||||
import { getPCCRule } from '@/api/configManage/configParam';
|
||||
import useNeInfoStore from '@/store/modules/neinfo';
|
||||
import useI18n from '@/hooks/useI18n';
|
||||
import {
|
||||
addPCFRule,
|
||||
delPCFRule,
|
||||
editPCFRule,
|
||||
exportPCFRule,
|
||||
importPCFRule,
|
||||
listPCFRule,
|
||||
} from '@/api/neData/pcf';
|
||||
import { getPCFRule } from '@/api/ne/neConfig';
|
||||
import { uploadFileToNE } from '@/api/tool/file';
|
||||
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
||||
import { saveAs } from 'file-saver';
|
||||
import { uploadFileToNE } from '@/api/tool/file';
|
||||
const { t } = useI18n();
|
||||
|
||||
/**网元参数 */
|
||||
@@ -149,7 +145,7 @@ let tableColumns = ref<TableColumnsType>([
|
||||
dataIndex: 'pccRules',
|
||||
align: 'left',
|
||||
resizable: true,
|
||||
width: 150,
|
||||
width: 200,
|
||||
minWidth: 100,
|
||||
maxWidth: 300,
|
||||
},
|
||||
@@ -157,7 +153,10 @@ let tableColumns = ref<TableColumnsType>([
|
||||
title: 'SESS Rules',
|
||||
dataIndex: 'sessRules',
|
||||
align: 'left',
|
||||
width: 150,
|
||||
resizable: true,
|
||||
width: 200,
|
||||
minWidth: 100,
|
||||
maxWidth: 300,
|
||||
},
|
||||
{
|
||||
title: 'HDR Enrich',
|
||||
@@ -169,13 +168,13 @@ let tableColumns = ref<TableColumnsType>([
|
||||
title: 'UE Policy',
|
||||
dataIndex: 'uePolicy',
|
||||
align: 'left',
|
||||
width: 150,
|
||||
},
|
||||
{
|
||||
title: t('common.operate'),
|
||||
key: 'imsi',
|
||||
align: 'left',
|
||||
width: 100,
|
||||
width: 150,
|
||||
fixed: 'right',
|
||||
},
|
||||
]);
|
||||
|
||||
@@ -241,7 +240,7 @@ let modalState: ModalStateType = reactive({
|
||||
openByEdit: false,
|
||||
title: '用户策略',
|
||||
from: {
|
||||
num: 1,
|
||||
num: undefined,
|
||||
imsi: '',
|
||||
msisdn: '',
|
||||
qosAudio: '',
|
||||
@@ -265,11 +264,13 @@ const modalStateFrom = Form.useForm(
|
||||
num: [
|
||||
{
|
||||
required: true,
|
||||
message: t('views.neUser.pcf.batchNum') + t('common.unableNull'),
|
||||
message: t('views.neData.common.batchNum'),
|
||||
},
|
||||
],
|
||||
imsi: [{ required: true, message: `IMSI ${t('common.unableNull')}` }],
|
||||
msisdn: [{ required: true, message: `MSISDN ${t('common.unableNull')}` }],
|
||||
imsi: [{ required: true, message: t('views.neData.common.imsiPlease') }],
|
||||
msisdn: [
|
||||
{ required: true, message: t('views.neData.common.msisdnPlease') },
|
||||
],
|
||||
})
|
||||
);
|
||||
|
||||
@@ -278,7 +279,7 @@ const modalStateFrom = Form.useForm(
|
||||
* @param noticeId 网元id, 不传为新增
|
||||
*/
|
||||
function fnModalVisibleByEdit(row?: Record<string, any>) {
|
||||
getPCCRule(queryParams.neId)
|
||||
getPCFRule(queryParams.neId)
|
||||
.then((data: any) => {
|
||||
pcfRuleOption.value = data;
|
||||
})
|
||||
@@ -286,20 +287,14 @@ function fnModalVisibleByEdit(row?: Record<string, any>) {
|
||||
modalState.isBatch = false;
|
||||
if (!row) {
|
||||
modalStateFrom.resetFields(); //重置表单
|
||||
modalState.title = t('views.neUser.pcf.addTitle');
|
||||
modalState.title = t('views.neData.pcfSub.addTitle');
|
||||
modalState.openByEdit = 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) {
|
||||
Object.assign(modalState.from, res.data);
|
||||
Object.assign(modalState.from, row);
|
||||
|
||||
let pccRules = res.data.pccRules;
|
||||
// 处理多选框数据
|
||||
let pccRules = row.pccRules;
|
||||
if (!pccRules) {
|
||||
pccRules = [];
|
||||
} else if (pccRules.includes('|')) {
|
||||
@@ -308,7 +303,8 @@ function fnModalVisibleByEdit(row?: Record<string, any>) {
|
||||
pccRules = [pccRules];
|
||||
}
|
||||
modalState.from.pccRules = pccRules;
|
||||
let sessRules = res.data.sessRules;
|
||||
// 处理多选框数据
|
||||
let sessRules = row.sessRules;
|
||||
if (!sessRules) {
|
||||
sessRules = [];
|
||||
} else if (sessRules.includes('|')) {
|
||||
@@ -318,19 +314,12 @@ function fnModalVisibleByEdit(row?: Record<string, any>) {
|
||||
}
|
||||
modalState.from.sessRules = sessRules;
|
||||
|
||||
modalState.title = t('views.neUser.pcf.updateTitle', {
|
||||
// 打开对话框
|
||||
modalState.title = t('views.neData.pcfSub.updateTitle', {
|
||||
imsi: row.imsi,
|
||||
});
|
||||
modalState.openByEdit = true;
|
||||
modalState.type = 'update';
|
||||
} else {
|
||||
message.error(t('common.getInfoFail'), 2);
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
hide();
|
||||
modalState.confirmLoading = false;
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -341,8 +330,9 @@ function fnModalVisibleByEdit(row?: Record<string, any>) {
|
||||
*/
|
||||
function fnModalOk() {
|
||||
const from = JSON.parse(JSON.stringify(modalState.from));
|
||||
from.neId = queryParams.neId || '-';
|
||||
const neId = queryParams.neId || '-';
|
||||
from.rfsp = Number(from.rfsp) || 0;
|
||||
// 处理多选框数据
|
||||
let pccRules = modalState.from.pccRules;
|
||||
if (Array.isArray(pccRules)) {
|
||||
pccRules = pccRules.join('|');
|
||||
@@ -350,7 +340,7 @@ function fnModalOk() {
|
||||
pccRules = '';
|
||||
}
|
||||
from.pccRules = pccRules;
|
||||
|
||||
// 处理多选框数据
|
||||
let sessRules = modalState.from.sessRules;
|
||||
if (Array.isArray(sessRules)) {
|
||||
sessRules = sessRules.join('|');
|
||||
@@ -359,6 +349,7 @@ function fnModalOk() {
|
||||
}
|
||||
from.sessRules = sessRules;
|
||||
|
||||
// 必要字段校验
|
||||
let validateArr = ['imsi', 'msisdn'];
|
||||
if (modalState.isBatch) {
|
||||
validateArr.push('num');
|
||||
@@ -377,20 +368,40 @@ function fnModalOk() {
|
||||
let result: any = null;
|
||||
if (modalState.isBatch) {
|
||||
if (modalState.type === 'add') {
|
||||
result = batchAddRule(from);
|
||||
result = addPCFRule({
|
||||
neId: neId,
|
||||
num: from.num,
|
||||
paramData: from,
|
||||
});
|
||||
}
|
||||
if (modalState.type === 'update') {
|
||||
result = batchUpdateRule(from);
|
||||
result = editPCFRule({
|
||||
neId: neId,
|
||||
num: from.num,
|
||||
paramData: from,
|
||||
});
|
||||
}
|
||||
if (modalState.type === 'delete') {
|
||||
result = batchDelRule(from);
|
||||
result = delPCFRule({
|
||||
neId: neId,
|
||||
num: from.num,
|
||||
imsi: from.imsi,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (modalState.type === 'add') {
|
||||
result = addRule(from);
|
||||
result = addPCFRule({
|
||||
neId: neId,
|
||||
num: 0,
|
||||
paramData: from,
|
||||
});
|
||||
}
|
||||
if (modalState.type === 'update') {
|
||||
result = updateRule(from);
|
||||
result = editPCFRule({
|
||||
neId: neId,
|
||||
num: 0,
|
||||
paramData: from,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -454,7 +465,7 @@ function fnModalCancel() {
|
||||
* @param type 类型
|
||||
*/
|
||||
function fnModalVisibleByBatch(type: 'delete' | 'add' | 'update') {
|
||||
getPCCRule(queryParams.neId)
|
||||
getPCFRule(queryParams.neId)
|
||||
.then((data: any) => {
|
||||
pcfRuleOption.value = data;
|
||||
console.log(data);
|
||||
@@ -462,17 +473,18 @@ function fnModalVisibleByBatch(type: 'delete' | 'add' | 'update') {
|
||||
.finally(() => {
|
||||
modalStateFrom.resetFields(); //重置表单
|
||||
modalState.isBatch = true;
|
||||
modalState.from.num = 1;
|
||||
modalState.type = type;
|
||||
if (type === 'add') {
|
||||
modalState.title = t('views.neUser.pcf.batchAddText');
|
||||
modalState.title = t('views.neData.common.batchAddText');
|
||||
modalState.openByEdit = true;
|
||||
}
|
||||
if (type === 'update') {
|
||||
modalState.title = t('views.neUser.pcf.batchUpdateText');
|
||||
modalState.title = t('views.neData.common.batchUpdateText');
|
||||
modalState.openByEdit = true;
|
||||
}
|
||||
if (type === 'delete') {
|
||||
modalState.title = t('views.neUser.pcf.batchDelText');
|
||||
modalState.title = t('views.neData.common.batchDelText');
|
||||
modalState.openByEdit = true;
|
||||
}
|
||||
});
|
||||
@@ -483,8 +495,8 @@ function fnModalVisibleByBatch(type: 'delete' | 'add' | 'update') {
|
||||
* @param imsi 网元编号ID
|
||||
*/
|
||||
function fnRecordDelete(imsi: string) {
|
||||
const neID = queryParams.neId;
|
||||
if (!neID) return;
|
||||
const neId = queryParams.neId;
|
||||
if (!neId) return;
|
||||
let imsiMsg = imsi;
|
||||
if (imsi === '0') {
|
||||
imsiMsg = `${tableState.selectedRowKeys[0]}... ${tableState.selectedRowKeys.length}`;
|
||||
@@ -493,25 +505,29 @@ function fnRecordDelete(imsi: string) {
|
||||
|
||||
Modal.confirm({
|
||||
title: t('common.tipTitle'),
|
||||
content: t('views.neUser.pcf.delSure', { imsi: imsiMsg }),
|
||||
content: t('views.neData.pcfSub.delSure', { imsi: imsiMsg }),
|
||||
onOk() {
|
||||
const key = 'delRule';
|
||||
message.loading({ content: t('common.loading'), key });
|
||||
delRule(neID, imsi).then(res => {
|
||||
const hide = message.loading(t('common.loading'), 0);
|
||||
delPCFRule({
|
||||
neId: neId,
|
||||
imsi: imsi,
|
||||
})
|
||||
.then(res => {
|
||||
if (res.code === RESULT_CODE_SUCCESS) {
|
||||
message.success({
|
||||
content: `${res.msg}`,
|
||||
key,
|
||||
content: `${t('common.operateOk')}`,
|
||||
duration: 3,
|
||||
});
|
||||
fnGetList();
|
||||
} else {
|
||||
message.error({
|
||||
content: `${res.msg}`,
|
||||
key: key,
|
||||
duration: 3,
|
||||
});
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
hide();
|
||||
fnGetList();
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -519,28 +535,29 @@ function fnRecordDelete(imsi: string) {
|
||||
|
||||
/**列表导出 */
|
||||
function fnExportList(type: string) {
|
||||
const neID = queryParams.neId;
|
||||
if (!neID) return;
|
||||
const key = 'exportRule';
|
||||
message.loading({ content: t('common.loading'), key });
|
||||
exportRule({
|
||||
neId: neID,
|
||||
const neId = queryParams.neId;
|
||||
if (!neId) return;
|
||||
const hide = message.loading(t('common.loading'), 0);
|
||||
exportPCFRule({
|
||||
neId: neId,
|
||||
fileType: type,
|
||||
}).then(res => {
|
||||
})
|
||||
.then(res => {
|
||||
if (res.code === RESULT_CODE_SUCCESS) {
|
||||
message.success({
|
||||
content: t('common.msgSuccess', { msg: t('common.export') }),
|
||||
key,
|
||||
duration: 2,
|
||||
duration: 3,
|
||||
});
|
||||
saveAs(res.data, `PCF_${neID}_${Date.now()}.${type}`);
|
||||
saveAs(res.data, `PCFRlue_${neId}_${Date.now()}.${type}`);
|
||||
} else {
|
||||
message.error({
|
||||
content: `${res.msg}`,
|
||||
key,
|
||||
duration: 2,
|
||||
duration: 3,
|
||||
});
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
hide();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -552,15 +569,14 @@ function fnGetList(pageNum?: number) {
|
||||
queryParams.pageNum = pageNum;
|
||||
tablePagination.current = pageNum;
|
||||
}
|
||||
listRules(toRaw(queryParams)).then(res => {
|
||||
listPCFRule(toRaw(queryParams)).then(res => {
|
||||
if (res.code === RESULT_CODE_SUCCESS) {
|
||||
// 取消勾选
|
||||
if (tableState.selectedRowKeys.length > 0) {
|
||||
tableState.selectedRowKeys = [];
|
||||
}
|
||||
const { total, rows } = res.data;
|
||||
tablePagination.total = total;
|
||||
tableState.data = rows;
|
||||
tablePagination.total = res.data.length;
|
||||
tableState.data = res.data;
|
||||
} else {
|
||||
tableState.data = [];
|
||||
}
|
||||
@@ -578,6 +594,8 @@ type ModalUploadImportStateType = {
|
||||
loading: boolean;
|
||||
/**上传结果信息 */
|
||||
msg: string;
|
||||
/**含失败信息 */
|
||||
hasFail: boolean;
|
||||
};
|
||||
|
||||
/**对话框表格信息导入对象信息状态 */
|
||||
@@ -586,6 +604,7 @@ let uploadImportState: ModalUploadImportStateType = reactive({
|
||||
title: t('components.UploadModal.uploadTitle'),
|
||||
loading: false,
|
||||
msg: '',
|
||||
hasFail: false,
|
||||
});
|
||||
|
||||
/**对话框表格信息导入弹出窗口 */
|
||||
@@ -603,31 +622,42 @@ function fnModalUploadImportClose() {
|
||||
|
||||
/**对话框表格信息导入上传 */
|
||||
function fnModalUploadImportUpload(file: File) {
|
||||
const neID = queryParams.neId;
|
||||
if (!neID) {
|
||||
const neId = queryParams.neId;
|
||||
if (!neId) {
|
||||
return Promise.reject('Unknown network element');
|
||||
}
|
||||
const hide = message.loading(t('common.loading'), 0);
|
||||
uploadImportState.loading = true;
|
||||
uploadFileToNE('PCF', neID, file, 5)
|
||||
// 上传文件
|
||||
uploadFileToNE('PCF', neId, file, 3)
|
||||
.then(res => {
|
||||
if (res.code === RESULT_CODE_SUCCESS) {
|
||||
return importRuleData({
|
||||
neId: neID,
|
||||
filePath: res.data,
|
||||
fileType: 'txt',
|
||||
});
|
||||
return res.data;
|
||||
} else {
|
||||
uploadImportState.msg = res.msg;
|
||||
uploadImportState.loading = false;
|
||||
return '';
|
||||
}
|
||||
return res;
|
||||
})
|
||||
.then((filePath: string) => {
|
||||
if (!filePath) return;
|
||||
// 文件导入
|
||||
return importPCFRule({
|
||||
neId: neId,
|
||||
fileType: 'txt',
|
||||
filePath: filePath,
|
||||
});
|
||||
})
|
||||
.then(res => {
|
||||
if (res.code === RESULT_CODE_SUCCESS && res.data?.data) {
|
||||
uploadImportState.msg = res.data?.data;
|
||||
// uploadImportState.msg = t('views.neUser.pcf.uploadFileOk');
|
||||
} else if (res.code === RESULT_CODE_SUCCESS && res.data?.detail) {
|
||||
uploadImportState.msg = res.data?.detail;
|
||||
if (!res) return;
|
||||
uploadImportState.msg = res.msg;
|
||||
const regex = /fail num: (\d+)/;
|
||||
const match = res.msg.match(regex);
|
||||
if (match) {
|
||||
const failNum = Number(match[1]);
|
||||
uploadImportState.hasFail = failNum > 0;
|
||||
} else {
|
||||
uploadImportState.msg = t('views.neUser.pcf.uploadFileErr');
|
||||
uploadImportState.hasFail = false;
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
@@ -704,7 +734,7 @@ onMounted(() => {
|
||||
<a-form :model="queryParams" name="queryParams" layout="horizontal">
|
||||
<a-row :gutter="16">
|
||||
<a-col :lg="6" :md="12" :xs="24">
|
||||
<a-form-item :label="t('views.neUser.pcf.neType')" name="neId ">
|
||||
<a-form-item label="PCF" name="neId ">
|
||||
<a-select
|
||||
v-model:value="queryParams.neId"
|
||||
:options="neOtions"
|
||||
@@ -772,27 +802,27 @@ onMounted(() => {
|
||||
@click.prevent="fnRecordDelete('0')"
|
||||
>
|
||||
<template #icon><DeleteOutlined /></template>
|
||||
{{ t('views.neUser.pcf.checkDel') }}
|
||||
{{ t('views.neData.common.checkDel') }}
|
||||
</a-button>
|
||||
|
||||
<a-dropdown trigger="click">
|
||||
<a-button>
|
||||
{{ t('views.neUser.pcf.batchOper') }}
|
||||
{{ t('views.neData.common.batchOper') }}
|
||||
<DownOutlined />
|
||||
</a-button>
|
||||
<template #overlay>
|
||||
<a-menu @click="({ key }:any) => fnModalVisibleByBatch(key)">
|
||||
<a-menu-item key="add">
|
||||
<PlusOutlined />
|
||||
{{ t('views.neUser.pcf.batchAddText') }}
|
||||
{{ t('views.neData.common.batchAddText') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="update">
|
||||
<FormOutlined />
|
||||
{{ t('views.neUser.pcf.batchUpdateText') }}
|
||||
{{ t('views.neData.common.batchUpdateText') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="delete">
|
||||
<DeleteOutlined />
|
||||
{{ t('views.neUser.pcf.batchDelText') }}
|
||||
{{ t('views.neData.common.batchDelText') }}
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
@@ -800,18 +830,18 @@ onMounted(() => {
|
||||
|
||||
<a-button type="dashed" @click.prevent="fnModalUploadImportOpen">
|
||||
<template #icon><ImportOutlined /></template>
|
||||
{{ t('views.neUser.pcf.import') }}
|
||||
{{ t('common.import') }}
|
||||
</a-button>
|
||||
<a-popconfirm
|
||||
placement="topRight"
|
||||
:title="t('views.neUser.pcf.exportConfirm')"
|
||||
:title="t('views.neData.pcfSub.exportTip')"
|
||||
ok-text="TXT"
|
||||
ok-type="default"
|
||||
@confirm="fnExportList('txt')"
|
||||
>
|
||||
<a-button type="dashed">
|
||||
<template #icon><ExportOutlined /></template>
|
||||
{{ t('views.neUser.pcf.export') }}
|
||||
{{ t('common.export') }}
|
||||
</a-button>
|
||||
</a-popconfirm>
|
||||
</a-space>
|
||||
@@ -882,7 +912,7 @@ onMounted(() => {
|
||||
:data-source="tableState.data"
|
||||
:size="tableState.size"
|
||||
:pagination="tablePagination"
|
||||
:scroll="{ y: 'calc(100vh - 480px)' }"
|
||||
:scroll="{ x: tableColumns.length * 150, y: 'calc(100vh - 480px)' }"
|
||||
@resizeColumn="(w:number, col:any) => (col.width = w)"
|
||||
:row-selection="{
|
||||
type: 'checkbox',
|
||||
@@ -924,12 +954,13 @@ onMounted(() => {
|
||||
<!-- 新增框或修改框 -->
|
||||
<ProModal
|
||||
:drag="true"
|
||||
:width="modalState.type === 'delete' ? 520 : 800"
|
||||
:width="520"
|
||||
:destroyOnClose="true"
|
||||
:keyboard="false"
|
||||
:mask-closable="false"
|
||||
:open="modalState.openByEdit"
|
||||
:title="modalState.title"
|
||||
:body-style="{ maxHeight: '600px', 'overflow-y': 'auto' }"
|
||||
:confirm-loading="modalState.confirmLoading"
|
||||
@ok="fnModalOk"
|
||||
@cancel="fnModalCancel"
|
||||
@@ -937,13 +968,13 @@ onMounted(() => {
|
||||
<a-form
|
||||
name="modalStateFrom"
|
||||
layout="horizontal"
|
||||
:label-col="{ span: 6 }"
|
||||
:label-col="{ span: 5 }"
|
||||
:labelWrap="true"
|
||||
>
|
||||
<!--批量删除-->
|
||||
<template v-if="modalState.isBatch && modalState.type === 'delete'">
|
||||
<a-form-item
|
||||
:label="t('views.neUser.pcf.batchNum')"
|
||||
:label="t('views.neData.common.batchNum')"
|
||||
name="num"
|
||||
v-bind="modalStateFrom.validateInfos.num"
|
||||
>
|
||||
@@ -951,13 +982,13 @@ onMounted(() => {
|
||||
v-model:value="modalState.from.num"
|
||||
style="width: 100%"
|
||||
:min="1"
|
||||
:max="100000"
|
||||
placeholder="<=100000"
|
||||
:max="500"
|
||||
placeholder="<=500"
|
||||
></a-input-number>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
:label="
|
||||
modalState.isBatch ? t('views.neUser.pcf.startIMSI') : 'IMSI'
|
||||
modalState.isBatch ? t('views.neData.common.startIMSI') : 'IMSI'
|
||||
"
|
||||
name="imsi"
|
||||
v-bind="modalStateFrom.validateInfos.imsi"
|
||||
@@ -966,14 +997,15 @@ onMounted(() => {
|
||||
v-model:value="modalState.from.imsi"
|
||||
allow-clear
|
||||
:maxlength="64"
|
||||
:placeholder="t('common.inputPlease')"
|
||||
>
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.pcf.imsiTip') }}<br />
|
||||
{{ t('views.neUser.pcf.imsiTip1') }}<br />
|
||||
{{ t('views.neUser.pcf.imsiTip2') }}<br />
|
||||
{{ t('views.neUser.pcf.imsiTip3') }}
|
||||
{{ t('views.neData.common.imsiTip') }}<br />
|
||||
{{ t('views.neData.common.imsiTip1') }}<br />
|
||||
{{ t('views.neData.common.imsiTip2') }}<br />
|
||||
{{ t('views.neData.common.imsiTip3') }}
|
||||
</template>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
@@ -984,10 +1016,9 @@ onMounted(() => {
|
||||
|
||||
<template v-else>
|
||||
<!--批量数-->
|
||||
<a-row v-if="modalState.isBatch">
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item
|
||||
:label="t('views.neUser.pcf.batchNum')"
|
||||
v-if="modalState.isBatch"
|
||||
:label="t('views.neData.common.batchNum')"
|
||||
name="num"
|
||||
v-bind="modalStateFrom.validateInfos.num"
|
||||
>
|
||||
@@ -995,18 +1026,14 @@ onMounted(() => {
|
||||
v-model:value="modalState.from.num"
|
||||
style="width: 100%"
|
||||
:min="1"
|
||||
:max="100000"
|
||||
placeholder="<=100000"
|
||||
:max="500"
|
||||
placeholder="<=500"
|
||||
></a-input-number>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-row>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item
|
||||
:label="
|
||||
modalState.isBatch ? t('views.neUser.pcf.startIMSI') : 'IMSI'
|
||||
modalState.isBatch ? t('views.neData.common.startIMSI') : 'IMSI'
|
||||
"
|
||||
name="imsi"
|
||||
v-bind="modalStateFrom.validateInfos.imsi"
|
||||
@@ -1015,27 +1042,22 @@ onMounted(() => {
|
||||
v-model:value="modalState.from.imsi"
|
||||
allow-clear
|
||||
:maxlength="64"
|
||||
:disabled="
|
||||
!modalState.isBatch && modalState.type === 'update'
|
||||
"
|
||||
:disabled="!modalState.isBatch && modalState.type === 'update'"
|
||||
:placeholder="t('common.inputPlease')"
|
||||
>
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.pcf.imsiTip') }}<br />
|
||||
{{ t('views.neUser.pcf.imsiTip1') }}<br />
|
||||
{{ t('views.neUser.pcf.imsiTip2') }}<br />
|
||||
{{ t('views.neUser.pcf.imsiTip3') }}
|
||||
{{ t('views.neData.common.imsiTip') }}<br />
|
||||
{{ t('views.neData.common.imsiTip1') }}<br />
|
||||
{{ t('views.neData.common.imsiTip2') }}<br />
|
||||
{{ t('views.neData.common.imsiTip3') }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item
|
||||
label="MSISDN"
|
||||
name="msisdn"
|
||||
@@ -1045,43 +1067,50 @@ onMounted(() => {
|
||||
v-model:value="modalState.from.msisdn"
|
||||
allow-clear
|
||||
:maxlength="16"
|
||||
:disabled="
|
||||
!modalState.isBatch && modalState.type === 'update'
|
||||
"
|
||||
:disabled="!modalState.isBatch && modalState.type === 'update'"
|
||||
:placeholder="t('common.inputPlease')"
|
||||
>
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neData.common.msisdn') }}
|
||||
</template>
|
||||
<InfoCircleOutlined style="opacity: 0.45; color: inherit" />
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-row>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item label="PCC Rules" name="pccRules">
|
||||
<a-form-item
|
||||
label="PCC Rules"
|
||||
name="pccRules"
|
||||
:help="t('views.neData.pcfSub.pccRuleTip')"
|
||||
>
|
||||
<a-select
|
||||
v-model:value="modalState.from.pccRules"
|
||||
allow-clear
|
||||
mode="tags"
|
||||
:options="pcfRuleOption.pccRules"
|
||||
:title="t('views.neUser.pcf.pccRuleTip')"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item label="SESS Rules" name="sessRules">
|
||||
<a-form-item
|
||||
label="SESS Rules"
|
||||
name="sessRules"
|
||||
:help="t('views.neData.pcfSub.sessRuleTip')"
|
||||
>
|
||||
<a-select
|
||||
v-model:value="modalState.from.sessRules"
|
||||
allow-clear
|
||||
mode="tags"
|
||||
:options="pcfRuleOption.sessionRules"
|
||||
:title="t('views.neUser.pcf.sessRuleTip')"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-row>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item label="QoS Audio" name="qosAudio">
|
||||
<a-form-item
|
||||
label="QoS Audio"
|
||||
name="qosAudio"
|
||||
:help="t('views.neData.pcfSub.qosAudioTip')"
|
||||
>
|
||||
<a-auto-complete
|
||||
v-model:value="modalState.from.qosAudio"
|
||||
allow-clear
|
||||
@@ -1089,9 +1118,11 @@ onMounted(() => {
|
||||
:filter-option="filterOption"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item label="QoS Video" name="qosVideo">
|
||||
<a-form-item
|
||||
label="QoS Video"
|
||||
name="qosVideo"
|
||||
:help="t('views.neData.pcfSub.qosVideoTip')"
|
||||
>
|
||||
<a-auto-complete
|
||||
v-model:value="modalState.from.qosVideo"
|
||||
allow-clear
|
||||
@@ -1099,12 +1130,12 @@ onMounted(() => {
|
||||
:filter-option="filterOption"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-row>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item label="HDR Enrich" name="hdrEnrich">
|
||||
<a-form-item
|
||||
label="HDR Enrich"
|
||||
name="hdrEnrich"
|
||||
:help="t('views.neData.pcfSub.hdrEnrichTip')"
|
||||
>
|
||||
<a-auto-complete
|
||||
v-model:value="modalState.from.hdrEnrich"
|
||||
allow-clear
|
||||
@@ -1112,32 +1143,24 @@ onMounted(() => {
|
||||
:filter-option="filterOption"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item label="UE Policy" name="uePolicy">
|
||||
<a-form-item
|
||||
label="UE Policy"
|
||||
name="uePolicy"
|
||||
:help="t('views.neData.pcfSub.uePolicyTip')"
|
||||
>
|
||||
<a-input
|
||||
v-model:value="modalState.from.uePolicy"
|
||||
allow-clear
|
||||
:maxlength="64"
|
||||
>
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.pcf.ueTip') }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-row>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item label="SAR" name="sar">
|
||||
<a-form-item
|
||||
label="SAR"
|
||||
name="sar"
|
||||
:help="t('views.neData.pcfSub.sarTip')"
|
||||
>
|
||||
<a-auto-complete
|
||||
v-model:value="modalState.from.sar"
|
||||
allow-clear
|
||||
@@ -1145,9 +1168,11 @@ onMounted(() => {
|
||||
:filter-option="filterOption"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :lg="12" :md="12" :xs="24">
|
||||
<a-form-item label="RFSP" name="rfsp">
|
||||
<a-form-item
|
||||
label="RFSP"
|
||||
name="rfsp"
|
||||
:help="t('views.neData.pcfSub.rfsfTip')"
|
||||
>
|
||||
<a-input-number
|
||||
v-model:value="modalState.from.rfsp"
|
||||
style="width: 100%"
|
||||
@@ -1155,20 +1180,8 @@ onMounted(() => {
|
||||
:max="255"
|
||||
placeholder="0~255"
|
||||
>
|
||||
<template #prefix>
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
{{ t('views.neUser.pcf.rfsfTip') }}
|
||||
</template>
|
||||
<InfoCircleOutlined
|
||||
style="opacity: 0.45; color: inherit"
|
||||
/>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-input-number>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</template>
|
||||
</a-form>
|
||||
</ProModal>
|
||||
@@ -1195,13 +1208,12 @@ onMounted(() => {
|
||||
</a-button>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-textarea
|
||||
:disabled="true"
|
||||
:hidden="!uploadImportState.msg"
|
||||
:value="uploadImportState.msg"
|
||||
:auto-size="{ minRows: 2, maxRows: 8 }"
|
||||
style="background-color: transparent; color: rgba(0, 0, 0, 0.85)"
|
||||
/>
|
||||
<a-alert
|
||||
:message="uploadImportState.msg"
|
||||
:type="uploadImportState.hasFail ? 'warning' : 'info'"
|
||||
v-show="uploadImportState.msg.length > 0"
|
||||
>
|
||||
</a-alert>
|
||||
</template>
|
||||
</UploadModal>
|
||||
</PageContainer>
|
||||
|
||||
Reference in New Issue
Block a user