liyongli 1 năm trước cách đây
mục cha
commit
c75499311a

+ 3 - 0
.npmrc

@@ -0,0 +1,3 @@
+{
+    "default":"https://registry.npm.taobao.org/"
+}

+ 3 - 0
package.json

@@ -20,6 +20,7 @@
     "echarts-wordcloud": "^2.0.0",
     "element-plus": "^1.0.2-beta.36",
     "js-sha256": "^0.9.0",
+    "sass-loader": "10.1.1",
     "vue": "^3.0.0",
     "vue-router": "^4.0.0-0"
   },
@@ -34,11 +35,13 @@
     "compression-webpack-plugin": "5.0.1",
     "eslint": "^6.7.2",
     "eslint-plugin-vue": "^7.0.0",
+    "sass": "^1.63.4",
     "ssh2-sftp-client": "^9.0.4",
     "typescript": "^4.3.5",
     "unplugin-auto-import": "^0.6.6",
     "unplugin-element-plus": "^0.1.0",
     "unplugin-vue-components": "^0.15.4",
+    "webpack": "^4.46.0",
     "webpack-cli": "^4.9.2"
   },
   "eslintConfig": {

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 208 - 173
pnpm-lock.yaml


+ 2 - 0
src/router/index.js

@@ -1,6 +1,7 @@
 import { createRouter, createWebHashHistory } from "vue-router";
 import countryRouter from "./country";
 import rankRouter from "./rank";
+import rankRouter_old from "./rank_old";
 const routes = [
   {
     path: "/",
@@ -201,6 +202,7 @@ const routes = [
       import(/* webpackChunkName: "newMediaOverview" */ "../views/NMedia/ActivityUser.vue"),
   },
   ...rankRouter,
+  ...rankRouter_old,
   //  新媒体-应用分析-内容分析
   {
     path: "/NMedia/column",

+ 140 - 74
src/router/rank.js

@@ -1,75 +1,141 @@
-const rankRouter = [
-    //   已发稿件排行
-    {
-        path: "/manuscriptIssued",
-        name: "manuscriptIssued",
-        component: () =>
-            import(/* webpackChunkName: "ManuscriptIssued" */ "../views/Ranking/ManuscriptIssued.vue"),
-    },
-    //   稿件传播量排行榜
-    {
-        path: "/manuscriptDissemination",
-        name: "manuscriptDissemination",
-        component: () =>
-            import(/* webpackChunkName: "ManuscriptDissemination" */ "../views/Ranking/ManuscriptDissemination.vue"),
-    },
-    //   融合号粉丝量排行榜
-    {
-        path: "/fusionVermicelli",
-        name: "fusionVermicelli",
-        component: () =>
-            import(/* webpackChunkName: "FusionVermicelli" */ "../views/Ranking/FusionVermicelli.vue"),
-    },
-    //   融合号稿件数量排行榜
-    {
-        path: "/manuscriptQuantity",
-        name: "manuscriptQuantity",
-        component: () =>
-            import(/* webpackChunkName: "ManuscriptQuantity" */ "../views/Ranking/ManuscriptQuantity.vue"),
-    },
-    //   融合号稿件传播量排行榜
-    {
-        path: "/fusionNumberManuscript",
-        name: "fusionNumberManuscript",
-        component: () =>
-            import(/* webpackChunkName: "FusionNumberManuscript" */ "../views/Ranking/FusionNumberManuscript.vue"),
-    },
-    //   素材贡献量排行榜
-    {
-        path: "/materialContribution",
-        name: "materialContribution",
-        component: () =>
-            import(/* webpackChunkName: "MaterialContribution" */ "../views/Ranking/MaterialContribution.vue"),
-    },
-    //   用户停留排行
-    {
-        path: "/userStayRanking",
-        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"),
-    }
-    
-];
+// const rankRouter = [
+//     //   已发稿件排行
+//     {
+//         path: "/manuscriptIssued",
+//         name: "manuscriptIssued",
+//         component: () =>
+//             import(/* webpackChunkName: "ManuscriptIssued" */ "../views/Ranking/ManuscriptIssued.vue"),
+//     },
+//     //   稿件传播量排行榜
+//     {
+//         path: "/manuscriptDissemination",
+//         name: "manuscriptDissemination",
+//         component: () =>
+//             import(/* webpackChunkName: "ManuscriptDissemination" */ "../views/Ranking/ManuscriptDissemination.vue"),
+//     },
+//     //   融合号粉丝量排行榜
+//     {
+//         path: "/fusionVermicelli",
+//         name: "fusionVermicelli",
+//         component: () =>
+//             import(/* webpackChunkName: "FusionVermicelli" */ "../views/Ranking/FusionVermicelli.vue"),
+//     },
+//     //   融合号稿件数量排行榜
+//     {
+//         path: "/manuscriptQuantity",
+//         name: "manuscriptQuantity",
+//         component: () =>
+//             import(/* webpackChunkName: "ManuscriptQuantity" */ "../views/Ranking/ManuscriptQuantity.vue"),
+//     },
+//     //   融合号稿件传播量排行榜
+//     {
+//         path: "/fusionNumberManuscript",
+//         name: "fusionNumberManuscript",
+//         component: () =>
+//             import(/* webpackChunkName: "FusionNumberManuscript" */ "../views/Ranking/FusionNumberManuscript.vue"),
+//     },
+//     //   素材贡献量排行榜
+//     {
+//         path: "/materialContribution",
+//         name: "materialContribution",
+//         component: () =>
+//             import(/* webpackChunkName: "MaterialContribution" */ "../views/Ranking/MaterialContribution.vue"),
+//     },
+//     //   用户停留排行
+//     {
+//         path: "/userStayRanking",
+//         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;
+/**
+ * 全媒体平台-大数据
+ */
+export default [
+  // 概览
+  {
+    path: '/all_aedia',
+    children: [
+        {
+          path: '/all_aedia/overview',
+          name: 'overview',
+          component: () =>
+            import(
+              /* webpackChunkName: "all_aedia" */ '../views/Ranking/overview.vue'
+            ),
+        },
+        {
+          path: '/all_aedia/propagate',
+          name: 'propagate',
+          component: () =>
+            import(
+              /* webpackChunkName: "all_aedia" */ '../views/Ranking/propagate.vue'
+            ),
+        },
+        {
+          path: '/all_aedia/live',
+          name: 'live',
+          component: () =>
+            import(
+              /* webpackChunkName: "all_aedia" */ '../views/Ranking/live.vue'
+            ),
+        },
+        {
+          path: '/all_aedia/all_aedia_column',
+          name: 'all_aedia_column',
+          component: () =>
+            import(
+              /* webpackChunkName: "all_aedia" */ '../views/Ranking/all_aedia_column.vue'
+            ),
+        },
+        {
+          path: '/all_aedia/fusion',
+          name: 'fusion',
+          component: () =>
+            import(
+              /* webpackChunkName: "all_aedia" */ '../views/Ranking/fusion.vue'
+            ),
+        },
+        {
+          path: '/all_aedia/content_library',
+          name: 'content_library',
+          component: () =>
+            import(
+              /* webpackChunkName: "all_aedia" */ '../views/Ranking/content_library.vue'
+            ),
+        },
+        {
+          path: '/all_aedia/release',
+          name: 'release',
+          component: () =>
+            import(
+              /* webpackChunkName: "all_aedia" */ '../views/Ranking/release.vue'
+            ),
+        },
+    ],
+  },
+];

+ 92 - 0
src/router/rank_old.js

@@ -0,0 +1,92 @@
+export default [
+  //   已发稿件排行
+  {
+    path: '/manuscriptIssued',
+    name: 'manuscriptIssued',
+    component: () =>
+      import(
+        /* webpackChunkName: "ManuscriptIssued" */ '../views/Ranking_back/ManuscriptIssued.vue'
+      ),
+  },
+  //   稿件传播量排行榜
+  {
+    path: '/manuscriptDissemination',
+    name: 'manuscriptDissemination',
+    component: () =>
+      import(
+        /* webpackChunkName: "ManuscriptDissemination" */ '../views/Ranking_back/ManuscriptDissemination.vue'
+      ),
+  },
+  //   融合号粉丝量排行榜
+  {
+    path: '/fusionVermicelli',
+    name: 'fusionVermicelli',
+    component: () =>
+      import(
+        /* webpackChunkName: "FusionVermicelli" */ '../views/Ranking_back/FusionVermicelli.vue'
+      ),
+  },
+  //   融合号稿件数量排行榜
+  {
+    path: '/manuscriptQuantity',
+    name: 'manuscriptQuantity',
+    component: () =>
+      import(
+        /* webpackChunkName: "ManuscriptQuantity" */ '../views/Ranking_back/ManuscriptQuantity.vue'
+      ),
+  },
+  //   融合号稿件传播量排行榜
+  {
+    path: '/fusionNumberManuscript',
+    name: 'fusionNumberManuscript',
+    component: () =>
+      import(
+        /* webpackChunkName: "FusionNumberManuscript" */ '../views/Ranking_back/FusionNumberManuscript.vue'
+      ),
+  },
+  //   素材贡献量排行榜
+  {
+    path: '/materialContribution',
+    name: 'materialContribution',
+    component: () =>
+      import(
+        /* webpackChunkName: "MaterialContribution" */ '../views/Ranking_back/MaterialContribution.vue'
+      ),
+  },
+  //   用户停留排行
+  {
+    path: '/userStayRanking',
+    name: 'userStayRanking',
+    component: () =>
+      import(
+        /* webpackChunkName: "UserStayRanking" */ '../views/Ranking_back/UserStayRanking.vue'
+      ),
+  },
+  //   直播播放次数排行榜
+  {
+    path: '/liveBroadcastsNum',
+    name: 'liveBroadcastsNum',
+    component: () =>
+      import(
+        /* webpackChunkName: "LiveBroadcastsNum" */ '../views/Ranking_back/LiveBroadcastsNum.vue'
+      ),
+  },
+  //   直播在线用户数排行榜
+  {
+    path: '/liveStreamingUser',
+    name: 'liveStreamingUser',
+    component: () =>
+      import(
+        /* webpackChunkName: "LiveStreamingUser" */ '../views/Ranking_back/LiveStreamingUser.vue'
+      ),
+  },
+  //   直播停留时长排行榜
+  {
+    path: '/liveResidenceDuration',
+    name: 'liveResidenceDuration',
+    component: () =>
+      import(
+        /* webpackChunkName: "LiveResidenceDuration" */ '../views/Ranking_back/LiveResidenceDuration.vue'
+      ),
+  },
+];

+ 64 - 0
src/views/Ranking/all_aedia_column.vue

@@ -0,0 +1,64 @@
+<template>
+  <div class="fusion">
+    <el-breadcrumb separator="/">
+      <el-breadcrumb-item :to="{ path: '/all_aedia/overview' }"
+        >全媒体平台</el-breadcrumb-item
+      >
+      <el-breadcrumb-item>融合号排行</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-form
+      size="small"
+      :inline="true"
+      :model="search"
+      class="demo-form-inline"
+    >
+      <el-form-item label="分类">
+        <el-select v-model="search.class">
+          <el-option label="创新中心" value="1" />
+          <el-option label="新闻中心" value="2" />
+        </el-select>
+      </el-form-item>
+    </el-form>
+
+    <el-table border :data="tableData" stripe style="width: 100%" :row-click="click_row">
+      <el-table-column align="center" header-align="center" type="index" label="排行" width="50" />
+      <el-table-column align="center" header-align="center" prop="" label="融合号" />
+      <el-table-column align="center" header-align="center" prop="" label="粉丝量" />
+      <el-table-column align="center" header-align="center" prop="" label="总发稿量" />
+    </el-table>
+    <br />
+    <el-pagination layout="prev, pager, next" :total="1000" />
+  </div>
+</template>
+<script>
+// 概览
+export default {
+  name: 'fusion',
+  data() {
+    return {
+      search: {
+        center: '',
+        department: '',
+        date: [],
+      },
+      tableData: [],
+    };
+  },
+  mounted() {
+    console.log("---")
+  },
+  methods: {
+    click_row(e){
+        console.log(e)
+    }
+  },
+  components: {},
+};
+</script>
+<style lang="scss">
+.fusion {
+  width: 100%;
+  height: 100vh;
+  padding: 1em;
+}
+</style>

+ 127 - 0
src/views/Ranking/content_library.vue

@@ -0,0 +1,127 @@
+<template>
+  <div class="content_library">
+    <el-breadcrumb separator="/">
+      <el-breadcrumb-item :to="{ path: '/all_aedia/overview' }"
+        >全媒体平台</el-breadcrumb-item
+      >
+      <el-breadcrumb-item>内容库使用统计</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-form
+      size="small"
+      :inline="true"
+      :model="search"
+      class="demo-form-inline"
+    >
+      <el-form-item label="日期">
+        <el-date-picker
+          v-model="search.date"
+          type="daterange"
+          range-separator="-"
+          start-placeholder="开始时间"
+          end-placeholder="结束时间"
+        />
+      </el-form-item>
+    </el-form>
+
+    <el-row>
+      <el-col style="padding: 0 .5em;" :span="8">
+        <el-table border :data="tableData" stripe style="width: 100%">
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="中心"
+          />
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="使用量"
+          />
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="内容量"
+          />
+        </el-table>
+        <br />
+        <el-pagination layout="prev, pager, next" :total="1000" />
+      </el-col>
+      <el-col style="padding: 0 .5em;" :span="8">
+        <el-table border :data="tableData" stripe style="width: 100%">
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="部门"
+          />
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="使用量"
+          />
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="内容量"
+          />
+        </el-table>
+        <br />
+        <el-pagination layout="prev, pager, next" :total="1000" />
+      </el-col>
+      <el-col style="padding: 0 .5em;" :span="8">
+        <el-table border :data="tableData" stripe style="width: 100%">
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="人员"
+          />
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="使用量"
+          />
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="内容量"
+          />
+        </el-table>
+        <br />
+        <el-pagination layout="prev, pager, next" :total="1000" />
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+// 概览
+export default {
+  name: 'content_library',
+  data() {
+    return {
+      search: {
+        center: '',
+        department: '',
+        date: [],
+      },
+      tableData: [],
+    };
+  },
+  mounted() {},
+  methods: {},
+  components: {},
+};
+</script>
+<style lang="scss">
+.content_library {
+  width: 100%;
+  height: 100vh;
+  padding: 1em;
+}
+</style>

+ 60 - 0
src/views/Ranking/fusion.vue

@@ -0,0 +1,60 @@
+<template>
+  <div class="fusion">
+    <el-breadcrumb separator="/">
+      <el-breadcrumb-item :to="{ path: '/all_aedia/overview' }"
+        >全媒体平台</el-breadcrumb-item
+      >
+      <el-breadcrumb-item>融合号排行</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-form
+      size="small"
+      :inline="true"
+      :model="search"
+      class="demo-form-inline"
+    >
+      <el-form-item label="分类">
+        <el-select v-model="search.class">
+          <el-option label="创新中心" value="1" />
+          <el-option label="新闻中心" value="2" />
+        </el-select>
+      </el-form-item>
+    </el-form>
+
+    <el-table border :data="tableData" stripe style="width: 100%">
+      <el-table-column align="center" header-align="center" type="index" label="排行" width="50" />
+      <el-table-column align="center" header-align="center" prop="" label="融合号" />
+      <el-table-column align="center" header-align="center" prop="" label="粉丝量" />
+      <el-table-column align="center" header-align="center" prop="" label="总发稿量" />
+    </el-table>
+    <br />
+    <el-pagination layout="prev, pager, next" :total="1000" />
+  </div>
+</template>
+<script>
+// 概览
+export default {
+  name: 'fusion',
+  data() {
+    return {
+      search: {
+        center: '',
+        department: '',
+        date: [],
+      },
+      tableData: [],
+    };
+  },
+  mounted() {
+    console.log("---")
+  },
+  methods: {},
+  components: {},
+};
+</script>
+<style lang="scss">
+.fusion {
+  width: 100%;
+  height: 100vh;
+  padding: 1em;
+}
+</style>

+ 107 - 0
src/views/Ranking/line_chart.vue

@@ -0,0 +1,107 @@
+<template>
+  <div class="line_chart" ref="line_chart">1</div>
+</template>
+
+<script>
+// import * as echarts from "echarts";
+import * as echarts from 'echarts/core';
+import { LineChart } from 'echarts/charts';
+import 'echarts/lib/component/dataZoom';
+import {
+  TitleComponent,
+  TooltipComponent,
+  GridComponent,
+} from 'echarts/components';
+import { CanvasRenderer } from 'echarts/renderers';
+echarts.use([
+  TitleComponent,
+  TooltipComponent,
+  GridComponent,
+  LineChart,
+  CanvasRenderer,
+]);
+let chart = undefined;
+export default {
+  name: 'line_chart',
+  props: ['list'],
+  watch: {},
+  data() {
+    return {};
+  },
+  filters: {},
+  methods: {
+    createChart() {
+      if (!this.$refs.line_chart) return;
+      chart = echarts.init(this.$refs.line_chart);
+      let base = +new Date(1968, 9, 3);
+      let oneDay = 24 * 3600 * 1000;
+      let date = [];
+      let data = [Math.random() * 300];
+      for (let i = 1; i < 8; i++) {
+        var now = new Date((base += oneDay));
+        date.push(
+          [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/')
+        );
+        data.push(Math.round((Math.random() - 0.5) * 20 + data[i - 1]));
+      }
+      let option = {
+        tooltip: {
+          trigger: 'axis',
+          position: function (pt) {
+            return [pt[0], '10%'];
+          },
+        },
+        xAxis: {
+          type: 'category',
+          boundaryGap: false,
+          data: date,
+        },
+        yAxis: {
+          type: 'value',
+          boundaryGap: [0, '100%'],
+        },
+        series: [
+          {
+            name: 'Fake Data',
+            type: 'line',
+            symbol: 'none',
+            sampling: 'lttb',
+            smooth: true,
+            itemStyle: {
+              color: '#1684fc',
+            },
+            areaStyle: {
+              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                {
+                  offset: 0,
+                  color: '#1684fc',
+                },
+                {
+                  offset: 1,
+                  color: '#1684fc00',
+                },
+              ]),
+            },
+            data: data,
+          },
+        ],
+      };
+      option && chart.setOption(option);
+    },
+  },
+  mounted() {
+    let w = this.$refs.line_chart.offsetWidth || 0;
+    this.$refs.line_chart.style.height = w/16*9 + 'px';
+    this.createChart();
+  },
+  beforeUnmount: function () {
+    chart.dispose();
+  },
+  components: {},
+};
+</script>
+<style>
+.line_chart {
+  width: 100%;
+}
+</style>

+ 79 - 0
src/views/Ranking/live.vue

@@ -0,0 +1,79 @@
+<template>
+  <div class="live">
+    <el-breadcrumb separator="/">
+      <el-breadcrumb-item :to="{ path: '/all_aedia/overview' }"
+        >全媒体平台</el-breadcrumb-item
+      >
+      <el-breadcrumb-item>直播排行</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-form
+      size="small"
+      :inline="true"
+      :model="search"
+      class="demo-form-inline"
+    >
+      <el-form-item label="中心">
+        <el-select v-model="search.center">
+          <el-option label="创新中心" value="1" />
+          <el-option label="新闻中心" value="2" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="部门">
+        <el-select v-model="search.department">
+          <el-option label="部门1" value="1" />
+          <el-option label="部门2" value="2" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="日期">
+        <el-date-picker
+          v-model="search.date"
+          type="daterange"
+          range-separator="-"
+          start-placeholder="开始时间"
+          end-placeholder="结束时间"
+        />
+      </el-form-item>
+    </el-form>
+
+    <el-table border :data="tableData" stripe style="width: 100%">
+      <el-table-column align="center" header-align="center" type="index" label="排行" width="50" />
+      <el-table-column align="center" header-align="center" prop="" label="直播名" />
+      <el-table-column align="center" header-align="center" prop="" label="中心" />
+      <el-table-column align="center" header-align="center" prop="" label="部门" />
+      <el-table-column align="center" header-align="center" prop="" label="创建人" />
+      <el-table-column align="center" header-align="center" prop="" label="直播开始时间" />
+      <el-table-column align="center" header-align="center" prop="" label="观看人次" />
+      <el-table-column align="center" header-align="center" prop="" label="总停留时长(秒)" />
+      <el-table-column align="center" header-align="center" prop="" label="点赞数" />
+      <el-table-column align="center" header-align="center" prop="" label="评论数" />
+    </el-table>
+    <br />
+    <el-pagination layout="prev, pager, next" :total="1000" />
+  </div>
+</template>
+<script>
+// 概览
+export default {
+  name: 'live',
+  data() {
+    return {
+      search: {
+        center: '',
+        department: '',
+        date: [],
+      },
+      tableData: [],
+    };
+  },
+  mounted() {},
+  methods: {},
+  components: {},
+};
+</script>
+<style lang="scss">
+.live {
+  width: 100%;
+  height: 100vh;
+  padding: 1em;
+}
+</style>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 86 - 0
src/views/Ranking/overview.vue


+ 91 - 0
src/views/Ranking/propagate.vue

@@ -0,0 +1,91 @@
+<template>
+  <div class="propagate">
+    <el-breadcrumb separator="/">
+      <el-breadcrumb-item :to="{ path: '/all_aedia/overview' }"
+        >全媒体平台</el-breadcrumb-item
+      >
+      <el-breadcrumb-item>传播排行</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-form
+      size="small"
+      :inline="true"
+      :model="search"
+      class="demo-form-inline"
+    >
+      <el-form-item label="中心">
+        <el-select v-model="search.center">
+          <el-option label="创新中心" value="1" />
+          <el-option label="新闻中心" value="2" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="部门">
+        <el-select v-model="search.department">
+          <el-option label="部门1" value="1" />
+          <el-option label="部门2" value="2" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="日期">
+        <el-date-picker
+          v-model="search.date"
+          type="daterange"
+          range-separator="-"
+          start-placeholder="开始时间"
+          end-placeholder="结束时间"
+        />
+      </el-form-item>
+    </el-form>
+
+    <el-table border :data="tableData" stripe style="width: 100%">
+      <el-table-column align="center" header-align="center" type="index" label="排行" width="50" />
+      <el-table-column align="center" header-align="center" prop="" label="标题" />
+      <el-table-column align="center" header-align="center" prop="" label="融合号" />
+      <el-table-column align="center" header-align="center" prop="" label="发布时间" />
+      <el-table-column align="center" header-align="center" prop="" label="传播量" />
+      <el-table-column align="center" header-align="center" prop="" label="观看用户数" />
+      <el-table-column align="center" header-align="center" prop="" label="人均停留时长(秒)" />
+      <el-table-column align="center" header-align="center" prop="" label="点赞数" />
+      <el-table-column align="center" header-align="center" prop="" label="评论数" />
+    </el-table>
+    <br />
+    <el-pagination layout="prev, pager, next" :total="1000" />
+  </div>
+</template>
+<script>
+import { getArticleCnt } from "@/api/index";
+
+export default {
+  name: 'propagate',
+  data() {
+    return {
+      search: {
+        center: '',
+        department: '',
+        date: [],
+      },
+      tableData: [],
+    };
+  },
+  mounted() {
+    this.setTableData()
+  },
+  methods: {
+    setTableData() {
+      getArticleCnt({ type: 'center' })
+        .then((res) => {
+            console.log(res)
+        })
+        .catch((err) => {
+          console.log("catch", err);
+        });
+    },
+  },
+  components: {},
+};
+</script>
+<style lang="scss">
+.propagate {
+  width: 100%;
+  height: 100vh;
+  padding: 1em;
+}
+</style>

+ 109 - 0
src/views/Ranking/release.vue

@@ -0,0 +1,109 @@
+<template>
+  <div class="release">
+    <el-breadcrumb separator="/">
+      <el-breadcrumb-item :to="{ path: '/all_aedia/overview' }"
+        >全媒体平台</el-breadcrumb-item
+      >
+      <el-breadcrumb-item>发稿量排行</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-form
+      size="small"
+      :inline="true"
+      :model="search"
+      class="demo-form-inline"
+    >
+      <el-form-item label="日期">
+        <el-date-picker
+          v-model="search.date"
+          type="daterange"
+          range-separator="-"
+          start-placeholder="开始时间"
+          end-placeholder="结束时间"
+        />
+      </el-form-item>
+    </el-form>
+
+    <el-row>
+      <el-col style="padding: 0 .5em;" :span="8">
+        <el-table border :data="tableData" stripe style="width: 100%">
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="中心"
+          />
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="发稿量"
+          />
+        </el-table>
+        <br />
+        <el-pagination layout="prev, pager, next" :total="1000" />
+      </el-col>
+      <el-col style="padding: 0 .5em;" :span="8">
+        <el-table border :data="tableData" stripe style="width: 100%">
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="部门"
+          />
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="发稿量"
+          />
+        </el-table>
+        <br />
+        <el-pagination layout="prev, pager, next" :total="1000" />
+      </el-col>
+      <el-col style="padding: 0 .5em;" :span="8">
+        <el-table border :data="tableData" stripe style="width: 100%">
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="人员"
+          />
+          <el-table-column
+            align="center"
+            header-align="center"
+            prop=""
+            label="发稿量"
+          />
+        </el-table>
+        <br />
+        <el-pagination layout="prev, pager, next" :total="1000" />
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+// 概览
+export default {
+  name: 'release',
+  data() {
+    return {
+      search: {
+        center: '',
+        department: '',
+        date: [],
+      },
+      tableData: [],
+    };
+  },
+  mounted() {},
+  methods: {},
+  components: {},
+};
+</script>
+<style lang="scss">
+.release {
+  width: 100%;
+  height: 100vh;
+  padding: 1em;
+}
+</style>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
src/views/Ranking/svg.js


+ 0 - 0
src/views/Ranking/FusionNumberManuscript.vue → src/views/Ranking_back/FusionNumberManuscript.vue


+ 0 - 0
src/views/Ranking/FusionVermicelli.vue → src/views/Ranking_back/FusionVermicelli.vue


+ 0 - 0
src/views/Ranking/LiveBroadcastsNum.vue → src/views/Ranking_back/LiveBroadcastsNum.vue


+ 0 - 0
src/views/Ranking/LiveResidenceDuration.vue → src/views/Ranking_back/LiveResidenceDuration.vue


+ 0 - 0
src/views/Ranking/LiveStreamingUser.vue → src/views/Ranking_back/LiveStreamingUser.vue


+ 0 - 0
src/views/Ranking/ManuscriptDissemination.vue → src/views/Ranking_back/ManuscriptDissemination.vue


+ 0 - 0
src/views/Ranking/ManuscriptIssued.vue → src/views/Ranking_back/ManuscriptIssued.vue


+ 0 - 0
src/views/Ranking/ManuscriptQuantity.vue → src/views/Ranking_back/ManuscriptQuantity.vue


+ 0 - 0
src/views/Ranking/MaterialContribution.vue → src/views/Ranking_back/MaterialContribution.vue


+ 0 - 0
src/views/Ranking/UserStayRanking.vue → src/views/Ranking_back/UserStayRanking.vue


+ 32 - 14
vue.config.js

@@ -1,23 +1,41 @@
-const Components = require("unplugin-vue-components/webpack");
-const AutoImport = require("unplugin-auto-import/webpack");
-const { ElementPlusResolver } = require("unplugin-vue-components/resolvers");
+const Components = require('unplugin-vue-components/webpack');
+const AutoImport = require('unplugin-auto-import/webpack');
+const { ElementPlusResolver } = require('unplugin-vue-components/resolvers');
 
-// const CompressionPlugin = require("compression-webpack-plugin");
+const CompressionPlugin = require('compression-webpack-plugin');
 
 module.exports = {
   productionSourceMap: false,
-  publicPath: "./",
+  publicPath: './',
   chainWebpack: config => {
-    if (process.env.NODE_ENV === "production") {
-    //   config.plugin("compressionPlugin").use(
-    //     new CompressionPlugin({
-    //       test: /\.js$|\.css|\.less/, // 匹配文件名
-    //       threshold: 102400, // 对超过10k的数据压缩
-    //       deleteOriginalAssets: false, // 不删除源文件
-    //     })
-    //   );
+    if (process.env.NODE_ENV === 'production') {
+      config.plugin('compressionPlugin').use(
+        new CompressionPlugin({
+          test: /\.js$|\.css|\.less/, // 匹配文件名
+          threshold: 102400, // 对超过10k的数据压缩
+          deleteOriginalAssets: false, // 不删除源文件
+        })
+      );
       // 移除 prefetch 插件
-      config.plugins.delete("prefetch");
+      config.plugins.delete('prefetch');
+
+      config.module.rules = [
+        {
+          test: /\.s[ac]ss$/i,
+          use: [
+            // 将 Sass 编译成 CSS
+            {
+              loader: 'sass-loader',
+              options: {
+                sassOptions: {
+                  strictMath: true,
+                  noIeCompat: true,
+                },
+              },
+            },
+          ],
+        },
+      ];
     }
   },
   configureWebpack: {

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác