---完善活动告警 -80%

This commit is contained in:
lai
2023-09-28 18:02:31 +08:00
parent 4cdf40b3b1
commit 11e4159368
4 changed files with 406 additions and 139 deletions

View File

@@ -1,42 +1,38 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { toRaw } from 'vue';
import { parseObjLineToHump } from '@/utils/parse-utils';
import { parseDateToStr } from '@/utils/date-utils';
import useUserStore from '@/store/modules/user';
import { ConsoleSqlOutlined } from '@ant-design/icons-vue';
/**
* 查询列表
* @param query 查询参数
* @returns object
*/
export async function listAct(query: Record<string, any>) {
let filterData = '';
let totalSQL = `select count(*) as total from alarm where alarm_status='1' ${filterData} `;
let rowsSQL = `select * from alarm where alarm_status='1' ${filterData}`;
export async function listAct(query: Record<string, any>,filterSQl:string) {
let totalSQL = `select count(*) as total from alarm where alarm_status='1' ${filterSQl} `;
let rowsSQL = `select * from alarm where alarm_status='1' ${filterSQl}`;
// 查询
let querySQL = '';
if (query.alarm_code) {
querySQL += ` and alarm_code = '${query.alarm_code}' `;
}
if (query.alarm_type) {
querySQL += ` and alarm_type = '${query.alarm_type}' `;
}
if (query.pv_flag) {
querySQL += ` and pv_flag = '${query.pv_flag}' `;
}
if (query.orig_severity) {
querySQL += ` and orig_severity in (${query.orig_severity} )`;
}
if (query.ne_id) {
querySQL += ` and ne_id like '%${query.ne_id}%' `;
}
if (query.ne_name) {
querySQL += ` and ne_name like '%${query.ne_name}%' `;
}
if (query.ne_type) {
querySQL += ` and ne_type like '%${query.ne_type}%' `;
}
querySQL += query.alarm_code
? ` and alarm_code = '${query.alarm_code}' `
: '';
querySQL += query.alarm_type
? ` and alarm_type = '${query.alarm_type}' `
: '';
querySQL += query.pv_flag ? ` and pv_flag = '${query.pv_flag}' ` : '';
querySQL += query.orig_severity
? ` and orig_severity in('${query.orig_severity}' )`
: '';
querySQL += query.ne_id ? ` and ne_id like '%${query.ne_id}%' ` : '';
querySQL += query.ne_name ? ` and ne_name like '%${query.ne_name}%' ` : '';
querySQL += query.ne_type ? ` and ne_type like '%${query.ne_type}%' ` : '';
querySQL +=
query.beginTime && query.endTime
? ` and event_time BETWEEN '${query.beginTime}' and ' ${query.endTime}'`
: '';
// 分页
const pageNum = (query.pageNum - 1) * query.pageSize;
@@ -123,6 +119,78 @@ export function cancelConfirm(data: (string | number)[]) {
});
}
/**
* 设置告警显示过滤
* @param data 鉴权对象
* @returns object
*/
export function showPass(data: Record<string, any>) {
let querySQL = '';
querySQL += data.alarm_code ? ` and alarm_code != ${data.alarm_code} ` : '';
querySQL += data.alarm_type
? ` and alarm_type !=\\' ${data.alarm_type} \\'`
: '';
querySQL += data.pv_flag ? ` and pv_flag !=\\'${data.pv_flag} \\'` : '';
querySQL += data.orig_severity
? ` and orig_severity !=\\'${data.orig_severity}\\'`
: '';
querySQL += data.ne_id ? ` and ne_id !=\\'${data.ne_id}\\' ` : '';
querySQL += data.ne_type ? ` and ne_type !=\\'${data.ne_type}\\' ` : '';
let toBackJson = {
data: {
value: querySQL,
value_json: JSON.stringify(data),
},
};
return request({
url: `/databaseManagement/v1/omc_db/config?WHERE=config_tag='displayFilter'`,
method: 'put',
data: toBackJson,
});
}
/**
* 获取告警显示过滤条件
* @param data 鉴权对象
* @returns object
*/
export function getPass() {
return request({
url: `/databaseManagement/v1/select/omc_db/config`,
method: 'get',
params: {
SQL: "SELECT value_json,value FROM config WHERE config_tag ='displayFilter'",
},
});
}
/**
* 清除告警信息
* @param data 鉴权对象
* @returns object
*/
export function clearAlarm(data: Record<string, any>) {
var time = new Date();
const userName = useUserStore().userName;
let finalData = {
data: {
clear_time: parseDateToStr(time),
clear_type: '2',
alarm_status: '0',
clear_user: userName,
},
};
return request({
url: `/databaseManagement/v1/update/omc_db/alarm?WHERE=id in(${data.join(
','
)})`,
method: 'put',
data: finalData,
});
}
/**
* 手工同步
* @param data 鉴权对象
@@ -130,7 +198,7 @@ export function cancelConfirm(data: (string | number)[]) {
*/
export function listSync() {
return request({
url: `/faultManagement/v1/elementType/all/objectType/alarms)`,
url: `/faultManagement/v1/elementType/all/objectType/alarms`,
method: 'get',
});
}

