+
+
-
- {{ 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;
}
+