import common from '../../utils/util'; import main from '../../utils/main'; const app = getApp(); const arrFontSize = [46, 68, 108]; var innerAudioContext1; var listTaskFinished = []; //完成的任务 var timeStart; //计算时长 var TaskList = []; var iTimeout = 0; var arrImage = [], arrImage2 = []; var intervalSound = 0, intervalRefresh=0; 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; var height = app.globalData.systemInfo.screenHeight * 2-110; var height2=750; if (app.globalData.IsIPad){ height=960; height2=670; } that.setData({ Containnerheight: height, Containnerheight2: height-height2, IsShowAnswer: [0, 0], CanUndo: 1, }); innerAudioContext1 = wx.createInnerAudioContext(); this.audioCtx=[]; 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 = app.globalData.CardList; if (list && list.length > 0) { for (var i = 0; i < list.length; i++) { if (TaskList[0].MiaoguoCardID == list[i].MiaoguoCardID) { TaskList[0].Content = list[i].Content; TaskList[0].ContentNew = main.changeStringToView(list[i].Content); that.setData({ TaskInfo: TaskList[0], }); app.globalData.CardList=[]; break; } } } } }, onUnload:function(){ clearInterval(intervalSound); }, onPullDownRefresh: function () { this.onShowAnswer({currentTarget:{dataset:{start:true}}}); wx.stopPullDownRefresh(); }, setSoundFile: function (isFinish) {//isFinish=3搁置 =2撤退 =1结束 =0正常 =-1开始 var that = this; var url = "/pages/sounds/"; if (isFinish == 1) { url += "end.mp3"; that.getTaskTime(); } else if (isFinish == 2 || isFinish == 3) { url += "short3.mp3"; } 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 = app.globalData.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); if (TaskList.length > 0) { arrImage = TaskList[0].ContentNew.Images; arrImage2 = TaskList[0].ContentNew.Images2; } 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++) { if (list[i].Content) 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 = []; list.push(TaskList[0]); app.globalData.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 () { clearTimeout(iTimeout); wx.showLoading({ title: '请稍候', mask: true, }); if (listTaskFinished.length > 0) { var card = listTaskFinished.pop(); //console.log(card); var that = this; var url = "UndoMiaoguoCard?"; url += "ID=" + card.Card.MiaoguoCardID; 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) { wx.hideLoading(); 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].MiaoguoCardID == card.Card.MiaoguoCardID) { TaskList.splice(i, 1); } } TaskList.unshift(card.Card); var canUndo = 1; if (listTaskFinished.length == 0) canUndo = 0; arrImage = TaskList[0].ContentNew.Images; arrImage2 = TaskList[0].ContentNew.Images2; that.setData({ IsShowAnswer: [0, 0], TaskInfo: TaskList[0], NumberNew: card.NumberNew, NumberReview: card.NumberReview, NumberHistory: card.NumberHistory, CanUndo: canUndo, }); wx.showToast({ title: '回到上一张', mask: true, image: "../images/universalpic_undo_white_120x90.png", }); }); } that.setSoundFile(2); }, gotoNext: function (e) { var that = this; clearTimeout(iTimeout); wx.showLoading({ title: '请稍候', mask: true, }); 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); } } //修改学习任务个数 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 = { MiaoguoCardID: TaskList[0].MiaoguoCardID, 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 { arrImage = TaskList[0].ContentNew.Images; arrImage2 = TaskList[0].ContentNew.Images2; //任务没有完成,下一张卡片 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(3); wx.showToast({ title: '今天不练', mask: true, image: "../images/universalpic_shelve_white_120x120.png", }); } else that.setSoundFile(0); } }); }, saveCard: function (obj, callback) { var url = "UpdateMiaoguoCardToday?"; url += "ID=" + obj.MiaoguoCardID; 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()); if (obj.btnnumber==1) duration=0; 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") { var soundmark = e.currentTarget.dataset.soundmark; if (soundmark && soundmark.indexOf("http") < 0) { url = app.globalData.audioUrlBaidu; url = url.replace("[token]", app.globalData.BaiduToken); url = url.replace("[word]", soundmark); } else { url = soundmark; } } else { url = app.globalData.audioUrlBaidu; url = url.replace("[token]", app.globalData.BaiduToken); url = url.replace("[word]", str); } var arr = url.split(","); for (var i = 0; i < arr.length; i++) { this.audioCtx.push(wx.createAudioContext('myAudio' + i)); } var index = 0; intervalSound = setInterval(function () { that.audioCtx[index].setSrc(arr[index]); that.audioCtx[index].play(); index++; if (index >= arr.length) { clearInterval(intervalSound); } }, 1000); 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], }); iTimeout = 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, }); wx.setNavigationBarTitle({ title: "报告" }); } }); }, showNumberContainner: function () { this.setData({ IsShowNumberInfo: true, }); }, closeNumberContainner: function () { this.setData({ IsShowNumberInfo: false, }); }, showImage: function (e) { var name = e.currentTarget.dataset.name; wx.previewImage({ current: name, urls: arrImage }); }, onBindError: function (e) { var that = this; var serverUrl = e.currentTarget.dataset.serverurl; var oldTempUrl = e.currentTarget.dataset.name; //console.log("serverUrl1:" + serverUrl); wx.downloadFile({ url: serverUrl, // 仅为示例,并非真实的资源 success(res) { // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容 if (res.statusCode === 200) { //console.log("serverUrl2:" + serverUrl); //console.log(res.tempFilePath); main.saveTempImage(serverUrl, res.tempFilePath); for(var i=0;i