import common from '../../utils/util'; import main from '../../utils/main'; import animation from '../../utils/animation'; import commonBehavior from '../behaviors/commonBehavior'; const Theme=[{ "Name":"DarkColor", "backgroundColor": "#004433", "color":"#C1E1C1", "frontColor": '#ffffff', },{ "Name":"LightColor", "backgroundColor": "#D0ECD3", "color":"#151815", "frontColor": '#000000', } ]; const app = getApp(); Page({ behaviors: [commonBehavior], data: { Words:"", IsShowFirstOpen:true, IsBuilding:false, IsBuildError:false, IsShowLightColor:false, IsShowKeyword:true,//显示关键词 IsShowQuestion:false, IsShowTranslate:false, IsShowSetting:false, IsShowRemind:false, remindAnimation: "", // 翻译弹窗动画类 CurrentQuestionIndex:0, swiperHeight: "526rpx", lastTapTime: 0, // 记录上一次点击的时间,用于检测双击 CountDown:30,//倒计时秒数 }, onLoad: function (options) { let that = this; let words=app.globalData.SelectedWords.join(","); let wordsStr=app.globalData.SelectedWords.join(" "); const IsShowFirstOpen2=wx.getStorageSync('IsShowFirstOpen2'); const IsShowGuideContainer=wx.getStorageSync('IsShowGuideContainer'); if (!IsShowGuideContainer && !IsShowFirstOpen2){ that.setData({ IsShowFirstOpen2:1, }); } else if (IsShowGuideContainer){ that.setData({ IsShowGuideContainer:true, IsShowFirstOpen2:false, }); main.showGuideContainer(that,"#btnQAndA",-124,-370,"pic_ha07",520,5,-2,-20); } let IsShowKeyword=wx.getStorageSync('IsShowKeyword'); if (IsShowKeyword===""){ IsShowKeyword=true; wx.setStorageSync('IsShowKeyword', true); } let IsShowLightColor=wx.getStorageSync('IsShowLightColor'); if (!IsShowLightColor){ IsShowLightColor=false; } that.setData({ Containnerheight: main.getWindowHeight(), Words:words, WordsStr:wordsStr, Level:options.Level, ArticleStyle:options.ArticleStyle, AIVersion:options.AIVersion, OpenType:options.Type,//打开的类型,可能是新用户引导 IsShowLightColor:IsShowLightColor, IsShowKeyword:IsShowKeyword, IsBuildError:false, IsBuilding:false, }); if (options.ID) that.getArticleByID(options.ID); else that.init(options); that.setTheme(); // //测试 // that.setData({ // IsBuilding:true, // }); // that.getChoicenessArticle(); main.checkGenerating(); }, onShow:function(){ main.getPageInfo(); }, getArticleByID:function(id){ let that=this; main.getData('GetYJBDCArticleList?UserID=' + app.globalData.userInfo.UserID+'&ID='+id, function (data) { if (data) { data=data[0]; that.setData({ Words:data.Words, Level:data.Level, ArticleStyle:data.ArticleStyle, CreateTime:data.CreateTime, ID:id, }); let content=data.JSONString; that.updateData(content); } }); }, init:function(options){ let that=this; let interval=0; that.data.CountDown=30; //1.5文章生成时间长 if (that.data.AIVersion=="1.5"){ that.setData({ CountDown:60, }); } interval = setInterval(function(){ that.setData({ CountDown:--that.data.CountDown, }); if (that.data.CountDown<=0) clearInterval(interval); },1200); that.setData({ IsBuilding:true }); app.globalData.Generating=true; let words=app.globalData.SelectedWords.join(","); main.postData('GenerateArticle?UserID='+app.globalData.userInfo.UserID, { Words:words, Level:that.data.Level, ArticleStyle:that.data.ArticleStyle, AIVersion:that.data.AIVersion }, function (data) { app.globalData.Generating=false; if (data){ if (data=="-1"){ that.setData({ IsBuildError:true, CreateTime:common.formatDateCHS(common.formatTime(new Date()),true), }); } else{ that.updateData(data.Content); that.setData({ IsBuilding:false, ID:data.ID, }); } clearInterval(interval); } }); that.getChoicenessArticle(); }, updateReadCount:function(id){ if (id!="MAX") main.getData('UpdateYJBDCArticleReadCount?UserID=' + app.globalData.userInfo.UserID+'&ID='+id, function (data) {}); }, //得到精选文章 getChoicenessArticle:function(){ let that=this; main.getData('GetYJBDCArticleList?IsChoiceness=1', function (data) { if (data) { that.setData({ ChoicenessList:data, }); } }); }, updateData:function(content){ let that=this; //console.log(content); // 添加检查,确保 content 不是 undefined if (!content) { console.error('Content is undefined in updateData'); return; } if (typeof content === 'string') { content = JSON.parse(content); } if (typeof content === 'string') { content = JSON.parse(content); } let hl = that.data.IsShowKeyword ? "highlight" : "nonelight"; // 初始化ArticleEnglishArr数组 content.ArticleEnglishArr = []; for(let i=0; i b.length - a.length); // 创建一个句子的分段数组 let segments = [{ Sentence: sentence, CSS: "" }]; // 对每个单词进行处理 for(let j=0; j lastIndex){ newSegments.push({ Sentence: text.substring(lastIndex, match.index), CSS: "" }); } // 添加匹配的单词(高亮) newSegments.push({ Sentence: match[0], CSS: hl }); lastIndex = match.index + match[0].length; } // 添加最后一个匹配后的文本 if(lastIndex < text.length){ newSegments.push({ Sentence: text.substring(lastIndex), CSS: "" }); } } // 更新分段数组 segments = newSegments; } // 将分段数组添加到ArticleEnglishArr content.ArticleEnglishArr.push(segments); } for(let i=0;i 0) { console.log('双击事件触发'); // 在这里添加双击事件的处理逻辑 // 例如:切换翻译显示状态 this.showData({currentTarget:{dataset:{name:"IsShowTranslate"}}}); } // 更新上一次点击的时间 this.setData({ lastTapTime: currentTime }); }, //生成PDF文件 //访问服务器的GeneratePDF接口,提交this.data.Content数据,获得一个生成好的pdf文件,服务端的代码已经生成好 generatePDF: function(e) { let that = this; //debugger; that.data.Content.Words=that.data.Words; that.data.Content.Level=that.data.Level; that.data.Content.ArticleStyle=that.data.ArticleStyle; that.data.Content.CreateTime=that.data.CreateTime; let url = common.Encrypt("GeneratePDF"); url =app.globalData.serverUrl + url; wx.request({ url: url, method: "POST", data: { Content: that.data.Content, }, responseType: 'arraybuffer', // 确保响应类型为arraybuffer success: function(res) { // 将arraybuffer转为临时文件 const fsm = wx.getFileSystemManager(); let time=common.formatTime(new Date(),"-"); time=common.ReplaceAllString(time,"-",""); time=common.ReplaceAllString(time,":",""); time=common.ReplaceAllString(time," ","_"); time=time.substring(2,time.length-2); const tempFilePath = `${wx.env.USER_DATA_PATH}/语境背单词_${time}.pdf`; try { fsm.writeFileSync( tempFilePath, res.data, 'binary' ); // 直接使用临时文件路径,不再尝试永久保存 console.log('文件已生成:', tempFilePath); // 打开PDF文件预览 wx.openDocument({ filePath: tempFilePath, fileType: 'pdf', showMenu: true, // 显示右上角菜单,可以分享 success: function() { }, fail: function(error) { console.error('打开文档失败:', error); wx.showToast({ title: '打开文件失败', icon: 'none' }); } }); } catch (error) { console.error('写入文件失败:', error); wx.showToast({ title: '写入文件失败', icon: 'none' }); } }, fail: function(err) { console.error('请求GeneratePDF接口失败:', err); wx.showToast({ title: '网络错误,请稍候重试', icon: 'none' }); } }); }, // 处理导航栏返回按钮点击事件 onUnload: function() { if (!this.data.ID || this.data.OpenType=="Guide"){ app.globalData.SelectedWords=[]; wx.navigateBack({ delta: 1, }); } }, onLongPress: function(e) { let that = this; let strType=e.currentTarget.dataset.strtype; let selectedIndex=e.currentTarget.dataset.index; let selectedIndex2=e.currentTarget.dataset.index2; let engSentence,chnSentence; if (strType=="article"){ //console.log("选中的句子索引:", selectedIndex); //console.log("选中的句子:", that.data.Content.ArticleEnglish[selectedIndex]); engSentence=that.data.Content.ArticleEnglish[selectedIndex]; chnSentence=that.data.Content.ArticleChinese[selectedIndex]; } else if (strType=="question"){ engSentence=that.data.Content.Question[selectedIndex].QuestionEnglish; chnSentence=that.data.Content.Question[selectedIndex].QuestionChinese; } else if (strType=="option"){ engSentence=that.data.Content.Question[selectedIndex].OptionsEnglish[selectedIndex2]; chnSentence=that.data.Content.Question[selectedIndex].OptionsChinese[selectedIndex2]; } this.setData({ EnglishSentence:engSentence, ChineseSentence:chnSentence, }); // 使用动画工具函数显示弹窗,并指定显示动画 animation.toggleRemindWithAnimation(this, { showAnimation: 'remind-slide-up' }); }, showRemind:function(e){ animation.toggleRemindWithAnimation(this, { showAnimation: 'remind-slide-down' }); }, goto: function (e) { let that=this; var url=e.currentTarget.dataset.url; wx.navigateTo({ url: url, }); }, catchTouchMove: main.catchTouchMove, onShareAppMessage: function () { return { title: app.globalData.ShareTitle, path: app.globalData.SharePath + '?UserID=' + app.globalData.userInfo.UserID, imageUrl: app.globalData.ShareImage, } }, })