test.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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 (name != undefined) {
  64. if (pinyin == undefined)
  65. pinyin = "";
  66. var url = app.globalData.audioUrlBaidu;
  67. url = url.replace("[token]", app.globalData.BaiduToken);
  68. url = url.replace("[word]", name + "(" + pinyin + ")");
  69. url = encodeURI(url);
  70. this.audioCtx.setSrc(url);
  71. this.audioCtx.play();
  72. }
  73. },
  74. gotoOK: function () {
  75. var that = this;
  76. var title = "错误";
  77. var icon = "none";
  78. if (isRight) {
  79. title = "正确";
  80. icon = "success";
  81. that.data.AnswerTrue++;
  82. for (var i = 0; i < arrTrue.length; i++) {
  83. if (arrTrue[i] == that.data.CurrentItem.HanziUnitID) {
  84. arrTrue.splice(i, 1);
  85. break;
  86. }
  87. }
  88. arrTrue.push(that.data.CurrentItem.HanziUnitID);
  89. }
  90. else {
  91. that.data.AnswerError++;
  92. }
  93. wx.showToast({
  94. title: title,
  95. icon: icon,
  96. duration: 1000,
  97. complete: function () {
  98. isRight = false;
  99. currentIndex++;
  100. if (currentIndex >= that.data.List.length) {
  101. currentIndex = 0;
  102. that.getResult(1);
  103. }
  104. else if (that.data.AnswerError > 3) {
  105. currentIndex = 0;
  106. that.getResult(0);
  107. }
  108. else {
  109. that.setData({
  110. CurrentItem: that.data.List[currentIndex],
  111. CurrentIndex: currentIndex + 1,
  112. AnswerTrue: that.data.AnswerTrue,
  113. AnswerError: that.data.AnswerError,
  114. });
  115. }
  116. }
  117. })
  118. },
  119. getResult: function (isFinished) {
  120. var content = "";
  121. var arr = JSON.parse(wx.getStorageSync("HanziAll"));
  122. var count = 0;
  123. var book = arr[0].Name;
  124. for (var i = 0; i < arr.length; i++) {
  125. for (var j = 0; j < arr[i].Units.length; j++) {
  126. for (var k = 0; k < arrTrue.length; k++) {
  127. if (arrTrue[k] == arr[i].Units[j].ID) {
  128. count += arr[i].Units[j].Words.length;
  129. book=arr[i].Name;
  130. }
  131. }
  132. }
  133. }
  134. content = '您孩子的识字数大约是' + count + '个,建议从《' + book+'》学习起。';
  135. if (count == 0) {
  136. content = '您孩子的识字数未知,建议从《' + book +'》学习起。';
  137. }
  138. if (isFinished == 1) {
  139. content = '您孩子的识字数大约是' + count + '个,实在太优秀了!建议自行搜索文字学习。';
  140. }
  141. wx.showModal({
  142. title: '测试结果',
  143. content: content,
  144. showCancel: false,
  145. success: function () {
  146. wx.navigateBack({
  147. delta: 1
  148. })
  149. },
  150. });
  151. },
  152. onShareAppMessage: function () {
  153. return {
  154. title: app.globalData.ShareTitle,
  155. path: 'pages/index/index?UserID=' + app.globalData.userInfo.UserID,
  156. imageUrl: '../../images/07001.png',
  157. }
  158. },
  159. });