test.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. import common from '../../utils/util';
  2. import server from '../../utils/main';
  3. import pinyin from '../../utils/pinyin';
  4. const app = getApp();
  5. var currentIndex = 0;
  6. var isRight = false;
  7. var arrTrue = [];
  8. Page({
  9. data: {
  10. CurrentIndex: 1,
  11. AnswerTrue: 0,
  12. AnswerError: 0,
  13. AnswerErrorMax: 3,
  14. },
  15. onLoad: function (options) {
  16. this.setData({
  17. Height: common.getSystemHeight(),
  18. });
  19. this.getList();
  20. this.audioCtx = wx.createAudioContext('myAudio');
  21. },
  22. getList: function () {
  23. var that = this;
  24. server.getData('GetHanziTestList', function (data) {
  25. if (data) {
  26. var list = data;
  27. var item = list[currentIndex];
  28. var pinyinList = pinyin.getPinyinArray();
  29. for (var i = 0; i < list.length; i++) {
  30. for (var k = 0; k < list[i].PinyinTest.length; k++) {
  31. for (var j = 0; j < pinyinList.length; j++) {
  32. if (list[i].PinyinTest[k].options == pinyinList[j][1]) {
  33. list[i].PinyinTest[k].name = pinyinList[j][2][0];
  34. break;
  35. }
  36. }
  37. }
  38. }
  39. arrTrue = [];
  40. that.setData({
  41. List: data,
  42. CurrentItem: item,
  43. });
  44. }
  45. });
  46. },
  47. selectedHanzi: function (e) {
  48. var id = e.currentTarget.dataset.id;
  49. var list = this.data.CurrentItem.PinyinTest;
  50. for (var i = 0; i < list.length; i++) {
  51. list[i].IsSelected = false;
  52. }
  53. list[id].IsSelected = true;
  54. if (list[id].IsAnswer)
  55. isRight = true;
  56. this.data.CurrentItem.PinyinTest = list;
  57. this.playAudio(list[id].options, list[id].name);
  58. this.setData({
  59. CurrentItem: this.data.CurrentItem,
  60. });
  61. },
  62. playAudio: function (pinyin, name) {
  63. if (pinyin) {
  64. //var str = name + "(" + pinyin + ")";
  65. var str = pinyin;
  66. //console.log(str);
  67. var url = app.globalData.audioUrlBaidu;
  68. url = url.replace("[token]", app.globalData.BaiduToken);
  69. url = url.replace("[word]", str);
  70. url = encodeURI(url);
  71. this.audioCtx.setSrc(url);
  72. this.audioCtx.play();
  73. }
  74. },
  75. gotoOK: function () {
  76. var that = this;
  77. var title = "错误";
  78. var icon = "none";
  79. if (isRight) {
  80. title = "正确";
  81. icon = "success";
  82. that.data.AnswerTrue++;
  83. for (var i = 0; i < arrTrue.length; i++) {
  84. if (arrTrue[i] == that.data.CurrentItem.HanziUnitID) {
  85. arrTrue.splice(i, 1);
  86. break;
  87. }
  88. }
  89. arrTrue.push(that.data.CurrentItem.HanziUnitID);
  90. }
  91. else {
  92. that.data.AnswerError++;
  93. }
  94. wx.showToast({
  95. title: title,
  96. icon: icon,
  97. duration: 1000,
  98. complete: function () {
  99. isRight = false;
  100. currentIndex++;
  101. if (currentIndex >= that.data.List.length) {
  102. currentIndex = 0;
  103. that.getResult(1);
  104. }
  105. else if (that.data.AnswerError > 3) {
  106. currentIndex = 0;
  107. that.getResult(0);
  108. }
  109. else {
  110. that.setData({
  111. CurrentItem: that.data.List[currentIndex],
  112. CurrentIndex: currentIndex + 1,
  113. AnswerTrue: that.data.AnswerTrue,
  114. AnswerError: that.data.AnswerError,
  115. });
  116. }
  117. }
  118. })
  119. },
  120. getResult: function (isFinished) {
  121. var content = "";
  122. var arr = JSON.parse(wx.getStorageSync("HanziAll"));
  123. var count = 0;
  124. var book = arr[0].Name;
  125. for (var i = 0; i < arr.length; i++) {
  126. for (var j = 0; j < arr[i].Units.length; j++) {
  127. for (var k = 0; k < arrTrue.length; k++) {
  128. if (arrTrue[k] == arr[i].Units[j].ID) {
  129. count += arr[i].Units[j].Words.length;
  130. book=arr[i].Name;
  131. }
  132. }
  133. }
  134. }
  135. content = '您孩子的识字数大约是' + count + '个,建议从《' + book+'》学习起。';
  136. if (count == 0) {
  137. content = '您孩子的识字数未知,建议从《' + book +'》学习起。';
  138. }
  139. if (isFinished == 1) {
  140. content = '您孩子的识字数大约是' + count + '个,实在太优秀了!建议自行搜索文字学习。';
  141. }
  142. wx.showModal({
  143. title: '测试结果',
  144. content: content,
  145. showCancel: false,
  146. success: function () {
  147. wx.navigateBack({
  148. delta: 1
  149. })
  150. },
  151. });
  152. },
  153. onShareAppMessage: function () {
  154. return {
  155. title: app.globalData.ShareTitle,
  156. path: 'pages/index/index?UserID=' + app.globalData.userInfo.UserID,
  157. imageUrl: app.globalData.ShareImage,
  158. }
  159. },
  160. });