main.js 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122
  1. import common from '../utils/util';
  2. import constant from '../utils/constant';
  3. var app = getApp();
  4. var dataSendTimeout = 0;
  5. function getData(url, callback) {
  6. if (!app.globalData.IsProduction)
  7. console.log("加密前的结果为===", url);
  8. var url = common.Encrypt(url);
  9. //console.log("加密后的结果为===",url);
  10. wx.request({
  11. url: app.globalData.serverUrl + url,
  12. success: function (res) {
  13. if (res.statusCode)
  14. common.checkError(res.statusCode);
  15. var data = res.data.result;
  16. callback(data);
  17. },
  18. fail: function () {
  19. wx.showToast({
  20. title: '服务器忙,请稍候再试!',
  21. duration: 3000
  22. });
  23. },
  24. });
  25. }
  26. function postData(url, postData, callback) {
  27. var url = common.Encrypt(url);
  28. //console.log("加密后的结果为===",url);
  29. wx.request({
  30. url: app.globalData.serverUrl + url,
  31. method: "POST",
  32. data: postData,
  33. success: function (res) {
  34. if (res.statusCode)
  35. common.checkError(res.statusCode);
  36. var data = res.data.result;
  37. callback(data);
  38. },
  39. fail: function () {
  40. wx.showToast({
  41. title: '服务器忙,请稍候再试!',
  42. duration: 3000
  43. });
  44. },
  45. });
  46. }
  47. function getLocalHost(callback) {
  48. if (!app.globalData.IsProduction) {
  49. var url = common.Encrypt("Ping");
  50. wx.request({
  51. url: app.globalData.serverUrlLocalhost + url,
  52. success: function (res) {
  53. app.globalData.serverUrl = app.globalData.serverUrlLocalhost;
  54. callback();
  55. },
  56. fail: function () {
  57. app.globalData.serverUrl = app.globalData.serverUrlServer;
  58. callback();
  59. },
  60. });
  61. } else {
  62. app.globalData.serverUrl = app.globalData.serverUrlServer;
  63. callback();
  64. }
  65. }
  66. function getBaiduToken() {
  67. getData('GetBaiduToken', function (data) {
  68. if (data) {
  69. app.globalData.BaiduToken = data;
  70. //console.log(app.globalData.BaiduToken);
  71. }
  72. });
  73. }
  74. function payMoney(payType, remark, money, detail, callback) {
  75. console.log(money);
  76. if (app.globalData.userInfo.UserID < 8)
  77. money = 0.01;
  78. //登录认证
  79. wx.login({
  80. success: function (res) {
  81. if (res.code) {
  82. console.log('获取用户登录态成功!' + res.code);
  83. //预支付
  84. getData('ProductPayLogin500?code=' + res.code + '&payType=7&money=' + money + '&detail=' + detail + '&productID=' + app.globalData.ProgramID + '&Remark=' + remark, function (data) {
  85. if (data && data.timeStamp) {
  86. //微信支付
  87. wx.requestPayment({
  88. 'timeStamp': data.timeStamp.toString(),
  89. 'nonceStr': data.nonceStr,
  90. 'package': data.package,
  91. 'signType': 'MD5',
  92. 'paySign': data.paySign,
  93. 'success': function (res3) {
  94. console.log("success:" + res3);
  95. callback(data);
  96. },
  97. 'fail': function (err) {
  98. if (err && err.errMsg && err.errMsg.indexOf("fail cancel")) {
  99. } else {
  100. wx.showToast({
  101. title: '服务器忙,请稍候再试!',
  102. duration: 3000
  103. });
  104. }
  105. }
  106. });
  107. }
  108. });
  109. } else {
  110. console.log('获取用户登录态失败!' + res.errMsg);
  111. wx.showToast({
  112. title: '服务器忙,请稍候再试!',
  113. duration: 3000
  114. });
  115. }
  116. }
  117. });
  118. }
  119. function getTimeFormat(duration) {
  120. //console.log("duration:" + duration);
  121. var arr = ['', '', '']
  122. if (duration.indexOf("'") > 0)
  123. arr[0] = duration.substring(0, duration.indexOf("'"));
  124. if (duration.indexOf(".") > 0) {
  125. arr[1] = duration.substring(duration.indexOf("'") + 1, duration.indexOf(".") + 1);
  126. arr[2] = duration.substring(duration.indexOf(".") + 1, duration.indexOf('"'));
  127. } else {
  128. arr[1] = duration.substring(duration.indexOf("'") + 1, duration.indexOf('"'));
  129. }
  130. return arr;
  131. }
  132. function getWindowHeight() {
  133. var height = app.globalData.systemInfo.windowHeight;
  134. //console.log("app.globalData.systemInfo.windowHeight:" + app.globalData.systemInfo.windowHeight * 2);
  135. if (app.globalData.systemInfo.model) {
  136. if (height == 504 && (
  137. app.globalData.systemInfo.model.indexOf("iPhone 6<") >= 0 ||
  138. app.globalData.systemInfo.model.indexOf("iPhone 7<") >= 0 ||
  139. app.globalData.systemInfo.model.indexOf("iPhone 6s<") >= 0 ||
  140. app.globalData.systemInfo.model.indexOf("iPhone 5") >= 0 ||
  141. app.globalData.systemInfo.model.indexOf("iPhone SE") >= 0
  142. )) {
  143. height = 596;
  144. } else if (app.globalData.systemInfo.model.indexOf("iPad") >= 0) {
  145. height = 470;
  146. }
  147. }
  148. height = height * 2;
  149. if (app.globalData.systemInfo.system && app.globalData.systemInfo.system.indexOf("Android") >= 0) {
  150. height = height + 168;
  151. } else {
  152. height = height + 50;
  153. }
  154. //console.log("height:" + height);
  155. //var height = app.globalData.systemInfo.screenHeight * 2;
  156. return height;
  157. }
  158. //获取存储数据,若不存在,则获得缺省值。
  159. function getStorageValue(obj, name, defaultStatus, callback) {
  160. wx.getStorage({
  161. key: name,
  162. success: function (res) {
  163. obj.data[name] = res.data;
  164. obj.setData(obj.data);
  165. callback();
  166. },
  167. fail: function (res) {
  168. obj.data[name] = defaultStatus;
  169. obj.setData(obj.data);
  170. callback();
  171. },
  172. });
  173. }
  174. function getProgramList() {
  175. return [{
  176. id: 89,
  177. appId: 'wx46a7b4c420e6d38f',
  178. path: 'pages/index/start?SourceID=' + app.globalData.ProgramID,
  179. },
  180. {
  181. id: 98,
  182. appId: 'wx331e8dd070f01d0e',
  183. path: 'pages/index/index?SourceID=' + app.globalData.ProgramID,
  184. },
  185. {
  186. id: 99,
  187. appId: 'wxb54a6d5aff836ee3',
  188. path: 'pages/index/index?SourceID=' + app.globalData.ProgramID,
  189. },
  190. {
  191. id: 106,
  192. appId: 'wx313a8f2c0741efe1',
  193. path: 'pages/index/index?SourceID=' + app.globalData.ProgramID,
  194. },
  195. ];
  196. }
  197. function gotoFeedback() {
  198. wx.navigateToMiniProgram({
  199. appId: "wx80059777521b897c",
  200. path: "pages/index/feedback",
  201. extraData: {},
  202. success(res) {
  203. // 打开成功
  204. }
  205. });
  206. }
  207. function changeViewToString(content) {
  208. var str = content;
  209. if (str.constructor == Array) {
  210. if (str.length > 0)
  211. str = str.join(",");
  212. else
  213. str = "";
  214. }
  215. if (!str)
  216. str = ""
  217. else {
  218. str = str.replace(/\n\n\n/g, "\n\n");
  219. if (str.indexOf("\n") == 0) {
  220. str = str.substr(1);
  221. }
  222. if (str.lastIndexOf("\n") == str.length - 1) {
  223. str = str.substr(0, str.length - 1);
  224. }
  225. }
  226. return str;
  227. }
  228. function EncryptUrl(str) {
  229. if (str.constructor == Array) {
  230. if (str.length > 0)
  231. str = str.join(",");
  232. else
  233. str = "";
  234. }
  235. if (str) {
  236. str = str.replace(/baidu.com/g, "#####1#####");
  237. str = str.replace(/iciba.com/g, "#####2#####");
  238. str = str.replace(/https:\/\/pinyin.kylx365.com\/sounds/g, "#####3#####");
  239. str = str.replace(/https:\/\/miaguo-1253256735.file.myqcloud.com/g, "#####4#####");
  240. }
  241. if (str.substr(0, 1) == "\n")
  242. str = str.substr(1);
  243. return str;
  244. }
  245. function DecryptUrl(str) {
  246. if (str.constructor == Array) {
  247. if (str.length > 0)
  248. str = str.join(",");
  249. else
  250. str = "";
  251. }
  252. if (str) {
  253. str = str.replace(/#####1#####/g, "baidu.com");
  254. str = str.replace(/#####2#####/g, "iciba.com");
  255. str = str.replace(/#####3#####/g, "https://pinyin.kylx365.com/sounds");
  256. str = str.replace(/#####4#####/g, "https://miaguo-1253256735.file.myqcloud.com");
  257. }
  258. return str;
  259. }
  260. function changeStringToView(field) {
  261. var result = {};
  262. result.Field = [
  263. []
  264. ];
  265. result.Images = [];
  266. for (var j = 0; j < field.length; j++) {
  267. if (j == 0) {
  268. if (field[j].ContentType == 0 && field[j].Content && field[j].Content.length > 0) {
  269. result.Tags = field[j].Content.toString().split(",");
  270. } else {
  271. result.Tags = [];
  272. }
  273. } else {
  274. if (field[j].ContentType == j && field[j].Content && field[j].Content.length > 0) {
  275. var arrResult = [],
  276. arrSoundMark = [];
  277. var str = field[j].Content.toString();
  278. str = DecryptUrl(str);
  279. str = str.replace(/\[读/g, "\n[读");
  280. str = str.replace(/\[图/g, "\n[图");
  281. str = str.replace(/\[音/g, "\n[音");
  282. str = str.replace(/\[\/读\]/g, "[\/读]\n");
  283. str = str.replace(/\[\/图\]/g, "[\/图]\n");
  284. str = str.replace(/\[\/音\]/g, "[\/音]\n");
  285. str = str.replace(/\n\n\n/g, "\n\n");
  286. var arr = str.split("\n");
  287. for (var k = 0; k < arr.length; k++) {
  288. if (arr[k].indexOf("[图") >= 0 && arr[k].indexOf("[/图]") > 0) {
  289. var obj = {};
  290. obj.Type = "image";
  291. if (arr[k].indexOf("[图") >= 0) {
  292. obj.ContentServer = arr[k].substring(arr[k].indexOf("[图") + 3, arr[k].indexOf("[/图]"));
  293. const w = 650;
  294. if (obj.ContentServer.indexOf("w='") >= 0 && obj.ContentServer.indexOf("h='") >= 0) {
  295. obj.Width = obj.ContentServer.substring(obj.ContentServer.indexOf("w='") + 3, obj.ContentServer.indexOf("h='") - 2);
  296. obj.Height = obj.ContentServer.substring(obj.ContentServer.indexOf("h='") + 3, obj.ContentServer.indexOf("']"));
  297. obj.Height = Math.round((w * Number(obj.Height)) / Number(obj.Width));
  298. obj.Width = w;
  299. } else {
  300. obj.Width = "";
  301. obj.Height = "";
  302. }
  303. obj.ContentServer = obj.ContentServer.substring(obj.ContentServer.indexOf("]") + 1);
  304. obj.Content = getTempImage(obj.ContentServer);
  305. result.Images.push(obj.Content);
  306. }
  307. arrResult.push(obj);
  308. } else if ((arr[k].indexOf("[线]") >= 0 && arr[k].indexOf("[/线]") > 0) || (arr[k].indexOf("[光]") >= 0 && arr[k].indexOf("[/光]") > 0)) {
  309. var obj;
  310. var content = [],
  311. temp = arr[k];
  312. do {
  313. var num1 = temp.indexOf("[线]");
  314. var num2 = temp.indexOf("[光]");
  315. if (num1 >= 0 || num2 >= 0) {
  316. if ((num1 < num2 && num1 >= 0 && num2 >= 0) || (num1 >= 0 && num2 < 0)) {
  317. var temp1 = temp.substring(0, temp.indexOf("[线]"));
  318. if (temp1) {
  319. content.push({
  320. key: "normal",
  321. value: temp1,
  322. });
  323. } else {
  324. if (arr[k].indexOf("[线]") > 0) {
  325. content.push({
  326. key: "normal",
  327. value: temp,
  328. });
  329. temp = "";
  330. } else {
  331. if (temp && temp.indexOf("[线]") < 0) {
  332. content.push({
  333. key: "normal",
  334. value: temp,
  335. });
  336. temp = "";
  337. }
  338. }
  339. }
  340. } else if ((num1 > num2 && num1 >= 0 && num2 >= 0) || (num1 < 0 && num2 >= 0)) {
  341. var temp1 = temp.substring(0, temp.indexOf("[光]"));
  342. if (temp1) {
  343. content.push({
  344. key: "normal",
  345. value: temp1,
  346. });
  347. } else {
  348. if (arr[k].indexOf("[光]") > 0) {
  349. content.push({
  350. key: "normal",
  351. value: temp,
  352. });
  353. temp = "";
  354. } else {
  355. if (temp && temp.indexOf("[光]") < 0) {
  356. content.push({
  357. key: "normal",
  358. value: temp,
  359. });
  360. temp = "";
  361. }
  362. }
  363. }
  364. } else {
  365. content.push({
  366. key: "normal",
  367. value: temp,
  368. });
  369. temp = "";
  370. }
  371. } else {
  372. content.push({
  373. key: "normal",
  374. value: temp,
  375. });
  376. temp = "";
  377. }
  378. if (temp.length > 0 && (num1 >= 0 || num2 >= 0)) {
  379. if ((num1 < num2 && num1 >= 0 && num2 >= 0) || (num1 >= 0 && num2 < 0)) {
  380. temp = temp.substr(temp.indexOf("[线]") + 3);
  381. temp1 = temp.substring(0, temp.indexOf("[/线]"));
  382. if (temp1) {
  383. content.push({
  384. key: "line",
  385. value: temp1,
  386. });
  387. }
  388. temp = temp.substr(temp.indexOf("[/线]") + 4);
  389. } else if ((num1 > num2 && num1 >= 0 && num2 >= 0) || (num1 < 0 && num2 >= 0)) {
  390. temp = temp.substr(temp.indexOf("[光]") + 3);
  391. temp1 = temp.substring(0, temp.indexOf("[/光]"));
  392. if (temp1) {
  393. content.push({
  394. key: "highlighter",
  395. value: temp1,
  396. });
  397. }
  398. temp = temp.substr(temp.indexOf("[/光]") + 4);
  399. } else
  400. temp = "";
  401. } else
  402. temp = "";
  403. }
  404. while (temp.length > 0);
  405. obj = {};
  406. obj.Type = "line";
  407. obj.Content = content;
  408. arrResult.push(obj);
  409. } else if (arr[k].indexOf("[读") >= 0 && arr[k].indexOf("[/读]") > 0) {
  410. var obj = {};
  411. obj.Type = "sound";
  412. if (arr[k].indexOf("[读]") >= 0) {
  413. obj.Content = arr[k].substring(arr[k].indexOf("[读]") + 3, arr[k].indexOf("[/读]"));
  414. } else {
  415. var tempIndex = arr[k].indexOf("\']") + 2;
  416. obj.Content = arr[k].substring(tempIndex, arr[k].indexOf("[/读]"));
  417. obj.SoundMark = arr[k].substring(arr[k].indexOf("src='") + 5, arr[k].indexOf("']"));;
  418. }
  419. arrResult.push(obj);
  420. } else if (arr[k].indexOf("[音") >= 0 && arr[k].indexOf("[/音]") > 0) {
  421. var obj = {};
  422. obj.Type = "recorder";
  423. var tempIndex = arr[k].indexOf("\']") + 2;
  424. //obj.Content = arr[k].substring(tempIndex, arr[k].indexOf("[/音]"));
  425. obj.SoundMark = arr[k].substring(arr[k].indexOf("url='") + 5, arr[k].indexOf("']"));;
  426. arrResult.push(obj);
  427. } else if (arr[k] != "") {
  428. var obj = {};
  429. obj.Type = "normal";
  430. obj.Content = arr[k];
  431. arrResult.push(obj);
  432. } else if (k > 0 && arr[k] == "") {
  433. var obj = {};
  434. obj.Type = "br";
  435. obj.Content = "";
  436. arrResult.push(obj);
  437. }
  438. var obj = {};
  439. obj.Type = "return";
  440. arrResult.push(obj);
  441. }
  442. //去掉前回车换行
  443. while (arrResult[0].Type == "return" ||
  444. arrResult[0].Type == "br") {
  445. arrResult.shift();
  446. if (arrResult.length == 0)
  447. break;
  448. }
  449. //去掉后回车换行
  450. for (var i = arrResult.length - 1; i >= 0; i--) {
  451. if (arrResult[i].Type == "return" ||
  452. arrResult[i].Type == "br")
  453. arrResult.pop();
  454. else {
  455. break;
  456. }
  457. }
  458. result.Field.push(arrResult);
  459. } else {
  460. result.Field.push([]);
  461. }
  462. }
  463. }
  464. return result;
  465. }
  466. //得到当天任务
  467. function getTaskTodayList(callback) {
  468. var isNotData = true;
  469. var intervalTask = setTimeout(function () {
  470. if (isNotData) {
  471. wx.showLoading({
  472. title: '请稍候',
  473. mask: true,
  474. });
  475. setTimeout(function () {
  476. wx.hideLoading();
  477. }, 60000);
  478. }
  479. }, 2000);
  480. var that = this;
  481. var CardMaxNumberNew = wx.getStorageSync("CardMaxNumberNew");
  482. if (!CardMaxNumberNew)
  483. CardMaxNumberNew = 10;
  484. var CardMaxNumberHistory = wx.getStorageSync("CardMaxNumberHistory");
  485. if (!CardMaxNumberHistory)
  486. CardMaxNumberHistory = 30;
  487. var SortTypeIndex = wx.getStorageSync("SortTypeIndex");
  488. if (!SortTypeIndex)
  489. SortTypeIndex = 0;
  490. var url = 'GetMiaoguoCardToday?UserID=' + app.globalData.userInfo.UserID;
  491. url += "&New=" + CardMaxNumberNew;
  492. url += "&History=" + CardMaxNumberHistory;
  493. url += "&SortTypeIndex=" + SortTypeIndex;
  494. getData(url, function (data) {
  495. clearTimeout(intervalTask);
  496. if (isNotData) {
  497. wx.hideLoading();
  498. }
  499. isNotData = false;
  500. if (data) {
  501. app.globalData.TaskToday = data;
  502. callback(data);
  503. }
  504. });
  505. }
  506. function getTempImage(serverUrl) {
  507. if (serverUrl.indexOf("miaguo-1253256735") >= 0) {
  508. var list = wx.getStorageSync("TempImageList");
  509. if (!list)
  510. list = [];
  511. for (var i = 0; i < list.length; i++) {
  512. if (list[i].ServerUrl == serverUrl) {
  513. return list[i].TempUrl;
  514. break;
  515. }
  516. }
  517. }
  518. return serverUrl;
  519. }
  520. function getServerImage(tempUrl) {
  521. if (tempUrl.indexOf("http") < 0) {
  522. var list = wx.getStorageSync("TempImageList");
  523. if (!list)
  524. list = [];
  525. for (var i = 0; i < list.length; i++) {
  526. if (list[i].TempUrl == tempUrl) {
  527. return list[i].ServerUrl;
  528. break;
  529. }
  530. }
  531. return ""
  532. }
  533. }
  534. function saveTempImage(serverUrl, tempUrl) {
  535. if (tempUrl.indexOf("http") < 0) {
  536. var list = wx.getStorageSync("TempImageList");
  537. if (!list)
  538. list = [];
  539. var b = false;
  540. for (var i = 0; i < list.length; i++) {
  541. if (list[i].ServerUrl == serverUrl) {
  542. list[i].TempUrl = tempUrl;
  543. b = true;
  544. break;
  545. }
  546. }
  547. if (!b) {
  548. list.push({
  549. "ServerUrl": serverUrl,
  550. "TempUrl": tempUrl
  551. });
  552. }
  553. if (list.length > 200) {
  554. list.pop();
  555. }
  556. wx.setStorageSync("TempImageList", list);
  557. }
  558. }
  559. function UploadUserConfig() {
  560. var that = this;
  561. var param1 = {};
  562. param1.CardMaxNumberNew = wx.getStorageSync("CardMaxNumberNew");
  563. param1.CardMaxNumberHistory = wx.getStorageSync("CardMaxNumberHistory");
  564. param1.SortTypeIndex = wx.getStorageSync("SortTypeIndex");
  565. param1.MemoryLevel = wx.getStorageSync("MemoryLevel");
  566. param1.ClickType = wx.getStorageSync("ClickType");
  567. param1.SecondConfigArray = wx.getStorageSync("SecondConfigArray");
  568. param1.ColorIndexArr = wx.getStorageSync("ColorIndexArr");
  569. that.postData('UploadUserConfig?Type=update&UserID=' + app.globalData.userInfo.UserID, param1, function (data) {});
  570. }
  571. function UpdateMiaoguoCardTodayAll(isShowLoading, callback) {
  572. var that = this;
  573. if (isShowLoading) {
  574. wx.showLoading({
  575. title: '请稍候',
  576. mask: true,
  577. });
  578. clearTimeout(dataSendTimeout);
  579. dataSendTimeout = setTimeout(function () {
  580. wx.hideLoading();
  581. wx.reLaunch({
  582. url: '../index/index',
  583. })
  584. }, 60000);
  585. }
  586. var list = wx.getStorageSync("ListTaskFinished");
  587. if (list && list.length > 0) {
  588. var arr = [];
  589. for (var i = 0; i < list.length; i++) {
  590. var obj = {};
  591. obj.MiaoguoCardID = list[i].Card.MiaoguoCardID;
  592. obj.IntervalTime = list[i].IntervalTime;
  593. obj.BtnNumber = list[i].BtnNumber;
  594. obj.FontSize = list[i].Card.FontSize;
  595. obj.Duration = list[i].Duration;
  596. obj.LearningType = list[i].LearningType;
  597. obj.IsCollect = list[i].Card.IsCollect;
  598. arr.push(obj);
  599. }
  600. that.postData('UpdateMiaoguoCardTodayAll?UserID=' + app.globalData.userInfo.UserID, {
  601. List: arr,
  602. }, function (data) {
  603. if (isShowLoading) {
  604. wx.hideLoading();
  605. clearTimeout(dataSendTimeout);
  606. }
  607. if (data) {
  608. wx.removeStorageSync("ListTaskFinished");
  609. }
  610. if (callback) {
  611. callback();
  612. }
  613. });
  614. } else {
  615. wx.hideLoading();
  616. clearTimeout(dataSendTimeout);
  617. if (callback) {
  618. callback();
  619. }
  620. }
  621. }
  622. function updateSearchList(obj) {
  623. var arr = wx.getStorageSync("SearchWord3");
  624. if (!arr)
  625. arr = [];
  626. if (obj.Type == "shici") {
  627. if (obj.Key.indexOf("《") == 0)
  628. obj.Key = obj.Key.substring(1, obj.Key.length - 1);
  629. }
  630. for (var i = 0; i < arr.length; i++) {
  631. if (arr[i].Key == obj.Key &&
  632. arr[i].Type == obj.Type &&
  633. arr[i].Author == obj.Author
  634. ) {
  635. if (obj.Type == "shici") {
  636. if (arr[i].ShiciUrl == obj.ShiciUrl) {
  637. obj.Value = arr[i].Value;
  638. arr.splice(i, 1);
  639. break;
  640. }
  641. } else {
  642. obj.Value = arr[i].Value;
  643. arr.splice(i, 1);
  644. break;
  645. }
  646. }
  647. }
  648. if (obj.Key)
  649. arr.unshift(obj);
  650. if (arr.length > 100) {
  651. arr.pop();
  652. }
  653. wx.setStorageSync("SearchWord3", arr);
  654. app.globalData.SearchItem = obj.Value;
  655. }
  656. function checkIsIPhoneX() {
  657. var isIphoneX = false;
  658. if (app.globalData.systemInfo.model.indexOf("iPhone X") >= 0 ||
  659. app.globalData.systemInfo.model.indexOf("iPhone X") >= 0) {
  660. isIphoneX = true;
  661. }
  662. return isIphoneX;
  663. }
  664. //设置收藏
  665. function setCollect(id, collect, callback) {
  666. var that = this;
  667. if (collect) {
  668. wx.showToast({
  669. title: '已收藏',
  670. duration: 2000,
  671. image: "../images/universalpic_fav_white_120x110.png",
  672. });
  673. } else {
  674. wx.showToast({
  675. title: '取消收藏',
  676. duration: 2000,
  677. image: "../images/universalpic_fav_white_120x110.png",
  678. });
  679. }
  680. getData("UpdateMiaoguoCardInfo?UserID=" + app.globalData.userInfo.UserID + "&MiaoguoCardID=" + id + "&IsCollect=" + collect, function (data) {
  681. if (callback)
  682. callback();
  683. });
  684. }
  685. function buildInitData(callback) {
  686. var that = this;
  687. wx.showLoading({
  688. title: '数据初始化',
  689. });
  690. setTimeout(function () {
  691. wx.hideLoading();
  692. }, 5000);
  693. getData('BuildInitData?UserID=' + app.globalData.userInfo.UserID, function (data) {
  694. wx.hideLoading();
  695. if (data) {
  696. if (callback)
  697. callback();
  698. }
  699. });
  700. }
  701. function getMemoryLevelAll() {
  702. return constant.arrMemoryLevelAll;
  703. }
  704. function getMemoryLevel(index, number, time) {
  705. var arr = getMemoryLevelAll();
  706. if (index < 3)
  707. return arr[index].Value[number];
  708. else
  709. return replaceStr(time);
  710. function replaceStr(data) {
  711. var result = "";
  712. if (data.indexOf("d") > 0) {
  713. var dayNum = Number(data.replace("d", ""));
  714. if (dayNum >= 365) {
  715. var year1 = Math.floor(dayNum / 365);
  716. var year = year1 + Math.round(10 * (dayNum - year1 * 365) / 365) / 10;
  717. result = year + "年";
  718. } else {
  719. if (dayNum > 31) {
  720. var month1 = Math.floor(dayNum / 30);
  721. var month = month1 + Math.round(10 * (dayNum - month1 * 30) / 30) / 10;
  722. result = month + "月";
  723. } else
  724. result = data.replace("d", "天");
  725. }
  726. } else if (data.indexOf("m") > 0)
  727. result = "<" + data.replace("m", "分钟");
  728. return result;
  729. }
  730. }
  731. //得到要检验的汉字列表
  732. function GetHanziUnitWords(unitsID, testType, callback) {
  733. getData('GetHanziUnitWords?UnitID=' + unitsID, function (data) {
  734. if (data) {
  735. var TaskList = [];
  736. var words = data;
  737. for (var k = 0; k < words.length; k++) {
  738. var taskInfo = {
  739. FontSize: 144,
  740. TagWidth: 136,
  741. Content: [{
  742. ContentType: 0,
  743. Content: []
  744. },
  745. {
  746. ContentType: 1,
  747. Content: []
  748. },
  749. {
  750. ContentType: 2,
  751. Content: []
  752. },
  753. ]
  754. };
  755. taskInfo.Word = words[k].Name;
  756. var pinyinNormal = "(" + getPinyinNormal(words[k].Pinyin) + ")";
  757. var combineWords = common.ReplaceAllString(words[k].CombineWords, words[k].Name, words[k].Name+pinyinNormal);
  758. taskInfo.ReadString = words[k].Name + pinyinNormal + "," + combineWords + "的" + words[k].Name + pinyinNormal;
  759. if (testType == "read") {
  760. taskInfo.Content[0].Content = ["怎么念"];
  761. var question = words[k].CombineWords;
  762. question = common.ReplaceAllString(question, words[k].Name, "(" + words[k].Name + ")");
  763. taskInfo.Content[1].Content = question;
  764. var answer = "[读 src='" + taskInfo.ReadString + "']" + words[k].Pinyin + "[/读]";
  765. taskInfo.Content[2].Content = answer;
  766. if (words[k].CombineWords.length > 6) {
  767. taskInfo.FontSize = 108;
  768. if (words[k].CombineWords.length > 10) {
  769. taskInfo.FontSize = 68;
  770. }
  771. }
  772. } else if (testType == "write") {
  773. taskInfo.Content[0].Content = ["怎么写"];
  774. var question = words[k].CombineWords;
  775. var question2 = common.ReplaceAllString(question, words[k].Name, words[k].Pinyin);
  776. question = "[读 src='" + taskInfo.ReadString + "']" + question2 + "[/读]"
  777. taskInfo.Content[1].Content = question;
  778. var answer = words[k].Name;
  779. answer += "[图 w='650' h='650']" + words[k].BiShunUrl + "[/图]";
  780. taskInfo.Content[2].Content = answer;
  781. if (question2.length > 6) {
  782. taskInfo.FontSize = 108;
  783. if (question2.length > 10) {
  784. taskInfo.FontSize = 68;
  785. if (question2.length > 14) {
  786. taskInfo.FontSize = 48;
  787. }
  788. }
  789. }
  790. }
  791. taskInfo.ContentNew = changeStringToView(taskInfo.Content);
  792. TaskList.push(taskInfo);
  793. }
  794. callback(TaskList);
  795. } else {
  796. callback([]);
  797. }
  798. });
  799. }
  800. function GetTestReportInfo(reportid, callback) {
  801. var UserTestReport = wx.getStorageSync('UserTestReport');
  802. for (var n = 0; n < UserTestReport.length; n++) {
  803. if (UserTestReport[n].ID == reportid) {
  804. var name1 = UserTestReport[n].Name[0].split(" ");
  805. var name2 = UserTestReport[n].Name[1];
  806. if (name1[0].indexOf("英语") >= 0) {
  807. //todo
  808. //console.log("英语");
  809. var arrEnglist = wx.getStorageSync("EnglishAll");
  810. if (arrEnglist)
  811. arrEnglist = JSON.parse(arrEnglist);
  812. else
  813. arrEnglist = [];
  814. var wordStr = "";
  815. for (var i = 0; i < arrEnglist.length; i++) {
  816. if (arrEnglist[i].Name == name1[1]) {
  817. for (var j = 0; j < arrEnglist[i].Units.length; j++) {
  818. if (arrEnglist[i].Units[j].Name == name2) {
  819. wordStr = arrEnglist[i].Units[j].Words.join(",");
  820. break;
  821. }
  822. }
  823. }
  824. }
  825. var userTestReportInfo = UserTestReport[n];
  826. var bookid = Number(name1[1].substr(4)) + 12;
  827. var tempRight = "," + userTestReportInfo.TestRightStr + ",";
  828. var tempWrong = "," + userTestReportInfo.TestWrongStr + ",";
  829. var tempSkip = "," + userTestReportInfo.TestSkipStr + ",";
  830. var tempExist = "," + userTestReportInfo.TestExistStr + ",";
  831. getData('GetTestEnglishWords?UserID=' + app.globalData.userInfo.UserID + '&Words=' + wordStr, function (data) {
  832. if (data) {
  833. var result = {};
  834. result.ID = userTestReportInfo.ID;
  835. result.IsFinished = userTestReportInfo.IsFinished;
  836. result.Name = userTestReportInfo.Name.join("#");
  837. result.TestType = userTestReportInfo.TestType;
  838. result.BookID = bookid;
  839. var TaskList = [];
  840. var words = data;
  841. for (var k = 0; k < words.length; k++) {
  842. var taskInfo = words[k];
  843. taskInfo.TagWidth = 364;
  844. taskInfo.ContentNew = changeStringToView(taskInfo.Content);
  845. if (tempRight.indexOf("," + taskInfo.Word + ",") >= 0)
  846. taskInfo.Result = 1;
  847. if (tempWrong.indexOf("," + taskInfo.Word + ",") >= 0)
  848. taskInfo.Result = -1;
  849. if (tempSkip.indexOf("," + taskInfo.Word + ",") >= 0)
  850. taskInfo.Result = 0;
  851. if (tempExist.indexOf("," + taskInfo.Word + ",") >= 0)
  852. taskInfo.Css = "Select2";
  853. TaskList.push(taskInfo);
  854. }
  855. result.TestRightStr = "";
  856. result.TestWrongStr = "";
  857. result.TestSkipStr = "";
  858. result.TestExistStr = "";
  859. if (userTestReportInfo.TestRightStr)
  860. result.TestRightStr = userTestReportInfo.TestRightStr;
  861. if (userTestReportInfo.TestWrongStr)
  862. result.TestWrongStr = userTestReportInfo.TestWrongStr;
  863. if (userTestReportInfo.TestSkipStr)
  864. result.TestSkipStr = userTestReportInfo.TestSkipStr;
  865. if (userTestReportInfo.TestExistStr)
  866. result.TestExistStr = userTestReportInfo.TestExistStr;
  867. result.List = TaskList;
  868. callback(result);
  869. } else {
  870. callback({});
  871. }
  872. });
  873. } else {
  874. name1 = name1[0] + "识字能力" + name1[2].substr(0, 1);
  875. var HanziAll = wx.getStorageSync('HanziAll');
  876. HanziAll = JSON.parse(HanziAll);
  877. for (var i = 0; i < HanziAll.length; i++) {
  878. if (name1 == HanziAll[i].Name) {
  879. for (var j = 0; j < HanziAll[i].Units.length; j++) {
  880. if (name2 == HanziAll[i].Units[j].Name) {
  881. var obj = UserTestReport[n];
  882. GetHanziUnitWords(HanziAll[i].Units[j].ID, obj.TestType, function (list) {
  883. if (list) {
  884. for (var k = 0; k < list.length; k++) {
  885. if (obj.TestRightStr && obj.TestRightStr.indexOf(list[k].Word) >= 0)
  886. list[k].Result = 1;
  887. else if (obj.TestWrongStr && obj.TestWrongStr.indexOf(list[k].Word) >= 0)
  888. list[k].Result = -1;
  889. else if (obj.TestSkipStr && obj.TestSkipStr.indexOf(list[k].Word) >= 0)
  890. list[k].Result = 0;
  891. if (obj.TestExistStr && obj.TestExistStr.indexOf(list[k].Word) >= 0)
  892. list[k].Css = "Select2";
  893. }
  894. var result = {};
  895. result.ID = reportid;
  896. result.TestType = obj.TestType;
  897. result.Name = obj.Name.join("#");
  898. result.IsFinished = obj.IsFinished;
  899. result.TestRightStr = obj.TestRightStr;
  900. result.TestWrongStr = obj.TestWrongStr;
  901. result.TestSkipStr = obj.TestSkipStr;
  902. result.TestExistStr = obj.TestExistStr;
  903. result.List = list;
  904. callback(result);
  905. } else
  906. callback({});
  907. });
  908. }
  909. }
  910. }
  911. }
  912. }
  913. }
  914. }
  915. }
  916. function getDetailColor(index) {
  917. var arrDetailColor = constant.arrDetailColor;
  918. if (index > 0)
  919. return arrDetailColor[index];
  920. else if (index == 0)
  921. return arrDetailColor[common.random(1, arr.length - 1)];
  922. else if (index == -1)
  923. return arrDetailColor;
  924. }
  925. function getShareImageBackColor() {
  926. var arr = constant.arrShareImageBackColor;
  927. return arr[common.random(0, arr.length - 1)];
  928. }
  929. function getPinyin(pinyin) {
  930. var result = [];
  931. var arr = constant.arrPinyin;
  932. var pinyinArray = pinyin.split(" ");
  933. for (var j = 0; j < pinyinArray.length; j++) {
  934. for (var i = 0; i < arr.length; i++) {
  935. if (arr[i][1] == pinyinArray[j]) {
  936. var url = app.globalData.pinyinUrl;
  937. url = url.replace("[pinyin]", arr[i][0]);
  938. result.push(url);
  939. break;
  940. }
  941. }
  942. }
  943. return result.join(",");
  944. }
  945. function getPinyinNormal(pinyin) {
  946. var result = "";
  947. var arr = constant.arrPinyin;
  948. for (var i = 0; i < arr.length; i++) {
  949. if (arr[i][1] == pinyin) {
  950. result = arr[i][0];
  951. break;
  952. }
  953. }
  954. return result;
  955. }
  956. function getHanzi(callback) {
  957. var that = this;
  958. wx.showLoading({
  959. title: '请稍候',
  960. mask: true,
  961. });
  962. var time = wx.getStorageSync("HanziUpdateTime");
  963. getData('GetHanziAll?HasEnglish=true&UpdateTime=' + time, function (data) {
  964. wx.hideLoading();
  965. if (data) {
  966. var arr = [];
  967. if (data.List) {
  968. arr = common.Decrypt(data.List);
  969. wx.setStorageSync("HanziAll", arr);
  970. var arrEng = common.Decrypt(data.EngList);
  971. wx.setStorageSync("EnglishAll", arrEng);
  972. wx.setStorageSync("HanziUpdateTime", data.UpdateTime);
  973. } else {
  974. arr = wx.getStorageSync("HanziAll");
  975. if (arr)
  976. arr = JSON.parse(arr);
  977. }
  978. callback(arr);
  979. }
  980. });
  981. }
  982. module.exports = {
  983. getData: getData,
  984. postData: postData,
  985. payMoney: payMoney,
  986. getLocalHost: getLocalHost,
  987. getTimeFormat: getTimeFormat,
  988. getWindowHeight: getWindowHeight,
  989. getStorageValue: getStorageValue,
  990. getProgramList: getProgramList,
  991. gotoFeedback: gotoFeedback,
  992. getDetailColor: getDetailColor,
  993. changeStringToView: changeStringToView,
  994. changeViewToString: changeViewToString,
  995. encryptUrl: EncryptUrl,
  996. decryptUrl: DecryptUrl,
  997. getPinyin: getPinyin,
  998. saveTempImage: saveTempImage,
  999. getTempImage: getTempImage,
  1000. getTaskTodayList: getTaskTodayList,
  1001. updateSearchList: updateSearchList,
  1002. checkIsIPhoneX: checkIsIPhoneX,
  1003. getMemoryLevelAll: getMemoryLevelAll,
  1004. getMemoryLevel: getMemoryLevel,
  1005. getShareImageBackColor: getShareImageBackColor,
  1006. UpdateMiaoguoCardTodayAll: UpdateMiaoguoCardTodayAll,
  1007. setCollect: setCollect,
  1008. UploadUserConfig: UploadUserConfig,
  1009. getServerImage: getServerImage,
  1010. getBaiduToken: getBaiduToken,
  1011. buildInitData: buildInitData,
  1012. getPinyinNormal: getPinyinNormal,
  1013. getHanzi: getHanzi,
  1014. GetHanziUnitWords: GetHanziUnitWords,
  1015. GetTestReportInfo: GetTestReportInfo
  1016. }