detail.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775
  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. }
  238. else if (that.data.IsShowAnswer[0] && !that.data.IsShowAnswer[1]) {
  239. that.data.IsShowAnswer[1] = 1;
  240. }
  241. }
  242. that.setData({
  243. IsShowAnswer: that.data.IsShowAnswer,
  244. });
  245. }
  246. },
  247. gotoEdit: function () {
  248. var that = this;
  249. //console.log(res.tapIndex);
  250. var list = [];
  251. list.push(TaskList[0]);
  252. app.globalData.CardList = list;
  253. wx.navigateTo({
  254. url: './add?type=edit&type2=1&id=' + TaskList[0].MiaoguoCardID,
  255. });
  256. },
  257. onFontSize: function () {
  258. for (var i = 0; i < arrFontSize.length; i++) {
  259. if (arrFontSize[i] == TaskList[0].FontSize) {
  260. i++;
  261. if (i == arrFontSize.length)
  262. i = 0;
  263. TaskList[0].FontSize = arrFontSize[i];
  264. break;
  265. }
  266. }
  267. this.setData({
  268. TaskInfo: TaskList[0],
  269. });
  270. },
  271. gotoPrev: function () {
  272. var that = this;
  273. if (listTaskFinished.length > 0) {
  274. var card = listTaskFinished.pop();
  275. wx.setStorageSync("ListTaskFinished", listTaskFinished);
  276. timeStart  =  new  Date();
  277. card.Card.Number0 = card.Number0Old;
  278. card.Card.Number0Str = card.Number0StrOld;
  279. card.Card.Number1 = card.Number1Old;
  280. card.Card.Number1Str = card.Number1StrOld;
  281. card.Card.Number2 = card.Number2Old;
  282. card.Card.Number2Str = card.Number2StrOld;
  283. card.Card.Number3 = card.Number3Old;
  284. card.Card.Number3Str = card.Number3StrOld;
  285. if (card.IsReviewOld)
  286. card.Card.IsReview = card.IsReviewOld;
  287. //去除重复
  288. for (var i = 0; i < TaskList.length; i++) {
  289. if (TaskList[i].MiaoguoCardID == card.Card.MiaoguoCardID) {
  290. TaskList.splice(i, 1);
  291. }
  292. }
  293. TaskList.unshift(card.Card);
  294. var canUndo = 1;
  295. if (listTaskFinished.length == 0)
  296. canUndo = 0;
  297. arrImage = TaskList[0].ContentNew.Images;
  298. arrImage2 = TaskList[0].ContentNew.Images2;
  299. that.setData({
  300. IsShowAnswer: [0, 0],
  301. TaskInfo: TaskList[0],
  302. NumberNew: card.NumberNew,
  303. NumberReview: card.NumberReview,
  304. NumberHistory: card.NumberHistory,
  305. CanUndo: canUndo,
  306. });
  307. wx.showToast({
  308. title: '回到上一张',
  309. image: "../images/universalpic_undo_white_120x90.png",
  310. });
  311. that.setSoundFile(2);
  312. }
  313. },
  314. gotoNext: function (e) {
  315. var that = this;
  316. var btnnumber = e.currentTarget.dataset.btnnumber;
  317. var time = e.currentTarget.dataset.time;
  318. //处理当前卡片进入历史数组
  319. var finishCard = {};
  320. finishCard.Card = TaskList[0];
  321. finishCard.NumberNew = this.data.NumberNew;
  322. finishCard.NumberReview = this.data.NumberReview;
  323. finishCard.NumberHistory = this.data.NumberHistory;
  324. finishCard.Number0Old = TaskList[0].Number0;
  325. finishCard.Number0StrOld = TaskList[0].Number0Str;
  326. finishCard.Number1Old = TaskList[0].Number1;
  327. finishCard.Number1StrOld = TaskList[0].Number1Str;
  328. finishCard.Number2Old = TaskList[0].Number2;
  329. finishCard.Number2StrOld = TaskList[0].Number2Str;
  330. finishCard.Number3Old = TaskList[0].Number3;
  331. finishCard.Number3StrOld = TaskList[0].Number3Str;
  332. //若不是搁置
  333. if (btnnumber != "1") {
  334. //若是分钟,则进入复习列表
  335. if (time.lastIndexOf("m") == time.length - 1) {
  336. var minute = Number(time.substr(0, time.indexOf("m")));
  337. TaskList[0].LimitTime = common.formatTime(common.addDate("n", minute, new Date()));
  338. //若是新增,则10m 1d 4d
  339. if (TaskList[0].IsNew) {
  340. TaskList[0].Number0 = "10m";
  341. TaskList[0].Number0Str = main.getMemoryLevel(app.globalData.MemoryLevel, 0, TaskList[0].Number0);
  342. delete TaskList[0].Number1;
  343. delete TaskList[0].Number1Str;
  344. TaskList[0].Number2 = "1d";
  345. TaskList[0].Number2Str = main.getMemoryLevel(app.globalData.MemoryLevel, 2, TaskList[0].Number2);
  346. TaskList[0].Number3 = "4d";
  347. TaskList[0].Number3Str = main.getMemoryLevel(app.globalData.MemoryLevel, 3, TaskList[0].Number3);
  348. TaskList[0].FirstTime = null;
  349. TaskList[0].LastTime = null;
  350. }
  351. //若是历史的,则10m 1d
  352. else if (TaskList[0].IsHistory) {
  353. TaskList[0].Number0 = "10m";
  354. TaskList[0].Number0Str = main.getMemoryLevel(app.globalData.MemoryLevel, 0, TaskList[0].Number0);
  355. delete TaskList[0].Number1;
  356. delete TaskList[0].Number1Str;
  357. TaskList[0].Number2 = "1d";
  358. TaskList[0].Number2Str = main.getMemoryLevel(app.globalData.MemoryLevel, 2, TaskList[0].Number2);
  359. delete TaskList[0].Number3;
  360. delete TaskList[0].Number3Str;
  361. }
  362. finishCard.IsReviewOld = TaskList[0].IsReview;
  363. TaskList[0].IsReview = true;
  364. TaskList.push(TaskList[0]);
  365. }
  366. //若是天月年
  367. else {
  368. var dayNum = Number(time.substr(0, time.indexOf("d")));
  369. var date = common.addDate("d", dayNum, new Date());
  370. TaskList[0].LimitTime = common.formatTime(date);
  371. }
  372. }
  373. //修改学习任务个数
  374. var learningType = 0;
  375. if (TaskList[0].IsReview) {
  376. learningType = 2;
  377. }
  378. if (TaskList[0].IsNew) {
  379. learningType = 0;
  380. }
  381. else if (TaskList[0].IsHistory) {
  382. learningType = 1;
  383. }
  384. if (btnnumber == "1") {
  385. learningType = 3;
  386. }
  387. finishCard.IntervalTime = time;
  388. finishCard.BtnNumber = btnnumber;
  389. finishCard.LearningType = learningType;
  390. var duration = common.diffDate("s", timeStart, new Date());
  391. if (finishCard.btnnumber == 1)
  392. duration = 0;
  393. finishCard.Duration = duration;
  394. timeStart  =  new  Date();
  395. //添加完成列表,去掉任务列表数据
  396. listTaskFinished.push(finishCard);
  397. wx.setStorageSync("ListTaskFinished", listTaskFinished);
  398. TaskList.shift();
  399. that.data.NumberNew = 0;
  400. that.data.NumberHistory = 0;
  401. that.data.NumberReview = 0;
  402. var arrTemp = [];
  403. for (var i = 0; i < TaskList.length; i++) {
  404. if (TaskList[i].IsReview) {
  405. if (TaskList[i].LimitTime < common.formatTime(new Date())) {
  406. var card = TaskList.splice(i, 1);
  407. TaskList.unshift(card[0]);
  408. }
  409. that.data.NumberReview++;
  410. }
  411. else if (TaskList[i].IsNew) {
  412. that.data.NumberNew++;
  413. }
  414. else if (TaskList[i].IsHistory) {
  415. that.data.NumberHistory++;
  416. }
  417. }
  418. //console.log(JSON.stringify(TaskList[0]));
  419. if (that.data.NumberNew == 0 &&
  420. that.data.NumberReview == 0 &&
  421. that.data.NumberHistory == 0) {
  422. that.setData({
  423. IsShowAnswer: [0, 0],
  424. NumberNew: 0,
  425. NumberReview: 0,
  426. NumberHistory: 0,
  427. CanUndo: 1,
  428. });
  429. that.setSoundFile(1);
  430. main.UpdateMiaoguoCardTodayAll(true,function () {
  431. listTaskFinished = [];
  432. that.getTaskTime();
  433. });
  434. } else {
  435. arrImage = TaskList[0].ContentNew.Images;
  436. arrImage2 = TaskList[0].ContentNew.Images2;
  437. //任务没有完成,下一张卡片
  438. that.setData({
  439. IsShowAnswer: [0, 0],
  440. TaskInfo: TaskList[0],
  441. NumberNew: that.data.NumberNew,
  442. NumberReview: that.data.NumberReview,
  443. NumberHistory: that.data.NumberHistory,
  444. CanUndo: 1,
  445. });
  446. if (btnnumber == "1") {
  447. that.setSoundFile(3);
  448. wx.showToast({
  449. title: '今天不练',
  450. mask: true,
  451. image: "../images/universalpic_shelve_white_120x120.png",
  452. });
  453. }
  454. else
  455. that.setSoundFile(0);
  456. }
  457. },
  458. playSound: function (e) {
  459. var that = this;
  460. var str = e.currentTarget.dataset.content;
  461. var url = "";
  462. if (str.indexOf("英 [") >= 0 || str.indexOf("美 [") >= 0) {
  463. str = str.replace("英 [", "[");
  464. str = str.replace("美 [", "[");
  465. url = e.currentTarget.dataset.soundmark;
  466. }
  467. else if (e.currentTarget.dataset.soundmark && e.currentTarget.dataset.soundmark != "undefined") {
  468. var soundmark = e.currentTarget.dataset.soundmark;
  469. if (soundmark && soundmark.indexOf("http") < 0) {
  470. url = app.globalData.audioUrlBaidu;
  471. url = url.replace("[token]", app.globalData.BaiduToken);
  472. url = url.replace("[word]", soundmark);
  473. }
  474. else {
  475. url = soundmark;
  476. }
  477. }
  478. else {
  479. url = app.globalData.audioUrlBaidu;
  480. url = url.replace("[token]", app.globalData.BaiduToken);
  481. url = url.replace("[word]", str);
  482. }
  483. var arr = url.split(",");
  484. this.audioCtx = [];
  485. for (var i = 0; i < arr.length; i++) {
  486. this.audioCtx.push(wx.createAudioContext('myAudio' + i));
  487. }
  488. var index = 0;
  489. if (arr.length > 1) {
  490. intervalSound = setInterval(function () {
  491. that.audioCtx[index].setSrc(arr[index]);
  492. that.audioCtx[index].play();
  493. index++;
  494. if (index >= arr.length) {
  495. clearInterval(intervalSound);
  496. }
  497. }, 1000);
  498. }
  499. else {
  500. if (arr[index].indexOf("http") > 0)
  501. arr[index] = arr[index].substr(arr[index].indexOf("http"));
  502. arr[index] = arr[index].replace("http://", "https://");
  503. //console.log("play:" + arr[index]);
  504. that.audioCtx[index].setSrc(arr[index]);
  505. that.audioCtx[index].play();
  506. }
  507. },
  508. getTaskTime: function () {
  509. var that = this;
  510. var url = "GetMiaoguoTaskTime?";
  511. url += "UserID=" + app.globalData.userInfo.UserID;
  512. main.getData(url, function (data) {
  513. if (data) {
  514. var duration = data.Duration;
  515. if (duration > 0) {
  516. duration = Math.round(duration / 60);
  517. }
  518. var speed1 = Math.round(100 * data.Count / (data.Duration / 60)) / 100;
  519. var speed2 = common.getMinuteSecond(Math.round(data.Duration / data.Count), true);
  520. that.setData({
  521. TodayTime: duration,
  522. Speed1: speed1 + "张题卡",
  523. Speed2: speed2,
  524. });
  525. wx.setNavigationBarTitle({
  526. title: "报告"
  527. });
  528. }
  529. });
  530. },
  531. showNumberContainner: function () {
  532. this.setData({
  533. IsShowNumberInfo: true,
  534. });
  535. },
  536. closeNumberContainner: function () {
  537. this.setData({
  538. IsShowNumberInfo: false,
  539. });
  540. },
  541. showImage: function (e) {
  542. var name = e.currentTarget.dataset.name;
  543. wx.previewImage({
  544. current: name,
  545. urls: arrImage
  546. });
  547. },
  548. onBindError: function (e) {
  549. var that = this;
  550. var serverUrl = e.currentTarget.dataset.serverurl;
  551. var oldTempUrl = e.currentTarget.dataset.name;
  552. //console.log("serverUrl1:" + serverUrl);
  553. wx.downloadFile({
  554. url: serverUrl, // 仅为示例,并非真实的资源
  555. success(res) {
  556. // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
  557. if (res.statusCode === 200) {
  558. //console.log("serverUrl2:" + serverUrl);
  559. //console.log(res.tempFilePath);
  560. main.saveTempImage(serverUrl, res.tempFilePath);
  561. for (var i = 0; i < arrImage.length; i++) {
  562. if (arrImage[i] == oldTempUrl) {
  563. arrImage[i] = res.tempFilePath;
  564. }
  565. }
  566. }
  567. }
  568. });
  569. clearTimeout(intervalRefresh);
  570. intervalRefresh = setTimeout(function () {
  571. TaskList[0].ContentNew = main.changeStringToView(TaskList[0].Content);
  572. that.setData({
  573. TaskInfo: TaskList[0],
  574. });
  575. }, 1000);
  576. for (var i = 1; i < this.data.TaskInfo.ContentNew.Field.length; i++) {
  577. for (var j = 0; j < this.data.TaskInfo.ContentNew.Field[i].length; j++) {
  578. if (this.data.TaskInfo.ContentNew.Field[i][j].Type == "image") {
  579. this.data.TaskInfo.ContentNew.Field[i][j].Url = this.data.TaskInfo.ContentNew.Field[i][j].Content;
  580. }
  581. }
  582. }
  583. this.setData({
  584. TaskInfo: this.data.TaskInfo,
  585. });
  586. },
  587. onClose: function () {
  588. wx.navigateBack({
  589. delta: 1,
  590. });
  591. },
  592. getMemoryLevel: function () {
  593. var index = wx.getStorageSync("MemoryLevel");
  594. if (!index) {
  595. index = 0;
  596. wx.setStorageSync("MemoryLevel", index);
  597. }
  598. app.globalData.MemoryLevel = index;
  599. },
  600. buildShareImage: function () {
  601. var that = this;
  602. wx.showLoading({
  603. title: '生成中',
  604. });
  605. setTimeout(function () {
  606. wx.hideLoading();
  607. }, 5000);
  608. //console.log(app.globalData.userInfo.AvatarUrl);
  609. var avatarUrl = app.globalData.userInfo.AvatarUrl;
  610. avatarUrl = avatarUrl.substring(0, avatarUrl.lastIndexOf("/") + 1);
  611. avatarUrl = avatarUrl + "0";
  612. wx.downloadFile({
  613. url: avatarUrl, // 仅为示例,并非真实的资源
  614. success(res) {
  615. // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
  616. if (res.statusCode === 200) {
  617. var canvas = wx.createCanvasContext("shareCanvas", that);
  618. canvas.setFillStyle(main.getShareImageBackColor());
  619. canvas.fillRect(360, 0, 600, 360);
  620. canvas.drawImage(res.tempFilePath, 0, 0, 360, 360);
  621. canvas.drawImage("../images/universalpic_screenshot_jl_bgimage_360x360.png", 0, 0, 360, 360);
  622. canvas.fillStyle = "#ffffff";
  623. canvas.setTextBaseline('top');
  624. canvas.setFontSize(24);
  625. canvas.fillText(app.globalData.userInfo.NickName, 30, 282);
  626. var today = common.formatTime(new Date(), ".", true);
  627. canvas.setFontSize(18);
  628. canvas.fillText(today, 30, 315);
  629. canvas.setFontSize(20);
  630. canvas.fillText("秒过学习", 390, 30);
  631. canvas.setFontSize(44);
  632. canvas.fillText("勤勉接力", 390, 58);
  633. canvas.setFontSize(20);
  634. canvas.fillText("见证成长", 390, 120);
  635. canvas.setFontSize(68);
  636. canvas.fillText(that.data.TodayTime, 390, 148);
  637. canvas.font = "normal 500 68px caption";
  638. var metrics = canvas.measureText(that.data.TodayTime.toString());
  639. //console.log(JSON.stringify(metrics));
  640. var h = 179;
  641. if (app.globalData.IsIOS)
  642. h = 176;
  643. canvas.font = "normal 500 32px caption";
  644. canvas.fillText("分钟", 393 + Math.round(metrics.width), h);
  645. canvas.setFontSize(20);
  646. canvas.fillText("迄今已接力", 390, 267);
  647. canvas.setFontSize(32);
  648. canvas.fillText(app.globalData.TaskToday.DayNumber + "次", 390, 295);
  649. canvas.draw(1, function (n) {
  650. wx.canvasToTempFilePath({
  651. x: 0,
  652. y: 0,
  653. width: 600,
  654. height: 360,
  655. destWidth: 600,
  656. destHeight: 360,
  657. canvasId: 'shareCanvas',
  658. success: function (res2) {
  659. wx.hideLoading();
  660. wx.previewImage({
  661. current: res2.tempFilePath, // 当前显示图片的http链接
  662. urls: [res2.tempFilePath] // 需要预览的图片http链接列表
  663. });
  664. },
  665. fail: function () {
  666. wx.hideLoading();
  667. }
  668. })
  669. });
  670. }
  671. else {
  672. wx.hideLoading();
  673. }
  674. },
  675. fail: function () {
  676. wx.hideLoading();
  677. }
  678. });
  679. },
  680. onShareAppMessage: function () {
  681. return {
  682. title: app.globalData.ShareTitle,
  683. path: app.globalData.SharePath + '?UserID=' + app.globalData.userInfo.UserID,
  684. imageUrl: app.globalData.ShareImage,
  685. }
  686. },
  687. });