--添加解析execl插件,活动告警部分功能
This commit is contained in:
@@ -29,7 +29,8 @@
|
|||||||
"vue": "^3.3.4",
|
"vue": "^3.3.4",
|
||||||
"vue-codemirror": "^6.1.1",
|
"vue-codemirror": "^6.1.1",
|
||||||
"vue-i18n": "^9.3.0",
|
"vue-i18n": "^9.3.0",
|
||||||
"vue-router": "^4.2.4"
|
"vue-router": "^4.2.4",
|
||||||
|
"xlsx": "^0.18.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/file-saver": "^2.0.5",
|
"@types/file-saver": "^2.0.5",
|
||||||
|
|||||||
BIN
public/alarmHelp/20001.xlsx
Normal file
BIN
public/alarmHelp/20001.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/20002.xlsx
Normal file
BIN
public/alarmHelp/20002.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/20003.xlsx
Normal file
BIN
public/alarmHelp/20003.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/20004.xlsx
Normal file
BIN
public/alarmHelp/20004.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/20005.xlsx
Normal file
BIN
public/alarmHelp/20005.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/30001.xlsx
Normal file
BIN
public/alarmHelp/30001.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/30002.xlsx
Normal file
BIN
public/alarmHelp/30002.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/30003.xlsx
Normal file
BIN
public/alarmHelp/30003.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/30004.xlsx
Normal file
BIN
public/alarmHelp/30004.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/30005.xlsx
Normal file
BIN
public/alarmHelp/30005.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/30006.xlsx
Normal file
BIN
public/alarmHelp/30006.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/30007.xlsx
Normal file
BIN
public/alarmHelp/30007.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/30008.xlsx
Normal file
BIN
public/alarmHelp/30008.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/40001.xlsx
Normal file
BIN
public/alarmHelp/40001.xlsx
Normal file
Binary file not shown.
BIN
public/alarmHelp/40002.xlsx
Normal file
BIN
public/alarmHelp/40002.xlsx
Normal file
Binary file not shown.
75
src/api/faultManage/actAlarm.ts
Normal file
75
src/api/faultManage/actAlarm.ts
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
||||||
|
import { request } from '@/plugins/http-fetch';
|
||||||
|
import { parseObjLineToHump } from '@/utils/parse-utils';
|
||||||
|
import { toRaw } from '@vue/reactivity';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <20><>ѯ<EFBFBD>б<EFBFBD>
|
||||||
|
* @param query <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
|
||||||
|
* @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}`;
|
||||||
|
|
||||||
|
// <20><>ѯ
|
||||||
|
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}%' `;
|
||||||
|
}
|
||||||
|
|
||||||
|
// <20><>ҳ
|
||||||
|
const pageNum = (query.pageNum - 1) * query.pageSize;
|
||||||
|
const limtSql = ` order by event_time desc limit ${pageNum},${query.pageSize} `;
|
||||||
|
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
const result = await request({
|
||||||
|
url: `/databaseManagement/v1/select/omc_db/alarm`,
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
SQL: totalSQL + querySQL,
|
||||||
|
rowsSQL: rowsSQL + querySQL + limtSql,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
if (result.code === RESULT_CODE_SUCCESS) {
|
||||||
|
const data: DataList = {
|
||||||
|
total: 0,
|
||||||
|
rows: [],
|
||||||
|
code: result.code,
|
||||||
|
msg: result.msg,
|
||||||
|
};
|
||||||
|
result.data.data.forEach((item: any) => {
|
||||||
|
const itemData = item['alarm'];
|
||||||
|
if (Array.isArray(itemData)) {
|
||||||
|
if (itemData.length === 1 && itemData[0]['total']) {
|
||||||
|
data.total = itemData[0]['total'];
|
||||||
|
} else {
|
||||||
|
data.rows = itemData.map(v => parseObjLineToHump(v));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -246,8 +246,9 @@ export default {
|
|||||||
delTaskTip: 'Are you sure to delete the data item with record number {num}?',
|
delTaskTip: 'Are you sure to delete the data item with record number {num}?',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
alarm: {
|
faultManage: {
|
||||||
alarmAct: {
|
activeAlarm: {
|
||||||
|
all:'All',
|
||||||
neType: 'Alarm device type',
|
neType: 'Alarm device type',
|
||||||
neName: 'Alarm network element name',
|
neName: 'Alarm network element name',
|
||||||
neId: 'Alarm network element identification',
|
neId: 'Alarm network element identification',
|
||||||
@@ -263,6 +264,22 @@ export default {
|
|||||||
exportAll: 'Export All',
|
exportAll: 'Export All',
|
||||||
disPlayFilfter: 'Display Filters',
|
disPlayFilfter: 'Display Filters',
|
||||||
autoConfirm: 'Automatic confirmation of configuration',
|
autoConfirm: 'Automatic confirmation of configuration',
|
||||||
|
critical:'Critical',
|
||||||
|
major:'Major',
|
||||||
|
minor:'Minor',
|
||||||
|
warning:'Warning',
|
||||||
|
eventAlarm:'Event',
|
||||||
|
communicationAlarm:'CommunicationAlarm',
|
||||||
|
equipmentAlarm:'EquipmentAlarm',
|
||||||
|
processingFailure:'ProcessingFailure',
|
||||||
|
environmentalAlarm:'EnvironmentalAlarm',
|
||||||
|
qualityOfServiceAlarm:'QualityOfServiceAlarm',
|
||||||
|
alarmId:'alarm ID',
|
||||||
|
alarmTitle:'alarm Title',
|
||||||
|
clearUser:'clear User',
|
||||||
|
clearType:'clear Type',
|
||||||
|
ackState:'Alarm confirmation status',
|
||||||
|
ackUser:'Alarm confirmation user'
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
monitor: {
|
monitor: {
|
||||||
|
|||||||
@@ -246,8 +246,9 @@ export default {
|
|||||||
delTaskTip: '确认删除记录编号为 {num} 的数据项?',
|
delTaskTip: '确认删除记录编号为 {num} 的数据项?',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
alarm: {
|
faultManage: {
|
||||||
alarmAct: {
|
activeAlarm: {
|
||||||
|
all:'所有',
|
||||||
neType: '告警设备类型',
|
neType: '告警设备类型',
|
||||||
neName: '告警网元名称',
|
neName: '告警网元名称',
|
||||||
neId: '告警网元标识',
|
neId: '告警网元标识',
|
||||||
@@ -263,6 +264,22 @@ export default {
|
|||||||
exportAll: '导出全部',
|
exportAll: '导出全部',
|
||||||
disPlayFilfter: '显示过滤',
|
disPlayFilfter: '显示过滤',
|
||||||
autoConfirm: '自动确认配置',
|
autoConfirm: '自动确认配置',
|
||||||
|
critical:'严重告警',
|
||||||
|
major:'主要告警',
|
||||||
|
minor:'次要告警',
|
||||||
|
warning:'警告告警',
|
||||||
|
eventAlarm:'事件告警',
|
||||||
|
communicationAlarm:'通信告警',
|
||||||
|
equipmentAlarm:'设备告警',
|
||||||
|
processingFailure:'处理错误告警',
|
||||||
|
environmentalAlarm:'环境告警',
|
||||||
|
qualityOfServiceAlarm:'服务质量告警',
|
||||||
|
alarmId:'告警唯一标识',
|
||||||
|
alarmTitle:'告警名称',
|
||||||
|
clearUser:'告警清除用户',
|
||||||
|
clearType:'告警清除类型',
|
||||||
|
ackState:'告警确认状态',
|
||||||
|
ackUser:'告警确认用户'
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
monitor: {
|
monitor: {
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ type UserInfo = {
|
|||||||
email: string;
|
email: string;
|
||||||
/**用户性别 */
|
/**用户性别 */
|
||||||
sex: string | undefined;
|
sex: string | undefined;
|
||||||
|
/**个人化设置 */
|
||||||
|
profile: Record<string, any>;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,6 +58,7 @@ const useUserStore = defineStore('user', {
|
|||||||
phonenumber: '',
|
phonenumber: '',
|
||||||
email: '',
|
email: '',
|
||||||
sex: undefined,
|
sex: undefined,
|
||||||
|
profile: {},
|
||||||
}),
|
}),
|
||||||
getters: {
|
getters: {
|
||||||
/**
|
/**
|
||||||
@@ -129,6 +132,19 @@ const useUserStore = defineStore('user', {
|
|||||||
this.phonenumber = user.phone;
|
this.phonenumber = user.phone;
|
||||||
this.email = user.email;
|
this.email = user.email;
|
||||||
this.sex = user.gender;
|
this.sex = user.gender;
|
||||||
|
// this.profile = JSON.parse(user.profile);
|
||||||
|
try {
|
||||||
|
this.profile = JSON.parse(user.profile);
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
this.profile = {
|
||||||
|
critical: '#FF5722',
|
||||||
|
major: '#FFB800',
|
||||||
|
minor: '#393D49',
|
||||||
|
warning: '#009688',
|
||||||
|
event: '#1E9FFF',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// 验证返回的roles是否是一个非空数组
|
// 验证返回的roles是否是一个非空数组
|
||||||
if (Array.isArray(roles) && roles.length > 0) {
|
if (Array.isArray(roles) && roles.length > 0) {
|
||||||
|
|||||||
30
src/utils/execl-utils.ts
Normal file
30
src/utils/execl-utils.ts
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import { read, utils } from 'xlsx';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ļ<EFBFBD>-<2D><>̬<EFBFBD><CCAC>Դ<EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
|
||||||
|
*/
|
||||||
|
const baseUrl = import.meta.env.VITE_HISTORY_BASE_URL;
|
||||||
|
export const scriptUrl = `${
|
||||||
|
baseUrl.length === 1 && baseUrl.indexOf('/') === 0
|
||||||
|
? ''
|
||||||
|
: baseUrl.indexOf('/') === -1
|
||||||
|
? '/' + baseUrl
|
||||||
|
: baseUrl
|
||||||
|
}/alarmHelp`;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <20><>ʽʱ<CABD><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||||
|
* @param dateStr ʱ<><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||||
|
* @param formatStr ʱ<><CAB1><EFBFBD><EFBFBD>ʽ Ĭ<><C4AC>YYYY-MM-DD HH:mm:ss
|
||||||
|
* @returns Date<74><65><EFBFBD><EFBFBD>
|
||||||
|
*/
|
||||||
|
export async function parseStrToDate(): Promise<Record<string, any>[]> {
|
||||||
|
|
||||||
|
const f = await (await fetch(scriptUrl+"/20001.xlsx")).arrayBuffer();
|
||||||
|
const wb = read(f);1
|
||||||
|
const data = utils.sheet_to_json< Record<string, any>>(wb.Sheets[wb.SheetNames[0]]);
|
||||||
|
console.log(data);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
@@ -1,15 +1,18 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
|
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 } 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 { listUE } from '@/api/neUser/ue';
|
import useUserStore from '@/store/modules/user';
|
||||||
|
import { listAct } 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';
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
||||||
@@ -21,12 +24,22 @@ let neOtions = ref<Record<string, any>[]>([]);
|
|||||||
|
|
||||||
/**查询参数 */
|
/**查询参数 */
|
||||||
let queryParams = reactive({
|
let queryParams = reactive({
|
||||||
/**网元ID */
|
/**告警设备类型 */
|
||||||
neId: undefined,
|
ne_type: '',
|
||||||
/**IMSI */
|
/**告警网元名称 */
|
||||||
imsi: '',
|
ne_name: '',
|
||||||
/**msisdn */
|
/**告警网元标识 */
|
||||||
msisdn: '',
|
ne_id: '',
|
||||||
|
/**告警编号 */
|
||||||
|
alarm_code: '',
|
||||||
|
/**告警级别 */
|
||||||
|
orig_severity: "'Critical','Major','Minor','Warning','Event'",
|
||||||
|
/**告警产生时间 */
|
||||||
|
eventTime: '',
|
||||||
|
/**虚拟化标识 */
|
||||||
|
pv_flag: '',
|
||||||
|
/**告警类型 */
|
||||||
|
alarm_type: '',
|
||||||
/**当前页数 */
|
/**当前页数 */
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
/**每页条数 */
|
/**每页条数 */
|
||||||
@@ -72,54 +85,104 @@ let tableState: TabeStateType = reactive({
|
|||||||
/**表格字段列 */
|
/**表格字段列 */
|
||||||
let tableColumns: ColumnsType = [
|
let tableColumns: ColumnsType = [
|
||||||
{
|
{
|
||||||
title: 'IMSI',
|
title: t('views.faultManage.activeAlarm.alarmId'),
|
||||||
dataIndex: 'imsi',
|
dataIndex: 'alarmId',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('views.faultManage.activeAlarm.neId'),
|
||||||
|
dataIndex: 'neId',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('views.faultManage.activeAlarm.neName'),
|
||||||
|
dataIndex: 'neName',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('views.faultManage.activeAlarm.neType'),
|
||||||
|
dataIndex: 'neType',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('views.faultManage.activeAlarm.origLevel'),
|
||||||
|
dataIndex: 'origSeverity',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
customRender(opt) {
|
customRender(opt) {
|
||||||
const idx = opt.value.lastIndexOf('-');
|
let levelName: any = {
|
||||||
if (idx != -1) {
|
Critical: '严重告警',
|
||||||
return opt.value.substring(idx + 1);
|
Major: '主要告警',
|
||||||
|
Minor: '次要告警',
|
||||||
|
Warning: '警告告警',
|
||||||
|
Event: '事件告警',
|
||||||
|
};
|
||||||
|
if (levelName[opt.value]) {
|
||||||
|
return levelName[opt.value];
|
||||||
}
|
}
|
||||||
return opt.value;
|
return opt.value;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'MSISDN',
|
title: t('views.faultManage.activeAlarm.alarmCode'),
|
||||||
dataIndex: 'msisdn',
|
dataIndex: 'alarmCode',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('views.faultManage.activeAlarm.alarmTitle'),
|
||||||
|
dataIndex: 'alarmTitle',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('views.faultManage.activeAlarm.eventTime'),
|
||||||
|
dataIndex: 'eventTime',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('views.faultManage.activeAlarm.alarmType'),
|
||||||
|
dataIndex: 'alarmType',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
customRender(opt) {
|
customRender(opt) {
|
||||||
const idx = opt.value.lastIndexOf('-');
|
let levelName: any = {
|
||||||
if (idx != -1) {
|
CommunicationAlarm: '通信告警',
|
||||||
return opt.value.substring(idx + 1);
|
EquipmentAlarm: '设备告警',
|
||||||
|
ProcessingFailure: '处理错误告警',
|
||||||
|
EnvironmentalAlarm: '环境告警',
|
||||||
|
QualityOfServiceAlarm: '服务质量告警',
|
||||||
|
};
|
||||||
|
if (levelName[opt.value]) {
|
||||||
|
return levelName[opt.value];
|
||||||
}
|
}
|
||||||
return opt.value;
|
return opt.value;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'RatType',
|
title: t('views.faultManage.activeAlarm.pvFlag'),
|
||||||
dataIndex: 'ratType',
|
dataIndex: 'alarm_id',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'DnnList',
|
title: t('views.faultManage.activeAlarm.clearUser'),
|
||||||
dataIndex: 'pduSessionInfo',
|
dataIndex: 'clearUser',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('views.faultManage.activeAlarm.clearType'),
|
||||||
|
dataIndex: 'clearType',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('views.faultManage.activeAlarm.ackState'),
|
||||||
|
dataIndex: 'ackState',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('views.faultManage.activeAlarm.ackUser'),
|
||||||
|
dataIndex: 'ackUser',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
customRender(opt) {
|
|
||||||
if (opt.value) {
|
|
||||||
let arr = [];
|
|
||||||
for (const v of opt.value) {
|
|
||||||
if (v.dnn) {
|
|
||||||
arr.push(v.dnn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return arr.sort().join(',');
|
|
||||||
}
|
|
||||||
return '';
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('common.operate'),
|
title: t('common.operate'),
|
||||||
key: 'imsi',
|
key: 'alarm_id',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@@ -157,6 +220,47 @@ function fnTableSize({ key }: MenuInfo) {
|
|||||||
tableState.size = key as SizeType;
|
tableState.size = key as SizeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**表格所需option */
|
||||||
|
const actAlarmOption = reactive({
|
||||||
|
pvFlag: [
|
||||||
|
{ label: 'PNF', value: "'PNF'" },
|
||||||
|
{ label: 'VNF', value: "'VNF'" },
|
||||||
|
],
|
||||||
|
alarmType: [
|
||||||
|
{
|
||||||
|
label: t('views.faultManage.activeAlarm.communicationAlarm'),
|
||||||
|
value: "'CommunicationAlarm'",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t('views.faultManage.activeAlarm.equipmentAlarm'),
|
||||||
|
value: "'EquipmentAlarm'",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t('views.faultManage.activeAlarm.processingFailure'),
|
||||||
|
value: "'ProcessingFailure'",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t('views.faultManage.activeAlarm.environmentalAlarm'),
|
||||||
|
value: "'EnvironmentalAlarm'",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t('views.faultManage.activeAlarm.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'" },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
/**对话框对象信息状态类型 */
|
/**对话框对象信息状态类型 */
|
||||||
type ModalStateType = {
|
type ModalStateType = {
|
||||||
/**详情框是否显示 */
|
/**详情框是否显示 */
|
||||||
@@ -175,12 +279,31 @@ type ModalStateType = {
|
|||||||
let modalState: ModalStateType = reactive({
|
let modalState: ModalStateType = reactive({
|
||||||
visibleByView: false,
|
visibleByView: false,
|
||||||
visibleByEdit: false,
|
visibleByEdit: false,
|
||||||
title: '在线信息',
|
title: '全部信息',
|
||||||
from: {
|
from: {
|
||||||
imsi: '',
|
alarmId: '',
|
||||||
msisdn: '',
|
alarmSeq: '',
|
||||||
pduSessionInfo: undefined,
|
neId:'',
|
||||||
ratType: '',
|
neName: '',
|
||||||
|
neType: '',
|
||||||
|
alarmCode: '',
|
||||||
|
alarmTitle: '',
|
||||||
|
eventTime: '',
|
||||||
|
alarmType: '',
|
||||||
|
pvFlag: '',
|
||||||
|
objectName: '',
|
||||||
|
locationInfo: '',
|
||||||
|
province: '',
|
||||||
|
alarmStatus: '',
|
||||||
|
specificProblemId: '',
|
||||||
|
specificProblem: '',
|
||||||
|
addInfo: '',
|
||||||
|
clearType: '',
|
||||||
|
clearTime: '',
|
||||||
|
ackState: '',
|
||||||
|
ackUser: '',
|
||||||
|
ackTime: '',
|
||||||
|
origSeverity: '',
|
||||||
},
|
},
|
||||||
confirmLoading: false,
|
confirmLoading: false,
|
||||||
});
|
});
|
||||||
@@ -190,10 +313,9 @@ let modalState: ModalStateType = reactive({
|
|||||||
* @param row 单行记录信息
|
* @param row 单行记录信息
|
||||||
*/
|
*/
|
||||||
function fnModalVisibleByVive(row: Record<string, any>) {
|
function fnModalVisibleByVive(row: Record<string, any>) {
|
||||||
if (!row.imsi) {
|
|
||||||
message.error(`记录信息存在错误`, 2);
|
console.log(toRaw(row))
|
||||||
return;
|
return false;
|
||||||
}
|
|
||||||
const imsiIdx = row.imsi.lastIndexOf('-');
|
const imsiIdx = row.imsi.lastIndexOf('-');
|
||||||
if (imsiIdx != -1) {
|
if (imsiIdx != -1) {
|
||||||
row.imsi = row.imsi.substring(imsiIdx + 1);
|
row.imsi = row.imsi.substring(imsiIdx + 1);
|
||||||
@@ -206,6 +328,11 @@ function fnModalVisibleByVive(row: Record<string, any>) {
|
|||||||
modalState.title = `${row.imsi} 记录信息`;
|
modalState.title = `${row.imsi} 记录信息`;
|
||||||
modalState.visibleByView = true;
|
modalState.visibleByView = true;
|
||||||
}
|
}
|
||||||
|
function fnModalVisibleBy() {
|
||||||
|
parseStrToDate();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对话框弹出关闭执行函数
|
* 对话框弹出关闭执行函数
|
||||||
@@ -220,7 +347,7 @@ function fnModalCancel() {
|
|||||||
function fnGetList() {
|
function fnGetList() {
|
||||||
if (tableState.loading) return;
|
if (tableState.loading) return;
|
||||||
tableState.loading = true;
|
tableState.loading = true;
|
||||||
listUE(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 (tableState.selectedRowKeys.length > 0) {
|
||||||
@@ -236,8 +363,10 @@ function fnGetList() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
const profile = useUserStore().profile;
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
fnGetList();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -249,7 +378,7 @@ onMounted(() => {
|
|||||||
:body-style="{ marginBottom: '24px', paddingBottom: 0 }"
|
:body-style="{ marginBottom: '24px', paddingBottom: 0 }"
|
||||||
>
|
>
|
||||||
<!-- 表格搜索栏 -->
|
<!-- 表格搜索栏 -->
|
||||||
<a-form :model="queryParams" name="queryParams" layout="horizontal" >
|
<a-form :model="queryParams" name="queryParams" layout="horizontal">
|
||||||
<a-row :gutter="16">
|
<a-row :gutter="16">
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<!-- <a-form-item :label="t('views.neUser.ue.neType')" name="neId ">
|
<!-- <a-form-item :label="t('views.neUser.ue.neType')" name="neId ">
|
||||||
@@ -259,34 +388,42 @@ onMounted(() => {
|
|||||||
:placeholder="t('views.neUser.ue.neTypePlease')"
|
:placeholder="t('views.neUser.ue.neTypePlease')"
|
||||||
/>
|
/>
|
||||||
</a-form-item> -->
|
</a-form-item> -->
|
||||||
<a-form-item :label="t('views.neUser.ue.neTypePlease')" name="imsi">
|
<a-form-item
|
||||||
|
:label="t('views.faultManage.activeAlarm.neType')"
|
||||||
|
name="ne_type"
|
||||||
|
>
|
||||||
<a-input
|
<a-input
|
||||||
v-model:value="queryParams.imsi"
|
v-model:value="queryParams.ne_type"
|
||||||
allow-clear
|
allow-clear
|
||||||
placeholder="查询IMSI"
|
placeholder="查询告警设备类型"
|
||||||
></a-input>
|
></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<a-form-item label="IMSI" name="imsi">
|
<a-form-item
|
||||||
|
:label="t('views.faultManage.activeAlarm.neName')"
|
||||||
|
name="ne_name"
|
||||||
|
>
|
||||||
<a-input
|
<a-input
|
||||||
v-model:value="queryParams.imsi"
|
v-model:value="queryParams.ne_name"
|
||||||
allow-clear
|
allow-clear
|
||||||
placeholder="查询IMSI"
|
placeholder="查询告警网元名称"
|
||||||
></a-input>
|
></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<a-form-item label="MSISDN" name="msisdn">
|
<a-form-item
|
||||||
|
:label="t('views.faultManage.activeAlarm.neId')"
|
||||||
|
name="ne_id"
|
||||||
|
>
|
||||||
<a-input
|
<a-input
|
||||||
v-model:value="queryParams.msisdn"
|
v-model:value="queryParams.ne_id"
|
||||||
allow-clear
|
allow-clear
|
||||||
placeholder="查询MSISDN"
|
placeholder="查询告警网元标识"
|
||||||
></a-input>
|
></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|
||||||
|
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<a-form-item>
|
<a-form-item>
|
||||||
<a-space :size="8">
|
<a-space :size="8">
|
||||||
@@ -304,50 +441,67 @@ onMounted(() => {
|
|||||||
</a-row>
|
</a-row>
|
||||||
<a-row :gutter="16">
|
<a-row :gutter="16">
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<a-form-item label="MSISDN" name="msisdn">
|
<a-form-item
|
||||||
|
:label="t('views.faultManage.activeAlarm.alarmCode')"
|
||||||
|
name="alarm_code"
|
||||||
|
>
|
||||||
<a-input
|
<a-input
|
||||||
v-model:value="queryParams.msisdn"
|
v-model:value="queryParams.alarm_code"
|
||||||
allow-clear
|
allow-clear
|
||||||
placeholder="查询MSISDN"
|
placeholder="查询告警编号"
|
||||||
></a-input>
|
></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<a-form-item label="MSISDN" name="msisdn">
|
<a-form-item
|
||||||
<a-input
|
:label="t('views.faultManage.activeAlarm.origLevel')"
|
||||||
v-model:value="queryParams.msisdn"
|
name="orig_severity"
|
||||||
allow-clear
|
>
|
||||||
placeholder="查询MSISDN"
|
<a-select
|
||||||
></a-input>
|
v-model:value="queryParams.orig_severity"
|
||||||
|
placeholder="Select alarm Type"
|
||||||
|
show-search
|
||||||
|
:options="actAlarmOption.origSeverity"
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<a-form-item label="MSISDN" name="msisdn">
|
<a-form-item
|
||||||
<a-input
|
:label="t('views.faultManage.activeAlarm.eventTime')"
|
||||||
v-model:value="queryParams.msisdn"
|
name="eventTime"
|
||||||
allow-clear
|
>
|
||||||
placeholder="查询MSISDN"
|
<a-range-picker show-time style="width: 400px" />
|
||||||
></a-input>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-row :gutter="16">
|
<a-row :gutter="16">
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<a-form-item label="MSISDN" name="msisdn">
|
<a-form-item
|
||||||
<a-input
|
:label="t('views.faultManage.activeAlarm.pvFlag')"
|
||||||
v-model:value="queryParams.msisdn"
|
name="pv_flag"
|
||||||
allow-clear
|
>
|
||||||
placeholder="查询MSISDN"
|
<a-select
|
||||||
></a-input>
|
v-model:value="queryParams.pv_flag"
|
||||||
|
placeholder="Select a person"
|
||||||
|
show-search
|
||||||
|
:options="actAlarmOption.pvFlag"
|
||||||
|
/>
|
||||||
|
<!-- <a-select-option value="'PNF'">PNF</a-select-option>
|
||||||
|
<a-select-option value="'VNF'">VNF</a-select-option>
|
||||||
|
</a-select> -->
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
<a-form-item label="MSISDN" name="msisdn">
|
<a-form-item
|
||||||
<a-input
|
:label="t('views.faultManage.activeAlarm.alarmType')"
|
||||||
v-model:value="queryParams.msisdn"
|
name="alarm_type"
|
||||||
allow-clear
|
>
|
||||||
placeholder="查询MSISDN"
|
<a-select
|
||||||
></a-input>
|
v-model:value="queryParams.alarm_type"
|
||||||
|
placeholder="Select alarm Type"
|
||||||
|
show-search
|
||||||
|
:options="actAlarmOption.alarmType"
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -415,7 +569,7 @@ onMounted(() => {
|
|||||||
:scroll="{ x: true }"
|
:scroll="{ x: true }"
|
||||||
>
|
>
|
||||||
<template #bodyCell="{ column, record }">
|
<template #bodyCell="{ column, record }">
|
||||||
<template v-if="column.key === 'imsi'">
|
<template v-if="column.key === 'alarm_id'">
|
||||||
<a-space :size="8" align="center">
|
<a-space :size="8" align="center">
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
<template #title>查看详情</template>
|
<template #title>查看详情</template>
|
||||||
@@ -423,7 +577,16 @@ onMounted(() => {
|
|||||||
type="link"
|
type="link"
|
||||||
@click.prevent="fnModalVisibleByVive(record)"
|
@click.prevent="fnModalVisibleByVive(record)"
|
||||||
>
|
>
|
||||||
<template #icon><ProfileOutlined /></template>
|
<template #icon><InfoCircleOutlined /></template>
|
||||||
|
</a-button>
|
||||||
|
</a-tooltip>
|
||||||
|
<a-tooltip>
|
||||||
|
<template #title>帮助文档</template>
|
||||||
|
<a-button
|
||||||
|
type="link"
|
||||||
|
@click.prevent="fnModalVisibleBy()"
|
||||||
|
>
|
||||||
|
<template #icon><QuestionCircleOutlined style="color:crimson;"/></template>
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</a-space>
|
</a-space>
|
||||||
|
|||||||
@@ -381,7 +381,7 @@ function fnBatchModalOk() {
|
|||||||
* 对话框弹出 批量删除确认执行函数
|
* 对话框弹出 批量删除确认执行函数
|
||||||
* 进行表达规则校验
|
* 进行表达规则校验
|
||||||
*/
|
*/
|
||||||
function fnBatchDelModalOk() {
|
function fnBatchDelModalOk() {
|
||||||
modalStateBatchDelFrom
|
modalStateBatchDelFrom
|
||||||
.validate()
|
.validate()
|
||||||
.then(e => {
|
.then(e => {
|
||||||
@@ -434,7 +434,7 @@ function fnBatchModalCancel() {
|
|||||||
* 批量删除对话框弹出关闭执行函数
|
* 批量删除对话框弹出关闭执行函数
|
||||||
* 进行表达规则校验
|
* 进行表达规则校验
|
||||||
*/
|
*/
|
||||||
function fnBatchDelModalCancel() {
|
function fnBatchDelModalCancel() {
|
||||||
modalState.visibleByBatchDel = false;
|
modalState.visibleByBatchDel = false;
|
||||||
modalState.visibleByView = false;
|
modalState.visibleByView = false;
|
||||||
modalStateBatchDelFrom.resetFields();
|
modalStateBatchDelFrom.resetFields();
|
||||||
@@ -859,7 +859,6 @@ onMounted(() => {
|
|||||||
>
|
>
|
||||||
<a-row :gutter="16">
|
<a-row :gutter="16">
|
||||||
<a-col :lg="12" :md="12" :xs="24">
|
<a-col :lg="12" :md="12" :xs="24">
|
||||||
{{ modalState.from }}
|
|
||||||
<a-form-item
|
<a-form-item
|
||||||
label="IMSI"
|
label="IMSI"
|
||||||
name="imsi"
|
name="imsi"
|
||||||
@@ -1058,9 +1057,8 @@ onMounted(() => {
|
|||||||
</a-form>
|
</a-form>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
||||||
|
<!-- 批量删除框 -->
|
||||||
<!-- 批量删除框 -->
|
<a-modal
|
||||||
<a-modal
|
|
||||||
width="1000px"
|
width="1000px"
|
||||||
:keyboard="false"
|
:keyboard="false"
|
||||||
:mask-closable="false"
|
:mask-closable="false"
|
||||||
@@ -1115,8 +1113,7 @@ onMounted(() => {
|
|||||||
</a-input>
|
</a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user