import common from '../../utils/util'; import main from '../../utils/main'; import animation from '../../utils/animation'; const Theme=[{ "Name":"DarkColor", "backgroundColor": "#004433", "color":"#C1E1C1", "frontColor": '#ffffff', },{ "Name":"LightColor", "backgroundColor": "#D0ECD3", "color":"#151815", "frontColor": '#000000', } ]; const app = getApp(); Page({ 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 hiddenhelp=wx.getStorageSync('HiddenArticleFirstOpen'); 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, IsShowFirstOpen:!hiddenhelp, IsShowLightColor:IsShowLightColor, IsShowKeyword:IsShowKeyword, IsBuildError:false, Level:options.Level, ArticleStyle:options.ArticleStyle, IsBuilding:false, }); if (options.ID) that.getArticleByID(options.ID); else that.init(options); that.setTheme(); }, 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; //高中大学文章生成时间长 if (that.data.Level>=2){ 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 }); let words=app.globalData.SelectedWords.join(","); main.postData('GenerateArticle?UserID='+app.globalData.userInfo.UserID, { Words:words, Level:that.data.Level, ArticleStyle:that.data.ArticleStyle }, function (data) { if (data){ if (data=="-1"){ that.setData({ IsBuildError:true, CreateTime:common.formatDateCHS(common.formatTime(new Date()),true), }); } else{ let content=data; that.updateData(content); that.setData({ IsBuilding:false, }); } clearInterval(interval); } }); }, updateData:function(content){ let that=this; //console.log(content); 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(); const tempFilePath = `${wx.env.USER_DATA_PATH}/temp_${Date.now()}.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' }); } }); }, // 处理导航栏返回按钮点击事件 back: function() { if (this.data.IsBuilding) { return; // 如果正在生成文章,不执行返回操作 } if (!this.data.ID){ 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' }); }, onShareAppMessage: function () { return { title: app.globalData.ShareTitle, path: app.globalData.SharePath + '?UserID=' + app.globalData.userInfo.UserID, imageUrl: app.globalData.ShareImage, } }, })