Merge branch 'lichang' into lite

This commit is contained in:
TsMask
2025-05-23 16:09:38 +08:00
15 changed files with 78 additions and 86 deletions

View File

@@ -11,7 +11,7 @@ VITE_APP_NAME = "Core Network OMC"
VITE_APP_CODE = "OMC"
# 应用版本
VITE_APP_VERSION = "2.250509"
VITE_APP_VERSION = "2.250523"
# 接口基础URL地址-不带/后缀
VITE_API_BASE_URL = "/omc-api"

View File

@@ -11,7 +11,7 @@ VITE_APP_NAME = "Core Network OMC"
VITE_APP_CODE = "OMC"
# 应用版本
VITE_APP_VERSION = "2.250509"
VITE_APP_VERSION = "2.250523"
# 接口基础URL地址-不带/后缀
VITE_API_BASE_URL = "/omc-api"

View File

@@ -624,8 +624,8 @@ export default {
change: "Change License",
reload: "Refresh Info",
reloadTip: "Confirmed to refresh license information?",
reloadBatch: "Batch Refresh",
reloadBatchTip: "Do you do an information refresh on checked records?",
reloadBatch: "Refresh License Status",
reloadBatchTip: "Do you perform a license status information refresh for the current list of NE?",
updateTtile: "Update License",
downCodeTop: "Confirmed to save the license activation code to a file?",
activationRequestCode: "License Activation Code",

View File

@@ -226,7 +226,7 @@ export default {
version: '软件版本',
cpuUse: 'CPU利用率',
memoryUse: '内存使用',
capability: '用户容量',
capability: '容量',
serialNum: '序列号',
expiryDate: '许可证到期日期',
neStatus:'状态异常',
@@ -474,7 +474,7 @@ export default {
ipAddrTip: "支持IPV4/IPV6,同步变更配置地址",
port: '服务端口',
portTip: "网元服务端口,默认:33030",
capability: '用户容量',
capability: '容量',
serialNum: '序列号',
expiryDate: '许可证到期日期',
normalcy: '正常',
@@ -624,8 +624,8 @@ export default {
change: "变更许可证",
reload: "刷新信息",
reloadTip: "确认要刷新许可证信息吗?",
reloadBatch: "批量刷新",
reloadBatchTip: "对勾选的记录进行信息刷新吗?",
reloadBatch: "刷新许可证状态",
reloadBatchTip: "对当前列表网元进行许可证状态信息刷新吗?",
updateTtile: "更新许可证",
downCodeTop: "确认要将许可激活码保存到文件吗?",
activationRequestCode: "许可激活码",

View File

@@ -192,15 +192,15 @@ async function fnGetSkim() {
const results = await Promise.allSettled(requests.map(r => r.promise));
// 重置
// Object.assign(skimState, {
// udmSubNum: 0,
// smfUeNum: 0,
// imsUeNum: 0,
// gnbNum: 0,
// gnbUeNum: 0,
// enbNum: 0,
// enbUeNum: 0,
// });
Object.assign(skimState, {
// udmSubNum: 0,
smfUeNum: 0,
imsUeNum: 0,
gnbNum: 0,
gnbUeNum: 0,
enbNum: 0,
enbUeNum: 0,
});
results.forEach((result, index) => {
if (result.status === 'fulfilled') {
requests[index].process(result.value);

View File

@@ -531,7 +531,7 @@ const onSelectChange = (
*/
function fnCancelConfirm() {
Modal.confirm({
title: 'Tip',
title: t('common.tipTitle'),
content: t('views.faultManage.activeAlarm.cancelSure'),
onOk() {
const hide = message.loading(t('common.loading'), 0);
@@ -561,7 +561,6 @@ function fnCancelConfirm() {
function fnSync() {
const hide = message.loading(t('common.loading'), 0);
listSync().then(res => {
hide();
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: t('views.faultManage.activeAlarm.sysncSuss'),
@@ -574,6 +573,8 @@ function fnSync() {
duration: 2,
});
}
}).finally(()=>{
hide();
});
}
@@ -582,7 +583,7 @@ function fnSync() {
*/
function fnClear() {
Modal.confirm({
title: 'Tip',
title: t('common.tipTitle'),
content: t('views.faultManage.activeAlarm.delSure'),
onOk() {
const hide = message.loading(t('common.loading'), 0);
@@ -651,7 +652,7 @@ function mapKeysWithReduce(data: any[], titleMapping: Record<string, string>) {
*/
function fnExportAll() {
Modal.confirm({
title: 'Tip',
title: t('common.tipTitle'),
content: t('views.faultManage.activeAlarm.exportSure'),
onOk() {
const key = 'exportAlarm';
@@ -956,7 +957,7 @@ onMounted(() => {
{{ t('views.faultManage.activeAlarm.updateConfirm') }}
</a-button>
<a-button type="primary" @click.prevent="fnSync()" v-if="false">
<a-button type="primary" @click.prevent="fnSync()">
<template #icon>
<ReloadOutlined />
</template>

View File

@@ -323,7 +323,7 @@ function mapKeysWithReduce(data: any, titleMapping: any) {
*/
function fnExportAll() {
Modal.confirm({
title: 'Tip',
title: t('common.tipTitle'),
content: t('views.faultManage.eventAlarm.exportSure'),
onOk() {
const key = 'exportAlarm';

View File

@@ -420,7 +420,7 @@ const onSelectChange = (
*/
function fnCancelConfirm() {
Modal.confirm({
title: 'Tip',
title: t('common.tipTitle'),
content: t('views.faultManage.activeAlarm.cancelSure'),
onOk() {
const hide = message.loading(t('common.loading'), 0);
@@ -465,7 +465,7 @@ function mapKeysWithReduce(data: any[], titleMapping: Record<string, string>) {
*/
function fnExportAll() {
Modal.confirm({
title: 'Tip',
title: t('common.tipTitle'),
content: t('views.faultManage.activeAlarm.exportSure'),
onOk() {
const key = 'exportAlarmHis';

View File

@@ -142,14 +142,14 @@ function fnModalOk() {
const validateArr = ['title', 'addr', 'port', 'user'];
if (form.authMode === '0') {
validateArr.push('password');
} else {
} else if (form.authMode === '1') {
validateArr.push('privateKey');
}
modalStateFrom
.validate(validateArr)
.then(() => {
modalState.confirmLoading = true;
const neHost = form.id > 0 ? updateNeHost(form) : addNeHost(form);
const neHost = form.id ? updateNeHost(form) : addNeHost(form);
const hide = message.loading(t('common.loading'), 0);
neHost
.then(res => {

View File

@@ -54,21 +54,15 @@ type TabeStateType = {
loading: boolean;
/**紧凑型 */
size: SizeType;
/**搜索栏 */
seached: boolean;
/**记录数据 */
data: any[];
/**勾选记录 */
selectedRowKeys: (string | number)[];
};
/**表格状态 */
let tableState: TabeStateType = reactive({
loading: false,
size: 'middle',
seached: false,
data: [],
selectedRowKeys: [],
});
/**表格字段列 */
@@ -114,6 +108,12 @@ let tableColumns = ref<TableColumnsType>([
title: t('views.ne.common.capability'),
dataIndex: 'capability',
align: 'left',
customRender(opt) {
if (['UDM', 'AMF', 'MME'].includes(opt.record.neType)) {
return opt.value;
}
return '-';
},
width: 100,
},
{
@@ -176,11 +176,6 @@ function fnTableSize({ key }: MenuInfo) {
tableState.size = key as SizeType;
}
/**表格多选 */
function fnTableSelectedRowKeys(keys: (string | number)[]) {
tableState.selectedRowKeys = keys;
}
/**查询列表, pageNum初始页数 */
function fnGetList(pageNum?: number) {
if (tableState.loading) return;
@@ -191,8 +186,16 @@ function fnGetList(pageNum?: number) {
listNeLicense(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
const { total, rows } = res.data;
tablePagination.total = total;
tableState.data = rows.filter((s: any) => s.neType !== 'OMC');
let totalV = total;
let rowsV = rows.filter((s: any) => {
if (s.neType !== 'OMC') {
return true;
}
totalV -= 1;
return false;
});
tableState.data = rowsV;
tablePagination.total = totalV;
if (
tablePagination.total <=
(queryParams.pageNum - 1) * tablePagination.pageSize &&
@@ -304,8 +307,8 @@ function fnRecordState(row: Record<string, any>) {
});
}
/**刷新网元授权状态 勾选 */
function fnRecordStateBatch() {
/**刷新网元授权状态 重载 */
function fnRecordStateReload() {
if (modalState.confirmLoading) return;
Modal.confirm({
title: t('common.tipTitle'),
@@ -313,12 +316,7 @@ function fnRecordStateBatch() {
onOk: async () => {
modalState.confirmLoading = true;
const hide = message.loading(t('common.loading'), 0);
// 勾选的网元数据
const selectRows = tableState.data.filter(item =>
tableState.selectedRowKeys.includes(item.id)
);
for (const row of selectRows) {
for (const row of tableState.data) {
if (row.neType.toUpperCase() === 'OMC') {
continue;
}
@@ -330,7 +328,6 @@ function fnRecordStateBatch() {
} else {
row.status = '0';
}
tableState.selectedRowKeys = [];
}
message.success(t('common.operateOk'), 3);
hide();
@@ -355,7 +352,6 @@ onMounted(() => {
<template>
<PageContainer>
<a-card
v-show="tableState.seached"
:bordered="false"
:body-style="{ marginBottom: '24px', paddingBottom: 0 }"
>
@@ -417,9 +413,8 @@ onMounted(() => {
<a-space :size="8" align="center">
<a-button
type="default"
:disabled="tableState.selectedRowKeys.length <= 0"
:loading="modalState.confirmLoading"
@click.prevent="fnRecordStateBatch()"
@click.prevent="fnRecordStateReload()"
>
<template #icon><SyncOutlined /></template>
{{ t('views.ne.neLicense.reloadBatch') }}
@@ -430,21 +425,6 @@ onMounted(() => {
<!-- 插槽-卡片右侧 -->
<template #extra>
<a-space :size="8" align="center">
<a-tooltip>
<template #title>{{ t('common.searchBarText') }}</template>
<a-switch
v-model:checked="tableState.seached"
:checked-children="t('common.switch.show')"
:un-checked-children="t('common.switch.hide')"
size="small"
/>
</a-tooltip>
<a-tooltip>
<template #title>{{ t('common.reloadText') }}</template>
<a-button type="text" @click.prevent="fnGetList()">
<template #icon><ReloadOutlined /></template>
</a-button>
</a-tooltip>
<a-tooltip placement="topRight">
<template #title>{{ t('common.sizeText') }}</template>
<a-dropdown placement="bottomRight" trigger="click">
@@ -483,12 +463,6 @@ onMounted(() => {
:pagination="tablePagination"
:scroll="{ x: tableColumns.length * 140 }"
@resizeColumn="(w:number, col:any) => (col.width = w)"
:row-selection="{
type: 'checkbox',
columnWidth: '48px',
selectedRowKeys: tableState.selectedRowKeys,
onChange: fnTableSelectedRowKeys,
}"
>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'status'">

View File

@@ -265,7 +265,7 @@ const statsColumns: TableColumnType<any>[] = [
*/
function fnRecordExport() {
Modal.confirm({
title: 'Tip',
title: t('common.tipTitle'),
content: t('views.perfManage.goldTarget.exportSure'),
onOk() {
const key = 'exportKPI';

View File

@@ -276,7 +276,7 @@ const statsColumns: TableColumnType<any>[] = [
*/
function fnRecordExport() {
Modal.confirm({
title: 'Tip',
title: t('common.tipTitle'),
content: t('views.perfManage.goldTarget.exportSure'),
onOk() {
const key = 'exportKPI';

View File

@@ -289,15 +289,32 @@ onMounted(() => {
<!-- 插槽-卡片右侧 -->
<template #extra>
<a-auto-complete
v-model:value="queryParams.title"
:options="neListStore.getNeSelectOtions"
allow-clear
size="small"
:placeholder="t('common.inputPlease')"
@change="fnGetList(1)"
style="width: 180px"
/>
<a-space :size="8" align="center" direction="horizontal">
<a-form layout="inline">
<a-form-item :label="t('views.ne.neHost.hostType')" name="hostType">
<a-select
v-model:value="queryParams.hostType"
:options="dict.neHostType"
allow-clear
size="small"
:placeholder="t('common.selectPlease')"
@change="fnGetList(1)"
style="width: 100px"
/>
</a-form-item>
<a-form-item :label="t('views.ne.neHost.title')" name="title">
<a-auto-complete
v-model:value="queryParams.title"
:options="neListStore.getNeSelectOtions"
allow-clear
size="small"
:placeholder="t('common.inputPlease')"
@change="fnGetList(1)"
style="width: 180px"
/>
</a-form-item>
</a-form>
</a-space>
</template>
<!-- 表格列表 -->

View File

@@ -618,7 +618,7 @@ onBeforeUnmount(() => {
return record.msgDirect === 0 ? 'table-striped-recv' : 'table-striped-send';
}"
:customRow="
record => {
(record:any) => {
return {
onClick: () => fnVisible(record),
};

View File

@@ -705,7 +705,7 @@ onBeforeUnmount(() => {
return `table-striped-${record.protocol}`
}"
:customRow="
record => {
(record:any) => {
return {
onClick: () => fnVisible(record),
};