index.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. // pages/liveData/liveData.js
  2. const app = getApp();
  3. let peopleList = [{ "time": "13:00", "value": 9944 }, { "time": "14:00", "value": 8920 }, { "time": "15:00", "value": 14656 }, { "time": "16:00", "value": 13084 }];
  4. Page({
  5. /**
  6. * 页面的初始数据
  7. */
  8. data: {
  9. error: "",
  10. detail: "",
  11. diglogTitle: "",
  12. title: "",
  13. headData: {},
  14. lineList: [],
  15. region: [],
  16. series: [],
  17. oriList: []
  18. },
  19. /**
  20. * 生命周期函数--监听页面加载
  21. */
  22. onLoad: function (options) {
  23. this.setData({
  24. title: decodeURIComponent(options.title),
  25. platform: options.platform
  26. }, () => {
  27. this.getData()
  28. })
  29. },
  30. /**
  31. * 生命周期函数--监听页面初次渲染完成
  32. */
  33. onReady: function () {
  34. },
  35. /**
  36. * 生命周期函数--监听页面显示
  37. */
  38. onShow: function () {
  39. },
  40. /**
  41. * 生命周期函数--监听页面隐藏
  42. */
  43. onHide: function () {
  44. },
  45. /**
  46. * 生命周期函数--监听页面卸载
  47. */
  48. onUnload: function () {
  49. },
  50. /**
  51. * 页面相关事件处理函数--监听用户下拉动作
  52. */
  53. onPullDownRefresh: function () {
  54. },
  55. /**
  56. * 页面上拉触底事件的处理函数
  57. */
  58. onReachBottom: function () {
  59. },
  60. /**
  61. * 用户点击右上角分享
  62. */
  63. onShareAppMessage: function () {
  64. },
  65. formatNumber: function (val) {
  66. let out = val;
  67. if (val >= 1000 && val < 10000) {
  68. out = (val / 1000).toFixed(2) - 0 + "千"
  69. } else if (val >= 10000 && val < 100000000) {
  70. out = (val / 10000).toFixed(0) - 0 + "万"
  71. } else if (val >= 100000000) {
  72. out = (val / 100000000).toFixed(2) - 0 + "亿"
  73. }
  74. return out
  75. },
  76. getData: function () {
  77. let _this = this;
  78. wx.showLoading();
  79. wx.request({
  80. url: app.baseUrl + '/live-result',
  81. data: {
  82. topic: this.data.title,
  83. platform: this.data.platform
  84. },
  85. success: function (res) {
  86. wx.hideLoading()
  87. if (res.statusCode !== 200) return wx.showToast({
  88. title: '请重启小程序',
  89. icon: "error"
  90. })
  91. let oriData = res.data || {};
  92. console.log(oriData)
  93. let region = [];
  94. let trend = oriData.detail || {};
  95. let RealTimeWatch = {
  96. title: "实时流量",
  97. subTitle: "",
  98. id: 'id' + 10,
  99. canvasId: 'canvasId' + 10,
  100. type: "line",
  101. yType: "value",
  102. xType: "time",
  103. peopleList: []
  104. };
  105. let AddUpBsc = {
  106. title: "弹幕数",
  107. subTitle: "",
  108. id: 'id' + 12,
  109. canvasId: 'canvasId' + 12,
  110. type: "line",
  111. yType: "value",
  112. xType: "time",
  113. peopleList: []
  114. };
  115. let LikeTheBsuc = {
  116. title: "发弹幕人数",
  117. subTitle: "",
  118. id: 'id' + 13,
  119. canvasId: 'canvasId' + 13,
  120. type: "line",
  121. yType: "value",
  122. xType: "time",
  123. peopleList: []
  124. };
  125. // 趋势图数据
  126. for (let i = 0; i < (trend.watch || []).length; i++) {
  127. const v = (trend.watch || [])[i];
  128. let time = new Date(v.x || 0);
  129. let formatTime = ""
  130. time.getHours() > 9 ? formatTime += time.getHours() + ":": formatTime += '0' + time.getHours() + ":";
  131. time.getMinutes() + 1 > 9 ? formatTime += (time.getMinutes() + 1) + ":": formatTime += '0' + (time.getMinutes() + 1) + ":";
  132. time.getSeconds() > 9 ? formatTime += time.getSeconds(): formatTime += '0' + time.getSeconds();
  133. RealTimeWatch.peopleList.push({
  134. value: v.watch || 0,
  135. time:formatTime
  136. });
  137. AddUpBsc.peopleList.push({
  138. value: v.bsc || 0,
  139. time:formatTime
  140. });
  141. LikeTheBsuc.peopleList.push({
  142. value: v.bsuc || 0,
  143. time:formatTime
  144. });
  145. }
  146. // 基础数据
  147. let base = {
  148. live_time: (oriData.detail ? oriData.detail.time || "" : ""),
  149. msg_count: (oriData.webcastMessageList ? oriData.webcastMessageList.count || 0 : 0),
  150. like_count: (trend.like || {}).add_like_count || 0,
  151. total_fans_count: (trend.fans || {}).club_info_total_fans_count || 0,
  152. peopel_time: (trend.user || {}).stats_total_user || 0
  153. }
  154. // 来源城市
  155. let city = oriData.fans ? oriData.fans.area ? oriData.fans.area['全部'] || [] : [] : [];
  156. for (let i = 0; i < city.length; i++) {
  157. const element = city[i] || {};
  158. region.push({
  159. name: element.Name || "",
  160. value: element.Ratio
  161. })
  162. }
  163. // 性别比
  164. let gender = [];
  165. let oriGender = oriData.fans ? oriData.fans.gender || [] : [];
  166. for (let i = 0; i < oriGender.length; i++) {
  167. const v = oriGender[i];
  168. let value = v.rate.split("%")[0] * 100;
  169. gender.push({
  170. name: v.gender,
  171. value
  172. })
  173. }
  174. // 年龄
  175. let age = [];
  176. let oriAge = oriData.fans ? oriData.fans.age || [] : [];
  177. for (let i = 0; i < oriAge.length; i++) {
  178. const v = oriAge[i];
  179. let value = v.count;
  180. age.push({
  181. name: v.item + "岁",
  182. value
  183. })
  184. }
  185. let p = {
  186. headData: base,
  187. region: [],
  188. series: [],
  189. lineList: [],
  190. oriList: []
  191. }
  192. region.length && p.region.push(region);
  193. if (age.length)
  194. p.oriList = [
  195. {
  196. type: 'pie',
  197. label: {
  198. show: false
  199. },
  200. data: age
  201. }
  202. ]
  203. if (gender.length)
  204. p.series = [
  205. {
  206. type: 'pie',
  207. label: {
  208. position: 'inner',
  209. fontSize: 14,
  210. },
  211. data: gender,
  212. emphasis: {
  213. itemStyle: {
  214. shadowBlur: 10,
  215. shadowOffsetX: 0,
  216. shadowColor: 'rgba(0, 0, 0, 0.5)'
  217. }
  218. }
  219. }
  220. ];
  221. AddUpBsc.peopleList.length && p.lineList.push(AddUpBsc);
  222. LikeTheBsuc.peopleList.length && p.lineList.push(LikeTheBsuc);
  223. RealTimeWatch.peopleList.length && p.lineList.push(RealTimeWatch);
  224. _this.setData(p)
  225. },
  226. fail: function (err) {
  227. wx.hideLoading()
  228. wx.showToast({
  229. title: '请重启小程序',
  230. icon: "error"
  231. })
  232. },
  233. })
  234. }
  235. })