chengjie 7 miesięcy temu
rodzic
commit
4fc141717e
93 zmienionych plików z 1275 dodań i 207 usunięć
  1. 12 5
      app.js
  2. 2 0
      app.json
  3. BIN
      pages/.DS_Store
  4. BIN
      pages/images/.DS_Store
  5. BIN
      pages/images/pic_h04.png
  6. BIN
      pages/images/pic_h05.png
  7. BIN
      pages/images/pic_h06.png
  8. BIN
      pages/images/pic_h07.png
  9. BIN
      pages/images/pic_h08.png
  10. BIN
      pages/images/pic_h09.png
  11. BIN
      pages/images/pic_h10.png
  12. BIN
      pages/images/pic_h11.png
  13. BIN
      pages/images/pic_h12.png
  14. BIN
      pages/images/pic_h13.png
  15. BIN
      pages/images/pic_h14.png
  16. BIN
      pages/images/pic_h15.png
  17. BIN
      pages/images/pic_ha02.png
  18. BIN
      pages/images/pic_ha04.png
  19. BIN
      pages/images/pic_ha05.png
  20. BIN
      pages/images/pic_hb01.png
  21. BIN
      pages/images/pic_hb02.png
  22. BIN
      pages/images/pic_hb03.png
  23. BIN
      pages/images/pic_hb04.png
  24. BIN
      pages/images/pic_hb05.png
  25. BIN
      pages/images/pic_hb06.png
  26. BIN
      pages/images/pic_hb07.png
  27. BIN
      pages/images/pic_hb08.png
  28. BIN
      pages/images/pic_hb09.png
  29. BIN
      pages/images/pic_hb10.png
  30. BIN
      pages/images/pic_hb11.png
  31. BIN
      pages/images/pic_hb12.png
  32. BIN
      pages/images/pic_hb13.png
  33. BIN
      pages/images/pic_hb14.png
  34. BIN
      pages/images/pic_hb15.png
  35. BIN
      pages/images/pic_hb16.png
  36. BIN
      pages/images/pic_hb17.png
  37. BIN
      pages/images/pic_hb18.png
  38. BIN
      pages/images/pic_hb19.png
  39. BIN
      pages/images/pic_hb20.png
  40. BIN
      pages/images/pic_hb21.png
  41. BIN
      pages/images/pic_hb22.png
  42. BIN
      pages/images/pic_hb23.png
  43. BIN
      pages/images/sysIcon_a18.png
  44. BIN
      pages/images/sysIcon_a19.png
  45. BIN
      pages/images/sysIcon_a20.png
  46. BIN
      pages/images/sysIcon_a21.png
  47. BIN
      pages/images/sysIcon_a22.png
  48. BIN
      pages/images/sysIcon_a23.png
  49. BIN
      pages/images/sysIcon_a24.png
  50. BIN
      pages/images/sysIcon_a25.png
  51. BIN
      pages/images/sysIcon_a26.png
  52. BIN
      pages/images/sysIcon_a27.png
  53. BIN
      pages/images/sysIcon_a28.png
  54. BIN
      pages/images/sysIcon_a29.png
  55. BIN
      pages/images/sysIcon_a30.png
  56. BIN
      pages/images/sysIcon_a31.png
  57. BIN
      pages/images/sysIcon_a32.png
  58. BIN
      pages/images/sysIcon_a33.png
  59. BIN
      pages/images/sysIcon_a34.png
  60. BIN
      pages/images/sysIcon_b20.png
  61. 13 3
      pages/index/index.js
  62. 64 64
      pages/main/article.js
  63. 11 16
      pages/main/article.wxml
  64. 15 18
      pages/main/article.wxss
  65. 94 0
      pages/main/articlecategory.js
  66. 8 0
      pages/main/articlecategory.json
  67. 14 0
      pages/main/articlecategory.wxml
  68. 72 0
      pages/main/articlecategory.wxss
  69. 68 0
      pages/main/articlefine.js
  70. 9 0
      pages/main/articlefine.json
  71. 72 0
      pages/main/articlefine.wxml
  72. 239 0
      pages/main/articlefine.wxss
  73. 96 0
      pages/main/help.js
  74. 15 3
      pages/main/help.wxml
  75. 14 0
      pages/main/help.wxss
  76. 62 5
      pages/main/index.js
  77. 19 4
      pages/main/index.wxml
  78. 61 20
      pages/main/index.wxss
  79. 40 9
      pages/main/myarticles.js
  80. 4 1
      pages/main/myarticles.wxml
  81. 14 1
      pages/main/myarticles.wxss
  82. 1 1
      pages/main/ocr.js
  83. 1 0
      pages/main/selectword.js
  84. 40 43
      pages/main/wordsinput.js
  85. 38 8
      pages/main/wordsinput.wxml
  86. 47 3
      pages/main/wordsinput.wxss
  87. 66 0
      pages/test/test.js
  88. 3 0
      pages/test/test.json
  89. 4 0
      pages/test/test.wxml
  90. 31 0
      pages/test/test.wxss
  91. 15 2
      project.private.config.json
  92. 4 1
      utils/main.js
  93. 7 0
      utils/util.js

+ 12 - 5
app.js

@@ -1,7 +1,7 @@
1
 // app.js
1
 // app.js
