item.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. import common from '../../utils/util';
  2. import server from '../../utils/main';
  3. const app = getApp();
  4. var currentIndex = 0, tempCurrentIndex = -1;
  5. var audioArray = [];
  6. Page({
  7. data: {
  8. version: app.globalData.version,
  9. FileUrl: app.globalData.fileUrl,
  10. IsPlaying: true,
  11. },
  12. onLoad: function (options) {
  13. this.audioCtx = wx.createAudioContext('myAudio');
  14. this.setData({
  15. Containnerheight: server.getWindowHeight(),
  16. });
  17. audioArray = [];
  18. var id = options.id;
  19. this.getItem(id);
  20. wx.setNavigationBarTitle({
  21. title: "试卷答案 "+id,
  22. });
  23. },
  24. scrollTop: function (e) {
  25. var id = Number(e.currentTarget.dataset.id);
  26. var top = 0;
  27. var query = wx.createSelectorQuery();
  28. query.select('#panelRowTop' + id).boundingClientRect();
  29. query.selectViewport().scrollOffset();
  30. query.exec(function (res) {
  31. top = res[0].top + res[1].scrollTop
  32. wx.pageScrollTo({
  33. scrollTop: top,
  34. duration: 500
  35. });
  36. });
  37. },
  38. getItem: function (id) {
  39. var that = this;
  40. var list = wx.getStorageSync("AnswerList");
  41. if (list && list.length > 0) {
  42. var item;
  43. for (var i = 0; i < list.length; i++) {
  44. if (id == list[i].AnswerID) {
  45. item = list[i];
  46. break;
  47. }
  48. }
  49. var list = item.QuestionList;
  50. for (var i = 0; i < list.length; i++) {
  51. if (i == 0 && list[i].Vertical) {
  52. list[i].IsShowVertical = true;
  53. break;
  54. }
  55. }
  56. that.setData({
  57. AnswerItem: item,
  58. });
  59. }
  60. },
  61. selectedItem: function (e) {
  62. var id = e.currentTarget.dataset.id;
  63. var list = this.data.AnswerItem.QuestionList;
  64. for (var i = 0; i < list.length; i++) {
  65. if (id == list[i].ID) {
  66. list[i].IsShowVertical = !list[i].IsShowVertical;
  67. } else {
  68. list[i].IsShowVertical = false;
  69. }
  70. }
  71. this.data.AnswerItem.QuestionList = list;
  72. this.setData({
  73. AnswerItem: this.data.AnswerItem,
  74. });
  75. },
  76. showImage: function (e) {
  77. var that = this;
  78. wx.previewImage({
  79. current: that.data.AnswerItem.TempImagePath, // 当前显示图片的http链接
  80. urls: [that.data.AnswerItem.TempImagePath] // 需要预览的图片http链接列表
  81. });
  82. },
  83. playAudioStart: function () {
  84. this.setData({
  85. IsPlaying: !this.data.IsPlaying,
  86. });
  87. if (this.data.IsPlaying) {
  88. this.audioCtx.pause();
  89. }
  90. else {
  91. var arr = [];
  92. var item = this.data.AnswerItem;
  93. var list = item.QuestionList;
  94. for (var i = 0; i < list.length; i++) {
  95. if ((i % (list.length / 3)) == 0) {
  96. if (i > 0) {
  97. arr.push("");
  98. audioArray.push(arr);
  99. arr = [];
  100. }
  101. arr.push("第" + (1 + i / (list.length / 3)) + "列");
  102. }
  103. var str = list[i].Result;
  104. if (str.toString().indexOf("......") > 0) {
  105. str = str.toString().replace("......", "”余数");
  106. str = "商“" + str;
  107. }
  108. arr.push(str);
  109. }
  110. arr.push("");
  111. audioArray.push(arr);
  112. this.playAudioAll();
  113. }
  114. },
  115. playAudioAll: function () {
  116. if (currentIndex >= 3) {
  117. currentIndex = 0;
  118. this.setData({
  119. IsPlaying: true,
  120. });
  121. return;
  122. } else {
  123. var url = app.globalData.audioUrlBaidu;
  124. url = url.replace("[token]", app.globalData.BaiduToken);
  125. url = url.replace("[word]", audioArray[currentIndex].join(","));
  126. console.log(url);
  127. this.audioCtx.setSrc(url);
  128. this.audioCtx.play();
  129. this.scrollTop({
  130. currentTarget: {
  131. dataset: {
  132. id: currentIndex
  133. }
  134. }
  135. });
  136. }
  137. },
  138. onPlayEnded: function (e) {
  139. currentIndex++;
  140. this.playAudioAll();
  141. },
  142. playPrev: function () {
  143. if (currentIndex > 0 && tempCurrentIndex == currentIndex)
  144. currentIndex--;
  145. else {
  146. tempCurrentIndex = currentIndex;
  147. }
  148. this.playAudioAll();
  149. },
  150. onShareAppMessage: function () {
  151. return {
  152. title: '',
  153. path: 'pages/index/index',
  154. success: function (res) { },
  155. fail: function (err) {
  156. console.log(err);
  157. },
  158. complete: function (res) {
  159. console.log(res);
  160. },
  161. }
  162. },
  163. })