import common from '../../utils/util'; import main from '../../utils/main'; const app = getApp(); const arrFontSize = [46, 68, 108]; var innerAudioContext1; var innerAudioContext2; var listTaskFinished = []; //完成的任务 var timeStart; //计算时长 var TaskList = []; Page({ data: { NumberNew: 10, NumberReview: 0, NumberHistory: 30, IsShowNumberInfo: false, TaskInfo:{}, Color: {//配色1 Name: "黑白", BackColor: "#ffffff", BackColor1: "#D2D2D2", FrontColor: "#1E1E1E", FrontColor1: "rgba(0,0,0,0.3)", BackColor2: "#E3E3E3", BackColor20: 'rgba(227,227,227,0)', FrontColor2: "#1E1E1E", TagColor: "#9B9B9B", FieldLineColor: "#4B3840", IconColor: "black", FrontColorNavigationBar: "#000000", }, }, onLoad: function () { wx.hideShareMenu(); var that = this; that.setData({ Containnerheight: main.getWindowHeight(), IsShowAnswer: [0, 0], CanUndo: 1, }); innerAudioContext1 = wx.createInnerAudioContext(); innerAudioContext2 = wx.createInnerAudioContext(); this.getList(); this.getColor(); }, onShow: function () { var that = this; if (that.data.NumberNew == 0 && that.data.NumberReview == 0 && that.data.NumberHistory == 0) { listTaskFinished = []; that.setSoundFile(1); } else { that.setSoundFile(-1); var list = wx.getStorageSync("CardList"); if (list && list.length > 0) { for (var i = 0; i < list.length; i++) { if (TaskList[0].MiaoguoCardID == list[i].MiaoguoCardID) { var card = {}; TaskList[0].Content = list[i].Content; TaskList[0].ContentNew = main.changeStringToView(list[i].Content); that.setData({ TaskInfo: TaskList[0], }); wx.removeStorageSync("CardList"); break; } } } } }, onPullDownRefresh: function () { }, setSoundFile: function (isFinish) {//isFinish=1 结束 =0正常 =-1开始 var that = this; var url = "/pages/sounds/"; if (isFinish == 1) { url += "end.mp3"; if (wx.canIUse('setBackgroundColor')) { wx.setBackgroundColor({ backgroundColor: "#a5656e", }); } that.getTaskTime(); } else { url += "short2.mp3"; } if (isFinish >= 0) { innerAudioContext1.src = url; innerAudioContext1.play(); } wx.pageScrollTo({ scrollTop: 0, }); }, getColor: function () { var that = this; common.getStorageValue(that, "ColorIndex", 0, function () { var color = main.getDetailColor(that.data.ColorIndex); that.setData({ Color: color, }); if (wx.setBackgroundColor) { wx.setBackgroundColor({ backgroundColor: color.BackColor, backgroundColorTop: color.BackColor, // 顶部窗口的背景色为白色 backgroundColorBottom: color.BackColor2, // 底部窗口的背景色为白色 }) } if (wx.setNavigationBarColor) { wx.setNavigationBarColor({ frontColor: color.FrontColorNavigationBar, backgroundColor: color.BackColor, }) } }); }, getList: function () { var task = wx.getStorageSync("TaskToday"); var that = this; var arrNew = task.ListNew; var arrHistory = task.ListHistory; var listTaskReview = task.ListReview; var nMax = [1, 1]; if (arrNew.length == 0 || arrHistory.length == 0) { if (arrNew.length == 0) { nMax[0] = 0; } if (arrHistory.length == 0) { nMax[1] = 0; } } else if (arrNew.length >= arrHistory.length) { nMax[0] = Math.floor(arrNew.length / arrHistory.length); } else if (arrNew.length < arrHistory.length) { nMax[1] = Math.floor(arrHistory.length / arrNew.length); } arrNew = common.randomArray(arrNew); arrHistory = common.randomArray(arrHistory); var Len = arrNew.length + arrHistory.length; TaskList = []; var indexNew = 0, indexHistory = 0; for (var i = 0; i < Len; i++) { for (var j = 0; j < nMax[0]; j++) { if (indexNew < arrNew.length) { arrNew[indexNew].IsNew = true; TaskList.push(arrNew[indexNew++]); } } for (var j = 0; j < nMax[1]; j++) { if (indexHistory < arrHistory.length) { arrHistory[indexHistory].IsHistory = true; TaskList.push(arrHistory[indexHistory++]); } } } that.data.NumberReview = listTaskReview.length; for (var i = 0; i < listTaskReview.length; i++) { listTaskReview[i].IsReview = true; TaskList.push(listTaskReview[i]); } TaskList = updateNumberStr(TaskList); //处理列表 TaskList = formatList(TaskList); that.setData({ NumberNew: arrNew.length, NumberReview: that.data.NumberReview, NumberHistory: arrHistory.length, TaskInfo: TaskList[0], CanUndo: 0, }); listTaskFinished = []; timeStart = new Date(); //起始时间 function formatList(list) { for (var i = 0; i < list.length; i++) { list[i].ContentNew = main.changeStringToView(list[i].Content); } return list; } function replaceStr(data) { var result = ""; if (data.indexOf("d") > 0) { var dayNum = Number(data.replace("d", "")); if (dayNum >= 365) { var year1 = Math.floor(dayNum / 365); var year = year1 + Math.round(10 * (dayNum - year1 * 365) / 365) / 10; result = year + "年"; } else { if (dayNum > 31) { var month1 = Math.floor(dayNum / 30); var month = month1 + Math.round(10 * (dayNum - month1 * 30) / 30) / 10; result = month + "月"; } else result = data.replace("d", "天"); } } else if (data.indexOf("m") > 0) result = "<" + data.replace("m", "分钟"); return result; } function updateNumberStr(list) { for (var i = 0; i < list.length; i++) { if (list[i].Number0) list[i].Number0Str = replaceStr(list[i].Number0); if (list[i].Number1) list[i].Number1Str = replaceStr(list[i].Number1); if (list[i].Number2) list[i].Number2Str = replaceStr(list[i].Number2); if (list[i].Number3) list[i].Number3Str = replaceStr(list[i].Number3); } return list; } }, onShowAnswer: function (e) { var start = e.currentTarget.dataset.start; var that = this; if (!(that.data.NumberNew == 0 && that.data.NumberReview == 0 && that.data.NumberHistory == 0)) { if (start) { that.data.IsShowAnswer[0] = 0; that.data.IsShowAnswer[1] = 0; } else { if (!that.data.IsShowAnswer[0] && !that.data.IsShowAnswer[1]) { that.data.IsShowAnswer[0] = 1; if (TaskList[0].ContentNew.Field[3].length == 0) { that.data.IsShowAnswer[1] = 1; } } else if (that.data.IsShowAnswer[0] && !that.data.IsShowAnswer[1]) { that.data.IsShowAnswer[1] = 1; } } that.setData({ IsShowAnswer: that.data.IsShowAnswer, }); } }, onAddQuestion: function () { wx.navigateTo({ url: './add' }); }, gotoEdit: function () { var that = this; //console.log(res.tapIndex); var list = []; TaskList[0].MiaoguoCardID = TaskList[0].ID; list.push(TaskList[0]); wx.setStorageSync("CardList", list); wx.navigateTo({ url: './add?type=edit&id=' + TaskList[0].MiaoguoCardID, }); }, onFontSize: function () { for (var i = 0; i < arrFontSize.length; i++) { if (arrFontSize[i] == TaskList[0].FontSize) { i++; if (i == arrFontSize.length) i = 0; TaskList[0].FontSize = arrFontSize[i]; break; } } this.setData({ TaskInfo: TaskList[0], }); }, gotoPrev: function () { if (listTaskFinished.length > 0) { var card = listTaskFinished.pop(); //console.log(card); var that = this; var url = "UndoMiaoguoCard?"; url += "ID=" + card.Card.ID; url += "&UserID=" + app.globalData.userInfo.UserID; url += "&IntervalTime=" + card.IntervalTime; url += "&IntervalDay=" + card.Card.IntervalDay; url += "&RepetitionCoefficient=" + card.Card.RepetitionCoefficient; if (card.Card.FirstTime) url += "&FirstTime=" + card.Card.FirstTime; if (card.Card.LastTime) url += "&LastTime=" + card.Card.LastTime; main.getData(url, function (data) { timeStart = new Date(); card.Card.Number0 = card.Number0Old; card.Card.Number0Str = card.Number0StrOld; card.Card.Number1 = card.Number1Old; card.Card.Number1Str = card.Number1StrOld; card.Card.Number2 = card.Number2Old; card.Card.Number2Str = card.Number2StrOld; card.Card.Number3 = card.Number3Old; card.Card.Number3Str = card.Number3StrOld; if (card.IsReviewOld) card.Card.IsReview = card.IsReviewOld; //去除重复 for (var i = 0; i < TaskList.length; i++) { if (TaskList[i].ID == card.Card.ID) { TaskList.splice(i, 1); } } TaskList.unshift(card.Card); var canUndo = 1; if (listTaskFinished.length == 0) canUndo = 0; that.setData({ IsShowAnswer: [0, 0], TaskInfo: TaskList[0], NumberNew: card.NumberNew, NumberReview: card.NumberReview, NumberHistory: card.NumberHistory, CanUndo: canUndo, }); }); wx.showToast({ title: '已返回', icon: 'none', }); } }, gotoNext: function (e) { var that = this; wx.showLoading({ title: '请稍候', }); var btnnumber = e.currentTarget.dataset.btnnumber; var time = e.currentTarget.dataset.time; //处理当前卡片进入历史数组 var finishCard = {}; finishCard.Card = TaskList[0]; finishCard.NumberNew = this.data.NumberNew; finishCard.NumberReview = this.data.NumberReview; finishCard.NumberHistory = this.data.NumberHistory; finishCard.Number0Old = TaskList[0].Number0; finishCard.Number0StrOld = TaskList[0].Number0Str; finishCard.Number1Old = TaskList[0].Number1; finishCard.Number1StrOld = TaskList[0].Number1Str; finishCard.Number2Old = TaskList[0].Number2; finishCard.Number2StrOld = TaskList[0].Number2Str; finishCard.Number3Old = TaskList[0].Number3; finishCard.Number3StrOld = TaskList[0].Number3Str; //若不是搁置 if (btnnumber != "1") { //若是分钟,则进入复习列表 if (time.lastIndexOf("m") == time.length - 1) { var minute = Number(time.substr(0, time.indexOf("m"))); TaskList[0].LimitTime = common.formatTime(common.addDate("n", minute, new Date())); //若是新增,则10m 1d 4d if (TaskList[0].IsNew) { TaskList[0].Number0 = "10m"; TaskList[0].Number0Str = "<10分钟"; delete TaskList[0].Number1; delete TaskList[0].Number1Str; TaskList[0].Number2 = "1d"; TaskList[0].Number2Str = "1天"; TaskList[0].Number3 = "4d"; TaskList[0].Number3Str = "4天"; TaskList[0].FirstTime = null; TaskList[0].LastTime = null; } //若是历史的,则10m 1d else if (TaskList[0].IsHistory) { TaskList[0].Number0 = "10m"; TaskList[0].Number0Str = "<10分钟"; delete TaskList[0].Number1; delete TaskList[0].Number1Str; TaskList[0].Number2 = "1d"; TaskList[0].Number2Str = "1天"; delete TaskList[0].Number3; delete TaskList[0].Number3Str; } finishCard.IsReviewOld = TaskList[0].IsReview; TaskList[0].IsReview = true; TaskList.push(TaskList[0]); } //若是天月年 else { var dayNum = Number(time.substr(0, time.indexOf("d"))); var date = common.addDate("d", dayNum, new Date()); TaskList[0].LimitTime = common.formatTime(date); } } else { wx.showToast({ title: '已搁置', icon: 'none', }); } //修改学习任务个数 var learningType = 0; if (TaskList[0].IsReview) { learningType = 2; } if (TaskList[0].IsNew) { learningType = 0; } else if (TaskList[0].IsHistory) { learningType = 1; } if (btnnumber == "1") { learningType = 3; } finishCard.IntervalTime = time; finishCard.BtnNumber = btnnumber; finishCard.LearningType = learningType; //保存上传 var obj = { ID: TaskList[0].ID, IntervalTime: time, BtnNumber: btnnumber, LearningType: learningType, IsUndo: 0, } this.saveCard(obj, function () { wx.hideLoading(); //添加完成列表,去掉任务列表数据 listTaskFinished.push(finishCard); TaskList.shift(); that.data.NumberNew = 0; that.data.NumberHistory = 0; that.data.NumberReview = 0; var arrTemp = []; for (var i = 0; i < TaskList.length; i++) { if (TaskList[i].IsReview) { if (TaskList[i].LimitTime < common.formatTime(new Date())) { var card = TaskList.splice(i, 1); TaskList.unshift(card[0]); } that.data.NumberReview++; } else if (TaskList[i].IsNew) { that.data.NumberNew++; } else if (TaskList[i].IsHistory) { that.data.NumberHistory++; } } //console.log(JSON.stringify(TaskList[0])); if (that.data.NumberNew == 0 && that.data.NumberReview == 0 && that.data.NumberHistory == 0) { that.setData({ IsShowAnswer: [0, 0], NumberNew: 0, NumberReview: 0, NumberHistory: 0, CanUndo: 1, }); that.setSoundFile(1); } else { //任务没有完成,下一张卡片 that.setData({ IsShowAnswer: [0, 0], TaskInfo: TaskList[0], NumberNew: that.data.NumberNew, NumberReview: that.data.NumberReview, NumberHistory: that.data.NumberHistory, CanUndo: 1, }); if (btnnumber != "1") that.setSoundFile(0); } }); }, saveCard: function (obj, callback) { var url = "UpdateMiaoguoCardToday?"; url += "ID=" + obj.ID; url += "&UserID=" + app.globalData.userInfo.UserID; url += "&IntervalTime=" + obj.IntervalTime; url += "&BtnNumber=" + obj.BtnNumber; url += "&LearningType=" + obj.LearningType; url += "&FontSize=" + TaskList[0].FontSize; var duration = common.diffDate("s", timeStart, new Date()); url += "&Duration=" + duration; url += "&IsUndo=" + obj.IsUndo; if (obj.LastTime) url += "&LastTime=" + obj.LastTime; main.getData(url, function (data) { timeStart = new Date(); callback(); }); }, playSound: function (e) { var that = this; var str = e.currentTarget.dataset.content; var url = ""; if (str.indexOf("英 [") >= 0 || str.indexOf("美 [") >= 0) { str = str.replace("英 [", "["); str = str.replace("美 [", "["); url = e.currentTarget.dataset.soundmark; } else if (e.currentTarget.dataset.soundmark && e.currentTarget.dataset.soundmark != "undefined") { url = e.currentTarget.dataset.soundmark; } else { url = app.globalData.audioUrlBaidu; url = url.replace("[token]", app.globalData.BaiduToken); url = url.replace("[word]", str); } innerAudioContext2.src = url; innerAudioContext2.play(); var fieldid = e.currentTarget.dataset.fieldid; var content = TaskList[0].ContentNew.Field[fieldid]; var selectIndex = 0; for (var i = 0; i < content.length; i++) { if (content[i].Type == 'sound') { if (content[i].Content == e.currentTarget.dataset.content) { content[i].SoundImageName = "gif"; selectIndex = i; break; } } } that.setData({ TaskInfo: TaskList[0], }); setTimeout(function () { content[selectIndex].SoundImageName = "png"; TaskList[0].ContentNew.Field[fieldid] = content; that.setData({ TaskInfo: TaskList[0], }); }, 2000); }, getTaskTime: function () { var that = this; var url = "GetMiaoguoTaskTime?"; url += "UserID=" + app.globalData.userInfo.UserID; main.getData(url, function (data) { if (data) { var duration = common.getMinuteSecond(data.Duration, true); var speed1 = Math.round(100 * data.Count / (data.Duration / 60)) / 100; var speed2 = common.getMinuteSecond(Math.round(data.Duration / data.Count), true); that.setData({ TodayTime: duration, Speed1: speed1 + "张题卡", Speed2: speed2, }); } }); }, showNumberContainner: function () { this.setData({ IsShowNumberInfo: true, }); }, closeNumberContainner: function () { this.setData({ IsShowNumberInfo: false, }); }, onShareAppMessage: function () { return { title: app.globalData.ShareTitle, path: app.globalData.SharePath + '?UserID=' + app.globalData.userInfo.UserID, imageUrl: app.globalData.ShareImage, } }, });