kuaishou.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. // pages/live/components/kuaishou/kuaishou.js
  2. const app = getApp();
  3. Component({
  4. /**
  5. * 组件的属性列表
  6. */
  7. properties: {
  8. title:{
  9. type: String,
  10. value: ""
  11. },
  12. season:{
  13. type: Number,
  14. value: 1
  15. }
  16. },
  17. /**
  18. * 组件的初始数据
  19. */
  20. data: {
  21. error: "",
  22. detail: "",
  23. diglogTitle: "",
  24. headData: {},
  25. lineList: [],
  26. region: [],
  27. series: [],
  28. oriList: []
  29. },
  30. ready(){
  31. this.getData()
  32. },
  33. /**
  34. * 组件的方法列表
  35. */
  36. methods: {
  37. formatNumber: function (val) {
  38. let out = val;
  39. if (val >= 1000 && val < 10000) {
  40. out = (val / 1000).toFixed(2) - 0 + "千"
  41. } else if (val >= 10000 && val < 100000000) {
  42. out = (val / 10000).toFixed(0) - 0 + "万"
  43. } else if (val >= 100000000) {
  44. out = (val / 100000000).toFixed(2) - 0 + "亿"
  45. }
  46. return out
  47. },
  48. getData: function () {
  49. let _this = this;
  50. wx.showLoading();
  51. wx.request({
  52. url: app.baseUrl + '/live-result',
  53. data: {
  54. topic: this.data.title,
  55. platform: "kuaishou",
  56. season: this.data.season
  57. },
  58. success: function (res) {
  59. wx.hideLoading()
  60. if (res.statusCode !== 200) return wx.showToast({
  61. title: '请重启小程序',
  62. icon: "error"
  63. })
  64. let oriData = res.data || {};
  65. console.log(oriData)
  66. let region = [];
  67. let trend = oriData.detail || {};
  68. let RealTimeWatch = {
  69. title: "实时流量",
  70. subTitle: "",
  71. id: 'id' + 10,
  72. canvasId: 'canvasId' + 10,
  73. type: "line",
  74. yType: "value",
  75. xType: "time",
  76. peopleList: []
  77. };
  78. let AddUpBsc = {
  79. title: "弹幕数",
  80. subTitle: "",
  81. id: 'id' + 12,
  82. canvasId: 'canvasId' + 12,
  83. type: "line",
  84. yType: "value",
  85. xType: "time",
  86. peopleList: []
  87. };
  88. let LikeTheBsuc = {
  89. title: "发弹幕人数",
  90. subTitle: "",
  91. id: 'id' + 13,
  92. canvasId: 'canvasId' + 13,
  93. type: "line",
  94. yType: "value",
  95. xType: "time",
  96. peopleList: []
  97. };
  98. // 趋势图数据
  99. console.log(trend.watch)
  100. for (let i = 0; i < (trend.watch || []).length; i++) {
  101. const v = (trend.watch || [])[i];
  102. let time = new Date(v.x || 0);
  103. let formatTime = ""
  104. time.getHours() > 9 ? formatTime += time.getHours() + ":": formatTime += '0' + time.getHours() + ":";
  105. time.getMinutes() + 1 > 9 ? formatTime += (time.getMinutes() + 1) + ":": formatTime += '0' + (time.getMinutes() + 1) + ":";
  106. time.getSeconds() > 9 ? formatTime += time.getSeconds(): formatTime += '0' + time.getSeconds();
  107. RealTimeWatch.peopleList.push({
  108. value: v.watch || 0,
  109. time:formatTime
  110. });
  111. AddUpBsc.peopleList.push({
  112. value: v.bsc || 0,
  113. time:formatTime
  114. });
  115. LikeTheBsuc.peopleList.push({
  116. value: v.bsuc || 0,
  117. time:formatTime
  118. });
  119. }
  120. // 基础数据
  121. let base = {
  122. live_time: (oriData.detail ? oriData.detail.time || "" : "")
  123. }
  124. // 来源城市
  125. let city = oriData.fans ? oriData.fans.area ? oriData.fans.area['全部'] || [] : [] : [];
  126. for (let i = 0; i < city.length; i++) {
  127. const element = city[i] || {};
  128. region.push({
  129. name: element.Name || "",
  130. value: element.Ratio
  131. })
  132. }
  133. // 性别比
  134. let gender = [];
  135. let oriGender = oriData.fans ? oriData.fans.gender || [] : [];
  136. for (let i = 0; i < oriGender.length; i++) {
  137. const v = oriGender[i];
  138. let value = v.rate.split("%")[0] * 100;
  139. gender.push({
  140. name: v.gender,
  141. value
  142. })
  143. }
  144. // 年龄
  145. let age = [];
  146. let oriAge = oriData.fans ? oriData.fans.age || [] : [];
  147. for (let i = 0; i < oriAge.length; i++) {
  148. const v = oriAge[i];
  149. let value = v.count;
  150. age.push({
  151. name: v.item + "岁",
  152. value
  153. })
  154. }
  155. let p = {
  156. headData: base,
  157. region: [],
  158. series: [],
  159. lineList: [],
  160. oriList: []
  161. }
  162. region.length && p.region.push(region);
  163. if (age.length)
  164. p.oriList = [
  165. {
  166. type: 'pie',
  167. label: {
  168. show: false
  169. },
  170. data: age
  171. }
  172. ]
  173. if (gender.length)
  174. p.series = [
  175. {
  176. type: 'pie',
  177. label: {
  178. position: 'inner',
  179. fontSize: 14,
  180. },
  181. data: gender,
  182. emphasis: {
  183. itemStyle: {
  184. shadowBlur: 10,
  185. shadowOffsetX: 0,
  186. shadowColor: 'rgba(0, 0, 0, 0.5)'
  187. }
  188. }
  189. }
  190. ];
  191. AddUpBsc.peopleList.length && p.lineList.push(AddUpBsc);
  192. LikeTheBsuc.peopleList.length && p.lineList.push(LikeTheBsuc);
  193. RealTimeWatch.peopleList.length && p.lineList.push(RealTimeWatch);
  194. _this.setData(p)
  195. },
  196. fail: function (err) {
  197. wx.hideLoading()
  198. wx.showToast({
  199. title: '请重启小程序',
  200. icon: "error"
  201. })
  202. },
  203. })
  204. }
  205. }
  206. })