index.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <template>
  2. <div class="yukang">
  3. <head-tabs
  4. :data="allList"
  5. :pageData="$route.query"
  6. :douyin="isdou"
  7. :kuaishou="iskuai"
  8. ></head-tabs>
  9. <div class="mainBody">
  10. <!-- 平台对比 -->
  11. <div>
  12. <b-canvas
  13. name="平台对比"
  14. v-if="platformSort.length"
  15. keyName="value"
  16. className="name"
  17. :legend="true"
  18. :list="platformSort"
  19. ></b-canvas>
  20. <div v-if="userSortAll.length" class="userType">
  21. <div class="textGroup van-hairline--surround">
  22. <span
  23. :class="{ text: true, act: selectIndex.type === item.type }"
  24. v-for="(item, i) in btnG"
  25. :key="i"
  26. @click="() => clickBtn(item)"
  27. >{{ item.name }}</span
  28. >
  29. </div>
  30. <b-canvas
  31. name="账号排名"
  32. keyName="value"
  33. v-if="userSortAll.length"
  34. :key="selectIndex.type"
  35. :list="userSort"
  36. ></b-canvas>
  37. </div>
  38. <!-- <work-cloud
  39. name="词云"
  40. v-if="listOri.length"
  41. :list="listOri"
  42. ></work-cloud> -->
  43. <div v-if="could" style="padding-left:16px">词云</div>
  44. <img :src="could" v-if="could" style="width: 100%" />
  45. </div>
  46. <!-- 抖音 -->
  47. <div>
  48. <b-canvas
  49. name="抖音-评论排行"
  50. v-if="douAllList.length"
  51. keyName="comment_count"
  52. :list="douAllList"
  53. ></b-canvas>
  54. <b-canvas
  55. name="抖音-点赞排行"
  56. v-if="douAllList.length"
  57. keyName="digg_count"
  58. :list="douAllList"
  59. ></b-canvas>
  60. <b-canvas
  61. name="抖音-粉丝量排行"
  62. v-if="douAllList.length"
  63. keyName="mplatform_followers_count"
  64. :list="douAllList"
  65. ></b-canvas>
  66. </div>
  67. <!-- 快手 -->
  68. <div>
  69. <b-canvas
  70. name="快手-播放量排行"
  71. v-if="kuaiAllList.length"
  72. keyName="pv"
  73. :list="kuaiAllList"
  74. ></b-canvas>
  75. <b-canvas
  76. name="快手-评论排行"
  77. v-if="kuaiAllList.length"
  78. keyName="comment_count"
  79. :list="kuaiAllList"
  80. ></b-canvas>
  81. </div>
  82. <!-- 微博 -->
  83. <div v-if="$route.query.title != '西安'">
  84. <c-canvas
  85. v-if="read.length"
  86. @select="selectRead"
  87. :type="readType"
  88. :list="read"
  89. ></c-canvas>
  90. <c-canvas
  91. v-if="me.length"
  92. @select="selectMe"
  93. :type="meType"
  94. :list="me"
  95. ></c-canvas>
  96. <c-canvas
  97. v-if="ori.length"
  98. @select="selectOri"
  99. :type="oriType"
  100. :list="ori"
  101. ></c-canvas>
  102. </div>
  103. <!-- 央视新闻 -->
  104. <div>
  105. <b-canvas
  106. name="央视新闻-浏览排行"
  107. v-if="yangAllList.length"
  108. keyName="pv"
  109. :list="yangAllList"
  110. ></b-canvas>
  111. </div>
  112. </div>
  113. </div>
  114. </template>
  115. <script>
  116. import headTabs from "@/components/headTabs";
  117. import cCanvas from "@/components/chart";
  118. import bCanvas from "@/components/bChart";
  119. // import workCloud from "@/components/workCloud";
  120. import ajaxMethods from "@/appMinxin/getList";
  121. export default {
  122. name: "App",
  123. components: {
  124. headTabs,
  125. cCanvas,
  126. bCanvas,
  127. // workCloud,
  128. },
  129. mixins: [ajaxMethods],
  130. data() {
  131. return {
  132. platformList: ["浏览", "点赞", "评论", "转发"],
  133. btnG: [
  134. {
  135. name: "点赞",
  136. type: "digg_count",
  137. },
  138. {
  139. name: "评论",
  140. type: "comment_count",
  141. },
  142. {
  143. name: "转发",
  144. type: "forward_count",
  145. },
  146. ],
  147. selectIndex: {
  148. name: "点赞",
  149. type: "digg_count",
  150. },
  151. listOri: [],
  152. allList: {},
  153. douAllList: [],
  154. kuaiAllList: [],
  155. yangAllList: [],
  156. platformSort: [],
  157. userSort: [],
  158. userSortAll: [],
  159. read: [],
  160. ori: [],
  161. me: [],
  162. meType: "30d",
  163. oriType: "30d",
  164. readType: "30d",
  165. };
  166. },
  167. mounted() {
  168. this.select();
  169. },
  170. created() {},
  171. computed: {},
  172. methods: {
  173. clickBtn(item) {
  174. this.selectIndex = item;
  175. const list = [];
  176. this.userSortAll.map(v => {
  177. // let nickname = v.nickname
  178. // ? v.nickname.replace(/(?=(\B)(\S{2})+$)/g, "\n")
  179. // : "";
  180. // nickname = nickname.replace(/^\n/, "");
  181. const li = v.nickname.split("");
  182. let nickname = li
  183. .map((val, i) => {
  184. i !== 0 && (i + 1) % 2 === 0 && (val = val + "\n");
  185. return val;
  186. })
  187. .join("");
  188. list.push({
  189. nickname,
  190. value: v[item.type],
  191. });
  192. });
  193. this.userSort = list;
  194. },
  195. },
  196. };
  197. </script>
  198. <style lang="scss">
  199. .yukang {
  200. font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Helvetica Neue",
  201. Helvetica, Segoe UI, Arial, Roboto, "PingFang SC", "miui",
  202. "Hiragino Sans GB", "Microsoft Yahei", sans-serif;
  203. color: #2c3e50;
  204. font-weight: 400;
  205. .userType {
  206. position: relative;
  207. .textGroup {
  208. z-index: 1;
  209. position: absolute;
  210. overflow: hidden;
  211. top: 15px;
  212. right: 10px;
  213. font-size: 0;
  214. color: #1989fa;
  215. &::after {
  216. border-radius: 3px;
  217. border-color: #1989fa;
  218. }
  219. .text {
  220. padding: 0 3px;
  221. display: inline-block;
  222. text-align: center;
  223. cursor: pointer;
  224. font-size: 14px;
  225. }
  226. .act {
  227. background-color: #1989fa;
  228. color: #fff;
  229. }
  230. }
  231. }
  232. }
  233. </style>