ManuscriptIssued.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <template>
  2. <div class="manuscriptIssued">
  3. <el-loading></el-loading>
  4. <el-breadcrumb separator-class="el-icon-arrow-right">
  5. <el-breadcrumb-item>新媒体</el-breadcrumb-item>
  6. <el-breadcrumb-item>全媒体平台</el-breadcrumb-item>
  7. <el-breadcrumb-item>已发稿件数量排行榜</el-breadcrumb-item>
  8. </el-breadcrumb>
  9. <div class="groupType">
  10. <el-row class="mb-4">
  11. <el-button
  12. v-for="cur in tabs.btns"
  13. :key="cur.value"
  14. :class="cur.value == btnFocus ? 'btnFocus' : ''"
  15. @click="handleClick(cur)"
  16. >{{ cur.label }}</el-button
  17. >
  18. </el-row>
  19. </div>
  20. <div class="card-rank">
  21. <div>
  22. <h4>分中心日榜</h4>
  23. <el-table
  24. :data="dayData"
  25. header-row-class-name="card-tabs-header"
  26. >
  27. <el-table-column align="center" prop="name" label="关键词" />
  28. <el-table-column align="center" prop="cnt" label="次数" />
  29. </el-table>
  30. </div>
  31. <div>
  32. <h4>分中心周榜</h4>
  33. <el-table
  34. :data="weekData"
  35. header-row-class-name="card-tabs-header"
  36. >
  37. <el-table-column align="center" prop="name" label="关键词" />
  38. <el-table-column align="center" prop="cnt" label="次数" />
  39. </el-table>
  40. </div>
  41. <div>
  42. <h4>分中心月榜</h4>
  43. <el-table
  44. :data="monthData"
  45. header-row-class-name="card-tabs-header"
  46. >
  47. <el-table-column align="center" prop="name" label="关键词" />
  48. <el-table-column align="center" prop="cnt" label="次数" />
  49. </el-table>
  50. </div>
  51. </div>
  52. </div>
  53. </template>
  54. <script>
  55. import { getArticleCnt } from "@/api/index";
  56. const ElLoading = require("element-plus/lib/el-loading/index");
  57. import "element-plus/lib/theme-chalk/el-loading.css";
  58. export default {
  59. name: "ManuscriptIssued",
  60. data() {
  61. return {
  62. activeName: 1,
  63. btnFocus: "center",
  64. tabs: {
  65. name: "已发稿件数量排行榜",
  66. code: 1,
  67. btns: [
  68. {
  69. label: "分中心榜",
  70. value: "center",
  71. },
  72. {
  73. label: "人员榜",
  74. value: "user",
  75. },
  76. {
  77. label: "中心内部榜",
  78. value: 2,
  79. },
  80. {
  81. label: "部门内部人员榜",
  82. value: 3,
  83. },
  84. ],
  85. },
  86. dayData: [],
  87. weekData: [],
  88. monthData: [],
  89. };
  90. },
  91. mounted() {
  92. this.setTableData();
  93. },
  94. methods: {
  95. handleClick(e) {
  96. console.log(e)
  97. this.btnFocus = e.value;
  98. this.setTableData();
  99. },
  100. setTableData() {
  101. const that = this;
  102. this.load = ElLoading.default.service();
  103. getArticleCnt({ type: this.btnFocus })
  104. .then((res) => {
  105. const { day, week, month } = res;
  106. that.dayData = day;
  107. that.weekData = week;
  108. that.monthData = month;
  109. that.load.close();
  110. })
  111. .catch((err) => {
  112. that.dayData = [];
  113. that.weekData = [];
  114. that.monthData = [];
  115. console.log("catch", err);
  116. });
  117. },
  118. },
  119. };
  120. </script>
  121. <style>
  122. .manuscriptIssued {
  123. margin: 10px;
  124. }
  125. .card-tabs,
  126. .el-tabs__header {
  127. padding: 0 100px;
  128. }
  129. .groupType{
  130. padding: 15px 0;
  131. box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.12);
  132. }
  133. .card-rank {
  134. padding: 10px 15px;
  135. box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.12);
  136. display: flex;
  137. align-items: flex-start;
  138. justify-content: space-between;
  139. }
  140. .card-rank > div {
  141. width: 32%;
  142. }
  143. h4 {
  144. text-align: left;
  145. color: #e18116;
  146. margin-bottom: 50px;
  147. font-weight: bold;
  148. }
  149. .card-tabs-header th {
  150. background: #f5f7fa !important;
  151. }
  152. .btnFocus {
  153. color:#FFF !important;
  154. border-color:#409eff !important;
  155. background-color:#409eff !important;
  156. }
  157. </style>