chengjie 4 月之前
父节点
当前提交
fe46620222
共有 2 个文件被更改,包括 103 次插入63 次删除
  1. 93 50
      public/mg/yjbdc_articles.html
  2. 10 13
      src/api/yjbdc/yjbdcController.js

+ 93 - 50
public/mg/yjbdc_articles.html

@@ -246,8 +246,13 @@
246
         }
246
         }
247
 
247
 
248
         @keyframes spin {
248
         @keyframes spin {
249
-            0% { transform: rotate(0deg); }
250
-            100% { transform: rotate(360deg); }
249
+            0% {
250
+                transform: rotate(0deg);
251
+            }
252
+
253
+            100% {
254
+                transform: rotate(360deg);
255
+            }
251
         }
256
         }
252
 
257
 
253
         .clear-btn {
258
         .clear-btn {
@@ -336,13 +341,11 @@
336
                 </div>
341
                 </div>
337
                 <!-- 搜索结果列表 -->
342
                 <!-- 搜索结果列表 -->
338
                 <div class="search-results" style="flex: 1; overflow-y: auto; padding: 10px;">
343
                 <div class="search-results" style="flex: 1; overflow-y: auto; padding: 10px;">
339
-                    <div v-if="articles && articles.length > 0" 
340
-                         v-for="(article, index) in articles" 
341
-                         :key="index"
342
-                         @click="selectArticle(article)"
343
-                         style="padding: 10px; margin: 5px 0; background: white; border-radius: 4px; cursor: pointer; transition: background-color 0.2s;"
344
-                         :style="{ backgroundColor: selectedArticle === article ? '#e6f3ff' : 'white' }"
345
-                         class="search-result-item">
344
+                    <div v-if="articles && articles.length > 0" v-for="(article, index) in articles" :key="index"
345
+                        @click="selectArticle(article)"
346
+                        style="padding: 10px; margin: 5px 0; background: white; border-radius: 4px; cursor: pointer; transition: background-color 0.2s;"
347
+                        :style="{ backgroundColor: selectedArticle === article ? '#e6f3ff' : 'white' }"
348
+                        class="search-result-item">
346
                         <div style="font-weight: bold;">文章ID: {{ article.ID }}</div>
349
                         <div style="font-weight: bold;">文章ID: {{ article.ID }}</div>
347
                         <div style="font-size: 12px; color: #666; margin-top: 4px;">
350
                         <div style="font-size: 12px; color: #666; margin-top: 4px;">
348
                             创建时间: {{ article.CreateTime }}
351
                             创建时间: {{ article.CreateTime }}
@@ -354,11 +357,11 @@
354
                             单词表: {{ article.Words }}
357
                             单词表: {{ article.Words }}
355
                         </div>
358
                         </div>
356
                         <div style="font-size: 12px; color: #666;">
359
                         <div style="font-size: 12px; color: #666;">
357
-                            是否精选: {{ article.IsFine=="1"?"是":"" }}
360
+                            是否精选: {{ article.IsFine ? "是" : "否" }}
358
                         </div>
361
                         </div>
359
                     </div>
362
                     </div>
360
-                    <div v-else-if="articles && articles.length === 0" 
361
-                         style="text-align: center; color: #999; padding: 20px;">
363
+                    <div v-else-if="articles && articles.length === 0"
364
+                        style="text-align: center; color: #999; padding: 20px;">
362
                         未找到相关文章
365
                         未找到相关文章
363
                     </div>
366
                     </div>
364
                 </div>
367
                 </div>
@@ -377,17 +380,24 @@
377
                     <span class="json-key">是否精选:</span>
380
                     <span class="json-key">是否精选:</span>
378
                     <span class="json-number editable" @dblclick="editValue(selectedArticle, 'IsFine', 'IsFine')">
381
                     <span class="json-number editable" @dblclick="editValue(selectedArticle, 'IsFine', 'IsFine')">
379
                         <template v-if="editingKey === 'IsFine'">
382
                         <template v-if="editingKey === 'IsFine'">
380
-                            <input type="number" class="json-editor-input" v-model.number="selectedArticle.IsFine"
381
-                                @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
383
+                            <label style="margin-right: 10px;">
384
+                                <input type="radio" v-model.number="selectedArticle.IsFine" :value="1"
385
+                                    @change="finishEdit"> 是
386
+                            </label>
387
+                            <label>
388
+                                <input type="radio" v-model.number="selectedArticle.IsFine" :value="0"
389
+                                    @change="finishEdit"> 否
390
+                            </label>
382
                         </template>
391
                         </template>
383
                         <template v-else>
392
                         <template v-else>
384
-                            {{ selectedArticle.IsFine }}
393
+                            {{ selectedArticle.IsFine == 1 || selectedArticle.IsFine == "1" ? "是" : "否" }}
385
                         </template>
394
                         </template>
386
                     </span>
395
                     </span>
387
                 </div>
396
                 </div>
388
                 <div class="json-node">
397
                 <div class="json-node">
389
                     <span class="json-key">文章英文标题:</span>
398
                     <span class="json-key">文章英文标题:</span>
390
-                    <span class="json-string editable" @dblclick="editValue(selectedArticle, 'ArticleTitle', 'ArticleTitle')">
399
+                    <span class="json-string editable"
400
+                        @dblclick="editValue(selectedArticle, 'ArticleTitle', 'ArticleTitle')">
391
                         <template v-if="editingKey === 'ArticleTitle'">
401
                         <template v-if="editingKey === 'ArticleTitle'">
392
                             <input type="text" class="json-editor-input" v-model="selectedArticle.ArticleTitle"
402
                             <input type="text" class="json-editor-input" v-model="selectedArticle.ArticleTitle"
393
                                 @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
403
                                 @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
@@ -399,7 +409,8 @@
399
                 </div>
409
                 </div>
400
                 <div class="json-node">
410
                 <div class="json-node">
401
                     <span class="json-key">文章中文标题:</span>
411
                     <span class="json-key">文章中文标题:</span>
402
-                    <span class="json-string editable" @dblclick="editValue(selectedArticle, 'ArticleTitleCHN', 'ArticleTitleCHN')">
412
+                    <span class="json-string editable"
413
+                        @dblclick="editValue(selectedArticle, 'ArticleTitleCHN', 'ArticleTitleCHN')">
403
                         <template v-if="editingKey === 'ArticleTitleCHN'">
414
                         <template v-if="editingKey === 'ArticleTitleCHN'">
404
                             <input type="text" class="json-editor-input" v-model="selectedArticle.ArticleTitleCHN"
415
                             <input type="text" class="json-editor-input" v-model="selectedArticle.ArticleTitleCHN"
405
                                 @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
416
                                 @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
@@ -411,7 +422,8 @@
411
                 </div>
422
                 </div>
412
                 <div class="json-node">
423
                 <div class="json-node">
413
                     <span class="json-key">文章图片名称:</span>
424
                     <span class="json-key">文章图片名称:</span>
414
-                    <span class="json-string editable" @dblclick="editValue(selectedArticle, 'ArticleImage', 'ArticleImage')">
425
+                    <span class="json-string editable"
426
+                        @dblclick="editValue(selectedArticle, 'ArticleImage', 'ArticleImage')">
415
                         <template v-if="editingKey === 'ArticleImage'">
427
                         <template v-if="editingKey === 'ArticleImage'">
416
                             <input type="text" class="json-editor-input" v-model="selectedArticle.ArticleImage"
428
                             <input type="text" class="json-editor-input" v-model="selectedArticle.ArticleImage"
417
                                 @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
429
                                 @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
@@ -423,10 +435,12 @@
423
                 </div>
435
                 </div>
424
                 <div class="json-node">
436
                 <div class="json-node">
425
                     <span class="json-key">创建时间:</span>
437
                     <span class="json-key">创建时间:</span>
426
-                    <span class="json-string editable" @dblclick="editValue(selectedArticle, 'CreateTime', 'CreateTime')">
438
+                    <span class="json-string editable"
439
+                        @dblclick="editValue(selectedArticle, 'CreateTime', 'CreateTime')">
427
                         <template v-if="editingKey === 'CreateTime'">
440
                         <template v-if="editingKey === 'CreateTime'">
428
-                            <input type="text" disabled="true" class="json-editor-input" v-model="selectedArticle.CreateTime"
429
-                                @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
441
+                            <input type="text" disabled="true" class="json-editor-input"
442
+                                v-model="selectedArticle.CreateTime" @blur="finishEdit" @keyup.enter="finishEdit"
443
+                                v-focus>
430
                         </template>
444
                         </template>
431
                         <template v-else>
445
                         <template v-else>
432
                             "{{ selectedArticle.CreateTime }}"
446
                             "{{ selectedArticle.CreateTime }}"
@@ -435,23 +449,26 @@
435
                 </div>
449
                 </div>
436
                 <div class="json-node">
450
                 <div class="json-node">
437
                     <span class="json-key">英语文章:</span>
451
                     <span class="json-key">英语文章:</span>
438
-                    <span class="json-string editable" @dblclick="editValue(selectedArticle, 'ArticleStart', 'ArticleStart')">
452
+                    <span class="json-string editable"
453
+                        @dblclick="editValue(selectedArticle, 'ArticleStart', 'ArticleStart')">
439
                         <template v-if="editingKey === 'ArticleStart'">
454
                         <template v-if="editingKey === 'ArticleStart'">
440
-                            <input type="text" disabled="true" class="json-editor-input" v-model="selectedArticle.ArticleStart"
441
-                                @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
455
+                            <input type="text" disabled="true" class="json-editor-input"
456
+                                v-model="selectedArticle.ArticleStart" @blur="finishEdit" @keyup.enter="finishEdit"
457
+                                v-focus>
442
                         </template>
458
                         </template>
443
                         <template v-else>
459
                         <template v-else>
444
                             "{{ selectedArticle.ArticleStart }}"
460
                             "{{ selectedArticle.ArticleStart }}"
445
                         </template>
461
                         </template>
446
                     </span>
462
                     </span>
447
                 </div>
463
                 </div>
448
-               
464
+
449
                 <div class="json-node">
465
                 <div class="json-node">
450
                     <span class="json-key">用户ID:</span>
466
                     <span class="json-key">用户ID:</span>
451
                     <span class="json-number editable" @dblclick="editValue(selectedArticle, 'UserID', 'UserID')">
467
                     <span class="json-number editable" @dblclick="editValue(selectedArticle, 'UserID', 'UserID')">
452
                         <template v-if="editingKey === 'UserID'">
468
                         <template v-if="editingKey === 'UserID'">
453
-                            <input type="number" disabled="true" class="json-editor-input" v-model.number="selectedArticle.UserID"
454
-                                @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
469
+                            <input type="number" disabled="true" class="json-editor-input"
470
+                                v-model.number="selectedArticle.UserID" @blur="finishEdit" @keyup.enter="finishEdit"
471
+                                v-focus>
455
                         </template>
472
                         </template>
456
                         <template v-else>
473
                         <template v-else>
457
                             {{ selectedArticle.UserID }}
474
                             {{ selectedArticle.UserID }}
@@ -460,10 +477,12 @@
460
                 </div>
477
                 </div>
461
                 <div class="json-node">
478
                 <div class="json-node">
462
                     <span class="json-key">生成秒数:</span>
479
                     <span class="json-key">生成秒数:</span>
463
-                    <span class="json-number editable" @dblclick="editValue(selectedArticle, 'GenerateTime', 'GenerateTime')">
480
+                    <span class="json-number editable"
481
+                        @dblclick="editValue(selectedArticle, 'GenerateTime', 'GenerateTime')">
464
                         <template v-if="editingKey === 'GenerateTime'">
482
                         <template v-if="editingKey === 'GenerateTime'">
465
-                            <input type="number" disabled="true" class="json-editor-input" v-model.number="selectedArticle.GenerateTime"
466
-                                @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
483
+                            <input type="number" disabled="true" class="json-editor-input"
484
+                                v-model.number="selectedArticle.GenerateTime" @blur="finishEdit"
485
+                                @keyup.enter="finishEdit" v-focus>
467
                         </template>
486
                         </template>
468
                         <template v-else>
487
                         <template v-else>
469
                             {{ selectedArticle.GenerateTime }}
488
                             {{ selectedArticle.GenerateTime }}
@@ -472,10 +491,12 @@
472
                 </div>
491
                 </div>
473
                 <div class="json-node">
492
                 <div class="json-node">
474
                     <span class="json-key">使用AI模型:</span>
493
                     <span class="json-key">使用AI模型:</span>
475
-                    <span class="json-string editable" @dblclick="editValue(selectedArticle, 'AIProvider', 'AIProvider')">
494
+                    <span class="json-string editable"
495
+                        @dblclick="editValue(selectedArticle, 'AIProvider', 'AIProvider')">
476
                         <template v-if="editingKey === 'AIProvider'">
496
                         <template v-if="editingKey === 'AIProvider'">
477
-                            <input type="text" disabled="true" class="json-editor-input" v-model="selectedArticle.AIProvider"
478
-                                @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
497
+                            <input type="text" disabled="true" class="json-editor-input"
498
+                                v-model="selectedArticle.AIProvider" @blur="finishEdit" @keyup.enter="finishEdit"
499
+                                v-focus>
479
                         </template>
500
                         </template>
480
                         <template v-else>
501
                         <template v-else>
481
                             "{{ selectedArticle.AIProvider }}"
502
                             "{{ selectedArticle.AIProvider }}"
@@ -486,8 +507,8 @@
486
                     <span class="json-key">提示语:</span>
507
                     <span class="json-key">提示语:</span>
487
                     <span class="json-string editable" @dblclick="editValue(selectedArticle, 'BuildStr', 'BuildStr')">
508
                     <span class="json-string editable" @dblclick="editValue(selectedArticle, 'BuildStr', 'BuildStr')">
488
                         <template v-if="editingKey === 'BuildStr'">
509
                         <template v-if="editingKey === 'BuildStr'">
489
-                            <input type="text" disabled="true" class="json-editor-input" v-model="selectedArticle.BuildStr"
490
-                                @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
510
+                            <input type="text" disabled="true" class="json-editor-input"
511
+                                v-model="selectedArticle.BuildStr" @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
491
                         </template>
512
                         </template>
492
                         <template v-else>
513
                         <template v-else>
493
                             "{{ selectedArticle.BuildStr }}"
514
                             "{{ selectedArticle.BuildStr }}"
@@ -510,7 +531,7 @@
510
                     <span class="json-key">文章难度:</span>
531
                     <span class="json-key">文章难度:</span>
511
                     <span class="json-string editable" @dblclick="editValue(selectedArticle, 'Level', 'Level')">
532
                     <span class="json-string editable" @dblclick="editValue(selectedArticle, 'Level', 'Level')">
512
                         <template v-if="editingKey === 'Level'">
533
                         <template v-if="editingKey === 'Level'">
513
-                            <input type="text"  disabled="true" class="json-editor-input" v-model="selectedArticle.Level"
534
+                            <input type="text" disabled="true" class="json-editor-input" v-model="selectedArticle.Level"
514
                                 @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
535
                                 @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
515
                         </template>
536
                         </template>
516
                         <template v-else>
537
                         <template v-else>
@@ -520,10 +541,12 @@
520
                 </div>
541
                 </div>
521
                 <div class="json-node">
542
                 <div class="json-node">
522
                     <span class="json-key">文章类型:</span>
543
                     <span class="json-key">文章类型:</span>
523
-                    <span class="json-string editable" @dblclick="editValue(selectedArticle, 'ArticleStyle', 'ArticleStyle')">
544
+                    <span class="json-string editable"
545
+                        @dblclick="editValue(selectedArticle, 'ArticleStyle', 'ArticleStyle')">
524
                         <template v-if="editingKey === 'ArticleStyle'">
546
                         <template v-if="editingKey === 'ArticleStyle'">
525
-                            <input type="text"  disabled="true" class="json-editor-input" v-model="selectedArticle.ArticleStyle"
526
-                                @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
547
+                            <input type="text" disabled="true" class="json-editor-input"
548
+                                v-model="selectedArticle.ArticleStyle" @blur="finishEdit" @keyup.enter="finishEdit"
549
+                                v-focus>
527
                         </template>
550
                         </template>
528
                         <template v-else>
551
                         <template v-else>
529
                             "{{ selectedArticle.ArticleStyle }}"
552
                             "{{ selectedArticle.ArticleStyle }}"
@@ -534,18 +557,20 @@
534
                     <span class="json-key">用户阅读数:</span>
557
                     <span class="json-key">用户阅读数:</span>
535
                     <span class="json-number editable" @dblclick="editValue(selectedArticle, 'ReadCount', 'ReadCount')">
558
                     <span class="json-number editable" @dblclick="editValue(selectedArticle, 'ReadCount', 'ReadCount')">
536
                         <template v-if="editingKey === 'ReadCount'">
559
                         <template v-if="editingKey === 'ReadCount'">
537
-                            <input type="number"  disabled="true" class="json-editor-input" v-model.number="selectedArticle.ReadCount"
538
-                                @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
560
+                            <input type="number" disabled="true" class="json-editor-input"
561
+                                v-model.number="selectedArticle.ReadCount" @blur="finishEdit" @keyup.enter="finishEdit"
562
+                                v-focus>
539
                         </template>
563
                         </template>
540
                         <template v-else>
564
                         <template v-else>
541
                             {{ selectedArticle.ReadCount }}
565
                             {{ selectedArticle.ReadCount }}
542
                         </template>
566
                         </template>
543
                     </span>
567
                     </span>
544
                 </div>
568
                 </div>
545
-                
569
+
546
                 <div class="json-node">
570
                 <div class="json-node">
547
                     <span class="json-key">JSON结果:</span>
571
                     <span class="json-key">JSON结果:</span>
548
-                    <span class="json-string editable" @dblclick="editValue(selectedArticle, 'JSONString', 'JSONString')">
572
+                    <span class="json-string editable"
573
+                        @dblclick="editValue(selectedArticle, 'JSONString', 'JSONString')">
549
                         <template v-if="editingKey === 'JSONString'">
574
                         <template v-if="editingKey === 'JSONString'">
550
                             <textarea class="json-editor-input" disabled="true" v-model="selectedArticle.JSONString"
575
                             <textarea class="json-editor-input" disabled="true" v-model="selectedArticle.JSONString"
551
                                 @blur="finishEdit" @keyup.enter="finishEdit" v-focus></textarea>
576
                                 @blur="finishEdit" @keyup.enter="finishEdit" v-focus></textarea>
@@ -559,8 +584,9 @@
559
                     <span class="json-key">是否删除:</span>
584
                     <span class="json-key">是否删除:</span>
560
                     <span class="json-number editable" @dblclick="editValue(selectedArticle, 'Flag', 'Flag')">
585
                     <span class="json-number editable" @dblclick="editValue(selectedArticle, 'Flag', 'Flag')">
561
                         <template v-if="editingKey === 'Flag'">
586
                         <template v-if="editingKey === 'Flag'">
562
-                            <input type="number"  disabled="true" class="json-editor-input" v-model.number="selectedArticle.Flag"
563
-                                @blur="finishEdit" @keyup.enter="finishEdit" v-focus>
587
+                            <input type="number" disabled="true" class="json-editor-input"
588
+                                v-model.number="selectedArticle.Flag" @blur="finishEdit" @keyup.enter="finishEdit"
589
+                                v-focus>
564
                         </template>
590
                         </template>
565
                         <template v-else>
591
                         <template v-else>
566
                             {{ selectedArticle.Flag }}
592
                             {{ selectedArticle.Flag }}
@@ -573,8 +599,10 @@
573
                 </div>
599
                 </div>
574
             </div>
600
             </div>
575
         </div>
601
         </div>
576
-    </div>
602
+        <div class="toast" :class="{ show: showToastFlag, [toastType]: showToastFlag }">{{ toastMessage }}</div>
577
 
603
 
604
+    </div>
605
+    
578
     <script>
606
     <script>
579
         new Vue({
607
         new Vue({
580
             el: '#app',
608
             el: '#app',
@@ -584,7 +612,10 @@
584
                 selectedArticle: null,
612
                 selectedArticle: null,
585
                 isSearchLoading: false,
613
                 isSearchLoading: false,
586
                 isDetailLoading: false,
614
                 isDetailLoading: false,
587
-                editingKey: null
615
+                editingKey: null,
616
+                toastMessage: '',
617
+                toastType: 'info',
618
+                showToastFlag: false
588
             },
619
             },
589
             methods: {
620
             methods: {
590
                 searchArticles() {
621
                 searchArticles() {
@@ -631,15 +662,17 @@
631
                 saveArticle() {
662
                 saveArticle() {
632
                     if (!this.selectedArticle) return;
663
                     if (!this.selectedArticle) return;
633
                     this.isDetailLoading = true;
664
                     this.isDetailLoading = true;
634
-                    this.selectedArticle.Source="web";
665
+                    this.selectedArticle.Source = "web";
635
                     $.ajax({
666
                     $.ajax({
636
                         url: 'api/UpdateYJBDCArticle',
667
                         url: 'api/UpdateYJBDCArticle',
637
                         method: 'POST',
668
                         method: 'POST',
638
                         data: this.selectedArticle,
669
                         data: this.selectedArticle,
639
                         success: () => {
670
                         success: () => {
640
                             this.isDetailLoading = false;
671
                             this.isDetailLoading = false;
641
-                            alert('保存成功');
672
+                            this.showToast('保存成功', 'success');
673
+                            // 重新加载文章列表和当前选中的文章
642
                             this.searchArticles();
674
                             this.searchArticles();
675
+                            this.selectArticle(this.selectedArticle);
643
                         },
676
                         },
644
                         error: () => {
677
                         error: () => {
645
                             this.isDetailLoading = false;
678
                             this.isDetailLoading = false;
@@ -649,7 +682,17 @@
649
                 },
682
                 },
650
                 cancelEdit() {
683
                 cancelEdit() {
651
                     this.selectedArticle = null;
684
                     this.selectedArticle = null;
652
-                }
685
+                },
686
+                showToast(message, type = 'info') {
687
+                    this.toastMessage = message;
688
+                    this.toastType = type;
689
+                    this.showToastFlag = true;
690
+
691
+                    // 自动隐藏
692
+                    setTimeout(() => {
693
+                        this.showToastFlag = false;
694
+                    }, 3000);
695
+                },
653
             },
696
             },
654
             directives: {
697
             directives: {
655
                 focus: {
698
                 focus: {

+ 10 - 13
src/api/yjbdc/yjbdcController.js

@@ -409,18 +409,12 @@ export async function GetYJBDCArticleList(ctx) {
409
         result = await yjbdc.GetYJBDCArticleList(param);
409
         result = await yjbdc.GetYJBDCArticleList(param);
410
         
410
         
411
         let menuConfig=constantClass.GetYJBDCGenerateConfig();
411
         let menuConfig=constantClass.GetYJBDCGenerateConfig();
412
-
413
-        
414
         for(let i=0;i<result.length;i++){
412
         for(let i=0;i<result.length;i++){
415
             let item=result[i];
413
             let item=result[i];
416
             item.CreateTime=moment(item.CreateTime).format("YYYY年MM月DD日 HH:mm");
414
             item.CreateTime=moment(item.CreateTime).format("YYYY年MM月DD日 HH:mm");
417
             //debugger;
415
             //debugger;
418
-            if (param.ID==0){
419
-                item.LevelStr=menuConfig.Level[item.Level].Name;
420
-            }
416
+            item.LevelStr=menuConfig.Level[item.Level].Name;
421
         }
417
         }
422
-        
423
-        
424
         globalCache.set(url, result, config.BufferMemoryTime);
418
         globalCache.set(url, result, config.BufferMemoryTime);
425
         console.log("缓存"+config.BufferMemoryTime+"秒");
419
         console.log("缓存"+config.BufferMemoryTime+"秒");
426
     }
420
     }
@@ -493,6 +487,8 @@ export async function UpdateYJBDCArticle(ctx) {
493
     if (param.ID>0 && param.UserID<12 && param.Source=="web"){
487
     if (param.ID>0 && param.UserID<12 && param.Source=="web"){
494
         const url='GetYJBDCArticleList?IsChoiceness=0&UserID='+param.UserID+"&ID=0";
488
         const url='GetYJBDCArticleList?IsChoiceness=0&UserID='+param.UserID+"&ID=0";
495
         globalCache.delete(url);
489
         globalCache.delete(url);
490
+        const url2='GetYJBDCArticleList?IsChoiceness=0&UserID='+param.UserID+"&ID="+param.ID;
491
+        globalCache.delete(url2);
496
         delete param.LevelStr;
492
         delete param.LevelStr;
497
         delete param.CreateTime;
493
         delete param.CreateTime;
498
         delete param.CreateTime;
494
         delete param.CreateTime;
@@ -662,11 +658,12 @@ export async function GeneratePDF(ctx) {
662
 
658
 
663
         // 7. 黑线
659
         // 7. 黑线
664
         const articleEndY = doc.y;
660
         const articleEndY = doc.y;
665
-        // 计算单词列表的实际结束Y坐标
666
-        const wordListEndY = pixelToPt(364) + (Math.min(words.length, 10) * pixelToPt(70));
661
+        const wordListEndY = doc.y; // 假设单词列表的Y坐标
667
         const maxY = Math.max(articleEndY, wordListEndY);
662
         const maxY = Math.max(articleEndY, wordListEndY);
668
-
669
-        doc.rect(pixelToPt(120), maxY + pixelToPt(41), 
663
+        if (doc && typeof doc.line === 'function') {
664
+            doc.line(20, maxY, 200, maxY);
665
+        }
666
+        doc.rect(pixelToPt(120), articleEndY + pixelToPt(41), 
670
                 pixelToPt(1860), pixelToPt(10))
667
                 pixelToPt(1860), pixelToPt(10))
671
            .fill('black');
668
            .fill('black');
672
 
669
 
@@ -693,7 +690,7 @@ export async function GeneratePDF(ctx) {
693
             for (const i of firstRowQuestions) {
690
             for (const i of firstRowQuestions) {
694
                 if (i < questions.length && questions[i]) {
691
                 if (i < questions.length && questions[i]) {
695
                     const currentX = questionXPositions[i];
692
                     const currentX = questionXPositions[i];
696
-                    const currentY = maxY + pixelToPt(130); // 所有第一行问题的起始Y坐标相同
693
+                    const currentY = articleEndY + pixelToPt(130); // 所有第一行问题的起始Y坐标相同
697
                     
694
                     
698
                     // 渲染问题文本
695
                     // 渲染问题文本
699
                     doc.font('Helvetica-Bold')
696
                     doc.font('Helvetica-Bold')
@@ -867,7 +864,7 @@ export async function GeneratePDF(ctx) {
867
             // 问题5保持原位置不变
864
             // 问题5保持原位置不变
868
             if (questions.length > 4 && questions[4]) {
865
             if (questions.length > 4 && questions[4]) {
869
                 const currentX = questionXPositions[4];
866
                 const currentX = questionXPositions[4];
870
-                const currentY = maxY + pixelToPt(130);
867
+                const currentY = articleEndY + pixelToPt(130);
871
                 
868
                 
872
                 doc.font('Helvetica-Bold')
869
                 doc.font('Helvetica-Bold')
873
                    .fontSize(pixelToPt(36))
870
                    .fontSize(pixelToPt(36))