detail.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785
  1. import common from '../../utils/util';
  2. import main from '../../utils/main';
  3. const app = getApp();
  4. const arrFontSize = [48, 36, 68, 108];
  5. var innerAudioContext1;
  6. var listTaskFinished = []; //完成的任务
  7. var timeStart; //计算时长
  8. var TaskList = [];
  9. var arrImage = [], arrImage2 = [];
  10. var intervalSound = 0, intervalRefresh = 0;
  11. Page({
  12. data: {
  13. NumberNew: 10,
  14. NumberReview: 0,
  15. NumberHistory: 30,
  16. IsShowNumberInfo: false,
  17. TaskInfo: {},
  18. },
  19. onLoad: function () {
  20. wx.hideShareMenu();
  21. var that = this;
  22. var height = app.globalData.systemInfo.screenHeight * 2 - 90;
  23. var height2 = 750;
  24. if (app.globalData.IsIPad) {
  25. height = 960;
  26. height2 = 670;
  27. }
  28. that.setData({
  29. Containnerheight: height,
  30. Containnerheight2: height - height2,
  31. IsShowAnswer: [0, 0],
  32. CanUndo: 1,
  33. TaskInfo: {},
  34. IsIphoneX: main.checkIsIPhoneX(),
  35. Color: main.getDetailColor(app.globalData.ColorIndex),
  36. });
  37. innerAudioContext1 = wx.createInnerAudioContext();
  38. this.audioCtx = [];
  39. this.getList();
  40. this.getColor();
  41. this.getMemoryLevel();
  42. if (app.globalData.IsIPad) {
  43. that.setData({
  44. IsIPad: "_iPad",
  45. });
  46. }
  47. },
  48. onShow: function () {
  49. var that = this;
  50. if (that.data.NumberNew == 0 &&
  51. that.data.NumberReview == 0 &&
  52. that.data.NumberHistory == 0) {
  53. that.setData({
  54. CanUndo: 0,
  55. TaskInfo: {},
  56. });
  57. listTaskFinished = [];
  58. that.getTaskTime();
  59. }
  60. else {
  61. that.setSoundFile(-1);
  62. var list = app.globalData.CardList;
  63. if (list && list.length > 0) {
  64. for (var i = 0; i < list.length; i++) {
  65. if (TaskList[0].MiaoguoCardID == list[i].MiaoguoCardID) {
  66. TaskList[0].Content = list[i].Content;
  67. TaskList[0].ContentNew = main.changeStringToView(list[i].Content);
  68. that.setData({
  69. TaskInfo: TaskList[0],
  70. });
  71. app.globalData.CardList = [];
  72. break;
  73. }
  74. }
  75. }
  76. }
  77. },
  78. onUnload: function () {
  79. clearInterval(intervalSound);
  80. main.UpdateMiaoguoCardTodayAll(false,function(){
  81. listTaskFinished = [];
  82. });
  83. },
  84. onPullDownRefresh: function () {
  85. this.onShowAnswer({ currentTarget: { dataset: { start: true } } });
  86. wx.stopPullDownRefresh();
  87. },
  88. setSoundFile: function (isFinish) {//isFinish=3搁置 =2撤退 =1结束 =0正常 =-1开始
  89. var that = this;
  90. var url = "/pages/sounds/";
  91. if (isFinish == 1) {
  92. url += "end.mp3";
  93. }
  94. else if (isFinish == 2) {
  95. url += "short3.mp3";
  96. }
  97. else if (isFinish == 3) {
  98. url += "short1.mp3";
  99. }
  100. else {
  101. url += "short2.mp3";
  102. }
  103. if (isFinish >= 0) {
  104. innerAudioContext1.src = url;
  105. innerAudioContext1.play();
  106. }
  107. wx.pageScrollTo({
  108. scrollTop: 0,
  109. });
  110. },
  111. getColor: function () {
  112. var that = this;
  113. if (wx.setBackgroundColor) {
  114. wx.setBackgroundColor({
  115. backgroundColor: that.data.Color.BackColor,
  116. backgroundColorTop: that.data.Color.BackColor,
  117. backgroundColorBottom: that.data.Color.BackColor,
  118. })
  119. }
  120. if (wx.setNavigationBarColor) {
  121. wx.setNavigationBarColor({
  122. frontColor: "#000000",
  123. backgroundColor: that.data.Color.BackColor,
  124. })
  125. }
  126. },
  127. getList: function () {
  128. var task = app.globalData.TaskToday;
  129. var that = this;
  130. var arrNew = task.ListNew;
  131. var arrHistory = task.ListHistory;
  132. var listTaskReview = task.ListReview;
  133. var nMax = [1, 1];
  134. if (arrNew.length == 0 || arrHistory.length == 0) {
  135. if (arrNew.length == 0) {
  136. nMax[0] = 0;
  137. }
  138. if (arrHistory.length == 0) {
  139. nMax[1] = 0;
  140. }
  141. } else if (arrNew.length >= arrHistory.length) {
  142. nMax[0] = Math.floor(arrNew.length / arrHistory.length);
  143. } else if (arrNew.length < arrHistory.length) {
  144. nMax[1] = Math.floor(arrHistory.length / arrNew.length);
  145. }
  146. arrNew = common.randomArray(arrNew);
  147. arrHistory = common.randomArray(arrHistory);
  148. var Len = arrNew.length + arrHistory.length;
  149. TaskList = [];
  150. var indexNew = 0,
  151. indexHistory = 0;
  152. for (var i = 0; i < Len; i++) {
  153. for (var j = 0; j < nMax[0]; j++) {
  154. if (indexNew < arrNew.length) {
  155. arrNew[indexNew].IsNew = true;
  156. TaskList.push(arrNew[indexNew++]);
  157. }
  158. }
  159. for (var j = 0; j < nMax[1]; j++) {
  160. if (indexHistory < arrHistory.length) {
  161. arrHistory[indexHistory].IsHistory = true;
  162. TaskList.push(arrHistory[indexHistory++]);
  163. }
  164. }
  165. }
  166. that.data.NumberReview = listTaskReview.length;
  167. for (var i = 0; i < listTaskReview.length; i++) {
  168. listTaskReview[i].IsReview = true;
  169. TaskList.push(listTaskReview[i]);
  170. }
  171. TaskList = updateNumberStr(TaskList);
  172. //处理列表
  173. TaskList = formatList(TaskList);
  174. if (TaskList.length > 0) {
  175. arrImage = TaskList[0].ContentNew.Images;
  176. arrImage2 = TaskList[0].ContentNew.Images2;
  177. }
  178. var taskInfo = TaskList[0];
  179. if (!taskInfo)
  180. taskInfo = {};
  181. that.setData({
  182. NumberNew: arrNew.length,
  183. NumberReview: that.data.NumberReview,
  184. NumberHistory: arrHistory.length,
  185. TaskInfo: taskInfo,
  186. CanUndo: 0,
  187. });
  188. listTaskFinished = [];
  189. timeStart = new Date(); //起始时间
  190. function formatList(list) {
  191. for (var i = 0; i < list.length; i++) {
  192. if (list[i].Content) {
  193. list[i].ContentNew = main.changeStringToView(list[i].Content);
  194. list[i].TagWidth = 0;
  195. if (list[i].ContentNew.Tags && list[i].ContentNew.Tags.length > 0) {
  196. list[i].TagWidth = 92 + (list[i].ContentNew.Tags.length - 1) * 122;
  197. for (var j = 0; j < list[i].ContentNew.Tags.length; j++) {
  198. if (list[i].ContentNew.Tags[j].length > 2) {
  199. list[i].TagWidth += 46 * (list[i].ContentNew.Tags[j].length - 2);
  200. }
  201. }
  202. }
  203. }
  204. }
  205. return list;
  206. }
  207. function updateNumberStr(list) {
  208. for (var i = 0; i < list.length; i++) {
  209. if (list[i].Number0)
  210. list[i].Number0Str = main.getMemoryLevel(app.globalData.MemoryLevel, 0, list[i].Number0);
  211. if (list[i].Number1)
  212. list[i].Number1Str = main.getMemoryLevel(app.globalData.MemoryLevel, 1, list[i].Number1);
  213. if (list[i].Number2)
  214. list[i].Number2Str = main.getMemoryLevel(app.globalData.MemoryLevel, 2, list[i].Number2);
  215. if (list[i].Number3)
  216. list[i].Number3Str = main.getMemoryLevel(app.globalData.MemoryLevel, 3, list[i].Number3);;
  217. }
  218. return list;
  219. }
  220. },
  221. onShowAnswer: function (e) {
  222. var start = e.currentTarget.dataset.start;
  223. var that = this;
  224. if (!(that.data.NumberNew == 0 &&
  225. that.data.NumberReview == 0 &&
  226. that.data.NumberHistory == 0) && !that.data.IsShowNumberInfo) {
  227. if (start) {
  228. that.data.IsShowAnswer[0] = 0;
  229. that.data.IsShowAnswer[1] = 0;
  230. }
  231. else {
  232. if (!that.data.IsShowAnswer[0] && !that.data.IsShowAnswer[1]) {
  233. that.data.IsShowAnswer[0] = 1;
  234. if (TaskList[0].ContentNew.Field[3].length == 0) {
  235. that.data.IsShowAnswer[1] = 1;
  236. }
  237. scroll(1000);
  238. }
  239. else if (that.data.IsShowAnswer[0] && !that.data.IsShowAnswer[1]) {
  240. that.data.IsShowAnswer[1] = 1;
  241. scroll(1000);
  242. }
  243. }
  244. that.setData({
  245. IsShowAnswer: that.data.IsShowAnswer,
  246. });
  247. }
  248. function scroll(top){
  249. wx.pageScrollTo({
  250. scrollTop: top,
  251. });
  252. }
  253. },
  254. gotoEdit: function () {
  255. var that = this;
  256. //console.log(res.tapIndex);
  257. var list = [];
  258. list.push(TaskList[0]);
  259. app.globalData.CardList = list;
  260. wx.navigateTo({
  261. url: './add?type=edit&type2=1&id=' + TaskList[0].MiaoguoCardID,
  262. });
  263. },
  264. onFontSize: function () {
  265. for (var i = 0; i < arrFontSize.length; i++) {
  266. if (arrFontSize[i] == TaskList[0].FontSize) {
  267. i++;
  268. if (i == arrFontSize.length)
  269. i = 0;
  270. TaskList[0].FontSize = arrFontSize[i];
  271. break;
  272. }
  273. }
  274. this.setData({
  275. TaskInfo: TaskList[0],
  276. });
  277. },
  278. gotoPrev: function () {
  279. var that = this;
  280. if (listTaskFinished.length > 0) {
  281. var card = listTaskFinished.pop();
  282. wx.setStorageSync("ListTaskFinished", listTaskFinished);
  283. timeStart  =  new  Date();
  284. card.Card.Number0 = card.Number0Old;
  285. card.Card.Number0Str = card.Number0StrOld;
  286. card.Card.Number1 = card.Number1Old;
  287. card.Card.Number1Str = card.Number1StrOld;
  288. card.Card.Number2 = card.Number2Old;
  289. card.Card.Number2Str = card.Number2StrOld;
  290. card.Card.Number3 = card.Number3Old;
  291. card.Card.Number3Str = card.Number3StrOld;
  292. if (card.IsReviewOld)
  293. card.Card.IsReview = card.IsReviewOld;
  294. //去除重复
  295. for (var i = 0; i < TaskList.length; i++) {
  296. if (TaskList[i].MiaoguoCardID == card.Card.MiaoguoCardID) {
  297. TaskList.splice(i, 1);
  298. }
  299. }
  300. TaskList.unshift(card.Card);
  301. var canUndo = 1;
  302. if (listTaskFinished.length == 0)
  303. canUndo = 0;
  304. arrImage = TaskList[0].ContentNew.Images;
  305. arrImage2 = TaskList[0].ContentNew.Images2;
  306. that.setData({
  307. IsShowAnswer: [0, 0],
  308. TaskInfo: TaskList[0],
  309. NumberNew: card.NumberNew,
  310. NumberReview: card.NumberReview,
  311. NumberHistory: card.NumberHistory,
  312. CanUndo: canUndo,
  313. });
  314. wx.showToast({
  315. title: '回到上一张',
  316. image: "../images/universalpic_undo_white_120x90.png",
  317. });
  318. that.setSoundFile(2);
  319. }
  320. },
  321. gotoNext: function (e) {
  322. var that = this;
  323. var btnnumber = e.currentTarget.dataset.btnnumber;
  324. var time = e.currentTarget.dataset.time;
  325. //处理当前卡片进入历史数组
  326. var finishCard = {};
  327. finishCard.Card = TaskList[0];
  328. finishCard.NumberNew = this.data.NumberNew;
  329. finishCard.NumberReview = this.data.NumberReview;
  330. finishCard.NumberHistory = this.data.NumberHistory;
  331. finishCard.Number0Old = TaskList[0].Number0;
  332. finishCard.Number0StrOld = TaskList[0].Number0Str;
  333. finishCard.Number1Old = TaskList[0].Number1;
  334. finishCard.Number1StrOld = TaskList[0].Number1Str;
  335. finishCard.Number2Old = TaskList[0].Number2;
  336. finishCard.Number2StrOld = TaskList[0].Number2Str;
  337. finishCard.Number3Old = TaskList[0].Number3;
  338. finishCard.Number3StrOld = TaskList[0].Number3Str;
  339. //若不是搁置
  340. if (btnnumber != "1") {
  341. //若是分钟,则进入复习列表
  342. if (time.lastIndexOf("m") == time.length - 1) {
  343. var minute = Number(time.substr(0, time.indexOf("m")));
  344. TaskList[0].LimitTime = common.formatTime(common.addDate("n", minute, new Date()));
  345. //若是新增,则10m 1d 4d
  346. if (TaskList[0].IsNew) {
  347. TaskList[0].Number0 = "10m";
  348. TaskList[0].Number0Str = main.getMemoryLevel(app.globalData.MemoryLevel, 0, TaskList[0].Number0);
  349. delete TaskList[0].Number1;
  350. delete TaskList[0].Number1Str;
  351. TaskList[0].Number2 = "1d";
  352. TaskList[0].Number2Str = main.getMemoryLevel(app.globalData.MemoryLevel, 2, TaskList[0].Number2);
  353. TaskList[0].Number3 = "4d";
  354. TaskList[0].Number3Str = main.getMemoryLevel(app.globalData.MemoryLevel, 3, TaskList[0].Number3);
  355. TaskList[0].FirstTime = null;
  356. TaskList[0].LastTime = null;
  357. }
  358. //若是历史的,则10m 1d
  359. else if (TaskList[0].IsHistory) {
  360. TaskList[0].Number0 = "10m";
  361. TaskList[0].Number0Str = main.getMemoryLevel(app.globalData.MemoryLevel, 0, TaskList[0].Number0);
  362. delete TaskList[0].Number1;
  363. delete TaskList[0].Number1Str;
  364. TaskList[0].Number2 = "1d";
  365. TaskList[0].Number2Str = main.getMemoryLevel(app.globalData.MemoryLevel, 2, TaskList[0].Number2);
  366. delete TaskList[0].Number3;
  367. delete TaskList[0].Number3Str;
  368. }
  369. finishCard.IsReviewOld = TaskList[0].IsReview;
  370. TaskList[0].IsReview = true;
  371. TaskList.push(TaskList[0]);
  372. }
  373. //若是天月年
  374. else {
  375. var dayNum = Number(time.substr(0, time.indexOf("d")));
  376. var date = common.addDate("d", dayNum, new Date());
  377. TaskList[0].LimitTime = common.formatTime(date);
  378. }
  379. }
  380. //修改学习任务个数
  381. var learningType = 0;
  382. if (TaskList[0].IsReview) {
  383. learningType = 2;
  384. }
  385. if (TaskList[0].IsNew) {
  386. learningType = 0;
  387. }
  388. else if (TaskList[0].IsHistory) {
  389. learningType = 1;
  390. }
  391. if (btnnumber == "1") {
  392. learningType = 3;
  393. }
  394. finishCard.IntervalTime = time;
  395. finishCard.BtnNumber = btnnumber;
  396. finishCard.LearningType = learningType;
  397. var duration = common.diffDate("s", timeStart, new Date());
  398. if (finishCard.btnnumber == 1)
  399. duration = 0;
  400. finishCard.Duration = duration;
  401. timeStart  =  new  Date();
  402. //添加完成列表,去掉任务列表数据
  403. listTaskFinished.push(finishCard);
  404. wx.setStorageSync("ListTaskFinished", listTaskFinished);
  405. TaskList.shift();
  406. that.data.NumberNew = 0;
  407. that.data.NumberHistory = 0;
  408. that.data.NumberReview = 0;
  409. var arrTemp = [];
  410. for (var i = 0; i < TaskList.length; i++) {
  411. if (TaskList[i].IsReview) {
  412. if (TaskList[i].LimitTime < common.formatTime(new Date())) {
  413. var card = TaskList.splice(i, 1);
  414. TaskList.unshift(card[0]);
  415. }
  416. that.data.NumberReview++;
  417. }
  418. else if (TaskList[i].IsNew) {
  419. that.data.NumberNew++;
  420. }
  421. else if (TaskList[i].IsHistory) {
  422. that.data.NumberHistory++;
  423. }
  424. }
  425. //console.log(JSON.stringify(TaskList[0]));
  426. if (that.data.NumberNew == 0 &&
  427. that.data.NumberReview == 0 &&
  428. that.data.NumberHistory == 0) {
  429. that.setData({
  430. IsShowAnswer: [0, 0],
  431. NumberNew: 0,
  432. NumberReview: 0,
  433. NumberHistory: 0,
  434. CanUndo: 1,
  435. });
  436. that.setSoundFile(1);
  437. main.UpdateMiaoguoCardTodayAll(true,function () {
  438. listTaskFinished = [];
  439. that.getTaskTime();
  440. });
  441. } else {
  442. arrImage = TaskList[0].ContentNew.Images;
  443. arrImage2 = TaskList[0].ContentNew.Images2;
  444. //任务没有完成,下一张卡片
  445. that.setData({
  446. IsShowAnswer: [0, 0],
  447. TaskInfo: TaskList[0],
  448. NumberNew: that.data.NumberNew,
  449. NumberReview: that.data.NumberReview,
  450. NumberHistory: that.data.NumberHistory,
  451. CanUndo: 1,
  452. });
  453. if (btnnumber == "1") {
  454. that.setSoundFile(3);
  455. wx.showToast({
  456. title: '今天不练',
  457. mask: true,
  458. image: "../images/universalpic_shelve_white_120x120.png",
  459. });
  460. }
  461. else
  462. that.setSoundFile(0);
  463. }
  464. },
  465. playSound: function (e) {
  466. var that = this;
  467. var str = e.currentTarget.dataset.content;
  468. var url = "";
  469. if (str.indexOf("英 [") >= 0 || str.indexOf("美 [") >= 0) {
  470. str = str.replace("英 [", "[");
  471. str = str.replace("美 [", "[");
  472. url = e.currentTarget.dataset.soundmark;
  473. }
  474. else if (e.currentTarget.dataset.soundmark && e.currentTarget.dataset.soundmark != "undefined") {
  475. var soundmark = e.currentTarget.dataset.soundmark;
  476. if (soundmark && soundmark.indexOf("http") < 0) {
  477. url = app.globalData.audioUrlBaidu;
  478. url = url.replace("[token]", app.globalData.BaiduToken);
  479. url = url.replace("[word]", soundmark);
  480. }
  481. else {
  482. url = soundmark;
  483. }
  484. }
  485. else {
  486. url = app.globalData.audioUrlBaidu;
  487. url = url.replace("[token]", app.globalData.BaiduToken);
  488. url = url.replace("[word]", str);
  489. }
  490. var arr = url.split(",");
  491. this.audioCtx = [];
  492. for (var i = 0; i < arr.length; i++) {
  493. this.audioCtx.push(wx.createAudioContext('myAudio' + i));
  494. }
  495. var index = 0;
  496. if (arr.length > 1) {
  497. intervalSound = setInterval(function () {
  498. that.audioCtx[index].setSrc(arr[index]);
  499. that.audioCtx[index].play();
  500. index++;
  501. if (index >= arr.length) {
  502. clearInterval(intervalSound);
  503. }
  504. }, 1000);
  505. }
  506. else {
  507. if (arr[index].indexOf("http") > 0)
  508. arr[index] = arr[index].substr(arr[index].indexOf("http"));
  509. arr[index] = arr[index].replace("http://", "https://");
  510. //console.log("play:" + arr[index]);
  511. that.audioCtx[index].setSrc(arr[index]);
  512. that.audioCtx[index].play();
  513. }
  514. },
  515. getTaskTime: function () {
  516. var that = this;
  517. var url = "GetMiaoguoTaskTime?";
  518. url += "UserID=" + app.globalData.userInfo.UserID;
  519. main.getData(url, function (data) {
  520. if (data) {
  521. var duration = data.Duration;
  522. if (duration > 0) {
  523. duration = Math.round(duration / 60);
  524. }
  525. var speed1 = Math.round(100 * data.Count / (data.Duration / 60)) / 100;
  526. var speed2 = common.getMinuteSecond(Math.round(data.Duration / data.Count), true);
  527. that.setData({
  528. TodayTime: duration,
  529. Speed1: speed1 + "张题卡",
  530. Speed2: speed2,
  531. });
  532. wx.setNavigationBarTitle({
  533. title: "报告"
  534. });
  535. }
  536. });
  537. },
  538. showNumberContainner: function () {
  539. this.setData({
  540. IsShowNumberInfo: true,
  541. });
  542. },
  543. closeNumberContainner: function () {
  544. this.setData({
  545. IsShowNumberInfo: false,
  546. });
  547. },
  548. showImage: function (e) {
  549. var name = e.currentTarget.dataset.name;
  550. wx.previewImage({
  551. current: name,
  552. urls: arrImage
  553. });
  554. },
  555. onBindError: function (e) {
  556. var that = this;
  557. var serverUrl = e.currentTarget.dataset.serverurl;
  558. var oldTempUrl = e.currentTarget.dataset.name;
  559. //console.log("serverUrl1:" + serverUrl);
  560. wx.downloadFile({
  561. url: serverUrl, // 仅为示例,并非真实的资源
  562. success(res) {
  563. // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
  564. if (res.statusCode === 200) {
  565. //console.log("serverUrl2:" + serverUrl);
  566. //console.log(res.tempFilePath);
  567. main.saveTempImage(serverUrl, res.tempFilePath);
  568. for (var i = 0; i < arrImage.length; i++) {
  569. if (arrImage[i] == oldTempUrl) {
  570. arrImage[i] = res.tempFilePath;
  571. }
  572. }
  573. }
  574. }
  575. });
  576. clearTimeout(intervalRefresh);
  577. intervalRefresh = setTimeout(function () {
  578. TaskList[0].ContentNew = main.changeStringToView(TaskList[0].Content);
  579. that.setData({
  580. TaskInfo: TaskList[0],
  581. });
  582. }, 1000);
  583. for (var i = 1; i < this.data.TaskInfo.ContentNew.Field.length; i++) {
  584. for (var j = 0; j < this.data.TaskInfo.ContentNew.Field[i].length; j++) {
  585. if (this.data.TaskInfo.ContentNew.Field[i][j].Type == "image") {
  586. this.data.TaskInfo.ContentNew.Field[i][j].Url = this.data.TaskInfo.ContentNew.Field[i][j].Content;
  587. }
  588. }
  589. }
  590. this.setData({
  591. TaskInfo: this.data.TaskInfo,
  592. });
  593. },
  594. onClose: function () {
  595. wx.navigateBack({
  596. delta: 1,
  597. });
  598. },
  599. getMemoryLevel: function () {
  600. var index = wx.getStorageSync("MemoryLevel");
  601. if (!index) {
  602. index = 0;
  603. wx.setStorageSync("MemoryLevel", index);
  604. }
  605. app.globalData.MemoryLevel = index;
  606. },
  607. buildShareImage: function () {
  608. var that = this;
  609. wx.showLoading({
  610. title: '生成中',
  611. });
  612. setTimeout(function () {
  613. wx.hideLoading();
  614. }, 5000);
  615. //console.log(app.globalData.userInfo.AvatarUrl);
  616. var avatarUrl = app.globalData.userInfo.AvatarUrl;
  617. avatarUrl = avatarUrl.substring(0, avatarUrl.lastIndexOf("/") + 1);
  618. avatarUrl = avatarUrl + "0";
  619. wx.downloadFile({
  620. url: avatarUrl, // 仅为示例,并非真实的资源
  621. success(res) {
  622. // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
  623. if (res.statusCode === 200) {
  624. var canvas = wx.createCanvasContext("shareCanvas", that);
  625. canvas.setFillStyle(main.getShareImageBackColor());
  626. canvas.fillRect(360, 0, 600, 360);
  627. canvas.drawImage(res.tempFilePath, 0, 0, 360, 360);
  628. canvas.drawImage("../images/universalpic_screenshot_jl_bgimage_360x360.png", 0, 0, 360, 360);
  629. canvas.fillStyle = "#ffffff";
  630. canvas.setTextBaseline('top');
  631. canvas.setFontSize(24);
  632. canvas.fillText(app.globalData.userInfo.NickName, 30, 282);
  633. var today = common.formatTime(new Date(), ".", true);
  634. canvas.setFontSize(18);
  635. canvas.fillText(today, 30, 315);
  636. canvas.setFontSize(20);
  637. canvas.fillText("秒过学习", 390, 30);
  638. canvas.setFontSize(44);
  639. canvas.fillText("勤勉接力", 390, 58);
  640. canvas.setFontSize(20);
  641. canvas.fillText("见证成长", 390, 120);
  642. canvas.setFontSize(68);
  643. canvas.fillText(that.data.TodayTime, 390, 148);
  644. canvas.font = "normal 500 68px caption";
  645. var metrics = canvas.measureText(that.data.TodayTime.toString());
  646. //console.log(JSON.stringify(metrics));
  647. var h = 179;
  648. if (app.globalData.IsIOS)
  649. h = 176;
  650. canvas.font = "normal 500 32px caption";
  651. canvas.fillText("分钟", 393 + Math.round(metrics.width), h);
  652. canvas.setFontSize(20);
  653. canvas.fillText("迄今已接力", 390, 267);
  654. canvas.setFontSize(32);
  655. canvas.fillText(app.globalData.TaskToday.DayNumber + "次", 390, 295);
  656. canvas.draw(1, function (n) {
  657. wx.canvasToTempFilePath({
  658. x: 0,
  659. y: 0,
  660. width: 600,
  661. height: 360,
  662. destWidth: 600,
  663. destHeight: 360,
  664. canvasId: 'shareCanvas',
  665. success: function (res2) {
  666. wx.hideLoading();
  667. wx.previewImage({
  668. current: res2.tempFilePath, // 当前显示图片的http链接
  669. urls: [res2.tempFilePath] // 需要预览的图片http链接列表
  670. });
  671. },
  672. fail: function () {
  673. wx.hideLoading();
  674. }
  675. })
  676. });
  677. }
  678. else {
  679. wx.hideLoading();
  680. }
  681. },
  682. fail: function () {
  683. wx.hideLoading();
  684. }
  685. });
  686. },
  687. onShareAppMessage: function () {
  688. return {
  689. title: app.globalData.ShareTitle,
  690. path: app.globalData.SharePath + '?UserID=' + app.globalData.userInfo.UserID,
  691. imageUrl: app.globalData.ShareImage,
  692. }
  693. },
  694. });