فهرست منبع

“分中心榜”调整为“中心榜”,标题调整为日榜、周榜、月榜;新增直播播放次数排行榜、直播在线用户数排行榜、直播停留时长排行榜

yejian 2 سال پیش
والد
کامیت
ccca8e586e

+ 22 - 0
src/router/rank.js

@@ -47,7 +47,29 @@ const rankRouter = [
         name: "userStayRanking",
         component: () =>
             import(/* webpackChunkName: "UserStayRanking" */ "../views/Ranking/UserStayRanking.vue"),
+    },
+    //   直播播放次数排行榜
+    {
+        path: "/liveBroadcastsNum",
+        name: "liveBroadcastsNum",
+        component: () =>
+            import(/* webpackChunkName: "LiveBroadcastsNum" */ "../views/Ranking/LiveBroadcastsNum.vue"),
+    },
+    //   直播在线用户数排行榜
+    {
+        path: "/liveStreamingUser",
+        name: "liveStreamingUser",
+        component: () =>
+            import(/* webpackChunkName: "LiveStreamingUser" */ "../views/Ranking/LiveStreamingUser.vue"),
+    },
+    //   直播停留时长排行榜
+    {
+        path: "/liveResidenceDuration",
+        name: "liveResidenceDuration",
+        component: () =>
+            import(/* webpackChunkName: "LiveResidenceDuration" */ "../views/Ranking/LiveResidenceDuration.vue"),
     }
+    
 ];
 
 export default rankRouter;

+ 156 - 0
src/views/Ranking/LiveBroadcastsNum.vue

@@ -0,0 +1,156 @@
+<template>
+  <div class="manuscriptIssued">
+    <el-loading></el-loading>
+    <el-breadcrumb separator-class="el-icon-arrow-right">
+      <el-breadcrumb-item>全媒体平台</el-breadcrumb-item>
+      <el-breadcrumb-item>直播播放次数排行榜</el-breadcrumb-item>
+    </el-breadcrumb>
+    <div class="groupType">
+      <el-row class="mb-4">
+        <el-button
+          v-for="cur in tabs.btns"
+          :key="cur.value"
+          :class="cur.value == btnFocus ? 'btnFocus' : ''"
+          @click="handleClick(cur)"
+          >{{ cur.label }}</el-button
+        >
+      </el-row>
+    </div>
+    <div class="card-rank">
+      <div>
+        <h4>日榜</h4>
+        <el-table :data="dayData" header-row-class-name="card-tabs-header">
+          <el-table-column align="center" prop="name" :label="subTitle" />
+          <el-table-column align="center" prop="cnt" label="次数" />
+        </el-table>
+      </div>
+      <div>
+        <h4>周榜</h4>
+        <el-table :data="weekData" header-row-class-name="card-tabs-header">
+          <el-table-column align="center" prop="name" :label="subTitle" />
+          <el-table-column align="center" prop="cnt" label="次数" />
+        </el-table>
+      </div>
+      <div>
+        <h4>月榜</h4>
+        <el-table :data="monthData" header-row-class-name="card-tabs-header">
+          <el-table-column align="center" prop="name" :label="subTitle" />
+          <el-table-column align="center" prop="cnt" label="次数" />
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { getLiveCnt } from "@/api/index";
+
+const ElLoading = require("element-plus/lib/el-loading/index");
+import "element-plus/lib/theme-chalk/el-loading.css";
+
+export default {
+  name: "ManuscriptIssued",
+  data() {
+    return {
+      activeName: 1,
+      btnFocus: "center",
+      title: "中心",
+      subTitle: "中心名称",
+      tabs: {
+        name: "直播热度排行榜",
+        code: 1,
+        btns: [
+          {
+            label: "中心榜",
+            value: "center",
+            title: "中心名称",
+          },
+          {
+            label: "人员榜",
+            value: "user",
+            title: "人员名称",
+          },
+          // {
+          //   label: "中心内部榜",
+          //   value: 2,
+          //   title:"中心名称"
+          // },
+          {
+            label: "部门内部人员榜",
+            value: "depart",
+            title: "部门名称",
+          },
+        ],
+      },
+      dayData: [],
+      weekData: [],
+      monthData: [],
+    };
+  },
+  mounted() {
+    this.setTableData();
+  },
+  methods: {
+    handleClick(e) {
+      this.title = e.label.substring(0, e.label.length - 1);
+      this.btnFocus = e.value;
+      this.subTitle = e.title;
+      this.setTableData();
+    },
+    setTableData() {
+      const that = this;
+      this.load = ElLoading.default.service();
+      getLiveCnt({ type: this.btnFocus,target:"pv" })
+        .then((res) => {
+          const { day, week, month } = res;
+          that.dayData = day;
+          that.weekData = week;
+          that.monthData = month;
+          that.load.close();
+        })
+        .catch((err) => {
+          that.dayData = [];
+          that.weekData = [];
+          that.monthData = [];
+          console.log("catch", err);
+        });
+    },
+  },
+};
+</script>
+<style>
+.manuscriptIssued {
+  margin: 10px;
+}
+.card-tabs,
+.el-tabs__header {
+  padding: 0 100px;
+}
+.groupType {
+  padding: 15px 10px;
+  box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.12);
+}
+.card-rank {
+  padding: 10px 15px;
+  box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.12);
+  display: flex;
+  align-items: flex-start;
+  justify-content: space-between;
+}
+.card-rank > div {
+  width: 32%;
+}
+h4 {
+  text-align: left;
+  color: #e18116;
+  margin-bottom: 50px;
+  font-weight: bold;
+}
+.card-tabs-header th {
+  background: #f5f7fa !important;
+}
+.btnFocus {
+  color: #fff !important;
+  border-color: #409eff !important;
+  background-color: #409eff !important;
+}
+</style>

