item.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  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. var AnswerID=0;
  7. Page({
  8. data: {
  9. version: app.globalData.version,
  10. IsPlaying: 0,
  11. PlayStr: "本",
  12. selectTab0: "btn1",
  13. selectTab1: "",
  14. selectTab2: "",
  15. },
  16. onLoad: function (options) {
  17. var that = this;
  18. this.audioCtxNumber = wx.createAudioContext('numberAudio');
  19. this.setData({
  20. Containnerheight: server.getWindowHeight(),
  21. IsPlaying: 0,
  22. });
  23. audioArray = [];
  24. currentIndex = 0;
  25. tempCurrentIndex = -1;
  26. AnswerID = options.id;
  27. this.getItem();
  28. wx.setNavigationBarTitle({
  29. title: "试卷答案 " + AnswerID,
  30. });
  31. common.getStorageValue(this, "HelpHidden6", false, function () {
  32. that.showHelp();
  33. });
  34. },
  35. onUnload: function () {
  36. this.closeHelp();
  37. var list = wx.getStorageSync("AnswerList");
  38. if (list && list.length > 0) {
  39. for (var i = 0; i < list.length; i++) {
  40. if (AnswerID == list[i].AnswerID) {
  41. list[i] = this.data.AnswerItem;
  42. wx.setStorageSync("AnswerList", list);
  43. break;
  44. }
  45. }
  46. }
  47. },
  48. scrollTop: function (e) {
  49. var id = Number(e.currentTarget.dataset.id);
  50. var selectTab0 = "", selectTab1 = "", selectTab2 = "";
  51. if (id == 0)
  52. selectTab0 = "btn1";
  53. else if (id == 1)
  54. selectTab1 = "btn1";
  55. else if (id == 2)
  56. selectTab2 = "btn1";
  57. this.setData({
  58. selectTab0: selectTab0,
  59. selectTab1: selectTab1,
  60. selectTab2: selectTab2,
  61. });
  62. var top = 0;
  63. var query = wx.createSelectorQuery();
  64. query.select('#panelRowTop' + id).boundingClientRect();
  65. query.selectViewport().scrollOffset();
  66. query.exec(function (res) {
  67. top = res[0].top + res[1].scrollTop
  68. wx.pageScrollTo({
  69. scrollTop: top,
  70. duration: 500
  71. });
  72. });
  73. },
  74. getItem: function () {
  75. var that = this;
  76. var list = wx.getStorageSync("AnswerList");
  77. if (list && list.length > 0) {
  78. var item;
  79. for (var i = 0; i < list.length; i++) {
  80. if (AnswerID == list[i].AnswerID) {
  81. item = list[i];
  82. break;
  83. }
  84. }
  85. var list = item.QuestionList;
  86. for (var i = 0; i < list.length; i++) {
  87. if (i == 0 && list[i].Vertical) {
  88. list[i].IsShowVertical = true;
  89. }
  90. //list[i].ErrorClass = "";
  91. }
  92. var list = item.QuestionList;
  93. for (var i = 0; i < list.length; i++) {
  94. if (list[i].OperateAB == '÷' && list[i].Vertical) {
  95. list[i].LineLength = list[i].A.toString().length;
  96. for (var k = 0; k < list[i].Vertical[1].Array.length; k++) {
  97. list[i].Vertical[1].Array[k] = "";
  98. }
  99. for (var k = 0; k < list[i].Vertical[2].Array.length; k++) {
  100. if (list[i].Vertical[2].Array[k] == "√") {
  101. list[i].Vertical[2].Array[k] = "";
  102. list[i].Vertical[2].Array.push("√");
  103. break;
  104. }
  105. }
  106. }
  107. }
  108. that.setData({
  109. AnswerItem: item,
  110. });
  111. }
  112. },
  113. selectedItem: function (e) {
  114. var id = e.currentTarget.dataset.id;
  115. var list = this.data.AnswerItem.QuestionList;
  116. for (var i = 0; i < list.length; i++) {
  117. if (id == list[i].ID) {
  118. list[i].IsShowVertical = !list[i].IsShowVertical;
  119. } else {
  120. list[i].IsShowVertical = false;
  121. }
  122. }
  123. this.data.AnswerItem.QuestionList = list;
  124. this.setData({
  125. AnswerItem: this.data.AnswerItem,
  126. });
  127. },
  128. setErrorItem: function (e) {
  129. var id = e.currentTarget.dataset.id;
  130. var list = this.data.AnswerItem.QuestionList;
  131. for (var i = 0; i < list.length; i++) {
  132. if (id == list[i].ID) {
  133. if (!list[i].ErrorClass || list[i].ErrorClass == "") {
  134. list[i].ErrorClass = "ErrorClass";
  135. wx.showToast({ title: "记号已保存", duration: 1000 });
  136. this.saveErrorList(list[i],"add");
  137. }
  138. else {
  139. list[i].ErrorClass = "";
  140. wx.showToast({ title: "记号已消除", duration: 1000 });
  141. this.saveErrorList(list[i], "delete");
  142. }
  143. break;
  144. }
  145. }
  146. this.data.AnswerItem.QuestionList = list;
  147. this.setData({
  148. AnswerItem: this.data.AnswerItem,
  149. });
  150. },
  151. saveErrorList:function(item,action){
  152. var list = wx.getStorageSync("ErrorList");
  153. if (!list)
  154. list=[];
  155. var b=false;
  156. for(var i=0;i<list.length;i++){
  157. if (item.A == list[i].A && item.B == list[i].B && item.R == list[i].R && item.OperateAB == list[i].OperateAB){
  158. if (item.C){
  159. if (item.C == list[i].C && item.OperateBC == list[i].OperateBC){
  160. if (item.D){
  161. if (item.D == list[i].D && item.OperateCD == list[i].OperateCD){
  162. b=true;
  163. }
  164. }
  165. else
  166. b=true;
  167. }
  168. }
  169. else
  170. b=true;
  171. }
  172. if (b){
  173. list.splice(i, 1);
  174. break;
  175. }
  176. }
  177. if (action=="add"){
  178. item.ID=new Date().getTime();
  179. list.unshift(item);
  180. }
  181. wx.setStorageSync("ErrorList", list);
  182. },
  183. showImage: function (e) {
  184. var that = this;
  185. wx.previewImage({
  186. current: that.data.AnswerItem.TempImagePath, // 当前显示图片的http链接
  187. urls: [that.data.AnswerItem.TempImagePath] // 需要预览的图片http链接列表
  188. });
  189. },
  190. playAudioStart: function () {
  191. if (this.data.IsPlaying == 1) {
  192. this.audioCtxNumber.pause();
  193. }
  194. else if (this.data.IsPlaying == -1) {
  195. this.audioCtxNumber.play();
  196. }
  197. else if (this.data.IsPlaying == 0) {
  198. server.playSound("/sounds/startend.mp3");
  199. var arr = [];
  200. var item = this.data.AnswerItem;
  201. var list = item.QuestionList;
  202. for (var i = 0; i < list.length; i++) {
  203. if ((i % (list.length / 3)) == 0) {
  204. if (i > 0) {
  205. arr.push("");
  206. audioArray.push(arr);
  207. arr = [];
  208. }
  209. arr.push("第" + (1 + i / (list.length / 3)) + "列");
  210. }
  211. var str = list[i].Result;
  212. if (str.toString().indexOf("......") > 0) {
  213. str = str.toString().replace("......", "”余数");
  214. str = "商“" + str;
  215. }
  216. arr.push(str);
  217. }
  218. arr.push("");
  219. audioArray.push(arr);
  220. this.playAudioAll();
  221. }
  222. if (this.data.IsPlaying == 1)
  223. this.data.IsPlaying = -1;
  224. else
  225. this.data.IsPlaying = 1;
  226. this.setData({
  227. IsPlaying: this.data.IsPlaying,
  228. });
  229. },
  230. playAudioAll: function () {
  231. if (currentIndex >= 3) {
  232. currentIndex = 0;
  233. this.setData({
  234. IsPlaying: true,
  235. });
  236. server.playSound("/sounds/startend.mp3");
  237. return;
  238. } else {
  239. server.playAudio(this.audioCtxNumber, audioArray[currentIndex].join(","), 1);
  240. }
  241. },
  242. onPlayEnded: function (e) {
  243. currentIndex++;
  244. this.playAudioAll();
  245. },
  246. playPrev: function () {
  247. var playstr = "本";
  248. if (currentIndex > 0 && tempCurrentIndex == currentIndex) {
  249. currentIndex--;
  250. }
  251. else {
  252. tempCurrentIndex = currentIndex;
  253. playstr = "前";
  254. if (currentIndex <= 0)
  255. playstr = "本";
  256. }
  257. this.playAudioAll();
  258. this.setData({
  259. PlayStr: playstr,
  260. });
  261. },
  262. showHelp: function () {
  263. if (!this.data.HelpHidden6) {
  264. this.audioCtx = wx.createAudioContext('myAudio');
  265. var str = "对答案可以用听的也可以用看的。答案在左边,题目在右边。想给做错的题目打记号,就点击答案左侧的1、2、3……题目序号,这样就可以去首页的错题集里复习它们了。还有一个特殊功能!在有竖式题目的情况下,题目右侧会有这样的图标 ,点它就能提供完整的解题步骤,这个独门神器是倾力为你准备的,对找出错误所在非常有效。";
  266. server.playAudio(this.audioCtx, str);
  267. }
  268. },
  269. closeHelp: function () {
  270. this.setData({
  271. HelpHidden6: true,
  272. });
  273. wx.setStorageSync("HelpHidden6", true);
  274. this.audioCtx = wx.createAudioContext('myAudio');
  275. this.audioCtx.pause();
  276. },
  277. onShareAppMessage: function () {
  278. return {
  279. title: app.globalData.ShareTitle,
  280. path: 'pages/index/index?UserID=' + app.globalData.userInfo.UserID,
  281. imageUrl: app.globalData.ShareImageUrl,
  282. }
  283. },
  284. })