2
 App({
2
 App({
3
   globalData: {
3
   globalData: {
4
-    Version: "1.0.7",
4
+    Version: "1.1.1",
5
     //IsProduction: true,
5
     //IsProduction: true,
6
     ShareTitle: "阅读理解+答题",
6
     ShareTitle: "阅读理解+答题",
7
     SharePath: "pages/index/index",
7
     SharePath: "pages/index/index",
@@ -34,6 +34,7 @@ App({
34
     ocrReady: false,//
34
     ocrReady: false,//
35
     Generating:false,//生成文章中
35
     Generating:false,//生成文章中
36
     GeneratingStart:false,//生成文章中已经开始
36
     GeneratingStart:false,//生成文章中已经开始
37
+    GenerateConfig:[],//生成文章的配置信息
37
   },
38
   },
38
   onLaunch: function (options) {
39
   onLaunch: function (options) {
39
     let that=this;
40
     let that=this;
@@ -54,10 +55,16 @@ App({
54
       this.globalData.IsAndroid=false;
55
       this.globalData.IsAndroid=false;
55
 
56
 
56
       if (this.globalData.systemInfo.model.indexOf("X") >= 0
57
       if (this.globalData.systemInfo.model.indexOf("X") >= 0
57
-        || this.globalData.systemInfo.model.indexOf("11") >= 0
58
-        || this.globalData.systemInfo.model.indexOf("12") >= 0
59
-        || this.globalData.systemInfo.model.indexOf("13") >= 0 
60
-        || this.globalData.systemInfo.model.indexOf("14") >= 0)
58
+      || this.globalData.systemInfo.model.indexOf("11") >= 0
59
+      || this.globalData.systemInfo.model.indexOf("12") >= 0
60
+      || this.globalData.systemInfo.model.indexOf("13") >= 0 
61
+      || this.globalData.systemInfo.model.indexOf("14") >= 0 
62
+      || this.globalData.systemInfo.model.indexOf("15") >= 0 
63
+      || this.globalData.systemInfo.model.indexOf("16") >= 0
64
+      || this.globalData.systemInfo.model.indexOf("17") >= 0
65
+      || this.globalData.systemInfo.model.indexOf("18") >= 0
66
+      || this.globalData.systemInfo.model.indexOf("19") >= 0 
67
+      || this.globalData.systemInfo.model.indexOf("20") >= 0)
61
         this.globalData.IsIPhoneX=true;
68
         this.globalData.IsIPhoneX=true;
62
     }
69
     }
63
 
70
 

+ 2 - 0
app.json

@@ -9,6 +9,8 @@
9
     "pages/main/ocr",
9
     "pages/main/ocr",
10
     "pages/main/selectword",
10
     "pages/main/selectword",
11
     "pages/main/feedbackinfo",
11
     "pages/main/feedbackinfo",
12
+    "pages/main/articlefine",
13
+    "pages/main/articlecategory",
12
     "pages/main/wordsinput"
14
     "pages/main/wordsinput"
13
   ],
15
   ],
14
   "window": {
16
   "window": {

BIN
pages/.DS_Store


BIN
pages/images/.DS_Store


BIN
pages/images/pic_h04.png


BIN
pages/images/pic_h05.png


BIN
pages/images/pic_h06.png


BIN
pages/images/pic_h07.png


BIN
pages/images/pic_h08.png


BIN
pages/images/pic_h09.png


BIN
pages/images/pic_h10.png


BIN
pages/images/pic_h11.png


BIN
pages/images/pic_h12.png


BIN
pages/images/pic_h13.png


BIN
pages/images/pic_h14.png


BIN
pages/images/pic_h15.png


BIN
pages/images/pic_ha02.png


BIN
pages/images/pic_ha04.png


BIN
pages/images/pic_ha05.png


BIN
pages/images/pic_hb01.png


BIN
pages/images/pic_hb02.png


BIN
pages/images/pic_hb03.png


BIN
pages/images/pic_hb04.png


BIN
pages/images/pic_hb05.png


BIN
pages/images/pic_hb06.png


BIN
pages/images/pic_hb07.png


BIN
pages/images/pic_hb08.png


BIN
pages/images/pic_hb09.png


BIN
pages/images/pic_hb10.png


BIN
pages/images/pic_hb11.png


BIN
pages/images/pic_hb12.png


BIN
pages/images/pic_hb13.png


BIN
pages/images/pic_hb14.png


BIN
pages/images/pic_hb15.png


BIN
pages/images/pic_hb16.png


BIN
pages/images/pic_hb17.png


BIN
pages/images/pic_hb18.png


BIN
pages/images/pic_hb19.png


BIN
pages/images/pic_hb20.png


BIN
pages/images/pic_hb21.png


BIN
pages/images/pic_hb22.png


BIN
pages/images/pic_hb23.png


BIN
pages/images/sysIcon_a18.png


BIN
pages/images/sysIcon_a19.png


BIN
pages/images/sysIcon_a20.png


BIN
pages/images/sysIcon_a21.png


BIN
pages/images/sysIcon_a22.png


BIN
pages/images/sysIcon_a23.png


BIN
pages/images/sysIcon_a24.png


BIN
pages/images/sysIcon_a25.png


BIN
pages/images/sysIcon_a26.png


BIN
pages/images/sysIcon_a27.png


BIN
pages/images/sysIcon_a28.png


BIN
pages/images/sysIcon_a29.png


BIN
pages/images/sysIcon_a30.png


BIN
pages/images/sysIcon_a31.png


BIN
pages/images/sysIcon_a32.png


BIN
pages/images/sysIcon_a33.png


BIN
pages/images/sysIcon_a34.png


BIN
pages/images/sysIcon_b20.png


+ 13 - 3
pages/index/index.js

@@ -8,6 +8,8 @@ Page({
8
   },
8
   },
9
   onLoad: function (options) {
9
   onLoad: function (options) {
10
     let that = this;
10
     let that = this;
11
+    app.globalData.SelectedWords=[];
12
+    app.globalData.OCRWords=[];
11
     if (options) {
13
     if (options) {
12
       if (options.UserID) {
14
       if (options.UserID) {
13
         console.log("UserID:" + options.UserID);
15
         console.log("UserID:" + options.UserID);
@@ -16,6 +18,13 @@ Page({
16
       if (options.goto) {
18
       if (options.goto) {
17
         console.log("goto:" + options.goto);
19
         console.log("goto:" + options.goto);
18
         app.globalData.goto = options.goto;
20
         app.globalData.goto = options.goto;
21
+        if (options.ID)
22
+          app.globalData.goto+="?ID="+options.ID;
23
+        //debugger;
24
+        if (options.Words && options.goto=="selectword"){
25
+          app.globalData.goto="wordsinput?goto="+options.goto;
26
+          app.globalData.OCRWords=options.Words.split(",");
27
+        }
19
       }
28
       }
20
       if (options.SourceID) {
29
       if (options.SourceID) {
21
         console.log("SourceID:" + options.SourceID);
30
         console.log("SourceID:" + options.SourceID);
@@ -42,8 +51,7 @@ Page({
42
     that.setData({
51
     that.setData({
43
       Containnerheight: main.getWindowHeight(),
52
       Containnerheight: main.getWindowHeight(),
44
     });
53
     });
45
-    app.globalData.SelectedWords=[];
46
-    app.globalData.OCRWords=[];
54
+    
47
     this.getUserInfo();
55
     this.getUserInfo();
48
   },
56
   },
49
   //得到用户信息
57
   //得到用户信息
@@ -69,7 +77,8 @@ Page({
69
 
77
 
70
   login: function (param) {
78
   login: function (param) {
71
     let that = this;
79
     let that = this;
72
-
80
+    console.log("app.globalData.systemInfo.screenHeight:" + app.globalData.systemInfo.screenHeight);
81
+    console.log("app.globalData.systemInfo.windowHeight:" + app.globalData.systemInfo.windowHeight);
73
     main.getLocalHost(function () {
82
     main.getLocalHost(function () {
74
       main.postData('YJBDCLogin', {
83
       main.postData('YJBDCLogin', {
75
         Code: param.Code,
84
         Code: param.Code,
@@ -109,6 +118,7 @@ Page({
109
             wx.redirectTo({
118
             wx.redirectTo({
110
               url: '../main/index'
119
               url: '../main/index'
111
             })
120
             })
121
+
112
           //}, 2000);
122
           //}, 2000);
113
         }
123
         }
114
       });
124
       });

+ 64 - 64
pages/main/article.js

@@ -94,6 +94,9 @@ Page({
94
     // that.getChoicenessArticle();
94
     // that.getChoicenessArticle();
95
 
95
 
96
     main.checkGenerating();
96
     main.checkGenerating();
97
+
98
+
99
+    this.audioCtx = wx.createAudioContext('myAudio');
97
   },
100
   },
98
   onShow:function(){
101
   onShow:function(){
99
     main.getPageInfo();
102
     main.getPageInfo();
@@ -131,7 +134,8 @@ Page({
131
     },1200);
134
     },1200);
132
 
135
 
133
     that.setData({
136
     that.setData({
134
-      IsBuilding:true
137
+      IsBuilding:true,
138
+      IsNew:true,
135
     });
139
     });
136
     app.globalData.Generating=true;
140
     app.globalData.Generating=true;
137
     let words=app.globalData.SelectedWords.join(",");
141
     let words=app.globalData.SelectedWords.join(",");
@@ -155,9 +159,9 @@ Page({
155
           that.setData({
159
           that.setData({
156
             IsBuilding:false,
160
             IsBuilding:false,
157
             ID:data.ID,
161
             ID:data.ID,
162
+            IsNew:data.IsNew,
158
           });
163
           });
159
         }
164
         }
160
-        
161
         clearInterval(interval);
165
         clearInterval(interval);
162
       }
166
       }
163
     });
167
     });
@@ -171,7 +175,7 @@ Page({
171
   //得到精选文章
175
   //得到精选文章
172
   getChoicenessArticle:function(){
176
   getChoicenessArticle:function(){
173
     let that=this;
177
     let that=this;
174
-    main.getData('GetYJBDCArticleList?IsChoiceness=1', function (data) {
178
+    main.getData('GetYJBDCArticleList?IsFine=1', function (data) {
175
       if (data) {
179
       if (data) {
176
         that.setData({
180
         that.setData({
177
           ChoicenessList:data,
181
           ChoicenessList:data,
@@ -203,74 +207,45 @@ Page({
203
     
207
     
204
     for(let i=0; i<content.ArticleEnglish.length; i++){
208
     for(let i=0; i<content.ArticleEnglish.length; i++){
205
       // 确保每个句子末尾有空格,避免和下一句紧挨着
209
       // 确保每个句子末尾有空格,避免和下一句紧挨着
206
-      const sentence = content.ArticleEnglish[i] + " ";
207
-      // 按长度从长到短排序单词,确保先匹配较长的词组
208
-      const sortedWords = [...content.FormsOfWords].sort((a, b) => b.length - a.length);
210
+      let sentence = content.ArticleEnglish[i] + " ";
211
+      // 替换所有单引号为双引号,包括对话中的单引号
212
+      sentence = sentence.replace(/(^|[,.]\s+)'([^']+)'/g, '$1"$2"');
209
       
213
       
210
-      // 创建一个句子的分段数组
211
-      let segments = [{
212
-        Sentence: sentence,
213
-        CSS: ""
214
-      }];
214
+      // 将句子按空格分割成单词数组
215
+      let words = sentence.trim().split(/\s+/);
216
+      let wordObjects = [];
215
       
217
       
216
-      // 对每个单词进行处理
217
-      for(let j=0; j<sortedWords.length; j++){
218
-        const word = sortedWords[j];
219
-        // 创建一个新的分段数组,用于存储处理后的结果
220
-        let newSegments = [];
218
+      // 处理每个单词,检查是否需要高亮
219
+      for(let j=0; j<words.length; j++){
220
+        let word = words[j];
221
+        let originalWord = word.replace(/[.,!?;:"'()—\-–—_]/g, ''); // 去除标点符号和特殊字符(包括各种破折号)
222
+        let isHighlighted = false;
221
         
223
         
222
-        // 处理每个现有分段
223
-        for(let k=0; k<segments.length; k++){
224
-          const segment = segments[k];
225
-          
226
-          // 如果当前分段已经被标记为高亮,则不再处理
227
-          if(segment.CSS !== ""){
228
-            newSegments.push(segment);
229
-            continue;
230
-          }
231
-          
232
-          const text = segment.Sentence;
233
-          // 使用正则表达式查找单词边界
234
-          const regex = new RegExp(`\\b${word}\\b`, 'gi');
235
-          let lastIndex = 0;
236
-          let match;
237
-          
238
-          // 查找所有匹配项
239
-          while((match = regex.exec(text)) !== null){
240
-            // 添加匹配前的文本
241
-            if(match.index > lastIndex){
242
-              newSegments.push({
243
-                Sentence: text.substring(lastIndex, match.index),
244
-                CSS: ""
245
-              });
246
-            }
247
-            
248
-            // 添加匹配的单词(高亮)
249
-            newSegments.push({
250
-              Sentence: match[0],
251
-              CSS: hl
252
-            });
253
-            
254
-            lastIndex = match.index + match[0].length;
255
-          }
256
-          
257
-          // 添加最后一个匹配后的文本
258
-          if(lastIndex < text.length){
259
-            newSegments.push({
260
-              Sentence: text.substring(lastIndex),
261
-              CSS: ""
262
-            });
224
+        // 检查单词是否在需要高亮的列表中
225
+        for(let k=0; k<content.FormsOfWords.length; k++){
226
+          if(originalWord.toLowerCase() === content.FormsOfWords[k].toLowerCase()){
227
+            isHighlighted = true;
228
+            break;
263
           }
229
           }
264
         }
230
         }
265
-        // 更新分段数组
266
-        segments = newSegments;
231
+        
232
+        // 添加单词对象到数组
233
+        wordObjects.push({
234
+          Sentence: word,
235
+          CSS: isHighlighted ? hl : "",
236
+          OriginalWord: originalWord
237
+        });
267
       }
238
       }
268
-      // 将分段数组添加到ArticleEnglishArr
269
-      content.ArticleEnglishArr.push(segments);
239
+      
240
+      // 将单词数组添加到ArticleEnglishArr
241
+      content.ArticleEnglishArr.push(wordObjects);
270
     }
242
     }
271
 
243
 
272
     for(let i=0;i<content.Question.length;i++){
244
     for(let i=0;i<content.Question.length;i++){
245
+      console.log("i:"+i);
273
       for(let j=0;j<content.Question[i].OptionsEnglish.length;j++){
246
       for(let j=0;j<content.Question[i].OptionsEnglish.length;j++){
247
+
248
+        content.Question[i].OptionsEnglish[j] = content.Question[i].OptionsEnglish[j].replace(/(^|[,.]\s+)'([^']+)'/g, '$1"$2"');
274
         if (j<4){//选项不能超过4个
249
         if (j<4){//选项不能超过4个
275
           let str=content.Question[i].OptionsChinese[j];
250
           let str=content.Question[i].OptionsChinese[j];
276
           content.Question[i].OptionsChinese[j]=str.substr(2);
251
           content.Question[i].OptionsChinese[j]=str.substr(2);
@@ -474,7 +449,8 @@ Page({
474
   },
449
   },
475
   // 处理导航栏返回按钮点击事件
450
   // 处理导航栏返回按钮点击事件
476
   onUnload: function() {
451
   onUnload: function() {
477
-    if (!this.data.ID || this.data.OpenType=="Guide"){
452
+    if (this.data.IsNew || this.data.OpenType=="Guide"){
453
+      wx.removeStorageSync('IsShowGuideContainer');
478
       app.globalData.SelectedWords=[];
454
       app.globalData.SelectedWords=[];
479
       wx.navigateBack({
455
       wx.navigateBack({
480
         delta: 1,
456
         delta: 1,
@@ -510,6 +486,31 @@ Page({
510
       showAnimation: 'remind-slide-up'
486
       showAnimation: 'remind-slide-up'
511
     });
487
     });
512
   },
488
   },
489
+  selectWord:function(e){
490
+    let that=this;
491
+    let css=e.currentTarget.dataset.css;
492
+    let word=e.currentTarget.dataset.word;
493
+    let originalWord=e.currentTarget.dataset.originalWord || word;
494
+    
495
+    console.log("点击的单词:", originalWord);
496
+    that.playAudio(originalWord);
497
+    
498
+    if (css){
499
+      let list=that.data.Content.FormsOfWords;
500
+      for(let i=0;i<list.length;i++){
501
+        if(list[i].toLowerCase() == originalWord.toLowerCase()){
502
+          console.log(that.data.Content.FormsOfWordsChinese[i]);
503
+        }
504
+      }
505
+    }
506
+  },
507
+  playAudio: function (word) {
508
+    var url = app.globalData.audioUrlBaidu;
509
+    url = url.replace("[token]", app.globalData.BaiduToken);
510
+    url = url.replace("[word]", word);
511
+    this.audioCtx.setSrc(url);
512
+    this.audioCtx.play();
513
+  },
513
   showRemind:function(e){
514
   showRemind:function(e){
514
     animation.toggleRemindWithAnimation(this, {
515
     animation.toggleRemindWithAnimation(this, {
515
       showAnimation: 'remind-slide-down'
516
       showAnimation: 'remind-slide-down'
@@ -526,8 +527,7 @@ Page({
526
   onShareAppMessage: function () {
527
   onShareAppMessage: function () {
527
     return {
528
     return {
528
       title: app.globalData.ShareTitle,
529
       title: app.globalData.ShareTitle,
529
-      path: app.globalData.SharePath + '?UserID=' + app.globalData.userInfo.UserID,
530
-      imageUrl: app.globalData.ShareImage,
530
+      path: app.globalData.SharePath + '?goto=article&ID='+this.data.ID+'&UserID=' + app.globalData.userInfo.UserID,
531
     }
531
     }
532
   },
532
   },
533
 })
533
 })

+ 11 - 16
pages/main/article.wxml

@@ -6,14 +6,13 @@
6
     <!-- 完整文章 -->
6
     <!-- 完整文章 -->
7
     <text class="textArticle" wx:if="{{!IsShowTranslate}}" >
7
     <text class="textArticle" wx:if="{{!IsShowTranslate}}" >
8
       <text bindlongpress="onLongPress" data-strtype="article" data-index="{{index}}" wx:for="{{Content.ArticleEnglishArr}}" wx:key="index" >
8
       <text bindlongpress="onLongPress" data-strtype="article" data-index="{{index}}" wx:for="{{Content.ArticleEnglishArr}}" wx:key="index" >
9
-        <text class="{{itemChild.CSS}}" wx:for="{{item}}" wx:key="index2" wx:for-item="itemChild" wx:for-index="indexChild">{{itemChild.Sentence}}</text>
9
+        <text class="{{itemChild.CSS}}" wx:for="{{item}}" wx:key="index2" wx:for-item="itemChild" wx:for-index="indexChild" bind:tap="selectWord" data-word="{{itemChild.Sentence}}" data-original-word="{{itemChild.OriginalWord}}" data-css="{{itemChild.CSS}}">{{itemChild.Sentence}} </text>
10
       </text>
10
       </text>
11
     </text>
11
     </text>
12
     <!-- 有翻译文章 -->
12
     <!-- 有翻译文章 -->
13
     <view class="textArticle FlexColumn" wx:if="{{IsShowTranslate}}">
13
     <view class="textArticle FlexColumn" wx:if="{{IsShowTranslate}}">
14
       <view wx:for="{{Content.ArticleEnglishArr}}" wx:key="index" class="textArticle">
14
       <view wx:for="{{Content.ArticleEnglishArr}}" wx:key="index" class="textArticle">
15
-        <!-- <rich-text class="textArticle" nodes="{{item}}"></rich-text> -->
16
-        <text  class="{{itemChild.CSS}}" wx:for="{{item}}" wx:key="index2" wx:for-item="itemChild" wx:for-index="indexChild">{{itemChild.Sentence}}</text>
15
+        <text class="{{itemChild.CSS}}" wx:for="{{item}}" wx:key="index2" wx:for-item="itemChild" wx:for-index="indexChild" bind:tap="selectWord" data-word="{{itemChild.Sentence}}" data-original-word="{{itemChild.OriginalWord}}" data-css="{{itemChild.CSS}}">{{itemChild.Sentence}} </text>
17
         <view class="textArticleTranslate">{{Content.ArticleChinese[index]}}</view>
16
         <view class="textArticleTranslate">{{Content.ArticleChinese[index]}}</view>
18
         <view class="panelLine" wx:if="{{index<Content.ArticleEnglish.length-1}}"></view>
17
         <view class="panelLine" wx:if="{{index<Content.ArticleEnglish.length-1}}"></view>
19
       </view>
18
       </view>
@@ -161,21 +160,17 @@
161
     <image src="../images/sysIcon_b08.gif" class="sysIcon_b08"></image>
160
     <image src="../images/sysIcon_b08.gif" class="sysIcon_b08"></image>
162
     <view class="panelBuilding11 FlexColumn">
161
     <view class="panelBuilding11 FlexColumn">
163
       <text class="text08" wx:if="{{CountDown>0}}">生成中…{{CountDown}}秒</text>
162
       <text class="text08" wx:if="{{CountDown>0}}">生成中…{{CountDown}}秒</text>
164
-      <text class="text08" wx:if="{{CountDown==0 && AIVersion=='1.0'}}">生成中…差一点,就快好了</text>
165
-      <text class="text08" wx:if="{{CountDown==0 && AIVersion=='1.5'}}">再等一等,就差一点点了</text>
166
-      <text class="text09">用1.0生成文章平均30秒,用1.5平均60秒,\n这是由于1.5的单词水平更高、思考更为深入。</text>
163
+      <text class="text08" wx:if="{{CountDown==0}}">生成中…差一点,就快好了</text>
164
+      <text class="text09">生成后会通知您,等待时可看看下面这些范文</text>
167
     </view>
165
     </view>
168
     <view class="panelBuilding12 FlexColumn">
166
     <view class="panelBuilding12 FlexColumn">
169
-      <text class="text10">生成后会通知您,等待时可看看这些范文:</text>
170
-      <view class="panelBuilding121 FlexRow">
171
-        <view class="panelBuilding1211 FlexRow" wx:for="{{ChoicenessList}}" wx:key="index" catch:tap="goto" data-url="./article?ID={{item.ID}}">
172
-          <image src="../images/sysIcon_a17.png" class="sysIcon_a17"></image>
173
-          <view class="panelBuilding12111 FlexColumn">
174
-            <view class="panelBuilding1211text">{{item.ArticleTitle}}</view>
175
-            <view class="panelBuilding1211text2">{{item.LevelStr}} {{item.ArticleStyle}}</view>
176
-          </view>
177
-        </view>
167
+      <view class="panelBuilding121 FlexRow" wx:for="{{ChoicenessList}}" wx:key="index" catch:tap="goto" data-url="./article?ID={{item.ID}}" wx:if="{{item.IsRecommend}}">
168
+        <image src="../images/sysIcon_a17.png" class="sysIcon_a17"></image>
169
+        <view class="panelBuilding121text">{{item.ArticleTitle}}</view>
178
       </view>
170
       </view>
171
+      <view class="panelBuilding121 panelBuilding122 FlexColumn" catch:tap="goto" data-url="articlefine">更多精选</view>
179
     </view>
172
     </view>
180
   </view>
173
   </view>
181
-</view>
174
+</view>
175
+
176
+<audio hidden='true' src="{{AudioSrc}}" id="myAudio"></audio>

+ 15 - 18
pages/main/article.wxss

@@ -712,33 +712,30 @@ pages .LightColor{
712
 }
712
 }
713
 
713
 
714
 .panelBuilding121{
714
 .panelBuilding121{
715
-  flex-wrap: wrap;
716
-  margin-top: 30rpx;
715
+  width:650rpx;
716
+  height: 70rpx;
717
+  background: rgba(0,0,0,0.25);
718
+  border-radius: 35rpx;
719
+  margin: 0 0 20rpx 0;
720
+}
721
+.panelBuilding122{
722
+  width:252rpx;
723
+  height: 70rpx;
724
+  font-size: 28rpx;
725
+  font-weight: 400;
717
 }
726
 }
718
 
727
 
719
-.panelBuilding1211{
720
-  width: 300rpx;
721
-  min-height: 140rpx;
722
-  margin: 0 25rpx 20rpx 25rpx;
723
-  align-items: flex-start;
724
-}
725
 .sysIcon_a17{
728
 .sysIcon_a17{
726
   width:30rpx;
729
   width:30rpx;
727
   height:30rpx;
730
   height:30rpx;
728
   margin: 5rpx 20rpx 0 0;
731
   margin: 5rpx 20rpx 0 0;
729
 }
732
 }
730
-.panelBuilding12111{
731
-  align-items: flex-start;
732
-}
733
-.panelBuilding1211text{
734
-  width:250rpx;
733
+.panelBuilding121text{
734
+  width:550rpx;
735
   font-size: 28rpx;
735
   font-size: 28rpx;
736
   font-weight: 400;
736
   font-weight: 400;
737
-}
738
-.panelBuilding1211text2{
739
-  font-size: 24rpx;
740
-  font-weight: 400;
741
-  margin-top: 10rpx;
737
+  overflow: hidden;
738
+  white-space: nowrap;
742
 }
739
 }
743
 
740
 
744
 .panelGuideContainer .pic_ha07{
741
 .panelGuideContainer .pic_ha07{

+ 94 - 0
pages/main/articlecategory.js

@@ -0,0 +1,94 @@
1
+import common from '../../utils/util';
2
+import main from '../../utils/main';
3
+
4
+const app = getApp();
5
+
6
+Page({
7
+  data: {
8
+    ImageUrl:app.globalData.uploadImageUrl,
9
+  },
10
+  onLoad: function (options) {
11
+    let that = this;
12
+    that.setData({
13
+      Containnerheight: main.getWindowHeight(),
14
+    });
15
+    
16
+    wx.setNavigationBarTitle({
17
+      title: options.title,
18
+    });
19
+
20
+    that.init(options);
21
+
22
+    main.checkGenerating();
23
+  },
24
+  init:function(options){
25
+    let that = this;
26
+    let list=wx.getStorageSync('ChoicenessList');
27
+    let arr=[];
28
+    let levelArr=[];
29
+    for(let i=0;i<list.length;i++){
30
+      if ((options.level && options.level.indexOf(list[i].LevelStr)>=0) 
31
+      || (options.articlestyle && options.articlestyle==list[i].ArticleStyle)){
32
+        list[i].Words=list[i].Words.split(",").join("   ");
33
+        list[i].IsShow=1;
34
+        arr.push(list[i]);
35
+        let b=false;
36
+        //debugger;
37
+        for(let j=0;j<levelArr.length;j++){
38
+          if (levelArr[j].Name==list[i].LevelStr){
39
+            b=true;
40
+            break;
41
+          }
42
+        }
43
+        if (!b){
44
+          let obj={};
45
+          obj.Name=list[i].LevelStr;
46
+          obj.CSS="";
47
+          levelArr.push(obj);
48
+        }
49
+      }
50
+    }
51
+    levelArr=common.sort(levelArr,"ASC","Name","String");
52
+    levelArr.unshift({Name:"LATEST",CSS:"Selected",CSS2:"btn0"});
53
+    //debugger;
54
+    that.setData({
55
+      List:arr,
56
+      Level:levelArr,
57
+    });
58
+  },
59
+  filter:function(e){
60
+    let that = this;
61
+    let level=e.currentTarget.dataset.name;
62
+    let list=that.data.List;
63
+    for(let i=0;i<list.length;i++){
64
+      list[i].IsShow=0;
65
+      if (level==list[i].LevelStr || level=="LATEST"){
66
+        list[i].IsShow=1;
67
+      }
68
+    }
69
+    let list2=that.data.Level;
70
+    for(let i=0;i<list2.length;i++){
71
+      list2[i].CSS="";
72
+      if (level==list2[i].Name){
73
+        list2[i].CSS="Selected";
74
+      }
75
+    }
76
+    that.setData({
77
+      List:list,
78
+      Level:list2,
79
+    });
80
+  },
81
+  goto: function (e) {
82
+    let that=this;
83
+    var url=e.currentTarget.dataset.url;
84
+    wx.navigateTo({
85
+      url: url,
86
+    });
87
+  },
88
+  onShareAppMessage: function () {
89
+    return {
90
+      title: app.globalData.ShareTitle,
91
+      path: app.globalData.SharePath + '?goto=articlefine&UserID=' + app.globalData.userInfo.UserID,
92
+    }
93
+  },
94
+})

+ 8 - 0
pages/main/articlecategory.json

@@ -0,0 +1,8 @@
1
+{
2
+  "backgroundColor": "#DAD2C1",
3
+  "navigationBarBackgroundColor": "#DAD2C1",
4
+  "navigationBarTextStyle": "black",
5
+  "backgroundColorTop":"#DAD2C1",
6
+  "backgroundColorBottom":"#DAD2C1",
7
+  "usingComponents": {}
8
+}

+ 14 - 0
pages/main/articlecategory.wxml

@@ -0,0 +1,14 @@
1
+<view class="container FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
2
+  <view class="panel1 FlexRow">
3
+    <view class="btn btn{{item.CSS}} {{item.CSS2}} FlexRow" wx:for="{{Level}}" bind:tap="filter" data-name="{{item.Name}}">{{item.Name}}</view>
4
+  </view>
5
+  <view class="panel2 FlexColumn"  wx:key="index" wx:for="{{List}}" wx:if="{{item.IsShow}}" bind:tap="goto" data-url="article?ID={{item.ID}}">
6
+    <image mode="aspectFill" lazy-load="true" src="{{ImageUrl}}web/_yjbdc/{{item.ArticleImage}}" class="img"></image>
7
+    <view class="text01">{{item.ArticleTitle}}</view>
8
+    <view class="text02">{{item.LevelStr}} {{item.ArticleStyle}}</view>
9
+    <view class="text03">{{item.ArticleTitleCHN}}</view>
10
+    <view class="text04">单词来源:{{item.WordSource}}</view>
11
+    <view class="text05">{{item.Words}}</view>
12
+  </view>
13
+  <view style="height:100rpx"></view>
14
+</view>

+ 72 - 0
pages/main/articlecategory.wxss

@@ -0,0 +1,72 @@
1
+.container{
2
+  background-color: #DAD2C1;
3
+  color:#2E2E2E;
4
+}
5
+.panel1{
6
+  width: 100%;
7
+  height:98rpx;
8
+  justify-content: flex-start;
9
+}
10
+
11
+.btn{
12
+  height: 58rpx;
13
+  background: #3A3535;
14
+  border-radius: 20rpx;
15
+  padding: 0 20rpx;
16
+  color:#F0F0F0;
17
+  font-size: 24rpx;
18
+  margin-right: 10rpx;
19
+  border: 5rpx solid #3A3535;
20
+}
21
+.btn0{
22
+  margin-left: 30rpx;
23
+}
24
+.btnSelected{
25
+  background: #DAD2C1;
26
+  border: 5rpx solid #3A3535;
27
+  color:#3A3535;
28
+}
29
+
30
+.panel2{
31
+  margin-top: 30rpx;
32
+  width: 690rpx;
33
+  min-height:549rpx;
34
+  background-color: #F0EDE6;
35
+  border-radius: 20rpx;
36
+  justify-content: flex-start;
37
+  align-items: flex-start;
38
+}
39
+
40
+.img{
41
+  width: 100%;
42
+  height:240rpx;
43
+  border-radius: 20rpx 20rpx 0 0;
44
+}
45
+
46
+.text01{
47
+  width: 630rpx;
48
+  margin: 30rpx 0 0 30rpx;
49
+  font-size: 36rpx;
50
+}
51
+.text02{
52
+  margin: 30rpx 0 0 30rpx;
53
+  font-size: 24rpx;
54
+  font-weight: 400;
55
+}
56
+.text03{
57
+  margin: 0 0 0 30rpx;
58
+  font-size: 28rpx;
59
+  font-weight: 400;
60
+}
61
+.text04{
62
+  width: 630rpx;
63
+  margin: 20rpx 0 0 30rpx;
64
+  font-size: 24rpx;
65
+  font-weight: 400;
66
+}
67
+.text05{
68
+  width: 630rpx;
69
+  margin: 0 0 40rpx 30rpx;
70
+  font-size: 24rpx;
71
+  font-weight: 400;
72
+}

+ 68 - 0
pages/main/articlefine.js

@@ -0,0 +1,68 @@
1
+import common from '../../utils/util';
2
+import main from '../../utils/main';
3
+
4
+const app = getApp();
5
+
6
+Page({
7
+  data: {
8
+    ImageUrl:app.globalData.uploadImageUrl,
9
+    IsIPhoneX:app.globalData.IsIPhoneX,
10
+    GradeArr:[
11
+      {Image:"19",Name:"A1 A2",Name2:"小学",BColor:"#EDBF87"},
12
+      {Image:"20",Name:"A2 B1",Name2:"初中",BColor:"#F2ED83"},
13
+      {Image:"21",Name:"B1 B2",Name2:"高中",BColor:"#84D082"},
14
+      {Image:"22",Name:"B2 C1",Name2:"大学",BColor:"#90C0E2"},
15
+    ]
16
+  },
17
+  onLoad: function (options) {
18
+    let that = this;
19
+    
20
+    let ArticleStyleArr=app.globalData.GenerateConfig.ArticleStyle;
21
+    ArticleStyleArr=common.sort(ArticleStyleArr,"ASC","ID","Number");
22
+    that.setData({
23
+      Containnerheight: main.getWindowHeight(),
24
+      ArticleStyleArr:ArticleStyleArr,
25
+    });
26
+    that.getChoicenessArticle();
27
+    main.checkGenerating();
28
+  },
29
+  goto: function (e) {
30
+    let that=this;
31
+    var url=e.currentTarget.dataset.url;
32
+
33
+    if (url=="index"){
34
+      wx.reLaunch({
35
+        url: url,
36
+      });
37
+    }
38
+    else if (url=="guide"){
39
+      wx.setStorageSync('IsShowGuideContainer', true);
40
+      wx.reLaunch({
41
+        url: "index",
42
+      });
43
+    }
44
+    else{
45
+      wx.navigateTo({
46
+        url: url,
47
+      });
48
+    }
49
+  },
50
+  //得到精选文章
51
+  getChoicenessArticle:function(){
52
+    let that=this;
53
+    main.getData('GetYJBDCArticleList?IsFine=1', function (data) {
54
+      if (data) {
55
+        that.setData({
56
+          ChoicenessList:data,
57
+        });
58
+        wx.setStorageSync('ChoicenessList', data);
59
+      }
60
+    });
61
+  },
62
+  onShareAppMessage: function () {
63
+    return {
64
+      title: app.globalData.ShareTitle,
65
+      path: app.globalData.SharePath + '?goto=articlefine&UserID=' + app.globalData.userInfo.UserID,
66
+    }
67
+  },
68
+})

+ 9 - 0
pages/main/articlefine.json

@@ -0,0 +1,9 @@
1
+{
2
+  "navigationBarTitleText":"精选",
3
+  "backgroundColor": "#DAD2C1",
4
+  "navigationBarBackgroundColor": "#DAD2C1",
5
+  "navigationBarTextStyle": "black",
6
+  "backgroundColorTop":"#DAD2C1",
7
+  "backgroundColorBottom":"#DAD2C1",
8
+  "usingComponents": {}
9
+}

+ 72 - 0
pages/main/articlefine.wxml

@@ -0,0 +1,72 @@
1
+<view class="container FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
2
+  <view class="panel1 FlexColumn">
3
+    <swiper class="swiper" autoplay="true" indicator-dots="true"  >
4
+      <swiper-item class="panel1Item" wx:for="{{ChoicenessList}}" wx:key="index" data-index="{{index}}" wx:if="{{item.IsRecommend}}" bind:tap="goto" data-url="article?ID={{item.ID}}">
5
+        <image mode="aspectFill" src="{{ImageUrl}}web/_yjbdc/{{item.ArticleImage}}" class="img"></image>
6
+        <view class="panel1Item1 FlexColumn">
7
+          <view class="panel1Item11 FlexColumn">
8
+            <view class="text1">{{item.LevelStr}} {{item.ArticleStyle}}</view>
9
+            <view class="text2">{{item.ArticleTitleCHN}}</view>
10
+            <view class="text3">{{item.ArticleTitle}}</view>
11
+          </view>
12
+        </view>
13
+      </swiper-item>
14
+    </swiper>
15
+  </view>
16
+  
17
+
18
+  <view class="panelTitle">CEFR</view>
19
+  <view class="panel2 FlexColumn">
20
+    <view class="panel21 FlexRow">
21
+      <view class="panel211 FlexColumn" wx:for="{{GradeArr}}" wx:key="index" style="background-color: {{item.BColor}};" bind:tap="goto" data-url="articlecategory?title={{item.Name2}}&level={{item.Name}}">
22
+        <image src="../images/sysIcon_a{{item.Image}}.png" class="sysIcon_a19"></image>
23
+        <view class="text4">{{item.Name}}</view>
24
+        <view class="text5">{{item.Name2}}</view>
25
+      </view>
26
+    </view>
27
+  </view>
28
+  <view class="panelTitle">LATEST STORIES</view>
29
+  <view class="panel3 FlexColumn">
30
+    <view class="panel3Item FlexRow" wx:for="{{ChoicenessList}}" wx:key="index" wx:if="{{index<4}}" bind:tap="goto" data-url="article?ID={{item.ID}}">
31
+      <view class="panel3ItemLeft FlexColumn">
32
+        <view class="text6">{{item.ArticleTitle}}</view>
33
+        <view>{{item.LevelStr}} {{item.ArticleStyle}}</view>
34
+        <view  class="text7">{{item.ArticleTitleCHN}}</view>
35
+      </view>
36
+      <image mode="aspectFill" src="{{ImageUrl}}web/_yjbdc/{{item.ArticleImage}}" class="img2"></image>
37
+    </view>
38
+    <view class="panel3Item panel3Item0 FlexRow" bind:tap="goto" data-url="guide">
39
+      <view class="panel3ItemLeft FlexColumn">
40
+        <text class="text8">卡在单词输入?\n新手引导带您体验</text>
41
+        <view>New User Guide</view>
42
+      </view>
43
+      <image src="../images/sysIcon_b20.png" class="sysIcon_b20"></image>
44
+    </view>
45
+  </view>
46
+
47
+  <view class="panelTitle">EXPLORE BY TOPIC</view>
48
+  <view class="panel4 FlexRow">
49
+    <view style="width: 100%;height:20rpx"></view>
50
+    <view class="panel4Item FlexColumn" wx:for="{{ArticleStyleArr}}" wx:key="index" bind:tap="goto" data-url="articlecategory?title={{item.Name}}&articlestyle={{item.Name}}">
51
+      <view class="panel4Item1 FlexColumn">
52
+        <image src="../images/sysIcon_a{{22+item.ID}}.png" class="sysIcon_a23"></image>
53
+      </view>
54
+      <view class="text9">{{item.Name}}</view>
55
+      <view class="text10">{{item.Eng}}</view>
56
+    </view>
57
+  </view>
58
+
59
+  <view class="panelFooter FlexColumn">
60
+    <view class="panelFooter1 FlexRow">
61
+      <view class="panelFooterBtn FlexColumn" bind:tap="goto" data-url="index">
62
+        <view>制作</view>
63
+        <view class="panelFooterLine"></view>
64
+      </view>
65
+      <view class="panelFooterBtn FlexColumn" >
66
+        <view>精选</view>
67
+        <view class="panelFooterLine1"></view>
68
+      </view>
69
+    </view>
70
+    <view class="iphone10plus" wx:if="{{IsIPhoneX}}"></view>
71
+  </view>
72
+</view>

+ 239 - 0
pages/main/articlefine.wxss

@@ -0,0 +1,239 @@
1
+.container{
2
+  background-color: #DAD2C1;
3
+  color:#2E2E2E;
4
+}
5
+
6
+.panel1{
7
+  width: 690rpx;
8
+  height:620rpx;
9
+  margin-top: 30rpx;
10
+  border-radius: 40rpx;
11
+  overflow: hidden;
12
+}
13
+.swiper{
14
+  width: 100%;
15
+  height:100%;
16
+}
17
+.panel1Item{
18
+  width: 100%;
19
+}
20
+.img{
21
+  width: 690rpx;
22
+  height:620rpx;
23
+}
24
+
25
+.panel1Item1{
26
+  position: absolute;
27
+  bottom: 0;
28
+  width: 100%;
29
+  min-height: 200rpx;
30
+  background-image: linear-gradient(180deg, rgba(40,40,40,0.30) 0%, rgba(40,40,40,0.90) 100%);
31
+  border-radius: 0 0 40rpx 40rpx;
32
+}
33
+.panel1Item11{
34
+  margin: 30rpx 0 64rpx 40rpx;
35
+  color: #FFFFFF;
36
+  align-items: flex-start;
37
+}
38
+.panel1Item1 .text1{
39
+  font-size: 24rpx;
40
+  text-shadow: 0 3rpx 0 rgba(0,0,0,0.30);
41
+}
42
+.panel1Item1 .text2{
43
+  font-size: 32rpx;
44
+  width: 610rpx;
45
+  text-shadow: 0 3rpx 0 rgba(0,0,0,0.30);
46
+  overflow: hidden;
47
+  white-space: nowrap;
48
+}
49
+.panel1Item1 .text3{
50
+  font-size: 36rpx;
51
+  width: 610rpx;
52
+  text-shadow: 0 3rpx 0 rgba(0,0,0,0.30);
53
+}
54
+.wx-swiper-dot {
55
+  width: 14rpx !important;
56
+  height: 14rpx !important;
57
+  margin-left: 10rpx !important;
58
+  margin-right: 10rpx !important;
59
+}
60
+
61
+.wx-swiper-dot {
62
+  background-color: #858282 !important;
63
+}
64
+
65
+.wx-swiper-dot-active {
66
+  background-color: #DAD2C1 !important;
67
+}
68
+
69
+.panel2{
70
+  width: 100%;
71
+  justify-content: flex-start;
72
+}
73
+.panelTitle{
74
+  align-self: start;
75
+  margin: 80rpx 0 0 60rpx;
76
+  
77
+}
78
+.panel21{
79
+  width: 100%;
80
+  margin-top: 40rpx;
81
+}
82
+.panel211{
83
+  width: 158rpx;
84
+  height:213rpx;
85
+  border-radius: 20rpx;
86
+  font-size: 36rpx;
87
+  position: relative;
88
+  margin: 0 10rpx;
89
+}
90
+.sysIcon_a19{
91
+  width: 30rpx;
92
+  height:30rpx;
93
+  position: absolute;
94
+  top:40rpx;
95
+  left:34rpx;
96
+}
97
+
98
+.panel211 .text4{
99
+  position: absolute;
100
+  top:110rpx;
101
+  left:20rpx;
102
+}
103
+
104
+.panel211 .text5{
105
+  position: absolute;
106
+  top:160rpx;
107
+  left:20rpx;
108
+  font-size:24rpx;
109
+}
110
+
111
+.panel3{
112
+  width: 100%;
113
+  justify-content: flex-start;
114
+  margin-top: 40rpx;
115
+}
116
+
117
+.panel3Item{
118
+  width: 690rpx;
119
+  max-height: 226rpx;
120
+  background: #F0EDE6;
121
+  border-radius: 20rpx;
122
+  margin-bottom: 20rpx;
123
+  justify-content: space-between;
124
+}
125
+
126
+.panel3ItemLeft{
127
+  margin-left: 30rpx;
128
+  font-size: 24rpx;
129
+  align-items: flex-start;
130
+  font-weight: 400;
131
+  justify-content: flex-start;
132
+}
133
+.panel3ItemLeft .text6{
134
+  font-size: 32rpx;
135
+  width: 420rpx;
136
+  height:90rpx;
137
+  margin: 30rpx 0 10rpx 0;
138
+}
139
+.panel3ItemLeft .text7{
140
+  margin:0 0 30rpx 0;
141
+}
142
+
143
+.img2{
144
+  width: 180rpx;
145
+  height:166rpx;
146
+  margin: 30rpx 30rpx 30rpx 0;
147
+  border-radius: 10rpx;
148
+}
149
+
150
+.panel3Item0{
151
+  height:200rpx;
152
+  background-color: #fff;
153
+}
154
+
155
+.panel3ItemLeft .text8{
156
+  margin:62rpx 0 5rpx 0;
157
+  font-size: 28rpx;
158
+  font-weight: 700;
159
+}
160
+
161
+.sysIcon_b20{
162
+  width: 270rpx;
163
+  height:200rpx;
164
+  border-radius: 0 20rpx 20rpx 0;
165
+}
166
+
167
+.panel4{
168
+  width:690rpx;
169
+  min-height: 852rpx;
170
+  border-radius: 20rpx;
171
+  background-color: #F0EDE6;
172
+  margin: 40rpx 0 200rpx 0;
173
+  flex-wrap: wrap;
174
+  justify-content: flex-start;
175
+  align-items: flex-start;
176
+}
177
+.panel4Item{
178
+  width: 230rpx;
179
+  height:203rpx;
180
+}
181
+.panel4Item1{
182
+  width: 60rpx;
183
+  height:60rpx;
184
+  background: #DAD2C1;
185
+  border-radius: 16rpx;
186
+}
187
+
188
+.sysIcon_a23{
189
+  width: 30rpx;
190
+  height:30rpx;
191
+}
192
+
193
+.panel4Item .text9{
194
+  font-size: 28rpx;
195
+  margin-top: 10rpx;
196
+}
197
+
198
+.panel4Item .text10{
199
+  font-size: 24rpx;
200
+  color:#4D4D4D;
201
+  font-weight: 400;
202
+}
203
+
204
+.panelFooter{
205
+  width: 100%;
206
+  background-color: #fff;
207
+  color: #004433;
208
+  position: fixed;
209
+  bottom: 0;
210
+  z-index: 10;
211
+}
212
+
213
+.panelFooter1{
214
+  width:100%;
215
+}
216
+
217
+.panelFooterBtn{
218
+  width: 50%;
219
+  font-size: 36rpx;
220
+  height: 100rpx;
221
+  justify-content: flex-end;
222
+}
223
+.panelFooterLine{
224
+  width: 72rpx;
225
+  height:16rpx;
226
+  margin-top: 9rpx;
227
+}
228
+.panelFooterLine1{
229
+  width: 72rpx;
230
+  height:16rpx;
231
+  margin-top: 9rpx;
232
+  background-color: #004433;
233
+}
234
+
235
+.iphone10plus{
236
+  width:100%;
237
+  height:30rpx;
238
+  background-color: #fff;
239
+}

+ 96 - 0
pages/main/help.js

@@ -5,13 +5,109 @@ const app = getApp();
5
 
5
 
6
 Page({
6
 Page({
7
   data: {
7
   data: {
8
+    scrollTop: 0,
9
+    showReturnBtn: false, // 控制返回顶部按钮的显示/隐藏
8
   },
10
   },
9
   onLoad: function (options) {
11
   onLoad: function (options) {
10
     let that = this;
12
     let that = this;
13
+    //debugger;
14
+    let arr=[];
15
+    for(let i=0;i<24;i++){
16
+      let id=i.toString();
17
+      if (i<10)
18
+        id="0"+id;
19
+      let obj={};
20
+      obj.ID=id;
21
+      
22
+      arr.push(obj);
23
+    }
24
+   
11
     that.setData({
25
     that.setData({
12
       Containnerheight: main.getWindowHeight(),
26
       Containnerheight: main.getWindowHeight(),
27
+      List:arr,
13
     });
28
     });
14
     main.checkGenerating();
29
     main.checkGenerating();
30
+    if (options.ID){
31
+      setTimeout(function(){
32
+        that.handleImageTap({currentTarget:{dataset:{id:options.ID}}});
33
+      },1000);
34
+    }
35
+  },
36
+  // 处理图片点击事件,实现锚点功能
37
+  handleImageTap: function(e) {
38
+    const id = e.currentTarget.dataset.id;
39
+    let targetId="",offsetY=0;
40
+    switch(id) {
41
+      case "02":
42
+        targetId = "img07";
43
+        offsetY=40;
44
+        break;
45
+      case "03":
46
+        targetId = "img09";
47
+        offsetY=210;
48
+        break;
49
+      case "04":
50
+        targetId = "img12";
51
+        offsetY=50;
52
+        break;
53
+      case "05":
54
+        targetId = "img17";
55
+        offsetY=220;
56
+        break;
57
+      case "06":
58
+        targetId = "img21";
59
+        offsetY=-80;
60
+        break;
61
+      default:
62
+        targetId = "";
63
+        offsetY=0;
64
+        break;
65
+    }
66
+    
67
+    // 使用微信小程序的API滚动到目标元素
68
+    wx.createSelectorQuery()
69
+      .select('#' + targetId)
70
+      .boundingClientRect(function(rect){
71
+        if(rect){
72
+          wx.pageScrollTo({
73
+            scrollTop: rect.top+offsetY,
74
+            duration: 300
75
+          });
76
+        }
77
+      })
78
+      .exec();
79
+  },
80
+  returnTop:function(){
81
+    wx.pageScrollTo({
82
+      scrollTop: 0,
83
+      duration: 300
84
+    });
85
+  },
86
+  // 监听页面滚动
87
+  onPageScroll: function(e) {
88
+    // 获取当前的scrollTop
89
+    const scrollTop = e.scrollTop;
90
+    
91
+    // 更新scrollTop数据
92
+    this.setData({
93
+      scrollTop: scrollTop
94
+    });
95
+    
96
+    // 当滚动距离超过一屏(这里以屏幕高度的一半为例)时显示返回顶部按钮
97
+    // 获取系统信息来确定屏幕高度
98
+    const screenHeight = wx.getSystemInfoSync().windowHeight;
99
+    const threshold = screenHeight / 2; // 设置阈值为屏幕高度的一半
100
+    
101
+    // 根据scrollTop决定是否显示返回按钮
102
+    if (scrollTop > threshold && !this.data.showReturnBtn) {
103
+      this.setData({
104
+        showReturnBtn: true
105
+      });
106
+    } else if (scrollTop <= threshold && this.data.showReturnBtn) {
107
+      this.setData({
108
+        showReturnBtn: false
109
+      });
110
+    }
15
   },
111
   },
16
   onShareAppMessage: function () {
112
   onShareAppMessage: function () {
17
     return {
113
     return {

+ 15 - 3
pages/main/help.wxml

@@ -1,4 +1,16 @@
1
-<view class="container FlexColumn" style='min-height:{{Containnerheight}}rpx;' bindtap="onContainerTap">
2
-  <image mode="widthFix" src="../images/pic_h{{item}}.png" class="pic_h04" wx:for='{{["04","05","06","07","08","09","10","11","12","13","14","15"]}}' wx:key="index"></image>
3
-        
1
+<view class="container FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
2
+  <image 
3
+    id="img{{item.ID}}" 
4
+    mode="widthFix" 
5
+    src="../images/pic_hb{{item.ID}}.png" 
6
+    class="pic_h04" 
7
+    wx:for='{{List}}' 
8
+    wx:key="index"
9
+    bindtap="handleImageTap"
10
+    data-id="{{item.ID}}" 
11
+  ></image>
12
+
13
+  <view class="btnReturn FlexColumn" bind:tap="returnTop" wx:if="{{showReturnBtn}}">
14
+    <image src="../images/sysIcon_a18.png" class="sysIcon_a18"></image>
15
+  </view>
4
 </view>
16
 </view>

+ 14 - 0
pages/main/help.wxss

@@ -4,4 +4,18 @@ page{
4
 .pic_h04{
4
 .pic_h04{
5
   width:100%;
5
   width:100%;
6
   height:auto;
6
   height:auto;
7
+}
8
+.btnReturn{
9
+  width:80rpx;
10
+  height:70rpx;
11
+  background: #FFFFFF;
12
+  border: 6rpx solid #2E2E2E;
13
+  border-radius: 10rpx;
14
+  position: fixed;
15
+  right:20rpx;
16
+  bottom:20rpx;
17
+}
18
+.sysIcon_a18{
19
+  width:50rpx;
20
+  height:28rpx;
7
 }
21
 }

+ 62 - 5
pages/main/index.js

@@ -10,6 +10,7 @@ Page({
10
   data: {
10
   data: {
11
     IsShowRemind:false,
11
     IsShowRemind:false,
12
     remindAnimation: "",
12
     remindAnimation: "",
13
+    IsIPhoneX:app.globalData.IsIPhoneX,
13
   },
14
   },
14
   onLoad: function (options) {
15
   onLoad: function (options) {
15
     let that = this;
16
     let that = this;
@@ -17,9 +18,33 @@ Page({
17
       Containnerheight: main.getWindowHeight(),
18
       Containnerheight: main.getWindowHeight(),
18
       Version:app.globalData.Version,
19
       Version:app.globalData.Version,
19
     });
20
     });
21
+    that.initMenu();
22
+
23
+    // setTimeout(function(){
24
+    //   if (!app.globalData.IsProduction){
25
+    //     wx.navigateTo({
26
+    //       url: 'articlefine',
27
+    //     })
28
+    //   }
29
+    // },1000);
30
+
31
+    if (app.globalData.goto){
32
+      wx.navigateTo({
33
+        url: app.globalData.goto,
34
+      });
35
+    }
36
+
37
+    if (app.globalData.systemInfo.windowHeight>700){
38
+      that.setData({
39
+        CanScrollCSS: "panelTop1",
40
+      });
41
+    }
42
+
43
+    that.getBaiduToken();
44
+    
20
   },
45
   },
21
   onShow:function(){
46
   onShow:function(){
22
-    app.globalData.OCRWords=[];
47
+    
23
     this.getData();
48
     this.getData();
24
     main.checkGenerating();
49
     main.checkGenerating();
25
 
50
 
@@ -31,6 +56,13 @@ Page({
31
         IsShowGuideContainer:false,
56
         IsShowGuideContainer:false,
32
       })
57
       })
33
     }
58
     }
59
+
60
+    if (app.globalData.goto){
61
+      app.globalData.goto="";
62
+    }
63
+    else{
64
+      app.globalData.OCRWords=[];
65
+    }
34
   },
66
   },
35
   goto: function (e) {
67
   goto: function (e) {
36
     let that=this;
68
     let that=this;
@@ -41,10 +73,16 @@ Page({
41
         return ;
73
         return ;
42
       }
74
       }
43
     }
75
     }
44
-    
45
-    wx.navigateTo({
46
-      url: url,
47
-    });
76
+    if (url=="articlefine"){
77
+      wx.redirectTo({
78
+        url: url,
79
+      });
80
+    }
81
+    else{
82
+      wx.navigateTo({
83
+        url: url,
84
+      });
85
+    }
48
     that.setData({
86
     that.setData({
49
       IsShowRemind:false,
87
       IsShowRemind:false,
50
     })
88
     })
@@ -73,7 +111,26 @@ Page({
73
     main.showGuideContainer(that,"#txtWordsInput",-5,60,"pic_ha01",196,126);
111
     main.showGuideContainer(that,"#txtWordsInput",-5,60,"pic_ha01",196,126);
74
     wx.setStorageSync('IsShowGuideContainer', true);
112
     wx.setStorageSync('IsShowGuideContainer', true);
75
   },
113
   },
114
+  initMenu:function(){
115
+    let that = this;
116
+    main.getData('GetYJBDCGenerateConfig?UserID=' + app.globalData.userInfo.UserID, function (data) {
117
+      app.globalData.GenerateConfig=data;
118
+    });
119
+  },
76
   catchTouchMove: main.catchTouchMove,
120
   catchTouchMove: main.catchTouchMove,
121
+  getBaiduToken: function () {
122
+    var that = this;
123
+    wx.login({
124
+      success: function (res0) {
125
+        main.getData('GetBaiduToken?ProgramID=' + app.globalData.ProgramID+"&Code="+res0.code, function (data) {
126
+          if (data) {
127
+            app.globalData.BaiduToken=data;
128
+            //console.log("BD:"+data);
129
+          }
130
+        });
131
+      },
132
+    });
133
+  },
77
   onShareAppMessage: function () {
134
   onShareAppMessage: function () {
78
     return {
135
     return {
79
       title: app.globalData.ShareTitle,
136
       title: app.globalData.ShareTitle,

+ 19 - 4
pages/main/index.wxml

@@ -1,5 +1,6 @@
1
-<view class="container FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
2
-  <view class="panelTop FlexColumn">
1
+<view class="container {{CanScrollCSS}} FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
2
+  <view class="panelTop {{CanScrollCSS}} FlexColumn">
3
+    
3
     <view class="panel1 FlexColumn">
4
     <view class="panel1 FlexColumn">
4
       <image src="../images/pic_01.png" class="pic_01"></image>
5
       <image src="../images/pic_01.png" class="pic_01"></image>
5
     </view>
6
     </view>
@@ -31,9 +32,23 @@
31
       </view>
32
       </view>
32
     </view>
33
     </view>
33
   </view>
34
   </view>
35
+  
34
   <view class="panelFooter FlexColumn">
36
   <view class="panelFooter FlexColumn">
35
-    <image src="../images/pic_02.png" class="pic_02"></image>
36
-    <view class="text03">©2025 秒过语境背单词 {{Version}}</view>
37
+    <view class="panelFooter1 FlexColumn">
38
+      <image src="../images/pic_02.png" class="pic_02"></image>
39
+      <view class="text03">©2025 秒过语境背单词 {{Version}}</view>
40
+    </view>
41
+    <view class="panelFooter2 FlexRow">
42
+      <view class="panelFooterBtn FlexColumn" >
43
+        <view>制作</view>
44
+        <view class="panelFooterLine1"></view>
45
+      </view>
46
+      <view class="panelFooterBtn FlexColumn" bind:tap="goto" data-url="articlefine">
47
+        <view>精选</view>
48
+        <view class="panelFooterLine"></view>
49
+      </view>
50
+    </view>
51
+    <view class="iphone10plus" wx:if="{{IsIPhoneX}}"></view>
37
   </view>
52
   </view>
38
 </view>
53
 </view>
39
 
54
 

+ 61 - 20
pages/main/index.wxss

@@ -1,8 +1,10 @@
1
 .panelTop{
1
 .panelTop{
2
   width:100%;
2
   width:100%;
3
+  z-index: 20;
4
+}
5
+.panelTop1{
3
   position: fixed;
6
   position: fixed;
4
   top:0;
7
   top:0;
5
-  z-index: 10;
6
 }
8
 }
7
 
9
 
8
 .panel1{
10
 .panel1{
@@ -61,6 +63,8 @@
61
   margin-left: 120rpx;
63
   margin-left: 120rpx;
62
   font-size: 24rpx;
64
   font-size: 24rpx;
63
   color: #C1E1C1;
65
   color: #C1E1C1;
66
+  position: relative;
67
+  background-color: #004433;
64
 }
68
 }
65
 
69
 
66
 .panel31{
70
 .panel31{
@@ -91,25 +95,6 @@
91
   margin: 0 0 0 10rpx;
95
   margin: 0 0 0 10rpx;
92
 }
96
 }
93
 
97
 
94
-.panelFooter{
95
-  width:100%;
96
-  position: fixed;
97
-  bottom: 0;
98
-}
99
-
100
-.pic_02{
101
-  width:100%;
102
-  height:280rpx;
103
-}
104
-
105
-.text03{
106
-  position: absolute;
107
-  bottom:30rpx;
108
-  left:50rpx;
109
-  font-size: 20rpx;
110
-  color: #544641;
111
-}
112
-
113
 
98
 
114
 .panelMenu{
99
 .panelMenu{
115
   background-color: rgba(26,67,51,0.50);
100
   background-color: rgba(26,67,51,0.50);
@@ -183,4 +168,60 @@
183
 .panelGuideContainer .panelGuideContainerImage{
168
 .panelGuideContainer .panelGuideContainerImage{
184
   width: 610rpx;
169
   width: 610rpx;
185
   height: 338rpx;
170
   height: 338rpx;
171
+}
172
+
173
+
174
+.panelFooter{
175
+  width: 100%;
176
+  background-color: #fff;
177
+  color: #004433;
178
+  position: fixed;
179
+  bottom: 0;
180
+  z-index: 10;
181
+}
182
+
183
+.panelFooter1{
184
+  width:100%;
185
+}
186
+
187
+.panelFooter2{
188
+  width:100%;
189
+  position: relative;
190
+  z-index: 50;
191
+}
192
+
193
+.pic_02{
194
+  width:100%;
195
+  height:280rpx;
196
+}
197
+
198
+.text03{
199
+  position: absolute;
200
+  top:220rpx;
201
+  left:50rpx;
202
+  font-size: 20rpx;
203
+  color: #544641;
204
+}
205
+.panelFooterBtn{
206
+  width: 50%;
207
+  font-size: 36rpx;
208
+  height: 100rpx;
209
+  justify-content: flex-end;
210
+}
211
+.panelFooterLine{
212
+  width: 72rpx;
213
+  height:16rpx;
214
+  margin-top: 9rpx;
215
+}
216
+.panelFooterLine1{
217
+  width: 72rpx;
218
+  height:16rpx;
219
+  margin-top: 9rpx;
220
+  background-color: #004433;
221
+}
222
+
223
+.iphone10plus{
224
+  width:100%;
225
+  height:30rpx;
226
+  background-color: #fff;
186
 }
227
 }

+ 40 - 9
pages/main/myarticles.js

@@ -8,46 +8,60 @@ Page({
8
   data: {
8
   data: {
9
     IsShowRemind:false,
9
     IsShowRemind:false,
10
     IsNew:0,
10
     IsNew:0,
11
+    IsShowID:false,
12
+    IsShowMore:true,
11
   },
13
   },
12
   onLoad: function (options) {
14
   onLoad: function (options) {
13
     let that = this;
15
     let that = this;
14
     that.setData({
16
     that.setData({
15
       Containnerheight: main.getWindowHeight(),
17
       Containnerheight: main.getWindowHeight(),
18
+      UserID:app.globalData.userInfo.UserID,
16
     });
19
     });
17
     main.checkGenerating();
20
     main.checkGenerating();
18
-    that.getData(app.globalData.userInfo.UserID);
21
+    that.getData(that.data.UserID);
19
   },
22
   },
20
   onShow:function(e){
23
   onShow:function(e){
21
     let that=this;
24
     let that=this;
22
     if (that.data.IsNew){
25
     if (that.data.IsNew){
23
       setTimeout(function(){
26
       setTimeout(function(){
24
-        that.getData(app.globalData.userInfo.UserID);
27
+        that.getData(that.data.UserID);
25
       },1000);
28
       },1000);
26
     }
29
     }
27
   },
30
   },
28
-  getData:function(userID){
31
+  getData:function(userID,pageID){
29
     wx.showLoading({
32
     wx.showLoading({
30
       title: '请稍候',
33
       title: '请稍候',
31
     });
34
     });
32
     let that=this;
35
     let that=this;
33
     let url='GetYJBDCArticleList?UserID=' + userID;
36
     let url='GetYJBDCArticleList?UserID=' + userID;
34
-    //debugger;
37
+    if (pageID)
38
+      url+="&PageID="+pageID;
35
     if (that.data.IsNew==1)
39
     if (that.data.IsNew==1)
36
       url+="&IsNew=1";
40
       url+="&IsNew=1";
37
     console.log(url);
41
     console.log(url);
38
     main.getData(url, function (data) {
42
     main.getData(url, function (data) {
39
       wx.hideLoading();
43
       wx.hideLoading();
40
       if (data) {
44
       if (data) {
45
+        if (!pageID)
46
+          that.data.List=[];
41
         for(let i=0;i<data.length;i++){
47
         for(let i=0;i<data.length;i++){
42
             let item=data[i];
48
             let item=data[i];
43
             item.WordsStr=item.Words.split(",").join(" ");
49
             item.WordsStr=item.Words.split(",").join(" ");
50
+            that.data.List.push(item);
44
         }
51
         }
52
+        let isShowMore=true;
53
+        if (that.data.List[0].RowsCount==that.data.List.length)
54
+        isShowMore=false;
45
         that.setData({
55
         that.setData({
46
-          List:data,
56
+          List:that.data.List,
57
+          IsShowMore:isShowMore,
47
         });
58
         });
48
       }
59
       }
49
     });
60
     });
50
   },
61
   },
62
+  getMore:function(e){
63
+    this.getData(this.data.UserID,this.data.List[this.data.List.length-1].ID);
64
+  },
51
   goto: function (e) {
65
   goto: function (e) {
52
     let that=this;
66
     let that=this;
53
     if (e.currentTarget.dataset.readcount===0){
67
     if (e.currentTarget.dataset.readcount===0){
@@ -83,28 +97,45 @@ Page({
83
     const confirm=e.currentTarget.dataset.confirm;
97
     const confirm=e.currentTarget.dataset.confirm;
84
     animation.toggleRemindWithAnimation(this);
98
     animation.toggleRemindWithAnimation(this);
85
     if (confirm=="1") {
99
     if (confirm=="1") {
86
-      main.getData('DeleteYJBDCArticleList?UserID=' + app.globalData.userInfo.UserID+"&ID="+that.data.ID, function (data) {
100
+      main.getData('DeleteYJBDCArticleList?UserID=' + that.data.UserID+"&ID="+that.data.ID, function (data) {
87
          wx.showToast({
101
          wx.showToast({
88
            title: '删除完成',
102
            title: '删除完成',
89
          });
103
          });
90
          that.setData({
104
          that.setData({
91
             IsNew:1,
105
             IsNew:1,
92
          });
106
          });
93
-         that.getData(app.globalData.userInfo.UserID);
107
+         for(let i=0;i<that.data.List.length;i++){
108
+           if (that.data.List[i].ID==that.data.ID){
109
+             that.data.List.splice(i,1);
110
+             break;
111
+           }
112
+         }
113
+         that.setData({
114
+          List:that.data.List,
115
+       });
94
       });
116
       });
95
     }
117
     }
96
   },
118
   },
97
   setGotoID:function(e){
119
   setGotoID:function(e){
98
     let that=this;
120
     let that=this;
99
-    if (app.globalData.userInfo.UserID<4){
121
+    if (app.globalData.userInfo.UserID<4 || app.globalData.userInfo.UserID==11){
100
       wx.showModal({
122
       wx.showModal({
101
         title: '输入用户ID,获得生成的文章',
123
         title: '输入用户ID,获得生成的文章',
102
         content: '',
124
         content: '',
103
         editable:true,
125
         editable:true,
104
         complete: (res) => {
126
         complete: (res) => {
105
           if (res.confirm) {
127
           if (res.confirm) {
106
-            if (res.content)
128
+            if (res.content){
129
+              that.setData({
130
+                UserID:res.content,
131
+              });
107
               that.getData(res.content);
132
               that.getData(res.content);
133
+            }
134
+          }
135
+          else{
136
+            that.setData({
137
+              IsShowID:!that.data.IsShowID,
138
+           });
108
           }
139
           }
109
         }
140
         }
110
       })
141
       })

+ 4 - 1
pages/main/myarticles.wxml

@@ -8,7 +8,8 @@
8
     <view class="panel1 FlexColumn" wx:for="{{List}}" wx:key="index">
8
     <view class="panel1 FlexColumn" wx:for="{{List}}" wx:key="index">
9
       <view class="panel13 FlexRow" bind:tap="goto" data-url="article?ID={{item.ID}}" data-readcount="{{item.ReadCount}}">
9
       <view class="panel13 FlexRow" bind:tap="goto" data-url="article?ID={{item.ID}}" data-readcount="{{item.ReadCount}}">
10
         <view class="panel131 FlexRow" wx:if="{{item.ReadCount==0}}">未读</view>
10
         <view class="panel131 FlexRow" wx:if="{{item.ReadCount==0}}">未读</view>
11
-        <view class="text01" >{{item.CreateTime}}</view>
11
+        <view class="text05" wx:if="{{IsShowID}}">{{item.ID}}</view>
12
+        <view class="text01">{{item.CreateTime}}</view>
12
       </view>
13
       </view>
13
       <view class="panel10 FlexColumn"  bind:tap="goto" data-url="article?ID={{item.ID}}" data-readcount="{{item.ReadCount}}">
14
       <view class="panel10 FlexColumn"  bind:tap="goto" data-url="article?ID={{item.ID}}" data-readcount="{{item.ReadCount}}">
14
         <view class="panel11 FlexRow">
15
         <view class="panel11 FlexRow">
@@ -31,6 +32,8 @@
31
         </view>
32
         </view>
32
       </view>
33
       </view>
33
     </view>
34
     </view>
35
+    <view class="panelPage FlexColumn" bind:tap="getMore" wx:if="{{IsShowMore}}">更多</view>
36
+    <view class="panelPage panelPage2 FlexColumn" wx:if="{{!IsShowMore}}">到底了</view>
34
   </block>
37
   </block>
35
   <view style="height: 100rpx;"></view>
38
   <view style="height: 100rpx;"></view>
36
 </view>
39
 </view>

+ 14 - 1
pages/main/myarticles.wxss

@@ -73,6 +73,9 @@
73
   width: 610rpx;
73
   width: 610rpx;
74
   margin: 20rpx 0;
74
   margin: 20rpx 0;
75
 }
75
 }
76
+.text05{
77
+  margin-right: 20rpx;
78
+}
76
 
79
 
77
 .panelBtn{
80
 .panelBtn{
78
   border-radius: 10rpx;
81
   border-radius: 10rpx;
@@ -103,7 +106,17 @@
103
   width: 20rpx;
106
   width: 20rpx;
104
   height:22rpx;
107
   height:22rpx;
105
 }
108
 }
106
-
109
+.panelPage{
110
+  width:710rpx;
111
+  height:100rpx;
112
+  background: #002F24;
113
+  border-radius: 20rpx;
114
+  font-size: 28rpx;
115
+  color: #C1E1C1;
116
+}
117
+.panelPage2{
118
+  background:none;
119
+}
107
 
120
 
108
 .panelMenu{
121
 .panelMenu{
109
   background-color: rgba(26,67,51,0.50);
122
   background-color: rgba(26,67,51,0.50);

+ 1 - 1
pages/main/ocr.js

@@ -146,6 +146,7 @@ Page({
146
         throw new Error('未识别到有效文字')
146
         throw new Error('未识别到有效文字')
147
       }
147
       }
148
 
148
 
149
+      debugger;
149
       // 6.提取英文单词
150
       // 6.提取英文单词
150
       const engTexts=this.extractEnglishWords(texts);
151
       const engTexts=this.extractEnglishWords(texts);
151
 
152
 
@@ -207,7 +208,6 @@ Page({
207
   extractEnglishWords(texts) {
208
   extractEnglishWords(texts) {
208
     //console.group('英语单词提取');
209
     //console.group('英语单词提取');
209
     const words = new Set();
210
     const words = new Set();
210
-
211
     texts.forEach(item => {
211
     texts.forEach(item => {
212
       const text = item.text;
212
       const text = item.text;
213
       //console.log('处理文本:', text);
213
       //console.log('处理文本:', text);

+ 1 - 0
pages/main/selectword.js

@@ -25,6 +25,7 @@ Page({
25
   onShow:function(e){
25
   onShow:function(e){
26
     let that = this;
26
     let that = this;
27
     let words=app.globalData.OCRWords;
27
     let words=app.globalData.OCRWords;
28
+    debugger;
28
     that.data.Words=[];
29
     that.data.Words=[];
29
     let list=app.globalData.SelectedWords;
30
     let list=app.globalData.SelectedWords;
30
     let count=0;
31
     let count=0;

+ 40 - 43
pages/main/wordsinput.js

@@ -43,6 +43,12 @@ Page({
43
     that.initMenu();
43
     that.initMenu();
44
 
44
 
45
     main.checkGenerating();
45
     main.checkGenerating();
46
+
47
+    if (options.goto=="selectword"){
48
+      wx.navigateTo({
49
+        url: options.goto,
50
+      })
51
+    }
46
   },
52
   },
47
   onShow:function(e){
53
   onShow:function(e){
48
     let that = this;
54
     let that = this;
@@ -96,58 +102,37 @@ Page({
96
         IsShowGuideContainer:true,
102
         IsShowGuideContainer:true,
97
         IsShowGuideRemind:false,
103
         IsShowGuideRemind:false,
98
       });
104
       });
99
-      app.globalData.SelectedWords=["cat","dog","meat","fight","","happy","love","study","cry","flower"];
105
+      app.globalData.SelectedWords=["penguin","asia","mammal","panda","","fish","bird","dolphin","",""];
100
       that.initWords();
106
       that.initWords();
101
       main.showGuideContainer(that,"#txtWord5",134,-238,"pic_ha02",0,2);
107
       main.showGuideContainer(that,"#txtWord5",134,-238,"pic_ha02",0,2);
102
     }
108
     }
103
   },
109
   },
104
   initMenu:function(){
110
   initMenu:function(){
105
     let that = this;
111
     let that = this;
106
-    main.getData('GetYJBDCGenerateConfig?UserID=' + app.globalData.userInfo.UserID, function (data) {
107
-      let GradeArr=data.Level;
108
-      let grade=wx.getStorageSync('Grade');
109
-      if (grade && grade>=0 && grade<=3){
110
-        for(let i=0;i<GradeArr.length;i++){
111
-          GradeArr[i].CSS="";
112
-          if (grade==i)
113
-            GradeArr[i].CSS="Selected";
114
-        }
115
-      }
116
-
117
-      let ArticleStyleArr=data.ArticleStyle;
118
-      let ArticleStyle=wx.getStorageSync('ArticleStyle');
119
-      if (ArticleStyle && ArticleStyle>=0 && ArticleStyle<=12){
120
-        for(let i=0;i<ArticleStyleArr.length;i++){
121
-          ArticleStyleArr[i].CSS="";
122
-          if (ArticleStyle==i)
123
-            ArticleStyleArr[i].CSS="Selected";
124
-        }
125
-      }
126
-
127
-      let AIVersionArr=data.AIVersion;
128
-      let AIVersion=wx.getStorageSync('AIVersion');
129
-      if (AIVersion && AIVersion>=0){
130
-        for(let i=0;i<AIVersionArr.length;i++){
131
-          AIVersionArr[i].CSS="";
132
-          if (AIVersion==i)
133
-            AIVersionArr[i].CSS="Selected";
134
-        }
135
-      }
136
-      that.setData({
137
-        GradeArr:GradeArr,
138
-        ArticleStyleArr:ArticleStyleArr,
139
-        AIVersionArr:AIVersionArr,
112
+    let level=app.globalData.GenerateConfig.Level;
113
+    level[0].CSS="Selected";
114
+    for(let i=1;i<level.length;i++){
115
+      level[i].CSS="";
116
+    }
117
+    let articleStyle=app.globalData.GenerateConfig.ArticleStyle;
118
+    articleStyle[0].CSS="Selected";
119
+    for(let i=1;i<articleStyle.length;i++){
120
+      articleStyle[i].CSS="";
121
+    }
122
+    that.setData({
123
+      GradeArr:level,
124
+      ArticleStyleArr:articleStyle,
125
+      AIVersionArr:app.globalData.GenerateConfig.AIVersion,
140
     });  
126
     });  
141
-    });
142
   },
127
   },
143
   bindKeyInput: function (e) {
128
   bindKeyInput: function (e) {
144
     let that=this;
129
     let that=this;
145
     let id=e.currentTarget.dataset.id;
130
     let id=e.currentTarget.dataset.id;
146
     let word=e.detail.value;
131
     let word=e.detail.value;
147
-
148
-    if (wx.getStorageSync("IsShowGuideContainer") && word.toString().toLowerCase()=="win"){
132
+    const inputWord="smart";
133
+    if (wx.getStorageSync("IsShowGuideContainer") && word.toString().toLowerCase()==inputWord){
149
       that.data.Words[4].Focus=false;
134
       that.data.Words[4].Focus=false;
150
-      that.data.Words[4].Word="win";
135
+      that.data.Words[4].Word=inputWord;
151
       that.setData({
136
       that.setData({
152
         Words:that.data.Words,
137
         Words:that.data.Words,
153
       });
138
       });
@@ -219,7 +204,7 @@ Page({
219
 
204
 
220
           if (wx.getStorageSync("IsShowGuideContainer")){
205
           if (wx.getStorageSync("IsShowGuideContainer")){
221
             
206
             
222
-            main.showGuideContainer(that,"#btnLevel1",75,-70,"pic_ha04",135,167);
207
+            main.showGuideContainer(that,"#btnLevel1",150,-50,"pic_ha04",135,167);
223
           }
208
           }
224
         }
209
         }
225
       });
210
       });
@@ -282,7 +267,6 @@ Page({
282
     let that=this;
267
     let that=this;
283
     const index=e.currentTarget.dataset.index;
268
     const index=e.currentTarget.dataset.index;
284
     const id=e.currentTarget.dataset.id;
269
     const id=e.currentTarget.dataset.id;
285
-    
286
     let arr=this.data.GradeArr;
270
     let arr=this.data.GradeArr;
287
     if (id==1)
271
     if (id==1)
288
       arr=this.data.ArticleStyleArr;
272
       arr=this.data.ArticleStyleArr;
@@ -331,7 +315,14 @@ Page({
331
 
315
 
332
     that.getInputData();
316
     that.getInputData();
333
 
317
 
334
-    if (url=="article"){
318
+    if (url=="article" && app.globalData.Generating){
319
+      animation.toggleRemindWithAnimation(that, {
320
+        remindKey:'IsShowRemindWait',
321
+        showAnimation: 'remind-slide-up'
322
+      });
323
+      return ;
324
+    }
325
+    else if (url=="article"){
335
       let arr=this.data.GradeArr;
326
       let arr=this.data.GradeArr;
336
       for(let i=0;i<arr.length;i++){
327
       for(let i=0;i<arr.length;i++){
337
         if (arr[i].CSS=="Selected"){
328
         if (arr[i].CSS=="Selected"){
@@ -420,7 +411,13 @@ Page({
420
     }
411
     }
421
   },
412
   },
422
   showRemind:function(e){
413
   showRemind:function(e){
423
-    animation.toggleRemindWithAnimation(this);
414
+    let type1="IsShowRemind"
415
+    if (e.currentTarget.dataset.type)
416
+      type1=e.currentTarget.dataset.type;
417
+    animation.toggleRemindWithAnimation(this, {
418
+      remindKey:type1,
419
+      showAnimation: 'remind-slide-down'
420
+    });
424
   },
421
   },
425
   catchTouchMove: main.catchTouchMove,
422
   catchTouchMove: main.catchTouchMove,
426
   onShareAppMessage: function () {
423
   onShareAppMessage: function () {

+ 38 - 8
pages/main/wordsinput.wxml

@@ -73,20 +73,32 @@
73
       <view class="text04">要求</view>
73
       <view class="text04">要求</view>
74
     </view>
74
     </view>
75
     <view class="panelMenu11 FlexColumn">
75
     <view class="panelMenu11 FlexColumn">
76
-      <view class="text04 text05">单词水平</view>
77
-      <view class="panelMenu111 FlexRow">
78
-        <view id="btnLevel{{index}}" class="btn btn{{item.CSS}} FlexRow" wx:for="{{GradeArr}}" wx:key="index" capture-bind:tap="selectBtn" data-id="0" data-index="{{index}}">{{item.Name}}</view>
76
+      <view class="panelMenu11_1 FlexRow">
77
+        <view class="text04 text05">难度水平 CEFR</view>
78
+        <view class="panelMenu11_11 FlexRow" catch:tap="goto" data-url="help?ID=04">
79
+          <image src="../images/sysIcon_a01.png" class="sysIcon_a01"></image>
80
+          <view>怎么选</view>
81
+        </view>
79
       </view>
82
       </view>
83
+      <scroll-view scroll-x="true" class="panelMenu1110">
84
+        <view class="panelMenu112 FlexRow" >
85
+          <view id="btnLevel{{index}}" class="btn5 btn5{{item.CSS}} FlexRow" wx:for="{{GradeArr}}" wx:key="index" capture-bind:tap="selectBtn" data-id="0" data-index="{{index}}">
86
+            <view class="btn41">{{item.Name}}</view>
87
+            <text>{{item.Content}}</text>
88
+          </view>
89
+        </view>
90
+        <view style="width:30rpx;"></view>
91
+      </scroll-view>
80
     </view>
92
     </view>
81
     <view class="panelMenu11 FlexColumn">
93
     <view class="panelMenu11 FlexColumn">
82
-      <view class="text04 text06">主题</view>
94
+      <view class="text04 text06">情节</view>
83
       <scroll-view scroll-x="true" class="panelMenu1110">
95
       <scroll-view scroll-x="true" class="panelMenu1110">
84
         <view class="panelMenu1111 FlexRow">
96
         <view class="panelMenu1111 FlexRow">
85
           <view id="btnArticleStyle{{index}}" class="btn btn{{item.CSS}} FlexRow" wx:for="{{ArticleStyleArr}}" wx:key="index" capture-bind:tap="selectBtn" data-id="1" data-index="{{index}}">{{item.Name}}</view>
97
           <view id="btnArticleStyle{{index}}" class="btn btn{{item.CSS}} FlexRow" wx:for="{{ArticleStyleArr}}" wx:key="index" capture-bind:tap="selectBtn" data-id="1" data-index="{{index}}">{{item.Name}}</view>
86
         </view>
98
         </view>
87
       </scroll-view>
99
       </scroll-view>
88
     </view>
100
     </view>
89
-    <view class="panelMenu11 FlexColumn">
101
+    <!-- <view class="panelMenu11 FlexColumn">
90
       <view class="text04 text05">模型</view>
102
       <view class="text04 text05">模型</view>
91
       <scroll-view scroll-x="true" class="panelMenu1110">
103
       <scroll-view scroll-x="true" class="panelMenu1110">
92
         <view class="panelMenu1111 panelMenu11110 FlexRow" style="width: {{358*(AIVersionArr.length+2)}}rpx;">
104
         <view class="panelMenu1111 panelMenu11110 FlexRow" style="width: {{358*(AIVersionArr.length+2)}}rpx;">
@@ -96,7 +108,7 @@
96
           </view>
108
           </view>
97
         </view>
109
         </view>
98
       </scroll-view>
110
       </scroll-view>
99
-    </view>
111
+    </view> -->
100
     <view id="btnBuild" class="btn2 FlexRow" catch:tap="goto" data-url="article">
112
     <view id="btnBuild" class="btn2 FlexRow" catch:tap="goto" data-url="article">
101
       <image src="../images/sysIcon_b01.png" class="sysIcon_b01"></image>
113
       <image src="../images/sysIcon_b01.png" class="sysIcon_b01"></image>
102
       <view>生成短文</view>
114
       <view>生成短文</view>
@@ -122,7 +134,6 @@
122
 <view wx:if="{{IsShowRemind}}" class="panelRemindParent {{remindAnimation}} container FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
134
 <view wx:if="{{IsShowRemind}}" class="panelRemindParent {{remindAnimation}} container FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
123
   <view class="panelRemind FlexColumn">
135
   <view class="panelRemind FlexColumn">
124
     <image src="../images/sysIcon_b10.png" class="sysIcon_b10"></image>
136
     <image src="../images/sysIcon_b10.png" class="sysIcon_b10"></image>
125
-      
126
     <view class="panelRemind1 FlexRow">
137
     <view class="panelRemind1 FlexRow">
127
       <image src="../images/sysIcon_b09.png" class="sysIcon_b09"></image>
138
       <image src="../images/sysIcon_b09.png" class="sysIcon_b09"></image>
128
       <view>无法拍照</view>
139
       <view>无法拍照</view>
@@ -135,4 +146,23 @@
135
       <view class="btnReind1 FlexColumn" catch:tap="showRemind">知道了</view>
146
       <view class="btnReind1 FlexColumn" catch:tap="showRemind">知道了</view>
136
     </view>
147
     </view>
137
   </view>
148
   </view>
138
-</view>
149
+</view>
150
+
151
+<!-- 稍等片刻 -->
152
+<view wx:if="{{IsShowRemindWait}}" class="panelRemindParent {{remindAnimation}} container FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
153
+  <view class="panelRemind FlexColumn">
154
+    <image src="../images/sysIcon_b10.png" class="sysIcon_b10"></image>
155
+      
156
+    <view class="panelRemind1 FlexRow">
157
+      <image src="../images/sysIcon_b09.png" class="sysIcon_b09"></image>
158
+      <view>稍等片刻</view>
159
+    </view>
160
+    <view class="panelRemind2 FlexColumn">
161
+      <view class="textRemind FlexColumn">
162
+        <text>很抱歉,由于AI系统负荷较高,无法为您同时生成两篇文章。请在上一篇文章生成结束后再继续,感谢您的理解与耐心等待。</text>
163
+        <text class="textRemind2">一篇生产完毕后才能生产下一篇。</text>
164
+      </view>
165
+      <view class="btnReind1 FlexColumn" catch:tap="showRemind" data-type="IsShowRemindWait">知道了</view>
166
+    </view>
167
+  </view>
168
+</view>

+ 47 - 3
pages/main/wordsinput.wxss

@@ -257,6 +257,7 @@
257
 
257
 
258
 .panelMenu1{
258
 .panelMenu1{
259
   width:100%;
259
   width:100%;
260
+  height:1130rpx;
260
   background: #1E1E1E;
261
   background: #1E1E1E;
261
   border-radius: 60rpx 60rpx 0 0;
262
   border-radius: 60rpx 60rpx 0 0;
262
   position: fixed;
263
   position: fixed;
@@ -267,14 +268,28 @@
267
 
268
 
268
 .panelMenu11{
269
 .panelMenu11{
269
   width: 100%;
270
   width: 100%;
271
+  margin-bottom: 30rpx;
270
 }
272
 }
273
+.panelMenu11_1{
274
+  width: 100%;
275
+  justify-content: space-between;
276
+  margin-top: 10rpx;
277
+}
278
+.panelMenu11_11{
279
+  font-size: 24rpx;
280
+  color: #C1E1C1;
281
+  margin: 10rpx 40rpx 0 0;
282
+}
283
+
284
+
285
+
271
 .text04{
286
 .text04{
272
   align-self: start;
287
   align-self: start;
273
   margin: 50rpx 0 0 40rpx;
288
   margin: 50rpx 0 0 40rpx;
274
   font-size: 28rpx;
289
   font-size: 28rpx;
275
 }
290
 }
276
 .text05{
291
 .text05{
277
-  margin: 40rpx 0 0 40rpx;
292
+  margin: 10rpx 0 0 40rpx;
278
 }
293
 }
279
 .text06{
294
 .text06{
280
   margin: 20rpx 0 0 40rpx;
295
   margin: 20rpx 0 0 40rpx;
@@ -287,13 +302,13 @@
287
 }
302
 }
288
 .panelMenu1110{
303
 .panelMenu1110{
289
   width:100%;
304
   width:100%;
290
-  margin: 30rpx 0 -20rpx 20rpx;
305
+  margin: 30rpx 0 -20rpx 0;
291
   white-space: nowrap;
306
   white-space: nowrap;
292
 }
307
 }
293
 .panelMenu1111{
308
 .panelMenu1111{
294
   width:1008rpx;
309
   width:1008rpx;
295
   height:260rpx;
310
   height:260rpx;
296
-  margin-left: 20rpx;
311
+  margin-left: 30rpx;
297
   flex-wrap: wrap;
312
   flex-wrap: wrap;
298
   justify-content: flex-start;
313
   justify-content: flex-start;
299
   align-items: flex-start;
314
   align-items: flex-start;
@@ -301,6 +316,15 @@
301
 .panelMenu11110{
316
 .panelMenu11110{
302
   height:166rpx;
317
   height:166rpx;
303
 }
318
 }
319
+.panelMenu112{
320
+  width: 940rpx;
321
+  height: 320rpx;
322
+  margin:0 30rpx 0 30rpx ;
323
+  flex-direction: column;
324
+  flex-wrap: wrap;
325
+  align-items: flex-start;
326
+  justify-content: flex-start;
327
+}
304
 
328
 
305
 .btn{
329
 .btn{
306
   margin: 0 20rpx 20rpx 0;
330
   margin: 0 20rpx 20rpx 0;
@@ -321,6 +345,8 @@
321
   border-radius: 20rpx;
345
   border-radius: 20rpx;
322
   margin: 60rpx 0;
346
   margin: 60rpx 0;
323
   font-size: 36rpx;
347
   font-size: 36rpx;
348
+  position: fixed;
349
+  bottom:0;
324
 }
350
 }
325
 .btn4{
351
 .btn4{
326
   width: 332rpx;
352
   width: 332rpx;
@@ -328,6 +354,17 @@
328
   margin: 0 20rpx 0 0;
354
   margin: 0 20rpx 0 0;
329
   font-size: 24rpx;
355
   font-size: 24rpx;
330
 }
356
 }
357
+.btn5{
358
+  width: 284rpx;
359
+  height:126rpx;
360
+  margin: 0 0 20rpx 0;
361
+  font-size: 24rpx;
362
+  background: #1E1E1E;
363
+  border: 6rpx solid #303030;
364
+  box-shadow: 0 6rpx 0 0 rgba(0,0,0,0.20);
365
+  border-radius: 20rpx;
366
+  color:#C1E1C1;
367
+}
331
 
368
 
332
 .btnSelected{
369
 .btnSelected{
333
   background: #0D4433;
370
   background: #0D4433;
@@ -336,6 +373,13 @@
336
   color: #C1E1C1;
373
   color: #C1E1C1;
337
 }
374
 }
338
 
375
 
376
+.btn5Selected{
377
+  background: #0D4433;
378
+  border: 6rpx solid #C1E1C1;
379
+  box-shadow: 0 6rpx 0 0 rgba(0,0,0,0.10);
380
+  color: #C1E1C1;
381
+}
382
+
339
 .btn41{
383
 .btn41{
340
   margin: 0 20rpx 0 0;
384
   margin: 0 20rpx 0 0;
341
   font-size: 28rpx;
385
   font-size: 28rpx;

+ 66 - 0
pages/test/test.js

@@ -0,0 +1,66 @@
1
+// pages/test/test.js
2
+Page({
3
+
4
+  /**
5
+   * 页面的初始数据
6
+   */
7
+  data: {
8
+
9
+  },
10
+
11
+  /**
12
+   * 生命周期函数--监听页面加载
13
+   */
14
+  onLoad(options) {
15
+
16
+  },
17
+
18
+  /**
19
+   * 生命周期函数--监听页面初次渲染完成
20
+   */
21
+  onReady() {
22
+
23
+  },
24
+
25
+  /**
26
+   * 生命周期函数--监听页面显示
27
+   */
28
+  onShow() {
29
+
30
+  },
31
+
32
+  /**
33
+   * 生命周期函数--监听页面隐藏
34
+   */
35
+  onHide() {
36
+
37
+  },
38
+
39
+  /**
40
+   * 生命周期函数--监听页面卸载
41
+   */
42
+  onUnload() {
43
+
44
+  },
45
+
46
+  /**
47
+   * 页面相关事件处理函数--监听用户下拉动作
48
+   */
49
+  onPullDownRefresh() {
50
+
51
+  },
52
+
53
+  /**
54
+   * 页面上拉触底事件的处理函数
55
+   */
56
+  onReachBottom() {
57
+
58
+  },
59
+
60
+  /**
61
+   * 用户点击右上角分享
62
+   */
63
+  onShareAppMessage() {
64
+
65
+  }
66
+})

+ 3 - 0
pages/test/test.json

@@ -0,0 +1,3 @@
1
+{
2
+  "usingComponents": {}
3
+}

+ 4 - 0
pages/test/test.wxml

@@ -0,0 +1,4 @@
1
+<!--pages/test/test.wxml-->
2
+<view class="frosted-glass">
3
+  <image src="../images/pic_07.png" class="pic_07"></image>
4
+</view>

+ 31 - 0
pages/test/test.wxss

@@ -0,0 +1,31 @@
1
+/* pages/test/test.wxss */
2
+
3
+.pic_07{
4
+  width: 600rpx;
5
+  height:480rpx;
6
+}
7
+
8
+/* 添加毛玻璃效果容器样式 */
9
+.frosted-glass {
10
+  position: relative;
11
+  width: 600rpx;
12
+  height: 480rpx;
13
+  overflow: hidden;
14
+}
15
+.frosted-glass::before {
16
+  content: "";
17
+  position: absolute;
18
+  top: 0;
19
+  left: 0;
20
+  right: 0;
21
+  bottom: 0;
22
+  background-color: rgba(255, 255, 255, 0.2); /* 半透明白色背景 */
23
+  filter: blur(30px); /* 适度模糊,产生毛玻璃感 */
24
+  z-index: -1;
25
+}
26
+.frosted-glass image {
27
+  position: relative;
28
+  z-index: 1;
29
+  width: 100%;
30
+  height: 100%;
31
+}

+ 15 - 2
project.private.config.json

@@ -1,6 +1,6 @@
1
 {
1
 {
2
   "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
2
   "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
3
-  "projectname": "english_learned_master",
3
+  "projectname": "语境背单词",
4
   "setting": {
4
   "setting": {
5
     "compileHotReLoad": true,
5
     "compileHotReLoad": true,
6
     "urlCheck": false,
6
     "urlCheck": false,
@@ -18,5 +18,18 @@
18
     "checkInvalidKey": true,
18
     "checkInvalidKey": true,
19
     "ignoreDevUnusedFiles": true
19
     "ignoreDevUnusedFiles": true
20
   },
20
   },
21
-  "libVersion": "2.21.4"
21
+  "libVersion": "3.8.11",
22
+  "condition": {
23
+    "miniprogram": {
24
+      "list": [
25
+        {
26
+          "name": "秒过跳转",
27
+          "pathName": "pages/index/index",
28
+          "query": "goto=selectword&Words=notion,pronounce,arbitrary,flourish,rack,sponge,tap,distinct,aggravate,authorize,designate,diffuse,discrete,discrepancy,distil,drastic,elapse,entity,epoch,exempt,exemplify,explicit,exposition,intact,intrigue,irrigation,irritate,jerk,necessitate,negligible,nickel,nominal,norm,notation,notorious,revise,stoop,thrust,adverse,give,off,cavity,ceramic,cereal,crow,cumulative,deviate,embed,engagement,enlighten,installment",
29
+          "scene": null,
30
+          "launchMode": "default"
31
+        }
32
+      ]
33
+    }
34
+  }
22
 }
35
 }

+ 4 - 1
utils/main.js

@@ -190,8 +190,11 @@ function checkGenerating(){
190
             });
190
             });
191
           }
191
           }
192
       }
192
       }
193
-      if (time > 120)
193
+      if (time > 60){
194
+        app.globalData.Generating=false;
195
+        app.globalData.GeneratingStart=false;
194
         clearInterval(intervalGenerate);
196
         clearInterval(intervalGenerate);
197
+      }
195
 
198
 
196
     },1000);
199
     },1000);
197
   }
200
   }

+ 7 - 0
utils/util.js

@@ -498,6 +498,13 @@ function initMonthCalendar(dates, line = 6,isNull=true) {
498
    return n;
498
    return n;
499
 }
499
 }
500
 
500
 
501
+/**
502
+ * 过滤数组中单词的特殊字符
503
+ * @param {Array} words - 需要过滤的单词数组
504
+ * @returns {Array} 返回处理后的数组,只包含字母、单引号、连字符和空格
505
+ * @example
506
+ * filterWordsWithSpecialChars(["hello!", "world@123"]) // 返回 ["hello", "world"]
507
+ */
501
 function filterWordsWithSpecialChars(words) {
508
 function filterWordsWithSpecialChars(words) {
502
   if (!Array.isArray(words)) {
509
   if (!Array.isArray(words)) {
503
     return [];
510
     return [];