+ 156 - 0
src/views/Ranking/LiveResidenceDuration.vue

@@ -0,0 +1,156 @@
+<template>
+  <div class="manuscriptIssued">
+    <el-loading></el-loading>
+    <el-breadcrumb separator-class="el-icon-arrow-right">
+      <el-breadcrumb-item>全媒体平台</el-breadcrumb-item>
+      <el-breadcrumb-item>直播停留时长排行榜</el-breadcrumb-item>
+    </el-breadcrumb>
+    <div class="groupType">
+      <el-row class="mb-4">
+        <el-button
+          v-for="cur in tabs.btns"
+          :key="cur.value"
+          :class="cur.value == btnFocus ? 'btnFocus' : ''"
+          @click="handleClick(cur)"
+          >{{ cur.label }}</el-button
+        >
+      </el-row>
+    </div>
+    <div class="card-rank">
+      <div>
+        <h4>日榜</h4>
+        <el-table :data="dayData" header-row-class-name="card-tabs-header">
+          <el-table-column align="center" prop="name" :label="subTitle" />
+          <el-table-column align="center" prop="cnt" label="时长/秒" />
+        </el-table>
+      </div>
+      <div>
+        <h4>周榜</h4>
+        <el-table :data="weekData" header-row-class-name="card-tabs-header">
+          <el-table-column align="center" prop="name" :label="subTitle" />
+          <el-table-column align="center" prop="cnt" label="时长/秒" />
+        </el-table>
+      </div>
+      <div>
+        <h4>月榜</h4>
+        <el-table :data="monthData" header-row-class-name="card-tabs-header">
+          <el-table-column align="center" prop="name" :label="subTitle" />
+          <el-table-column align="center" prop="cnt" label="时长/秒" />
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { getLiveCnt } from "@/api/index";
+
+const ElLoading = require("element-plus/lib/el-loading/index");
+import "element-plus/lib/theme-chalk/el-loading.css";
+
+export default {
+  name: "ManuscriptIssued",
+  data() {
+    return {
+      activeName: 1,
+      btnFocus: "center",
+      title: "中心",
+      subTitle: "中心名称",
+      tabs: {
+        name: "直播热度排行榜",
+        code: 1,
+        btns: [
+          {
+            label: "中心榜",
+            value: "center",
+            title: "中心名称",
+          },
+          {
+            label: "人员榜",
+            value: "user",
+            title: "人员名称",
+          },
+          // {
+          //   label: "中心内部榜",
+          //   value: 2,
+          //   title:"中心名称"
+          // },
+          {
+            label: "部门内部人员榜",
+            value: "depart",
+            title: "部门名称",
+          },
+        ],
+      },
+      dayData: [],
+      weekData: [],
+      monthData: [],
+    };
+  },
+  mounted() {
+    this.setTableData();
+  },
+  methods: {
+    handleClick(e) {
+      this.title = e.label.substring(0, e.label.length - 1);
+      this.btnFocus = e.value;
+      this.subTitle = e.title;
+      this.setTableData();
+    },
+    setTableData() {
+      const that = this;
+      this.load = ElLoading.default.service();
+      getLiveCnt({ type: this.btnFocus,target:"duration" })
+        .then((res) => {
+          const { day, week, month } = res;
+          that.dayData = day;
+          that.weekData = week;
+          that.monthData = month;
+          that.load.close();
+        })
+        .catch((err) => {
+          that.dayData = [];
+          that.weekData = [];
+          that.monthData = [];
+          console.log("catch", err);
+        });
+    },
+  },
+};
+</script>
+<style>
+.manuscriptIssued {
+  margin: 10px;
+}
+.card-tabs,
+.el-tabs__header {
+  padding: 0 100px;
+}
+.groupType {
+  padding: 15px 10px;
+  box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.12);
+}
+.card-rank {
+  padding: 10px 15px;
+  box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.12);
+  display: flex;
+  align-items: flex-start;
+  justify-content: space-between;
+}
+.card-rank > div {
+  width: 32%;
+}
+h4 {
+  text-align: left;
+  color: #e18116;
+  margin-bottom: 50px;
+  font-weight: bold;
+}
+.card-tabs-header th {
+  background: #f5f7fa !important;
+}
+.btnFocus {
+  color: #fff !important;
+  border-color: #409eff !important;
+  background-color: #409eff !important;
+}
+</style>

