item.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  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: 0,
  11. PlayStr: "本",
  12. selectTab0: "btn1",
  13. selectTab1: "",
  14. selectTab2: "",
  15. },
  16. onLoad: function (options) {
  17. this.audioCtx = wx.createAudioContext('myAudio');
  18. this.setData({
  19. Containnerheight: server.getWindowHeight(),
  20. IsPlaying: 0,
  21. });
  22. audioArray = [];
  23. var id = options.id;
  24. this.getItem(id);
  25. wx.setNavigationBarTitle({
  26. title: "试卷答案 " + id,
  27. });
  28. },
  29. scrollTop: function (e) {
  30. var id = Number(e.currentTarget.dataset.id);
  31. var selectTab0 = "", selectTab1 = "", selectTab2 = "";
  32. if (id == 0)
  33. selectTab0 = "btn1";
  34. else if (id == 1)
  35. selectTab1 = "btn1";
  36. else if (id == 2)
  37. selectTab2 = "btn1";
  38. this.setData({
  39. selectTab0: selectTab0,
  40. selectTab1: selectTab1,
  41. selectTab2: selectTab2,
  42. });
  43. var top = 0;
  44. var query = wx.createSelectorQuery();
  45. query.select('#panelRowTop' + id).boundingClientRect();
  46. query.selectViewport().scrollOffset();
  47. query.exec(function (res) {
  48. top = res[0].top + res[1].scrollTop
  49. wx.pageScrollTo({
  50. scrollTop: top,
  51. duration: 500
  52. });
  53. });
  54. },
  55. getItem: function (id) {
  56. var that = this;
  57. var list = wx.getStorageSync("AnswerList");
  58. if (list && list.length > 0) {
  59. var item;
  60. for (var i = 0; i < list.length; i++) {
  61. if (id == list[i].AnswerID) {
  62. item = list[i];
  63. break;
  64. }
  65. }
  66. var list = item.QuestionList;
  67. for (var i = 0; i < list.length; i++) {
  68. if (i == 0 && list[i].Vertical) {
  69. list[i].IsShowVertical = true;
  70. break;
  71. }
  72. }
  73. var list = item.QuestionList;
  74. for (var i = 0; i < list.length; i++) {
  75. if (list[i].OperateAB == '÷' && list[i].Vertical) {
  76. list[i].LineLength = list[i].A.toString().length;
  77. for (var k = 0; k < list[i].Vertical[1].Array.length; k++) {
  78. list[i].Vertical[1].Array[k] = "";
  79. }
  80. for (var k = 0; k < list[i].Vertical[2].Array.length; k++) {
  81. if (list[i].Vertical[2].Array[k] =="√"){
  82. list[i].Vertical[2].Array[k]="";
  83. list[i].Vertical[2].Array.push("√");
  84. break;
  85. }
  86. }
  87. }
  88. }
  89. that.setData({
  90. AnswerItem: item,
  91. });
  92. }
  93. },
  94. selectedItem: function (e) {
  95. var id = e.currentTarget.dataset.id;
  96. var list = this.data.AnswerItem.QuestionList;
  97. for (var i = 0; i < list.length; i++) {
  98. if (id == list[i].ID) {
  99. list[i].IsShowVertical = !list[i].IsShowVertical;
  100. } else {
  101. list[i].IsShowVertical = false;
  102. }
  103. }
  104. this.data.AnswerItem.QuestionList = list;
  105. this.setData({
  106. AnswerItem: this.data.AnswerItem,
  107. });
  108. },
  109. showImage: function (e) {
  110. var that = this;
  111. wx.previewImage({
  112. current: that.data.AnswerItem.TempImagePath, // 当前显示图片的http链接
  113. urls: [that.data.AnswerItem.TempImagePath] // 需要预览的图片http链接列表
  114. });
  115. },
  116. playAudioStart: function () {
  117. if (this.data.IsPlaying == 1) {
  118. this.audioCtx.pause();
  119. }
  120. else if (this.data.IsPlaying == -1) {
  121. this.audioCtx.play();
  122. }
  123. else if (this.data.IsPlaying == 0) {
  124. var arr = [];
  125. var item = this.data.AnswerItem;
  126. var list = item.QuestionList;
  127. for (var i = 0; i < list.length; i++) {
  128. if ((i % (list.length / 3)) == 0) {
  129. if (i > 0) {
  130. arr.push("");
  131. audioArray.push(arr);
  132. arr = [];
  133. }
  134. arr.push("第" + (1 + i / (list.length / 3)) + "列");
  135. }
  136. var str = list[i].Result;
  137. if (str.toString().indexOf("......") > 0) {
  138. str = str.toString().replace("......", "”余数");
  139. str = "商“" + str;
  140. }
  141. arr.push(str);
  142. }
  143. arr.push("");
  144. audioArray.push(arr);
  145. this.playAudioAll();
  146. }
  147. if (this.data.IsPlaying == 1)
  148. this.data.IsPlaying = -1;
  149. else
  150. this.data.IsPlaying = 1;
  151. this.setData({
  152. IsPlaying: this.data.IsPlaying,
  153. });
  154. },
  155. playAudioAll: function () {
  156. if (currentIndex >= 3) {
  157. currentIndex = 0;
  158. this.setData({
  159. IsPlaying: true,
  160. });
  161. return;
  162. } else {
  163. var url = app.globalData.audioUrlBaidu;
  164. url = url.replace("[token]", app.globalData.BaiduToken);
  165. url = url.replace("[word]", audioArray[currentIndex].join(","));
  166. console.log(url);
  167. this.audioCtx.setSrc(url);
  168. this.audioCtx.play();
  169. }
  170. },
  171. onPlayEnded: function (e) {
  172. currentIndex++;
  173. this.playAudioAll();
  174. },
  175. playPrev: function () {
  176. var playstr = "本";
  177. if (currentIndex > 0 && tempCurrentIndex == currentIndex) {
  178. currentIndex--;
  179. }
  180. else {
  181. tempCurrentIndex = currentIndex;
  182. playstr = "前";
  183. if (currentIndex <= 0)
  184. playstr = "本";
  185. }
  186. this.playAudioAll();
  187. this.setData({
  188. PlayStr: playstr,
  189. });
  190. },
  191. onShareAppMessage: function () {
  192. return {
  193. title: '',
  194. path: 'pages/index/index',
  195. success: function (res) { },
  196. fail: function (err) {
  197. console.log(err);
  198. },
  199. complete: function (res) {
  200. console.log(res);
  201. },
  202. }
  203. },
  204. })