index.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. import {
  2. createStoreBindings
  3. } from 'mobx-miniprogram-bindings'
  4. import {
  5. store
  6. } from '~/store/index'
  7. Page({
  8. /**
  9. * 页面的初始数据
  10. */
  11. data: {
  12. score: {},
  13. // 目前用来处理区分上传普通作品还是朗读赛作品
  14. readingType: '',
  15. uploadHide: ''
  16. },
  17. /**
  18. * 生命周期函数--监听页面加载
  19. */
  20. onLoad(options) {
  21. this.storeBindings = createStoreBindings(this, {
  22. store,
  23. fields: {
  24. userInfo: 'userInfo',
  25. readDetail: 'readDetail'
  26. },
  27. })
  28. this.storeBindings.updateStoreBindings()
  29. let score = this.data.readDetail
  30. wx.setNavigationBarTitle({
  31. title: score.title
  32. })
  33. this.setData({
  34. score,
  35. readingType: options.readingType ? options.readingType : ''
  36. })
  37. },
  38. backReading() {
  39. let pagesList = getCurrentPages()
  40. let last = pagesList[pagesList.length - 2]
  41. if (last.route != 'pages/reading/index') {
  42. wx.redirectTo({
  43. url: `/pages/reading/index?videoId=${this.data.score.id}&reset=true&uploadHide=${this.data.uploadHide}&readingType=${this.data.readingType}`,
  44. })
  45. } else {
  46. const eventChannel = this.getOpenerEventChannel()
  47. eventChannel.emit('goback', {
  48. videoId: this.data.score.id,
  49. reset: true,
  50. uploadHide: this.data.uploadHide,
  51. readingType: this.data.readingType
  52. });
  53. wx.navigateBack({
  54. delta: 1
  55. })
  56. }
  57. },
  58. hideFooter() {
  59. this.setData({
  60. uploadHide: true
  61. })
  62. },
  63. creatShare() {
  64. let video = this.data.readDetail
  65. return new Promise((resolve, reject) => {
  66. let context = wx.createSelectorQuery();
  67. context
  68. .select('#share')
  69. .fields({
  70. node: true,
  71. size: true
  72. }).exec((res) => {
  73. const canvas = res[0].node;
  74. const ctx = canvas.getContext('2d');
  75. const dpr = wx.getSystemInfoSync().pixelRatio;
  76. canvas.width = res[0].width * dpr;
  77. canvas.height = res[0].height * dpr;
  78. ctx.scale(dpr, dpr);
  79. ctx.font = '14px PingFang';
  80. let pic = canvas.createImage();
  81. pic.src = video.resourcesType == 1 ? video.aBg : video.coverImg;
  82. pic.onload = () => {
  83. ctx.drawImage(pic, 0, 0, 375, 211);
  84. let peiyin = canvas.createImage();
  85. peiyin.src = '/static/peiyin.jpg';
  86. peiyin.onload = () => {
  87. ctx.drawImage(peiyin, 0, 211, 375, 89);
  88. //分享
  89. let fx = canvas.createImage();
  90. fx.src = '/static/share.png'
  91. fx.onload = () => {
  92. ctx.drawImage(fx, 12, 220, 20, 20)
  93. ctx.fillText('分享', 36, 238)
  94. // 收藏,一个一个渲染
  95. let sc = canvas.createImage();
  96. sc.src = '/static/no_collect.png'
  97. sc.onload = () => {
  98. ctx.drawImage(sc, 110, 220, 19, 19)
  99. ctx.fillText('收藏', 134, 238)
  100. //点赞
  101. let dz = canvas.createImage();
  102. dz.src = '/static/heart.png'
  103. dz.onload = () => {
  104. ctx.drawImage(dz, 318, 222, 22, 22)
  105. ctx.fillText(0, 254, 238)
  106. // 评论
  107. let pl = canvas.createImage();
  108. pl.src = '/static/comment.png'
  109. pl.onload = () => {
  110. ctx.drawImage(pl, 228, 222, 22, 22)
  111. ctx.fillText(0, 340, 238)
  112. if (video.resourcesType == 1) {
  113. let aBg = canvas.createImage();
  114. aBg.src = '/static/shareAudioBg.png';
  115. aBg.onload = () => {
  116. ctx.drawImage(aBg, 127.5, 38, 120, 120);
  117. let rate = 0.5
  118. ctx.arc(
  119. Math.floor(375 * rate),
  120. 98,
  121. Math.floor(100 * rate),
  122. 0,
  123. 2 * Math.PI
  124. );
  125. ctx.clip() //裁剪
  126. let coverImg = canvas.createImage();
  127. coverImg.src = video.coverImg;
  128. coverImg.onload = () => {
  129. ctx.drawImage( //定位在圆圈范围内便会出现
  130. coverImg, //图片暂存路径
  131. 129, 42,
  132. 110, 110,
  133. );
  134. ctx.restore()
  135. }
  136. }
  137. }
  138. setTimeout(() => {
  139. wx.canvasToTempFilePath({
  140. canvas: canvas,
  141. success(res) {
  142. resolve({
  143. title: '我的新作品发布啦,快来捧场点赞!',
  144. path: `/pages/pkPage/index?videoId=${wx.getStorageSync('shareVideoId')}&uid=${wx.getStorageSync('uid')}&isShare=true`,
  145. imageUrl: res.tempFilePath
  146. })
  147. },
  148. fail(res) {
  149. reject()
  150. }
  151. }, this)
  152. }, 500)
  153. }
  154. }
  155. }
  156. }
  157. }
  158. }
  159. let peiyin = canvas.createImage();
  160. peiyin.src = '/static/peiyin.jpg';
  161. peiyin.onload = () => {
  162. ctx.drawImage(peiyin, 0, 211, 375, 89);
  163. //分享
  164. let fx = canvas.createImage();
  165. fx.src = '/static/share.png'
  166. fx.onload = () => {
  167. ctx.drawImage(fx, 12, 220, 20, 20)
  168. ctx.fillText('分享', 36, 238)
  169. // 收藏,一个一个渲染
  170. let sc = canvas.createImage();
  171. sc.src = '/static/no_collect.png'
  172. sc.onload = () => {
  173. ctx.drawImage(sc, 110, 220, 19, 19)
  174. ctx.fillText('收藏', 134, 238)
  175. //点赞
  176. let dz = canvas.createImage();
  177. dz.src = '/static/heart.png'
  178. dz.onload = () => {
  179. ctx.drawImage(dz, 318, 222, 22, 22)
  180. ctx.fillText(0, 254, 238)
  181. // 评论
  182. let pl = canvas.createImage();
  183. pl.src = '/static/comment.png'
  184. pl.onload = () => {
  185. ctx.drawImage(pl, 228, 222, 22, 22)
  186. ctx.fillText(0, 340, 238)
  187. setTimeout(() => {
  188. wx.canvasToTempFilePath({
  189. canvas: canvas,
  190. success(res) {
  191. resolve({
  192. title: '我的新作品发布啦,快来捧场点赞!',
  193. path: `/pages/pkPage/index?videoId=${wx.getStorageSync('shareVideoId')}&uid=${wx.getStorageSync('uid')}&isShare=true`,
  194. imageUrl: res.tempFilePath
  195. })
  196. },
  197. fail(res) {
  198. reject()
  199. }
  200. }, this)
  201. }, 500)
  202. }
  203. }
  204. }
  205. }
  206. }
  207. })
  208. })
  209. },
  210. onShareAppMessage({
  211. from,
  212. target
  213. }) {
  214. if (from == 'button') {
  215. const promise = new Promise(resolve => {
  216. this.creatShare().then(res => {
  217. resolve(res)
  218. })
  219. })
  220. return {
  221. title: '我的新作品发布啦,快来捧场点赞!',
  222. path: `/pages/index/index?uid=${wx.getStorageSync('uid')}`,
  223. imageUrl: 'http://reader-wx.ai160.com/images/reader/v3/375-300-1.jpg',
  224. promise
  225. }
  226. } else {
  227. return {
  228. title: '自从用了它,家里朗朗书声,美妙极了!你家孩子也快来试试!',
  229. path: `/pages/index/index?uid=${wx.getStorageSync('uid')}`,
  230. imageUrl: 'http://reader-wx.ai160.com/images/reader/v3/375-300-1.jpg'
  231. }
  232. }
  233. },
  234. })