diff --git a/src/packages/components/Charts/ConfinedSpace/AlarmNowList/index.vue b/src/packages/components/Charts/ConfinedSpace/AlarmNowList/index.vue index ceb4c43..5d6529c 100644 --- a/src/packages/components/Charts/ConfinedSpace/AlarmNowList/index.vue +++ b/src/packages/components/Charts/ConfinedSpace/AlarmNowList/index.vue @@ -5,6 +5,9 @@
+
{{ index + 1 }}
+
{{ index + 1 }}
+
{{ index + 1 }}
{{ item.level }}
@@ -35,32 +38,81 @@
+ +
- - {{ status.selectedRow?.time }} - + {{ convertTimestampToDateTime((status.selectedRow as any)?.alarmRecord.alarmTime) }} +
+
+ + {{ (status.selectedRow as any)?.handleStatus }} +
+
+ + {{ (status.selectedRow as any)?.alarmRecord.riskIdentName }}
- - {{ status.selectedRow?.level }} - + {{ + (status.selectedRow as any)?.alarmRecord.alarmLevel + }}
- - {{ status.selectedRow?.title }} - + {{ (status.selectedRow as any)?.alarmRecord.alarmDesc }}
- - {{ status.selectedRow?.dept }} - + {{ + (status.selectedRow as any)?.pathName + .substring(1, (status.selectedRow as any)?.pathName.length) + .replaceAll('/', '-') + (((status.selectedRow as any)?.subareaName && (status.selectedRow as + any)?.subareaName !== '') ? (status.selectedRow as any)?.subareaName : '') + }}
+
+ +
+ + +
+ +
+ + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+
+ + + +
@@ -100,17 +152,44 @@ const option = shallowReactive({ dataset: configOption.dataset }) - - -const handleOpenDialog = (row: any) => { - status.selectedRow = { - ...row, // 基础数据从item获取 - }; - - status.showDialog = true; - isLoading.value = false; +const handleChangeDevice = (value: string | number) => { + status.selectedRow.cameraId = value + // if (status.selectedRow.alarmGroup.find(item => item.cameraId === value)) { + // status.selectedRow.startTime = status.alarmGroup.find(item => item.cameraId === value).startTime + // status.selectedRow.endTime = status.alarmGroup.find(item => item.cameraId === value).endTime + // } } +const handleOpenDialog = async (row: any) => { + const alarmUUID = row.alarmUUID + + status.showDialog = true + isLoading.value = true + //@ts-ignore + axiosInstance({ + method: 'GET', + url: `${window.htconfig.API_IP}aw/bigScreen/qisuo/alarmRecordDetail/${alarmUUID}`, + + responseType: 'json' + }).then((res: any) => { + //@ts-ignore + isLoading.value = false + + const result = res.value + + if (result) { + //@ts-ignore + status.selectedRow = { + ...result, + cameraId: result.camerainfos[0]?.deviceCode, + startTime: (result.alarmRecord.alarmTime - 15 * 1000), + endTime: (result.alarmRecord.alarmTime + 15 * 1000) + } + } + }) + + //@ts-ignore +} // 手动更新 watch( @@ -129,6 +208,32 @@ useChartDataFetch(props.chartConfig, useChartEditStore, (newData: any) => { option.dataset = newData }) +const removeProtocolIpPort = (url) => { + // 使用正则表达式匹配并移除协议、IP地址和端口 + return url.replace(/^(?:https?:\/\/)?(?:[\d.]+|\[[\da-fA-F:.]+\])(?::\d+)?\/?/, ''); +} + +const convertTimestampToTime = timestamp => { + const date = new Date(timestamp) + const hours = date.getHours().toString().padStart(2, '0') + const minutes = date.getMinutes().toString().padStart(2, '0') + const seconds = date.getSeconds().toString().padStart(2, '0') + + return `${hours}:${minutes}:${seconds}` +} + +const convertTimestampToDateTime = timestamp => { + const date = new Date(timestamp) + const year = date.getFullYear() + const month = String(date.getMonth() + 1).padStart(2, '0') + const day = String(date.getDate()).padStart(2, '0') + const hours = date.getHours().toString().padStart(2, '0') + const minutes = date.getMinutes().toString().padStart(2, '0') + const seconds = date.getSeconds().toString().padStart(2, '0') + + return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}` +} + const handleCloseDialog = () => { status.showDialog = false status.selectedRow = null @@ -200,6 +305,23 @@ const handleCloseDialog = () => { align-items: center; } +.levelOneIcon { + width: 18px; + height: 18px; + background: url(/src/assets/images/chart/tables/list_scroll_1_icon.png) 50% 50% / contain no-repeat; +} + +.levelTwoIcon { + width: 18px; + height: 18px; + background: url(/src/assets/images/chart/tables/list_scroll_2_icon.png) 50% 50% / contain no-repeat; +} + +.levelOtherIcon { + width: 18px; + height: 18px; + background: url(/src/assets/images/chart/tables/list_scroll_3_icon.png) 50% 50% / contain no-repeat; +} .item_content { width: 100%; @@ -268,6 +390,7 @@ const handleCloseDialog = () => { .info .sub-title { padding: 0 0 0 24px; + background: url(./second_level.png) 0 50%/425px 31px no-repeat; margin-right: 8px; } @@ -313,5 +436,7 @@ const handleCloseDialog = () => { .custom-tab-modal .timeLineClass>div:last-child { padding-left: 8px; + background: url(./text_bg.png) 0 50%/100% 100% no-repeat; } +