+ 156 - 0
src/views/Ranking/LiveStreamingUser.vue

@@ -0,0 +1,156 @@
+<template>
+  <div class="manuscriptIssued">
+    <el-loading></el-loading>
+    <el-breadcrumb separator-class="el-icon-arrow-right">
+      <el-breadcrumb-item>全媒体平台</el-breadcrumb-item>
+      <el-breadcrumb-item>直播在线用户数排行榜</el-breadcrumb-item>
+    </el-breadcrumb>
+    <div class="groupType">
+      <el-row class="mb-4">
+        <el-button
+          v-for="cur in tabs.btns"
+          :key="cur.value"
+          :class="cur.value == btnFocus ? 'btnFocus' : ''"
+          @click="handleClick(cur)"
+          >{{ cur.label }}</el-button
+        >
+      </el-row>
+    </div>
+    <div class="card-rank">
+      <div>
+        <h4>日榜</h4>
+        <el-table :data="dayData" header-row-class-name="card-tabs-header">
+          <el-table-column align="center" prop="name" :label="subTitle" />
+          <el-table-column align="center" prop="cnt" label="用户数" />
+        </el-table>
+      </div>
+      <div>
+        <h4>周榜</h4>
+        <el-table :data="weekData" header-row-class-name="card-tabs-header">
+          <el-table-column align="center" prop="name" :label="subTitle" />
+          <el-table-column align="center" prop="cnt" label="用户数" />
+        </el-table>
+      </div>
+      <div>
+        <h4>月榜</h4>
+        <el-table :data="monthData" header-row-class-name="card-tabs-header">
+          <el-table-column align="center" prop="name" :label="subTitle" />
+          <el-table-column align="center" prop="cnt" label="用户数" />
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { getLiveCnt } from "@/api/index";
+
+const ElLoading = require("element-plus/lib/el-loading/index");
+import "element-plus/lib/theme-chalk/el-loading.css";
+
+export default {
+  name: "ManuscriptIssued",
+  data() {
+    return {
+      activeName: 1,
+      btnFocus: "center",
+      title: "中心",
+      subTitle: "中心名称",
+      tabs: {
+        name: "直播热度排行榜",
+        code: 1,
+        btns: [
+          {
+            label: "中心榜",
+            value: "center",
+            title: "中心名称",
+          },
+          {
+            label: "人员榜",
+            value: "user",
+            title: "人员名称",
+          },
+          // {
+          //   label: "中心内部榜",
+          //   value: 2,
+          //   title:"中心名称"
+          // },
+          {
+            label: "部门内部人员榜",
+            value: "depart",
+            title: "部门名称",
+          },
+        ],
+      },
+      dayData: [],
+      weekData: [],
+      monthData: [],
+    };
+  },
+  mounted() {
+    this.setTableData();
+  },
+  methods: {
+    handleClick(e) {
+      this.title = e.label.substring(0, e.label.length - 1);
+      this.btnFocus = e.value;
+      this.subTitle = e.title;
+      this.setTableData();
+    },
+    setTableData() {
+      const that = this;
+      this.load = ElLoading.default.service();
+      getLiveCnt({ type: this.btnFocus,target:"cnt" })
+        .then((res) => {
+          const { day, week, month } = res;
+          that.dayData = day;
+          that.weekData = week;
+          that.monthData = month;
+          that.load.close();
+        })
+        .catch((err) => {
+          that.dayData = [];
+          that.weekData = [];
+          that.monthData = [];
+          console.log("catch", err);
+        });
+    },
+  },
+};
+</script>
+<style>
+.manuscriptIssued {
+  margin: 10px;
+}
+.card-tabs,
+.el-tabs__header {
+  padding: 0 100px;
+}
+.groupType {
+  padding: 15px 10px;
+  box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.12);
+}
+.card-rank {
+  padding: 10px 15px;
+  box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.12);
+  display: flex;
+  align-items: flex-start;
+  justify-content: space-between;
+}
+.card-rank > div {
+  width: 32%;
+}
+h4 {
+  text-align: left;
+  color: #e18116;
+  margin-bottom: 50px;
+  font-weight: bold;
+}
+.card-tabs-header th {
+  background: #f5f7fa !important;
+}
+.btnFocus {
+  color: #fff !important;
+  border-color: #409eff !important;
+  background-color: #409eff !important;
+}
+</style>

