From 34049c5b45d8fb6b224b9e31e92fec2ec406dc4c Mon Sep 17 00:00:00 2001 From: shijing Date: Fri, 25 Nov 2022 14:26:11 +0800 Subject: [PATCH] videoStatistics --- client/package.json | 1 + client/src/api/video.js | 93 ++- client/src/router/index.js | 11 +- client/src/views/testvideo/index.vue | 163 ++++- .../src/views/testvideo/videoStatistics.vue | 610 ++++++++++++++++++ client/src/views/testvideo/videolist.vue | 15 +- 6 files changed, 852 insertions(+), 41 deletions(-) create mode 100644 client/src/views/testvideo/videoStatistics.vue diff --git a/client/package.json b/client/package.json index 06ce63b..086cf64 100644 --- a/client/package.json +++ b/client/package.json @@ -17,6 +17,7 @@ "dependencies": { "@riophae/vue-treeselect": "^0.4.0", "axios": "0.18.1", + "echarts": "^5.4.0", "element-china-area-data": "^5.0.2", "element-ui": "2.13.0", "file-saver": "^2.0.2", diff --git a/client/src/api/video.js b/client/src/api/video.js index b81335f..491c062 100644 --- a/client/src/api/video.js +++ b/client/src/api/video.js @@ -49,7 +49,7 @@ export function getVideoPlayCode(id) { method: 'get' }) } - +//已弃用 export function getMyView(id, data) { return request({ url: `/vod/video/${id}/myview/`, @@ -57,7 +57,7 @@ export function getMyView(id, data) { data }) } - +//已弃用 export function refreshMyView(id, data) { return request({ url: `/vod/video/${id}/myview/`, @@ -65,3 +65,92 @@ export function refreshMyView(id, data) { data }) } + +//开始播放 +export function videoStart(id) { + return request({ + url: `/vod/video/${id}/start/`, + method: 'get' + }) +} +//观看统计 +export function videoView2(data) { + return request({ + url: `/vod/view2/`, + method: 'get', + data + }) +} +//我的观看统计 +export function myVideoView2(data) { + return request({ + url: `/vod/view2/my/`, + method: 'get', + data + }) +} +//观看记录 +export function viewItem(data) { + return request({ + url: `/vod/viewitem/`, + method: 'get', + data + }) +} +//我的观看记录 +export function myViewItem(data) { + return request({ + url: `/vod/viewitem/my/`, + method: 'get', + data + }) +} +//更新观看记录 +export function refreshViewItem(id, data) { + return request({ + url: `/vod/viewitem/${id}/`, + method: 'put', + data + }) +} + +//本视频的我的观看统计 +export function myView(id) { + return request({ + url: `/vod/video/${id}/my/`, + method: 'get' + }) +} +//播放完成 +export function viewItemComplete(id) { + return request({ + url: `/vod/viewitem/${id}/complete/`, + method: 'get' + }) +} + + +//单位观看量统计 +export function groupByOrgView(data) { + return request({ + url: '/vod/analyse/group_by_org_view/', + method: 'post', + data + }) +} +//个人观看量统计 +export function groupByUserView(data) { + return request({ + url: '/vod/analyse/group_by_user_view/', + method: 'post', + data + }) +} +//视频大类播放量统计 +export function groupByCategoryView(data) { + return request({ + url: '/vod/analyse/group_by_video_category_big/', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/client/src/router/index.js b/client/src/router/index.js index 9be6a5b..1b5c7d5 100644 --- a/client/src/router/index.js +++ b/client/src/router/index.js @@ -300,12 +300,19 @@ export const asyncRoutes = [ meta: { title: '上传视频', perms: ['video_create'] } }, { - path: 'index/:id', - name: 'Index', + path: 'index', + name: 'index', component: () => import('@/views/testvideo/index.vue'), meta: { title: '视频播放', perms: ['video_view'] }, hidden: true }, + { + path: 'videoStatistics', + name: 'videoStatistics', + component: () => import('@/views/testvideo/videoStatistics.vue'), + meta: { title: '视频播放统计', perms: ['video_view'] }, + // hidden: true + }, ] }, { diff --git a/client/src/views/testvideo/index.vue b/client/src/views/testvideo/index.vue index 23b83da..71f1854 100644 --- a/client/src/views/testvideo/index.vue +++ b/client/src/views/testvideo/index.vue @@ -1,6 +1,6 @@ @@ -188,7 +257,7 @@ color: #333; text-align: center; line-height: 40px; - position: fixed; + position: absolute; width: 100%; z-index: 1010; } @@ -239,4 +308,30 @@ border: 1px solid #e74e4e; border-radius: 15px; } + .viewRecordList{ + display: flex; + flex-direction: column; + } + .viewRecordItemWrap{ + margin: 10px 0; + padding: 5px 0; + border-bottom: 1px solid #dddddd; + } + .recordName{ + font-size: 15px; + font-weight: 600; + color: #333333; + margin-bottom: 10px; + } + .viewInfo{ + font-size: 14px; + color: #a2a2a2; + padding-bottom: 5px; + } + .viewInfo_tiem{ + color:#6090e6 + } + .viewInfo_current{ + color:#86c793 + } diff --git a/client/src/views/testvideo/videoStatistics.vue b/client/src/views/testvideo/videoStatistics.vue new file mode 100644 index 0000000..e293150 --- /dev/null +++ b/client/src/views/testvideo/videoStatistics.vue @@ -0,0 +1,610 @@ + + diff --git a/client/src/views/testvideo/videolist.vue b/client/src/views/testvideo/videolist.vue index 4147db5..0e55a62 100644 --- a/client/src/views/testvideo/videolist.vue +++ b/client/src/views/testvideo/videolist.vue @@ -54,12 +54,12 @@
- {{o.views}} + {{o.views_n}} {{o.viewsp}} + background-color: white;" icon="el-icon-s-custom">{{o.viewsp_n}} @@ -182,7 +182,16 @@ }else{ sessionStorage.removeItem('videoType'); } - this.$router.push({name: "Index", params: {fileid: a.fileid, id: a.id}}) + let routeData = this.$router.resolve({ + path: "/test/index", + query: { + id: a.id + } + }); + + //必要操作,否则不会打开新页面 + window.open(routeData.href, '_blank'); + // this.$router.push({path: "index", query: {fileid: a.fileid, id: a.id}}) } }, };