---完善活动告警

This commit is contained in:
lai
2023-09-27 20:48:38 +08:00
parent 35ca8e2fe7
commit 72313018cb
6 changed files with 737 additions and 73 deletions

BIN
public/alarmHelp/all.xlsx Normal file

Binary file not shown.

View File

@@ -2,7 +2,9 @@ import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch'; import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils'; import { parseObjLineToHump } from '@/utils/parse-utils';
import { toRaw } from '@vue/reactivity'; import { toRaw } from '@vue/reactivity';
import { stringify } from 'querystring';
import { parseDateToStr } from '@/utils/date-utils';
import useUserStore from '@/store/modules/user';
/** /**
* <20><>ѯ<EFBFBD>б<EFBFBD> * <20><>ѯ<EFBFBD>б<EFBFBD>
* @param query <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD> * @param query <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
@@ -73,3 +75,63 @@ export async function listAct(query: Record<string, any>) {
} }
return result; return result;
} }
/**
* ȷ<>ϸ澯<CFB8><E6BEAF>Ϣ
* @param data <20><>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>
* @returns object
*/
export function updateConfirm(data: Record<string, any>) {
var time = new Date();
const userName = useUserStore().userName;
let finalData = {
alarm: {
ack_time: parseDateToStr(time),
ack_user: userName,
ack_state: '1',
},
};
return request({
url: `/databaseManagement/v1/update/omc_db/alarm?WHERE=id='${data.id}'`,
method: 'put',
data: finalData,
});
}
/**
* ȡ<><C8A1>ȷ<EFBFBD>ϸ澯
* @param data <20><>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>
* @returns object
*/
export function cancelConfirm(data: (string | number)[]) {
var time = new Date();
const userName = useUserStore().userName;
let finalData = {
alarm: {
ack_time: parseDateToStr(time),
ack_user: '',
ack_state: '0',
},
};
return request({
url: `/databaseManagement/v1/update/omc_db/alarm?WHERE=id in(${data.join(
','
)})`,
method: 'put',
data: finalData,
});
}
/**
* <20>ֹ<EFBFBD>ͬ<EFBFBD><CDAC>
* @param data <20><>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>
* @returns object
*/
export function listSync() {
return request({
url: `/faultManagement/v1/elementType/all/objectType/alarms)`,
method: 'get',
});
}

View File

