From fd149325e9a4c4f1a8925097f8811e93b793814d Mon Sep 17 00:00:00 2001 From: zhoulexin Date: Mon, 8 Jun 2026 14:31:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A4=A7=E5=B1=8F=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=81=94=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/bigscreen.js | 16 + src/api/info.js | 10 + src/components/WebRtcPlayer.vue | 280 ++++++++++ src/router/index.js | 2 +- src/views/bigscreen/index.vue | 493 +++++++++++++++--- src/views/info/building.vue | 6 +- .../personnel.vue => info/student.vue} | 0 7 files changed, 725 insertions(+), 82 deletions(-) create mode 100644 src/api/bigscreen.js create mode 100644 src/components/WebRtcPlayer.vue rename src/views/{settings/personnel.vue => info/student.vue} (100%) diff --git a/src/api/bigscreen.js b/src/api/bigscreen.js new file mode 100644 index 0000000..72263c3 --- /dev/null +++ b/src/api/bigscreen.js @@ -0,0 +1,16 @@ +import request from '@/utils/request' + +/** 获取大屏核心统计数据 */ +export const getBigScreenStats = () => { + return request.get('/bigscreen/stats') +} + +/** 获取出勤趋势数据 */ +export const getBigScreenTrend = () => { + return request.get('/bigscreen/trend') +} + +/** 获取课堂行为分布数据 */ +export const getBigScreenBehavior = () => { + return request.get('/bigscreen/behavior-distribution') +} diff --git a/src/api/info.js b/src/api/info.js index 301996c..a5fd052 100644 --- a/src/api/info.js +++ b/src/api/info.js @@ -27,6 +27,11 @@ export function deleteBuilding(ids) { return request({ url: '/building', method: 'delete', data: ids }) } +// 获取教室列表(下拉用,返回全部) +export function getRoomsList() { + return request({ url: '/classroom/list', method: 'get' }) +} + // 获取教室列表(分页,按教学楼id) export function getRooms(params) { return request({ url: '/classroom/page', method: 'get', params }) @@ -47,6 +52,11 @@ export function deleteRoom(ids) { return request({ url: '/classroom', method: 'delete', data: ids }) } +// 获取摄像头列表(下拉用,返回全部) +export function getDeviceList() { + return request({ url: '/device/list', method: 'get' }) +} + // 获取摄像头列表(按教室id) export function getCameras(params) { return request({ url: '/device/page', method: 'get', params }) diff --git a/src/components/WebRtcPlayer.vue b/src/components/WebRtcPlayer.vue new file mode 100644 index 0000000..44f7ef8 --- /dev/null +++ b/src/components/WebRtcPlayer.vue @@ -0,0 +1,280 @@ + + + + + \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index 6c02f21..33fecf3 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -61,7 +61,7 @@ const routes = [ { path: 'info/student', name: 'InfoStudent', - component: () => import('@/views/settings/personnel.vue'), + component: () => import('@/views/info/student.vue'), meta: { title: '学生信息', icon: 'User' } }, { diff --git a/src/views/bigscreen/index.vue b/src/views/bigscreen/index.vue index 5e52a9a..ae9db4a 100644 --- a/src/views/bigscreen/index.vue +++ b/src/views/bigscreen/index.vue @@ -1,5 +1,5 @@