View File

@@ -135,8 +135,9 @@ const useUserStore = defineStore('user', {
// this.profile = JSON.parse(user.profile);
try {
this.profile = JSON.parse(user.profile);
} catch (error) {
console.log(error);
console.error(error);
this.profile = {
critical: '#FF5722',
major: '#FFB800',

View File

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

View File

@@ -13,6 +13,9 @@ import {
updateConfirm,
cancelConfirm,
listSync,
clearAlarm,
showPass,
getPass,
} from '@/api/faultManage/actAlarm';
import useNeInfoStore from '@/store/modules/neinfo';
import useI18n from '@/hooks/useI18n';
@@ -20,10 +23,13 @@ import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { readLoalXlsx } from '@/utils/execl-utils';
const { t } = useI18n();
const route = useRoute();
type RangeValue = [Dayjs, Dayjs];
/**路由标题 */
let title = ref<string>((route.meta.title as string) ?? '标题');
/**记录开始结束时间 */
let queryRangePicker = ref<[string, string]>(['', '']);
/**查询参数 */
let queryParams = reactive({
/**告警设备类型 */
@@ -35,9 +41,11 @@ let queryParams = reactive({
/**告警编号 */
alarm_code: '',
/**告警级别 */
orig_severity: "'Critical','Major','Minor','Warning','Event'",
orig_severity: '',
beginTime: '',
endTime: '',
/**告警产生时间 */
eventTime: '',
eventTime: (queryRangePicker.value = ['', '']),
/**虚拟化标识 */
pv_flag: '',
/**告警类型 */
@@ -51,10 +59,23 @@ let queryParams = reactive({
/**查询参数重置 */
function fnQueryReset() {
queryParams = Object.assign(queryParams, {
imsi: '',
msisdn: '',
pageNum: 1,
pageSize: 20,
/**告警设备类型 */
ne_type: '',
/**告警网元名称 */
ne_name: '',
/**告警网元标识 */
ne_id: '',
/**告警编号 */
alarm_code: '',
/**告警级别 */
orig_severity: '',
/**告警产生时间 */
eventTime: (queryRangePicker.value = ['', '']),
/**虚拟化标识 */
pv_flag: '',
/**告警类型 */
alarm_type: '',
/**当前页数 */
});
tablePagination.current = 1;
tablePagination.pageSize = 20;
@@ -84,6 +105,12 @@ let tableState: TabeStateType = reactive({
selectedRowKeys: [],
});
/**过滤设置 */
let filterState: any = reactive({
data: {},
sql: '',
});
/**帮助文档表格状态 */
let alarmTableState: TabeStateType = reactive({
loading: false,
@@ -117,21 +144,8 @@ let tableColumns: ColumnsType = [
},
{
title: t('views.faultManage.activeAlarm.origLevel'),
dataIndex: 'origSeverity',
align: 'center',
customRender(opt) {
let levelName: any = {
Critical: '严重告警',
Major: '主要告警',
Minor: '次要告警',
Warning: '警告告警',
Event: '事件告警',
};
if (levelName[opt.value]) {
return levelName[opt.value];
}
return opt.value;
},
key:'origSeverity',
},
{
title: t('views.faultManage.activeAlarm.alarmCode'),
@@ -214,7 +228,6 @@ let alarmTableColumns: ColumnsType = [
title: t('views.faultManage.activeAlarm.addInfo'),
dataIndex: '告警帮助信息',
align: 'center',
},
{
title: t('views.faultManage.activeAlarm.alarmType'),
@@ -304,41 +317,46 @@ function fnTableSize({ key }: MenuInfo) {
/**表格所需option */
const actAlarmOption = reactive({
pvFlag: [
{ label: 'PNF', value: "'PNF'" },
{ label: 'VNF', value: "'VNF'" },
{ label: 'PNF', value: 'PNF' },
{ label: 'VNF', value: 'VNF' },
],
alarmType: [
{
label: t('views.faultManage.activeAlarm.communicationAlarm'),
value: "'CommunicationAlarm'",
value: 'CommunicationAlarm',
},
{
label: t('views.faultManage.activeAlarm.equipmentAlarm'),
value: "'EquipmentAlarm'",
value: 'EquipmentAlarm',
},
{
label: t('views.faultManage.activeAlarm.processingFailure'),
value: "'ProcessingFailure'",
value: 'ProcessingFailure',
},
{
label: t('views.faultManage.activeAlarm.environmentalAlarm'),
value: "'EnvironmentalAlarm'",
value: 'EnvironmentalAlarm',
},
{
label: t('views.faultManage.activeAlarm.qualityOfServiceAlarm'),
value: "'QualityOfServiceAlarm'",
value: 'QualityOfServiceAlarm',
},
],
origSeverity: [
{
label: t('views.faultManage.activeAlarm.all'),
value: "'Critical','Major','Minor','Warning','Event'",
},
{ label: t('views.faultManage.activeAlarm.critical'), value: "'Critical'" },
{ label: t('views.faultManage.activeAlarm.major'), value: "'Major'" },
{ label: t('views.faultManage.activeAlarm.minor'), value: "'Minor'" },
{ label: t('views.faultManage.activeAlarm.warning'), value: "'Warning'" },
{ label: t('views.faultManage.activeAlarm.eventAlarm'), value: "'Event'" },
{ label: t('views.faultManage.activeAlarm.critical'), value: 'Critical' },
{ label: t('views.faultManage.activeAlarm.major'), value: 'Major' },
{ label: t('views.faultManage.activeAlarm.minor'), value: 'Minor' },
{ label: t('views.faultManage.activeAlarm.warning'), value: 'Warning' },
{ label: t('views.faultManage.activeAlarm.eventAlarm'), value: 'Event' },
],
clearType: [
{ label: '告警未清除', value: 0 },
{ label: '自动清除', value: 1 },
{ label: '手动清除', value: 2 },
],
ackState: [
{ label: '未确认', value: 0 },
{ label: '已确认', value: 1 },
],
});
@@ -348,10 +366,14 @@ type ModalStateType = {
visibleByView: boolean;
/**新增框或修改框是否显示 */
visibleByEdit: boolean;
/**显示过滤设置是否显示 */
visibleByShowSet: boolean;
/**标题 */
title: string;
/**表单数据 */
from: Record<string, any>;
/**表单数据 */
showSetFrom: Record<string, any>;
/**确定按钮 loading */
confirmLoading: boolean;
};
@@ -360,6 +382,7 @@ type ModalStateType = {
let modalState: ModalStateType = reactive({
visibleByView: false,
visibleByEdit: false,
visibleByShowSet: false,
title: '全部信息',
from: {
alarmId: '',
@@ -386,6 +409,14 @@ let modalState: ModalStateType = reactive({
ackTime: '',
origSeverity: '',
},
showSetFrom: {
ne_type: '',
ne_id: '',
alarm_type: '',
orig_severity: '',
alarm_code: '',
pv_flag: '',
},
confirmLoading: false,
});
@@ -399,18 +430,18 @@ function fnModalVisibleByVive(row: Record<string, any>) {
modalState.visibleByView = true;
}
/**抽屉 网元详细信息 */
/**告警帮助文档抽屉 初始设置 */
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;
}
@@ -460,6 +491,35 @@ function fnModalOk() {
});
}
/**
* 对话框弹出确认执行 设置显示过滤
*/
function fnShowModalOk() {
modalState.confirmLoading = true;
const from = toRaw(modalState.showSetFrom);
const result = showPass(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.visibleByShowSet = false;
fnGetList();
} else {
message.error({
content: `${res.msg}`,
duration: 3,
});
}
})
.finally(() => {
hide();
modalState.confirmLoading = false;
});
}
/**表格状态 */
const state = reactive<{
selectedRowKeys: (string | number)[];
@@ -520,8 +580,7 @@ function fnSync() {
content: `手工同步成功`,
duration: 2,
});
console.log(toRaw(res));
return false;
tablePagination.total = res.total;
tableState.data = res.rows;
} else {
@@ -533,6 +592,56 @@ function fnSync() {
});
}
/**
* 清除
*/
function fnClear() {
Modal.confirm({
title: 'Tip',
content: `是否清除该告警?`,
onOk() {
const hide = message.loading('请稍等...', 0);
clearAlarm(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 fnShowSet() {
if (modalState.confirmLoading) return;
const hide = message.loading('正在打开...', 0);
modalState.confirmLoading = true;
getPass().then(res => {
modalState.confirmLoading = false;
hide();
if (res.code === RESULT_CODE_SUCCESS) {
let realJson = res.data.data[0]['config'][0].value_json
? JSON.parse(res.data.data[0]['config'][0].value_json)
: {};
modalState.showSetFrom = Object.assign(modalState.showSetFrom, realJson);
modalState.title = '显示过滤设置';
modalState.visibleByShowSet = true;
} else {
message.error(`获取显示过滤设置失败`, 2);
}
});
}
/**
* 对话框弹出关闭执行函数
* 进行表达规则校验
@@ -540,30 +649,43 @@ function fnSync() {
function fnModalCancel() {
modalState.visibleByEdit = false;
modalState.visibleByView = false;
modalState.visibleByShowSet = false;
}
/**查询列表 */
function fnGetList() {
if (tableState.loading) return;
tableState.loading = true;
listAct(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.rows)) {
// 取消勾选
if (state.selectedRowKeys.length > 0) {
state.selectedRowKeys = [];
}
tablePagination.total = res.total;
tableState.data = res.rows;
} else {
tablePagination.total = 0;
tableState.data = [];
if (!queryRangePicker.value) {
queryRangePicker.value = ['', ''];
}
queryParams.beginTime = queryRangePicker.value[0];
queryParams.endTime = queryRangePicker.value[1];
getPass().then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
let sql = res.data.data[0]['config'][0].value
? res.data.data[0]['config'][0].value
: '';
filterState.sql = sql;
}
tableState.loading = false;
listAct(toRaw(queryParams), filterState.sql).then(res => {
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.rows)) {
// 取消勾选
if (state.selectedRowKeys.length > 0) {
state.selectedRowKeys = [];
}
tablePagination.total = res.total;
tableState.data = res.rows;
} else {
tablePagination.total = 0;
tableState.data = [];
}
tableState.loading = false;
});
});
}
const profile = useUserStore().profile;
onMounted(() => {
fnGetList();
});
@@ -660,6 +782,7 @@ onMounted(() => {
v-model:value="queryParams.orig_severity"
placeholder="Select alarm Type"
show-search
allow-clear
:options="actAlarmOption.origSeverity"
/>
</a-form-item>
@@ -669,7 +792,13 @@ onMounted(() => {
:label="t('views.faultManage.activeAlarm.eventTime')"
name="eventTime"
>
<a-range-picker show-time style="width: 400px" />
<a-range-picker
v-model:value="queryRangePicker"
value-format="YYYY-MM-DD HH:mm:ss"
format="YYYY-MM-DD HH:mm:ss"
show-time
style="width: 400px"
/>
</a-form-item>
</a-col>
</a-row>
@@ -728,6 +857,23 @@ onMounted(() => {
</template>
{{ t('views.faultManage.activeAlarm.syncMyself') }}
</a-button>
<a-button
type="primary"
danger
@click.prevent="fnClear()"
:disabled="state.selectedRowKeys.length <= 0"
>
<template #icon>
<DeleteOutlined />
</template>
{{ t('views.faultManage.activeAlarm.clear') }}
</a-button>
<a-button type="primary" @click.prevent="fnShowSet()">
<template #icon> <SettingOutlined /> </template>
{{ t('views.faultManage.activeAlarm.disPlayFilfter') }}
</a-button>
</a-space>
</template>
@@ -783,42 +929,6 @@ onMounted(() => {
: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"
@@ -827,7 +937,7 @@ onMounted(() => {
:data-source="alarmTableState.data"
:size="alarmTableState.size"
:pagination="false"
:scroll="{ x: true , y: 450 }"
:scroll="{ x: true, y: 450 }"
>
</a-table>
</a-drawer>
@@ -849,6 +959,9 @@ onMounted(() => {
:scroll="{ x: true }"
>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'origSeverity'">
<a-tag :color="profile.color[record.origSeverity]">{{record.origSeverity}}</a-tag>
</template>
<template v-if="column.key === 'alarm_id'">
<a-space :size="8" align="center">
<a-tooltip>
@@ -886,6 +999,7 @@ onMounted(() => {
:title="modalState.title"
:confirm-loading="modalState.confirmLoading"
@ok="fnModalOk"
ok-text="查阅"
@cancel="fnModalCancel"
>
<a-form name="modalStateFrom" layout="horizontal">
@@ -1024,12 +1138,13 @@ onMounted(() => {
:label="t('views.faultManage.activeAlarm.alarmType')"
name="alarmType"
>
<a-input
<a-select
v-model:value="modalState.from.alarmType"
style="width: 100%"
:options="actAlarmOption.alarmType"
disabled
allow-clear
>
</a-input>
</a-select>
</a-form-item>
</a-col>
</a-row>
@@ -1093,12 +1208,13 @@ onMounted(() => {
:label="t('views.faultManage.activeAlarm.origLevel')"
name="origSeverity"
>
<a-input
<a-select
v-model:value="modalState.from.origSeverity"
style="width: 100%"
:options="actAlarmOption.origSeverity"
disabled
allow-clear
>
</a-input>
</a-select>
</a-form-item>
</a-col>
</a-row>
@@ -1141,12 +1257,13 @@ onMounted(() => {
:label="t('views.faultManage.activeAlarm.clearType')"
name="clearType"
>
<a-input
<a-select
v-model:value="modalState.from.clearType"
style="width: 100%"
:options="actAlarmOption.clearType"
disabled
allow-clear
>
</a-input>
</a-select>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
@@ -1183,12 +1300,12 @@ onMounted(() => {
:label="t('views.faultManage.activeAlarm.ackState')"
name="ackState"
>
<a-input
<a-select
v-model:value="modalState.from.ackState"
style="width: 100%"
:options="actAlarmOption.ackState"
disabled
allow-clear
>
</a-input>
/>
</a-form-item>
</a-col>
</a-row>
@@ -1207,14 +1324,96 @@ onMounted(() => {
</a-input>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
<!-- 显示过滤 -->
<a-modal
width="800px"
:keyboard="false"
:mask-closable="false"
:visible="modalState.visibleByShowSet"
:title="modalState.title"
:confirm-loading="modalState.confirmLoading"
@ok="fnShowModalOk"
ok-text="设置"
@cancel="fnModalCancel"
>
<a-form name="modalStateShowFrom" layout="horizontal">
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.alarmStatus')"
name="alarmStatus"
:label="t('views.faultManage.activeAlarm.neType')"
name="neType"
>
<a-input
v-model:value="modalState.from.alarmStatus"
disabled
v-model:value="modalState.showSetFrom.ne_type"
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.neId')"
name="ackState"
>
<a-input v-model:value="modalState.showSetFrom.ne_id" 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="neType"
>
<a-select
v-model:value="modalState.showSetFrom.pv_flag"
style="width: 100%"
allow-clear
:options="actAlarmOption.pvFlag"
/>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item
:label="t('views.faultManage.activeAlarm.alarmType')"
name="ackState"
>
<a-select
v-model:value="modalState.showSetFrom.alarm_type"
style="width: 100%"
allow-clear
:options="actAlarmOption.alarmType"
/>
</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.origLevel')"
name="neType"
>
<a-select
v-model:value="modalState.showSetFrom.orig_severity"
style="width: 100%"
allow-clear
:options="actAlarmOption.origSeverity"
/>
</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.showSetFrom.alarm_code"
allow-clear
>
</a-input>