From 4cbd2e43cbc4241630c01b572036f86b8e0184cd Mon Sep 17 00:00:00 2001 From: guanj Date: Thu, 8 Jan 2026 19:20:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=91=8A=E8=AD=A6=E7=BA=A7?= =?UTF-8?q?=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/harmonicRatio‌.vue | 4 +- .../components/overLimitDetails.vue | 7 +- .../cockpit/gridSideStatistics/index.vue | 19 +-- src/components/table/header/index.vue | 21 +++- src/utils/tableStore.ts | 17 ++- src/views/auth/role/index.vue | 13 +- src/views/govern/alarm/Device.vue | 61 ++++++++-- src/views/govern/alarm/Front.vue | 115 +++++++++++++++--- types/table.d.ts | 1 + 9 files changed, 210 insertions(+), 48 deletions(-) diff --git a/src/components/cockpit/gridSideStatistics/components/harmonicRatio‌.vue b/src/components/cockpit/gridSideStatistics/components/harmonicRatio‌.vue index 9a31346..f915ded 100644 --- a/src/components/cockpit/gridSideStatistics/components/harmonicRatio‌.vue +++ b/src/components/cockpit/gridSideStatistics/components/harmonicRatio‌.vue @@ -34,7 +34,7 @@ - + diff --git a/src/components/cockpit/gridSideStatistics/components/overLimitDetails.vue b/src/components/cockpit/gridSideStatistics/components/overLimitDetails.vue index 203cd04..f9cf7e5 100644 --- a/src/components/cockpit/gridSideStatistics/components/overLimitDetails.vue +++ b/src/components/cockpit/gridSideStatistics/components/overLimitDetails.vue @@ -139,16 +139,19 @@ const tableStore: any = new TableStore({ provide('tableStore', tableStore) tableStore.table.params.sortBy = '' tableStore.table.params.orderBy = '' -const open = async (row: any,searchBeginTime:any,searchEndTime:any) => { +const open = async (row: any,searchBeginTime:any,searchEndTime:any,interval:any) => { dialogVisible.value = true initCSlineList() tableStore.table.params.lineId = row.lineId nextTick(() => { - tableHeaderRef.value.setTimeInterval([searchBeginTime, searchEndTime]) + tableHeaderRef.value.setInterval(interval) + setTimeout(() => { + tableHeaderRef.value.setTimeInterval([searchBeginTime, searchEndTime]) tableStore.table.params.searchBeginTime =searchBeginTime tableStore.table.params.searchEndTime = searchEndTime tableStore.index() + },100) }) } diff --git a/src/components/cockpit/gridSideStatistics/index.vue b/src/components/cockpit/gridSideStatistics/index.vue index 82b1b40..85406a5 100644 --- a/src/components/cockpit/gridSideStatistics/index.vue +++ b/src/components/cockpit/gridSideStatistics/index.vue @@ -5,7 +5,8 @@ :showReset="false" ref="TableHeaderRef" @selectChange="selectChange" - datePicker :timeKeyList="prop.timeKey" + datePicker + :timeKeyList="prop.timeKey" v-if="fullscreen" > string[] }, + timeKey: { type: Array as () => string[] }, timeValue: { type: Object }, interval: { type: Number } }) @@ -197,6 +198,7 @@ const tableStore: any = new TableStore({ ], beforeSearchFun: () => { setTime() + tableStore.table.params.interval = TableHeaderRef.value?.datePickerRef?.interval || 3 }, loadCallback: () => { tableStore.table.height = `calc(${prop.height} - 80px)` @@ -211,13 +213,12 @@ provide('tableStore', tableStore) // 点击行 const cellClickEvent = ({ row, column }: any) => { - if (column.field != 'name') { - OverLimitDetailsRef.value.open( - row, - tableStore.table.params.searchBeginTime || prop.timeValue?.[0], - tableStore.table.params.searchEndTime || prop.timeValue?.[1] - ) - } + OverLimitDetailsRef.value.open( + row, + tableStore.table.params.searchBeginTime || prop.timeValue?.[0], + tableStore.table.params.searchEndTime || prop.timeValue?.[1], + tableStore.table.params.interval || prop.interval + ) } onMounted(() => { diff --git a/src/components/table/header/index.vue b/src/components/table/header/index.vue index 5507ab6..44ff5be 100644 --- a/src/components/table/header/index.vue +++ b/src/components/table/header/index.vue @@ -29,12 +29,27 @@ - 查询 - 重置 + + 查询 + + + 重置 + diff --git a/src/utils/tableStore.ts b/src/utils/tableStore.ts index 7ab340c..633da77 100644 --- a/src/utils/tableStore.ts +++ b/src/utils/tableStore.ts @@ -45,6 +45,7 @@ export default class TableStore { pageSize: 20 }, loading: true, + exportLoading: false, column: [], loadCallback: null, resetCallback: null, @@ -196,6 +197,7 @@ export default class TableStore { [ 'export', () => { + this.table.exportLoading = true // this.index() let params = { ...this.table.params, pageNum: 1, pageSize: this.table.total } createAxios( @@ -206,11 +208,16 @@ export default class TableStore { }, requestPayload(this.method, params, this.paramsPOST) ) - ).then(res => { - this.table.allData = filtration(res.data.records || res.data) - this.table.exportProcessingData && this.table.exportProcessingData() - this.table.allFlag = data.showAllFlag || true - }) + ) + .then(res => { + this.table.allData = filtration(res.data.records || res.data) + this.table.exportProcessingData && this.table.exportProcessingData() + this.table.allFlag = data.showAllFlag || true + this.table.exportLoading = false + }) + .catch(() => { + this.table.exportLoading = false + }) } ] ]) diff --git a/src/views/auth/role/index.vue b/src/views/auth/role/index.vue index 3247949..3b2b6b2 100644 --- a/src/views/auth/role/index.vue +++ b/src/views/auth/role/index.vue @@ -16,7 +16,7 @@ show-checkbox width="350px" :data="menuTree" - :checkStrictly="false" + :checkStrictly="checkStrictly" @checkChange="checkChange" > { menuListId.value = data.row.id getFunctionsByRoleIndex({ id: data.row.id }).then((res: any) => { treeRef.value.treeRef.setCheckedKeys(res.data.map((item: any) => item.id)) + setTimeout(() => { + checkStrictly.value = false + }, 100) }) getSystemByRoleId({ id: data.row.id }).then((res: any) => { systemIds.value = res.data.systemIds || [] @@ -170,10 +173,10 @@ const currentChange = (data: any) => { const timeout = ref() const checkChange = (data: any) => { - // if (checkStrictly.value) { - // checkStrictly.value = false - // return - // } + if (checkStrictly.value) { + checkStrictly.value = false + return + } updateRoleMenu({ id: menuListId.value, diff --git a/src/views/govern/alarm/Device.vue b/src/views/govern/alarm/Device.vue index be508c0..f0a5aa4 100644 --- a/src/views/govern/alarm/Device.vue +++ b/src/views/govern/alarm/Device.vue @@ -67,6 +67,22 @@ const rankOptions = ref([ { value: '3', label: '3级' + }, + { + value: '4', + label: 'DEBUG' + }, + { + value: '5', + label: 'NORMAL' + }, + { + value: '6', + label: 'WARN' + }, + { + value: '7', + label: 'ERROR' } ]) @@ -83,14 +99,15 @@ const tableStore = new TableStore({ return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1 } }, - { title: '设备名称', field: 'equipmentName', align: 'center',minWidth: 100 }, - { title: '工程名称', field: 'engineeringName', align: 'center',minWidth: 100 }, - { title: '项目名称', field: 'projectName', align: 'center',minWidth: 100 }, - { title: '发生时刻', field: 'startTime', align: 'center', minWidth: 180, sortable: true }, + { title: '设备名称', field: 'equipmentName', align: 'center', width: 120 }, + { title: '工程名称', field: 'engineeringName', align: 'center', width: 120 }, + { title: '项目名称', field: 'projectName', align: 'center', width: 120 }, + { title: '发生时刻', field: 'startTime', align: 'center', width: 180, sortable: true }, { title: '模块信息', field: 'moduleNo', - align: 'center',minWidth: 100 , + align: 'center', + width: 100, formatter: (row: any) => { return row.cellValue ? row.cellValue : '/' } @@ -116,14 +133,24 @@ const tableStore = new TableStore({ width: 100, render: 'tag', custom: { + // 1:Ⅰ级 2:Ⅱ级 3:Ⅲ级 4:DEBUG 5:NORMAL 6:WARN 7:ERROR + 1: 'danger', 2: 'warning', - 3: 'success' + 3: 'success', + 4: 'warning', + 5: 'success', + 6: 'warning', + 7: 'danger' }, replaceValue: { 1: '1级', 2: '2级', - 3: '3级' + 3: '3级', + 4: 'DEBUG', + 5: 'NORMAL', + 6: 'WARN', + 7: 'ERROR' } } // { @@ -135,7 +162,25 @@ const tableStore = new TableStore({ // } ], beforeSearchFun: () => {}, - + exportProcessingData: () => { + tableStore.table.allData = tableStore.table.allData.filter(item => { + item.level = + item.level == 1 + ? '1级' + : item.level == 2 + ? '2级' + : item.level == 3 + ? '3级' + : item.level == 4 + ? 'DEBUG' + : item.level == 5 + ? 'NORMAL' + : item.level == 6 + ? 'WARN' + : 'ERROR' + return item + }) + } }) provide('tableStore', tableStore) diff --git a/src/views/govern/alarm/Front.vue b/src/views/govern/alarm/Front.vue index 576200f..2e35493 100644 --- a/src/views/govern/alarm/Front.vue +++ b/src/views/govern/alarm/Front.vue @@ -2,9 +2,23 @@ @@ -21,7 +35,36 @@ import { mainHeight } from '@/utils/layout' const props = defineProps(['deviceTree']) const refheader = ref() - +const rankOptions = ref([ + { + value: '1', + label: '1级' + }, + { + value: '2', + label: '2级' + }, + { + value: '3', + label: '3级' + }, + { + value: '4', + label: 'DEBUG' + }, + { + value: '5', + label: 'NORMAL' + }, + { + value: '6', + label: 'WARN' + }, + { + value: '7', + label: 'ERROR' + } +]) const tableStore = new TableStore({ url: '/cs-harmonic-boot/eventUser/frontWarnInfo', method: 'POST', @@ -35,34 +78,79 @@ const tableStore = new TableStore({ return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1 } }, - { title: '前置服务器名称', field: 'lineId', align: 'center' ,minWidth: 120 }, - { title: '前置服务器ip', field: 'wavePath', align: 'center' ,minWidth: 100 }, - { title: '进程号', field: 'clDid', align: 'center',minWidth: 60 }, - { title: '发生时刻', field: 'startTime', align: 'center', minWidth: 180, sortable: true }, - + { title: '前置服务器名称', field: 'lineId', align: 'center', width: 120 }, + { title: '前置服务器ip', field: 'wavePath', align: 'center', width: 120 }, + { title: '进程号', field: 'clDid', align: 'center', width: 60 }, + { title: '发生时刻', field: 'startTime', align: 'center', width: 180, sortable: true }, + { title: '事件描述', field: 'tag', minWidth: 350 }, - { + { title: '告警代码', field: 'code', - align: 'center',minWidth: 100 , - + align: 'center', + width: 100, formatter: (row: any) => { - return row.cellValue ? '\u200B' + row.cellValue : '/' + return row.cellValue ? '\u200B' + row.cellValue : '/' }, sortable: true }, + { + title: '级别', + field: 'level', + width: 100, + render: 'tag', + custom: { + // 1:Ⅰ级 2:Ⅱ级 3:Ⅲ级 4:DEBUG 5:NORMAL 6:WARN 7:ERROR + 1: 'danger', + 2: 'warning', + 3: 'success', + 4: 'warning', + 5: 'success', + 6: 'warning', + 7: 'danger' + }, + replaceValue: { + 1: '1级', + 2: '2级', + 3: '3级', + 4: 'DEBUG', + 5: 'NORMAL', + 6: 'WARN', + 7: 'ERROR' + } + } ], - beforeSearchFun: () => {} + beforeSearchFun: () => {}, + exportProcessingData: () => { + tableStore.table.allData = tableStore.table.allData.filter(item => { + item.level = + item.level == 1 + ? '1级' + : item.level == 2 + ? '2级' + : item.level == 3 + ? '3级' + : item.level == 4 + ? 'DEBUG' + : item.level == 5 + ? 'NORMAL' + : item.level == 6 + ? 'WARN' + : 'ERROR' + return item + }) + } }) provide('tableStore', tableStore) tableStore.table.params.searchValue = '' +tableStore.table.params.level = '' const deviceTreeOptions = ref(props.deviceTree) deviceTreeOptions.value.map((item: any, index: any) => { if (item.children.length == 0) { @@ -76,6 +164,5 @@ onMounted(() => { setTimeout(() => { // tableStore.table.height = mainHeight(200).height as any }, 0) - diff --git a/types/table.d.ts b/types/table.d.ts index 226403e..de4fe0a 100644 --- a/types/table.d.ts +++ b/types/table.d.ts @@ -16,6 +16,7 @@ declare global { webPagingData: TableRow[][] // 表格加载状态 loading: boolean + exportLoading: boolean // 当前选中行 selection: TableRow[] // 表格列定义