+ 5 - 5
src/views/Ranking/ManuscriptDissemination.vue

@@ -18,7 +18,7 @@
     </div>
     <div class="card-rank">
       <div>
-        <h4>{{title}}日榜</h4>
+        <h4>日榜</h4>
         <el-table
           :data="dayData"
           header-row-class-name="card-tabs-header"
@@ -28,7 +28,7 @@
         </el-table>
       </div>
       <div>
-        <h4>{{title}}周榜</h4>
+        <h4>周榜</h4>
         <el-table
           :data="weekData"
           header-row-class-name="card-tabs-header"
@@ -38,7 +38,7 @@
         </el-table>
       </div>
       <div>
-        <h4>{{title}}月榜</h4>
+        <h4>月榜</h4>
         <el-table
           :data="monthData"
           header-row-class-name="card-tabs-header"
@@ -62,14 +62,14 @@ export default {
     return {
       activeName: 1,
       btnFocus: "center",
-      title:"中心",
+      title:"中心",
       subTitle:"中心名称",
       tabs: {
         name: "稿件传播量排行榜",
         code: 1,
         btns: [
           {
-            label: "中心榜",
+            label: "中心榜",
             value: "center",
             title:"中心名称"
           },

+ 5 - 5
src/views/Ranking/ManuscriptIssued.vue

@@ -18,21 +18,21 @@
     </div>
     <div class="card-rank">
       <div>
-        <h4>{{ title }}日榜</h4>
+        <h4>日榜</h4>
         <el-table :data="dayData" header-row-class-name="card-tabs-header">
           <el-table-column align="center" prop="name" :label="subTitle" />
           <el-table-column align="center" prop="cnt" label="次数" />
         </el-table>
       </div>
       <div>
-        <h4>{{ title }}周榜</h4>
+        <h4>周榜</h4>
         <el-table :data="weekData" header-row-class-name="card-tabs-header">
           <el-table-column align="center" prop="name" :label="subTitle" />
           <el-table-column align="center" prop="cnt" label="次数" />
         </el-table>
       </div>
       <div>
-        <h4>{{ title }}月榜</h4>
+        <h4>月榜</h4>
         <el-table :data="monthData" header-row-class-name="card-tabs-header">
           <el-table-column align="center" prop="name" :label="subTitle" />
           <el-table-column align="center" prop="cnt" label="次数" />
@@ -53,14 +53,14 @@ export default {
     return {
       activeName: 1,
       btnFocus: "center",
-      title: "中心",
+      title: "中心",
       subTitle: "中心名称",
       tabs: {
         name: "已发稿件数量排行榜",
         code: 1,
         btns: [
           {
-            label: "中心榜",
+            label: "中心榜",
             value: "center",
             title: "中心名称",
           },

+ 5 - 5
src/views/Ranking/MaterialContribution.vue

@@ -18,7 +18,7 @@
     </div>
     <div class="card-rank">
       <div>
-        <h4>{{ title }}日榜</h4>
+        <h4>日榜</h4>
         <el-table
           :data="dayData"
           header-row-class-name="card-tabs-header"
@@ -28,7 +28,7 @@
         </el-table>
       </div>
       <div>
-        <h4>{{ title }}周榜</h4>
+        <h4>周榜</h4>
         <el-table
           :data="weekData"
           header-row-class-name="card-tabs-header"
@@ -38,7 +38,7 @@
         </el-table>
       </div>
       <div>
-        <h4>{{ title }}月榜</h4>
+        <h4>月榜</h4>
         <el-table
           :data="monthData"
           header-row-class-name="card-tabs-header"
@@ -62,14 +62,14 @@ export default {
     return {
       activeName: 1,
       btnFocus: "center",
-      title: "中心",
+      title: "中心",
       subTitle: "中心名称",
       tabs: {
         name: "素材贡献量排行榜",
         code: 1,
         btns: [
           {
-            label: "中心榜",
+            label: "中心榜",
             value: "center",
             title:"中心名称"
           },