Merge branch 'main-v2' into lite-ba
This commit is contained in:
@@ -1,5 +1,12 @@
|
|||||||
# 版本发布日志
|
# 版本发布日志
|
||||||
|
|
||||||
|
## 2.2510.3-20251018
|
||||||
|
|
||||||
|
- 新增 备份网元日志文件数据查看
|
||||||
|
- 修复 更新根网管节点处理逻辑,支持无OMC情况
|
||||||
|
- 新增 网元配置选择传入neId查询相应版本配置数据
|
||||||
|
- 修复 网元配置备份修改表单校验规则,添加备注字段必填项
|
||||||
|
|
||||||
## 2.2510.2-20251011
|
## 2.2510.2-20251011
|
||||||
|
|
||||||
- 新增 UDM-auth数据导出按钮权限定义
|
- 新增 UDM-auth数据导出按钮权限定义
|
||||||
|
|||||||
@@ -6,10 +6,11 @@ import { request } from '@/plugins/http-fetch';
|
|||||||
* @param query 查询参数
|
* @param query 查询参数
|
||||||
* @returns object
|
* @returns object
|
||||||
*/
|
*/
|
||||||
export function getAllNeConfig(neType: string) {
|
export function getAllNeConfig(neType: string, neId: string) {
|
||||||
return request({
|
return request({
|
||||||
url: `/ne/config/list/${neType}`,
|
url: `/ne/config/list/${neType}`,
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
|
params: { neId },
|
||||||
timeout: 60_000,
|
timeout: 60_000,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,10 +64,50 @@ function fnGetList(refresh: boolean = false) {
|
|||||||
Array.isArray(res.data) &&
|
Array.isArray(res.data) &&
|
||||||
res.data.length > 0
|
res.data.length > 0
|
||||||
) {
|
) {
|
||||||
// 根网管
|
|
||||||
let rootNodeInfo = { neName: 'OMC_001' };
|
|
||||||
const nodes = [];
|
const nodes = [];
|
||||||
const edges = [];
|
const edges = [];
|
||||||
|
|
||||||
|
// 根网管
|
||||||
|
let rootNodeInfo = {
|
||||||
|
neName: 'ROOT',
|
||||||
|
serverState: {
|
||||||
|
online: true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
// 处理没有OMC的情况
|
||||||
|
const omcFilter = res.data.filter(v => v.neType === 'OMC');
|
||||||
|
if (omcFilter.length === 1) {
|
||||||
|
rootNodeInfo.neName = omcFilter[0].neName;
|
||||||
|
} else {
|
||||||
|
nodes.unshift({
|
||||||
|
id: rootNodeInfo.neName,
|
||||||
|
label: rootNodeInfo.neName,
|
||||||
|
info: rootNodeInfo,
|
||||||
|
labelCfg: {
|
||||||
|
position: 'bottom',
|
||||||
|
offset: 8,
|
||||||
|
style: {
|
||||||
|
fill: '#fff',
|
||||||
|
fontSize: 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
size: 60,
|
||||||
|
icon: {
|
||||||
|
x: -30,
|
||||||
|
y: -30,
|
||||||
|
// 可更换为其他图片地址
|
||||||
|
img: parseBasePath('/svg/service_db.svg'),
|
||||||
|
width: 60,
|
||||||
|
height: 60,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
edges.push({
|
||||||
|
source: rootNodeInfo.neName,
|
||||||
|
target: rootNodeInfo.neName,
|
||||||
|
label: `${rootNodeInfo.neName}-${rootNodeInfo.neName}`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
for (const item of res.data) {
|
for (const item of res.data) {
|
||||||
item.serverState = {};
|
item.serverState = {};
|
||||||
// 节点
|
// 节点
|
||||||
@@ -96,7 +136,6 @@ function fnGetList(refresh: boolean = false) {
|
|||||||
height: 60,
|
height: 60,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
!rootNodeInfo.neName && (rootNodeInfo = item);
|
|
||||||
} else {
|
} else {
|
||||||
nodes.push({
|
nodes.push({
|
||||||
id: item.neName,
|
id: item.neName,
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ function fnActiveConfigNode(key: string | number) {
|
|||||||
|
|
||||||
/**查询配置可选属性值列表 */
|
/**查询配置可选属性值列表 */
|
||||||
function fnGetNeConfig() {
|
function fnGetNeConfig() {
|
||||||
const neType = neTypeSelect.value[0];
|
const [neType, neId] = neTypeSelect.value ;
|
||||||
if (!neType) {
|
if (!neType) {
|
||||||
message.warning({
|
message.warning({
|
||||||
content: t('views.ne.neConfig.neTypePleace'),
|
content: t('views.ne.neConfig.neTypePleace'),
|
||||||
@@ -220,7 +220,7 @@ function fnGetNeConfig() {
|
|||||||
|
|
||||||
treeState.loading = true;
|
treeState.loading = true;
|
||||||
// 获取数据
|
// 获取数据
|
||||||
getAllNeConfig(neType).then(res => {
|
getAllNeConfig(neType, neId).then(res => {
|
||||||
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.data)) {
|
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.data)) {
|
||||||
const arr = [];
|
const arr = [];
|
||||||
for (const item of res.data) {
|
for (const item of res.data) {
|
||||||
|
|||||||
@@ -303,12 +303,8 @@ function fnModalVisibleByEdit(row: Record<string, any>) {
|
|||||||
const modalStateFrom = Form.useForm(
|
const modalStateFrom = Form.useForm(
|
||||||
modalState.from,
|
modalState.from,
|
||||||
reactive({
|
reactive({
|
||||||
name: [
|
name: [{ required: true, message: t('common.inputPlease') }],
|
||||||
{
|
remark: [{ required: true, message: t('common.inputPlease') }],
|
||||||
required: true,
|
|
||||||
message: '请输入名称',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -462,7 +458,11 @@ function fnSyncFileToFTP(row: Record<string, any>) {
|
|||||||
<template #title>
|
<template #title>
|
||||||
{{ t('views.ne.neConfigBackup.backupModal.title') }}
|
{{ t('views.ne.neConfigBackup.backupModal.title') }}
|
||||||
</template>
|
</template>
|
||||||
<a-button type="text" @click.prevent="fnFTPModalOpen()" v-perms:has="['ne:neConfigBackup:ftp']">
|
<a-button
|
||||||
|
type="text"
|
||||||
|
@click.prevent="fnFTPModalOpen()"
|
||||||
|
v-perms:has="['ne:neConfigBackup:ftp']"
|
||||||
|
>
|
||||||
<template #icon><DeliveredProcedureOutlined /></template>
|
<template #icon><DeliveredProcedureOutlined /></template>
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
@@ -524,13 +524,21 @@ function fnSyncFileToFTP(row: Record<string, any>) {
|
|||||||
<template #title>
|
<template #title>
|
||||||
{{ t('views.ne.neConfigBackup.backupModal.pushFileOper') }}
|
{{ t('views.ne.neConfigBackup.backupModal.pushFileOper') }}
|
||||||
</template>
|
</template>
|
||||||
<a-button type="link" @click.prevent="fnSyncFileToFTP(record)" v-perms:has="['ne:neConfigBackup:ftpSync']">
|
<a-button
|
||||||
|
type="link"
|
||||||
|
@click.prevent="fnSyncFileToFTP(record)"
|
||||||
|
v-perms:has="['ne:neConfigBackup:ftpSync']"
|
||||||
|
>
|
||||||
<template #icon><CloudServerOutlined /></template>
|
<template #icon><CloudServerOutlined /></template>
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
<template #title>{{ t('common.downloadText') }}</template>
|
<template #title>{{ t('common.downloadText') }}</template>
|
||||||
<a-button type="link" @click.prevent="fnDownloadFile(record)" v-perms:has="['ne:neConfigBackup:download']">
|
<a-button
|
||||||
|
type="link"
|
||||||
|
@click.prevent="fnDownloadFile(record)"
|
||||||
|
v-perms:has="['ne:neConfigBackup:download']"
|
||||||
|
>
|
||||||
<template #icon><DownloadOutlined /></template>
|
<template #icon><DownloadOutlined /></template>
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
|
|||||||
@@ -226,7 +226,8 @@ async function fnGetNeConfig(neType: string) {
|
|||||||
|
|
||||||
treeState.loading = true;
|
treeState.loading = true;
|
||||||
// 获取数据
|
// 获取数据
|
||||||
const res = await getAllNeConfig(neType);
|
let neId = neTypeSelect.value[1];
|
||||||
|
const res = await getAllNeConfig(neType, neId);
|
||||||
if (res.code === RESULT_CODE_SUCCESS) {
|
if (res.code === RESULT_CODE_SUCCESS) {
|
||||||
const arr = [];
|
const arr = [];
|
||||||
for (const v of res.data) {
|
for (const v of res.data) {
|
||||||
|
|||||||
Reference in New Issue
Block a user