@@ -258,6 +258,7 @@ export default {
pvFlag: 'Virtualization Identity', pvFlag: 'Virtualization Identity',
alarmType: 'Alarm Type', alarmType: 'Alarm Type',
confirm: 'Confirm', confirm: 'Confirm',
updateConfirm: 'Cancel Confirmation',
handSync: 'Manual synchronization', handSync: 'Manual synchronization',
clear: 'Clear', clear: 'Clear',
mySelf: 'Personalization', mySelf: 'Personalization',
@@ -279,7 +280,21 @@ export default {
clearUser:'clear User', clearUser:'clear User',
clearType:'clear Type', clearType:'clear Type',
ackState:'Alarm confirmation status', ackState:'Alarm confirmation status',
ackUser:'Alarm confirmation user' ackUser:'Alarm confirmation user',
alarmSeq:'Alarm sequence number',
objectName:'Location object',
locationInfo:'Alarm positioning information',
province:'Network Element Service Province',
addInfo:'Alarm auxiliary information',
specificProblemId:'Alarm issue reason ID',
specificProblem:'Reason for alarm problem',
clearTime:'Alarm clearing time',
alarmStatus:'Alarm status',
ackTime:'Alarm confirmation time',
ackError:'Please do not confirm again',
syncMyself:'Manual synchronization',
realTitle:'Alarm Title',
objectNf:'Applicable network elements',
}, },
}, },
monitor: { monitor: {

View File

@@ -258,6 +258,7 @@ export default {
pvFlag: '虚拟化标识', pvFlag: '虚拟化标识',
alarmType: '告警类型', alarmType: '告警类型',
confirm: '确认', confirm: '确认',
updateConfirm: '取消确认',
handSync: '手动同步', handSync: '手动同步',
clear: '清除', clear: '清除',
mySelf: '个性化设置', mySelf: '个性化设置',
@@ -279,7 +280,21 @@ export default {
clearUser:'告警清除用户', clearUser:'告警清除用户',
clearType:'告警清除类型', clearType:'告警清除类型',
ackState:'告警确认状态', ackState:'告警确认状态',
ackUser:'告警确认用户' ackUser:'告警确认用户',
alarmSeq:'告警流水编号',
objectName:'定位对象',
locationInfo:'告警定位信息',
province:'网元服务省份',
addInfo:'告警辅助信息',
specificProblemId:'告警问题原因ID',
specificProblem:'告警问题原因',
clearTime:'告警清除时间',
alarmStatus:'告警状态',
ackTime:'告警确认时间',
ackError:'请勿重复确认',
syncMyself:'手工同步',
realTitle:'告警标题',
objectNf:'适用网元',
}, },
}, },
monitor: { monitor: {

View File

@@ -20,7 +20,11 @@ export const xlsxUrl = `${
* }); * });
*/ */
export async function readLoalXlsx(id: string): Promise<Record<string, any>[]> { export async function readLoalXlsx(id: string): Promise<Record<string, any>[]> {
const fileBolb = await (await fetch(`${xlsxUrl}/${id}.xlsx`)).arrayBuffer(); let fileBolb = await (await fetch(`${xlsxUrl}/${id}.xlsx`)).arrayBuffer();
console.log(fileBolb.byteLength)
if(!fileBolb.byteLength){
fileBolb = await (await fetch(`${xlsxUrl}/all.xlsx`)).arrayBuffer();
}
return readSheet(fileBolb, 0); return readSheet(fileBolb, 0);
} }

View File

@@ -3,25 +3,27 @@ import { useRoute } from 'vue-router';
import dayjs, { Dayjs } from 'dayjs'; import dayjs, { Dayjs } from 'dayjs';
import { reactive, ref, onMounted, toRaw } from 'vue'; import { reactive, ref, onMounted, toRaw } from 'vue';
import { PageContainer } from '@ant-design-vue/pro-layout'; import { PageContainer } from '@ant-design-vue/pro-layout';
import { message } from 'ant-design-vue/lib'; import { message, Modal } from 'ant-design-vue/lib';
import { SizeType } from 'ant-design-vue/lib/config-provider'; import { SizeType } from 'ant-design-vue/lib/config-provider';
import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/lib/table'; import { ColumnsType } from 'ant-design-vue/lib/table';
import useUserStore from '@/store/modules/user'; import useUserStore from '@/store/modules/user';
import { listAct } from '@/api/faultManage/actAlarm'; import {
listAct,
updateConfirm,
cancelConfirm,
listSync,
} from '@/api/faultManage/actAlarm';
import useNeInfoStore from '@/store/modules/neinfo'; import useNeInfoStore from '@/store/modules/neinfo';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { parseStrToDate } from '@/utils/execl-utils'; import { readLoalXlsx } from '@/utils/execl-utils';
const { t } = useI18n(); const { t } = useI18n();
const route = useRoute(); const route = useRoute();
/**路由标题 */ /**路由标题 */
let title = ref<string>((route.meta.title as string) ?? '标题'); let title = ref<string>((route.meta.title as string) ?? '标题');
/**网元参数 */
let neOtions = ref<Record<string, any>[]>([]);
/**查询参数 */ /**查询参数 */
let queryParams = reactive({ let queryParams = reactive({
/**告警设备类型 */ /**告警设备类型 */
@@ -82,6 +84,15 @@ let tableState: TabeStateType = reactive({
selectedRowKeys: [], selectedRowKeys: [],
}); });
/**帮助文档表格状态 */
let alarmTableState: TabeStateType = reactive({
loading: false,
size: 'middle',
seached: true,
data: [],
selectedRowKeys: [],
});
/**表格字段列 */ /**表格字段列 */
let tableColumns: ColumnsType = [ let tableColumns: ColumnsType = [
{ {
@@ -157,7 +168,7 @@ let tableColumns: ColumnsType = [
}, },
{ {
title: t('views.faultManage.activeAlarm.pvFlag'), title: t('views.faultManage.activeAlarm.pvFlag'),
dataIndex: 'alarm_id', dataIndex: 'pvFlag',
align: 'center', align: 'center',
}, },
{ {
@@ -187,6 +198,76 @@ let tableColumns: ColumnsType = [
}, },
]; ];
/**帮助文档表格字段列 */
let alarmTableColumns: ColumnsType = [
{
title: t('views.faultManage.activeAlarm.alarmTitle'),
dataIndex: '告警名称',
align: 'center',
},
{
title: t('views.faultManage.activeAlarm.locationInfo'),
dataIndex: '告警定位信息',
align: 'center',
},
{
title: t('views.faultManage.activeAlarm.addInfo'),
dataIndex: '告警帮助信息',
align: 'center',
},
{
title: t('views.faultManage.activeAlarm.alarmType'),
dataIndex: '告警类型',
align: 'center',
},
{
title: t('views.faultManage.activeAlarm.origLevel'),
dataIndex: '告警级别',
align: 'center',
},
{
title: t('views.faultManage.activeAlarm.alarmCode'),
dataIndex: '告警编号',
align: 'center',
},
{
title: t('views.faultManage.activeAlarm.specificProblem'),
dataIndex: '告警问题原因',
align: 'center',
},
{
title: t('views.faultManage.activeAlarm.clearType'),
dataIndex: '清除类型',
align: 'center',
},
{
title: t('views.faultManage.activeAlarm.realTitle'),
dataIndex: '英文标题',
align: 'center',
},
{
title: t('views.faultManage.activeAlarm.objectNf'),
dataIndex: '适用网元',
align: 'center',
},
];
/**告警帮助文档 */
let pronInfo: any = reactive({
告警名称: '',
告警定位信息: '',
告警帮助信息: '',
告警类型: '',
告警级别: '',
告警编号: '',
告警问题原因: '',
清除类型: '',
英文标题: '',
适用网元: '',
});
/**表格分页器参数 */ /**表格分页器参数 */
let tablePagination = reactive({ let tablePagination = reactive({
/**当前页数 */ /**当前页数 */
@@ -283,7 +364,7 @@ let modalState: ModalStateType = reactive({
from: { from: {
alarmId: '', alarmId: '',
alarmSeq: '', alarmSeq: '',
neId:'', neId: '',
neName: '', neName: '',
neType: '', neType: '',
alarmCode: '', alarmCode: '',
@@ -313,26 +394,144 @@ let modalState: ModalStateType = reactive({
* @param row 单行记录信息 * @param row 单行记录信息
*/ */
function fnModalVisibleByVive(row: Record<string, any>) { function fnModalVisibleByVive(row: Record<string, any>) {
console.log(toRaw(row))
return false;
const imsiIdx = row.imsi.lastIndexOf('-');
if (imsiIdx != -1) {
row.imsi = row.imsi.substring(imsiIdx + 1);
}
const msisdnIdx = row.msisdn.lastIndexOf('-');
if (msisdnIdx != -1) {
row.msisdn = row.msisdn.substring(msisdnIdx + 1);
}
modalState.from = Object.assign(modalState.from, row); modalState.from = Object.assign(modalState.from, row);
modalState.title = `${row.imsi} 记录信息`; modalState.title = `查看${row.alarmId} 记录信息`;
modalState.visibleByView = true; modalState.visibleByView = true;
} }
function fnModalVisibleBy() {
parseStrToDate();
/**抽屉 网元详细信息 */
const visible = ref(false);
const closeDrawer = () => {
visible.value = false;
};
/**抽屉 告警帮助文档详细信息 */
function fnModalVisibleBy(code: string) {
const result = readLoalXlsx(code);
result
.then(res => {
console.log(res);
if (!res.length) {
visible.value = false;
}
alarmTableState.data = res;
visible.value = true;
tableState.loading = false;
})
.catch(error => console.log(error));
} }
/**
* 对话框弹出确认执行 确认查阅函数
*/
function fnModalOk() {
modalState.confirmLoading = true;
const from = toRaw(modalState.from);
if (from.ackState) {
message.error({
content: t('views.faultManage.activeAlarm.ackError'),
duration: 3,
});
modalState.visibleByView = false;
return false;
}
const result = updateConfirm(from);
const hide = message.loading({ content: t('common.loading') });
result
.then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: t('common.msgSuccess', { msg: modalState.title }),
duration: 3,
});
modalState.visibleByView = false;
fnGetList();
} else {
message.error({
content: `${res.msg}`,
duration: 3,
});
}
})
.finally(() => {
hide();
modalState.confirmLoading = false;
});
}
/**表格状态 */
const state = reactive<{
selectedRowKeys: (string | number)[];
selectedRow: Record<string, any>;
loading: boolean;
}>({
selectedRowKeys: [], // Check here to configure the default column
selectedRow: {},
loading: false,
});
/**监听多选 */
const onSelectChange = (
keys: (string | number)[],
record: Record<string, any>
) => {
state.selectedRowKeys = keys;
state.selectedRow = record;
};
/**
* 选中行后的取消确认
*/
function fnCancelConfirm() {
Modal.confirm({
title: 'Tip',
content: `确认是否取消确认告警?`,
onOk() {
const hide = message.loading('请稍等...', 0);
cancelConfirm(state.selectedRowKeys).then(res => {
hide();
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: `取消确认告警成功`,
duration: 2,
});
fnGetList();
} else {
message.error({
content: `${res.msg}`,
duration: 2,
});
}
});
},
});
}
/**
* 手工同步
*/
function fnSync() {
const hide = message.loading('请稍等...', 0);
listSync().then(res => {
hide();
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: `手工同步成功`,
duration: 2,
});
console.log(toRaw(res));
return false;
tablePagination.total = res.total;
tableState.data = res.rows;
} else {
message.error({
content: `${res.msg}`,
duration: 2,
});
}
});
}
/** /**
* 对话框弹出关闭执行函数 * 对话框弹出关闭执行函数
@@ -350,8 +549,8 @@ function fnGetList() {
listAct(toRaw(queryParams)).then(res => { listAct(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.rows)) { if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.rows)) {
// 取消勾选 // 取消勾选
if (tableState.selectedRowKeys.length > 0) { if (state.selectedRowKeys.length > 0) {
tableState.selectedRowKeys = []; state.selectedRowKeys = [];
} }
tablePagination.total = res.total; tablePagination.total = res.total;
tableState.data = res.rows; tableState.data = res.rows;
@@ -510,7 +709,27 @@ onMounted(() => {
<a-card :bordered="false" :body-style="{ padding: '0px' }"> <a-card :bordered="false" :body-style="{ padding: '0px' }">
<!-- 插槽-卡片左侧侧 --> <!-- 插槽-卡片左侧侧 -->
<template #title> </template> <template #title>
<a-space :size="8" align="center">
<a-button
type="primary"
@click.prevent="fnCancelConfirm()"
:disabled="state.selectedRowKeys.length <= 0"
>
<template #icon>
<CloseOutlined />
</template>
{{ t('views.faultManage.activeAlarm.updateConfirm') }}
</a-button>
<a-button type="primary" @click.prevent="fnSync()">
<template #icon>
<ReloadOutlined />
</template>
{{ t('views.faultManage.activeAlarm.syncMyself') }}
</a-button>
</a-space>
</template>
<!-- 插槽-卡片右侧 --> <!-- 插槽-卡片右侧 -->
<template #extra> <template #extra>
@@ -557,6 +776,63 @@ onMounted(() => {
</a-space> </a-space>
</template> </template>
<div>
<a-drawer
:visible="visible"
@close="closeDrawer"
:height="700"
placement="bottom"
>
<!-- <a-descriptions
bordered
:column="1"
:label-style="{ width: '160px' }"
>
<a-descriptions-item :label="t('views.faultManage.activeAlarm.alarmTitle')">{{
pronInfo['告警名称']
}}</a-descriptions-item>
<a-descriptions-item :label="t('views.faultManage.activeAlarm.locationInfo')">{{
pronInfo['告警定位信息']
}}</a-descriptions-item>
<a-descriptions-item :label="t('views.faultManage.activeAlarm.addInfo')">{{
pronInfo['告警帮助信息']
}}</a-descriptions-item>
<a-descriptions-item :label="t('views.faultManage.activeAlarm.alarmType')">{{
pronInfo['告警类型']
}}</a-descriptions-item>
<a-descriptions-item :label="t('views.faultManage.activeAlarm.origLevel')">{{
pronInfo['告警级别']
}}</a-descriptions-item>
<a-descriptions-item :label="t('views.faultManage.activeAlarm.alarmCode')">{{
pronInfo['告警编号']
}}</a-descriptions-item>
<a-descriptions-item :label="t('views.faultManage.activeAlarm.specificProblem')">{{
pronInfo['告警问题原因']
}}</a-descriptions-item>
<a-descriptions-item :label="t('views.faultManage.activeAlarm.clearType')">{{
pronInfo['清除类型']
}}</a-descriptions-item>
<a-descriptions-item :label="t('views.faultManage.activeAlarm.realTitle')">{{
pronInfo['英文标题']
}}</a-descriptions-item>
<a-descriptions-item :label="t('views.faultManage.activeAlarm.objectNf')">{{
pronInfo['适用网元']
}}</a-descriptions-item>
</a-descriptions> -->
<a-table
class="table"
row-key="id"
:columns="alarmTableColumns"
:loading="alarmTableState.loading"
:data-source="alarmTableState.data"
:size="alarmTableState.size"
:pagination="false"
:scroll="{ x: true , y: 450 }"
>
</a-table>
</a-drawer>
</div>
<!-- 表格列表 --> <!-- 表格列表 -->
<a-table <a-table
class="table" class="table"
@@ -565,6 +841,10 @@ onMounted(() => {
:loading="tableState.loading" :loading="tableState.loading"
:data-source="tableState.data" :data-source="tableState.data"
:size="tableState.size" :size="tableState.size"
:row-selection="{
selectedRowKeys: state.selectedRowKeys,
onChange: onSelectChange,
}"
:pagination="tablePagination" :pagination="tablePagination"
:scroll="{ x: true }" :scroll="{ x: true }"
> >
@@ -584,9 +864,11 @@ onMounted(() => {
<template #title>帮助文档</template> <template #title>帮助文档</template>
<a-button <a-button
type="link" type="link"
@click.prevent="fnModalVisibleBy()" @click.prevent="fnModalVisibleBy(record.alarmCode)"
> >
<template #icon><QuestionCircleOutlined style="color:crimson;"/></template> <template #icon
><QuestionCircleOutlined style="color: crimson"
/></template>
</a-button> </a-button>
</a-tooltip> </a-tooltip>
</a-space> </a-space>
@@ -598,62 +880,348 @@ onMounted(() => {
<!-- 详情框 --> <!-- 详情框 -->
<a-modal <a-modal
width="800px" width="800px"
:keyboard="false"
:mask-closable="false"
:visible="modalState.visibleByView" :visible="modalState.visibleByView"
:title="modalState.title" :title="modalState.title"
:confirm-loading="modalState.confirmLoading"
@ok="fnModalOk"
@cancel="fnModalCancel" @cancel="fnModalCancel"
> >
<a-form layout="horizontal"> <a-form name="modalStateFrom" layout="horizontal">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="8" :md="8" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item label="IMSI" name="imsi"> <a-form-item
{{ modalState.from.imsi }} :label="t('views.faultManage.activeAlarm.alarmId')"
name="alarmId"
>
<a-input
v-model:value="modalState.from.alarmId"
disabled
allow-clear
>
</a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="8" :md="8" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item label="MSISDN" name="msisdn"> <a-form-item
{{ modalState.from.msisdn }} :label="t('views.faultManage.activeAlarm.alarmSeq')"
</a-form-item> name="alarmSeq"
</a-col> >
<a-col :lg="8" :md="8" :xs="24"> <a-input
<a-form-item label="RatType" name="ratType"> v-model:value="modalState.from.alarmSeq"
{{ modalState.from.ratType }} disabled
allow-clear
>
</a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-descriptions <a-row :gutter="16">
:title="v.dnn" <a-col :lg="12" :md="12" :xs="24">
:column="2" <a-form-item
size="small" :label="t('views.faultManage.activeAlarm.neId')"
bordered name="neId"
v-for="v in modalState.from.pduSessionInfo" >
:key="v.dnn" <a-input
v-model:value="modalState.from.neId"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.neName')"
name="neName"
>
<a-input
v-model:value="modalState.from.neName"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.neType')"
name="neType"
>
<a-input
v-model:value="modalState.from.neType"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.alarmCode')"
name="alarmCode"
>
<a-input
v-model:value="modalState.from.alarmCode"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.alarmTitle')"
name="alarmTitle"
>
<a-input
v-model:value="modalState.from.alarmTitle"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.eventTime')"
name="eventTime"
>
<a-input
v-model:value="modalState.from.eventTime"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.alarmTitle')"
name="alarmTitle"
>
<a-input
v-model:value="modalState.from.alarmTitle"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.alarmType')"
name="alarmType"
>
<a-input
v-model:value="modalState.from.alarmType"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.pvFlag')"
name="pvFlag"
>
<a-input
v-model:value="modalState.from.pvFlag"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.objectName')"
name="objectName"
>
<a-input
v-model:value="modalState.from.objectName"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
</a-row>
<a-form-item
:label="t('views.faultManage.activeAlarm.locationInfo')"
name="locationInfo"
> >
<a-descriptions-item label="IPV4">{{ v.ipv4 }}</a-descriptions-item> <a-textarea
<a-descriptions-item label="IPV6">{{ v.ipv6 }}</a-descriptions-item> v-model:value="modalState.from.locationInfo"
<a-descriptions-item label="TAI">{{ v.tai }}</a-descriptions-item> placeholder="Autosize height with minimum and maximum number of lines"
<a-descriptions-item label="SST_SD"> :auto-size="{ minRows: 1, maxRows: 5 }"
{{ v.sstSD }}</a-descriptions-item disabled
/>
</a-form-item>
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.province')"
name="province"
>
<a-input
v-model:value="modalState.from.province"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.origLevel')"
name="origSeverity"
>
<a-input
v-model:value="modalState.from.origSeverity"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
</a-row>
<a-form-item
:label="t('views.faultManage.activeAlarm.addInfo')"
name="addInfo"
>
<a-textarea
v-model:value="modalState.from.addInfo"
:auto-size="{ minRows: 1, maxRows: 5 }"
disabled
/>
</a-form-item>
<a-form-item
:label="t('views.faultManage.activeAlarm.specificProblemId')"
name="specificProblemId"
>
<a-input
v-model:value="modalState.from.specificProblemId"
disabled
allow-clear
> >
<a-descriptions-item label="UPF_N3_IP"> </a-input>
{{ v.upfN3IP }} </a-form-item>
</a-descriptions-item>
<a-descriptions-item label="RAN_N3_IP"> <a-form-item
{{ v.ranN3IP }} :label="t('views.faultManage.activeAlarm.specificProblem')"
</a-descriptions-item> name="specificProblem"
<a-descriptions-item label="ActiveTime"> >
{{ v.activeTime }} <a-textarea
</a-descriptions-item> v-model:value="modalState.from.specificProblem"
<a-descriptions-item label="pduSessionId"> :auto-size="{ minRows: 1, maxRows: 5 }"
{{ v.pduSessionID }} disabled
</a-descriptions-item> />
</a-descriptions> </a-form-item>
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.clearType')"
name="clearType"
>
<a-input
v-model:value="modalState.from.clearType"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.clearTime')"
name="clearTime"
>
<a-input
v-model:value="modalState.from.clearTime"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.ackUser')"
name="ackUser"
>
<a-input
v-model:value="modalState.from.ackUser"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.ackState')"
name="ackState"
>
<a-input
v-model:value="modalState.from.ackState"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.ackTime')"
name="ackTime"
>
<a-input
v-model:value="modalState.from.ackTime"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.alarmStatus')"
name="alarmStatus"
>
<a-input
v-model:value="modalState.from.alarmStatus"
disabled
allow-clear
>
</a-input>
</a-form-item>
</a-col>
</a-row>
</a-form> </a-form>
<template #footer>
<a-button key="cancel" @click="fnModalCancel">
{{ t('common.close') }}
</a-button>
</template>
</a-modal> </a-modal>
</PageContainer> </PageContainer>
</template> </template>