From 9ec6f41e6f68d9e1dd64fcabefd62b6af4fafb70 Mon Sep 17 00:00:00 2001 From: fengshiwang <996555510@qq.com> Date: Wed, 4 Jun 2025 16:46:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=B3=E4=BE=A7=E5=AE=9E=E6=97=B6=E5=9B=BE?= =?UTF-8?q?=E5=83=8F=20=E6=8E=A5=E5=8F=A3=E8=81=94=E8=B0=83=20=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E6=B5=81=E8=A7=A3=E6=9E=90=20=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=20=E6=8E=A7=E5=88=B6=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=9A=90=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 6 + package.json | 1 + src/api/modules/index.ts | 22 ++- src/views/component/EventTask.vue | 204 +++++++++++++++---------- src/views/component/RealTimeImage.vue | 206 ++++++++++++++++++-------- src/views/component/left.vue | 18 ++- src/views/component/map.vue | 28 +++- src/views/component/right.vue | 59 ++++++-- 8 files changed, 375 insertions(+), 169 deletions(-) diff --git a/package-lock.json b/package-lock.json index a25ac1a..da50f65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "dayjs": "^1.11.10", "echarts": "^5.5.0", "element-plus": "^2.6.2", + "hls.js": "^1.6.5", "lodash-es": "^4.17.21", "mitt": "^3.0.1", "mockjs": "^1.1.0", @@ -2892,6 +2893,11 @@ "he": "bin/he" } }, + "node_modules/hls.js": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.5.tgz", + "integrity": "sha512-KMn5n7JBK+olC342740hDPHnGWfE8FiHtGMOdJPfUjRdARTWj9OB+8c13fnsf9sk1VtpuU2fKSgUjHvg4rNbzQ==" + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", diff --git a/package.json b/package.json index edba2e0..646b1c5 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "dayjs": "^1.11.10", "echarts": "^5.5.0", "element-plus": "^2.6.2", + "hls.js": "^1.6.5", "lodash-es": "^4.17.21", "mitt": "^3.0.1", "mockjs": "^1.1.0", diff --git a/src/api/modules/index.ts b/src/api/modules/index.ts index e84bb76..82166cf 100644 --- a/src/api/modules/index.ts +++ b/src/api/modules/index.ts @@ -85,4 +85,24 @@ export const todayHourly=(param:any={})=>{ /**获取当天每小时总车流量和平均车流量 */ export const trafficTrend=(param:any={})=>{ return GET('/device/trafficFlow/trafficTrend',param) -} \ No newline at end of file +} + +/**事件历史记录管理 历史数据 */ +export const meventListHistory=(param:any={})=>{ + return GET('/device/mevent/listHistory',param) +} + +/**数据字典-根据类型获取字典数据 */ +export const getDictData = (dictType: string) => { + return GET(`/system/dict/data/type/${dictType}`); +} + +/**视频监控设备列表*/ +export const getVideoDeviceList = (param: any = {}) => { + return POST('/video/device/list', param); +} + +/**视频流 */ +export const videoStream=(param:any={})=>{ + return GET('/video/stream',param) +} diff --git a/src/views/component/EventTask.vue b/src/views/component/EventTask.vue index 6f14bff..514d11e 100644 --- a/src/views/component/EventTask.vue +++ b/src/views/component/EventTask.vue @@ -1,52 +1,79 @@ @@ -96,7 +123,22 @@ const formatTime = (time: string) => { background: transparent; padding: 20px; box-sizing: border-box; + overflow-y: scroll; + z-index: 9999; + &::-webkit-scrollbar { + width: 8px; + background: transparent; + } + &::-webkit-scrollbar-thumb { + background: linear-gradient(180deg, #00c6ff 0%, #085b9f 100%); + border-radius: 4px; + } + + &::-webkit-scrollbar-track { + background: rgba(0, 198, 255, 0.08); + border-radius: 4px; + } .event-section { height: calc(50% - 10px); background: linear-gradient( @@ -112,7 +154,7 @@ const formatTime = (time: string) => { display: flex; flex-direction: column; position: relative; - overflow: hidden; + // overflow: hidden; &::before { content: ""; @@ -129,20 +171,20 @@ const formatTime = (time: string) => { ); } - &::after { - content: ""; - position: absolute; - bottom: 0; - left: 0; - right: 0; - height: 1px; - background: linear-gradient( - 90deg, - transparent, - rgba(0, 198, 255, 0.3), - transparent - ); - } + // &::after { + // content: ""; + // position: absolute; + // bottom: 0; + // left: 0; + // right: 0; + // height: 1px; + // background: linear-gradient( + // 90deg, + // transparent, + // rgba(0, 198, 255, 0.3), + // transparent + // ); + // } .section-header { display: flex; @@ -151,22 +193,22 @@ const formatTime = (time: string) => { gap: 12px; margin-bottom: 20px; padding-bottom: 12px; - border-bottom: 1px solid rgba(0, 198, 255, 0.1); - position: relative; + border: 1px solid rgba(0, 198, 255, 0.1); + // position: relative; background-color: #0e2d51; border-radius: 15px; padding: 14px; font-size: 22px; - &::after { - content: ""; - position: absolute; - bottom: -1px; - left: 0; - width: 100px; - height: 1px; - background: linear-gradient(90deg, #00c6ff, transparent); - } + // &::after { + // content: ""; + // position: absolute; + // bottom: -1px; + // left: 0; + // width: 100px; + // height: 1px; + // background: linear-gradient(90deg, #00c6ff, transparent); + // } i { width: 32px; @@ -229,7 +271,7 @@ const formatTime = (time: string) => { .event-list { flex: 1; - overflow-y: auto; + //overflow-y: auto; padding-right: 4px; &::-webkit-scrollbar { @@ -258,36 +300,36 @@ const formatTime = (time: string) => { position: relative; overflow: hidden; - &::before { - content: ""; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 1px; - background: linear-gradient( - 90deg, - transparent, - rgba(0, 198, 255, 0.2), - transparent - ); - } + // &::before { + // content: ""; + // position: absolute; + // top: 0; + // left: 0; + // right: 0; + // height: 1px; + // background: linear-gradient( + // 90deg, + // transparent, + // rgba(0, 198, 255, 0.2), + // transparent + // ); + // } - &:hover { - background: rgba(4, 49, 128, 0.3); - border-color: rgba(0, 198, 255, 0.3); - transform: translateY(-2px); - box-shadow: 0 4px 20px rgba(0, 198, 255, 0.15); + // &:hover { + // background: rgba(4, 49, 128, 0.3); + // border-color: rgba(0, 198, 255, 0.3); + // transform: translateY(-2px); + // box-shadow: 0 4px 20px rgba(0, 198, 255, 0.15); - &::before { - background: linear-gradient( - 90deg, - transparent, - rgba(0, 198, 255, 0.4), - transparent - ); - } - } + // &::before { + // background: linear-gradient( + // 90deg, + // transparent, + // rgba(0, 198, 255, 0.4), + // transparent + // ); + // } + // } .event-info { display: flex; diff --git a/src/views/component/RealTimeImage.vue b/src/views/component/RealTimeImage.vue index 6abfdb2..477101e 100644 --- a/src/views/component/RealTimeImage.vue +++ b/src/views/component/RealTimeImage.vue @@ -1,7 +1,12 @@