@ganwei-web/ganwei-pc-cli 6.3.1 → 6.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/ganwei-iotcenter-index-6.2.3/configuration/moduleConfiguration.json +1 -1
  2. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/public/static/js/getLanguage.js +9 -10
  3. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/public/static/themes/dark-6-1.css +425 -0
  4. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/public/static/themes/light-6-1.css +419 -0
  5. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/App.vue +10 -35
  6. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/components/indexRightContent/headerRight/expirationReminder/index.vue +7 -3
  7. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/components/layouts/Navigation/AsideMenu.vue +4 -3
  8. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/router.js +120 -18
  9. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/utils/date.ts +2 -1
  10. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/utils/dom.ts +2 -2
  11. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/utils/env.ts +6 -0
  12. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/utils/file.ts +1 -1
  13. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/utils/number.ts +6 -6
  14. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/utils/performance.ts +1 -1
  15. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/utils/string.ts +1 -1
  16. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/utils/xss-filter.ts +4 -0
  17. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/views/jumpIframe/index.vue +2 -1
  18. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-template/.eslintrc.cjs +2 -2
  19. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-template/package.json +1 -1
  20. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-template/src/App.vue +1 -2
  21. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-template/src/views/template.vue +5 -1
  22. package/package.json +1 -1
  23. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-index/src/mixins/judgePermission.js +0 -65
  24. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-template/src/request/models/request/index.ts +0 -0
  25. package/ganwei-iotcenter-index-6.2.3/packages/ganwei-iotcenter-template/src/request/models/response/index.ts +0 -0
@@ -460,4 +460,423 @@
460
460
  /* TaskPopper 组件样式 */
461
461
  --task-popper-background: var(--gw-color-Neutrals27);
462
462
  --task-popper-item-background: var(--gw-color-Neutrals28);
463
+
464
+
465
+ /* 旧版本样式 */
466
+ --color-primary: #000;
467
+ --color-text-primary: #333;
468
+ --color-text2: #595959;
469
+ --color-text1: #606266;
470
+ --input-btn-color: #d3d8e2;
471
+ --border-color-base: rgba(19, 18, 18, 0.171);
472
+ --background-color-base: #f2f3f5;
473
+ --background1: #f5f5f5;
474
+ --background2: #fff;
475
+ --inputbackground3: #fff;
476
+ --front-color: #fff;
477
+ --btn-background-primary: #fff;
478
+ --btn-color-primary: #262626;
479
+ --btn-color: #fff;
480
+ --control-background: #3875ff;
481
+ --btn-hover-primary: #2769c2;
482
+ --background-color-light: #f5f5f5;
483
+ --table-icon-edit-color: #346ae4;
484
+ --table-icon-del-color: #bf2533;
485
+ --success: #63e03f;
486
+ --alarm: #f22433;
487
+ --warning: #f5bb36;
488
+ --h-color: #5386bb;
489
+ --mask: rgba(0, 0, 0, 0.3);
490
+
491
+ --nav-bgColor: #0754aa;
492
+ --nav-bgColor1: #181c29;
493
+ --nav-bgColor2: transparent;
494
+ --nav-bgColor3: #2f3d4a;
495
+ --nav-bgColor4: #181c29;
496
+ --nav-bgColor5: #fff;
497
+ --nav-bgColor6: #eff4fe;
498
+ --nav-txColor: rgba(240, 244, 255, 0.56);
499
+ --nav-txColor1: #555;
500
+
501
+ --asideColor: #fff;
502
+
503
+ --nav-iconColor: #606266;
504
+ --nav-hoverBgColor: #181c29;
505
+ --nav-hoverTxColor: #f0f4ff;
506
+ --nav-hoverIconColor: #f0f4ff;
507
+ --nav-selBgColor: linear-gradient(to bottom right, #2e9bff, #1ecff7);
508
+ --nav-selBgColor2: #00b4ed;
509
+ --nav-selTxColor: #f0f4ff;
510
+ --nav-selIconColor: #f0f4ff;
511
+
512
+ --btn-bgColor: #3875ff;
513
+ --btn-bgColor1: #fff;
514
+ --btn-bgColor2: #f22433;
515
+ --btn-bgColor3: #fff;
516
+ --btn-bgColor4: #fff;
517
+ --btn-bgColor5: linear-gradient(to bottom right, #2e9bff, #1ecff7);
518
+ --btn-bgColor7: #eafaf4;
519
+ --btn-bgColor8: #fff;
520
+ --btn-bgColor9: #fff;
521
+ --btn-bgColor10: #ebefef;
522
+ --btn-disableBgColor: #0c79dd;
523
+ --btn-selectBgColor: #3875ff;
524
+ --btn-txColor: #606266;
525
+ --btn-txColor1: #3875ff;
526
+ --btn-txColor2: #262626;
527
+ --btn-txColor3: #fff;
528
+ --btn-txColor4: #f56c6c;
529
+ --btn-txColor5: #fff;
530
+ --btn-txColor6: #f22433;
531
+ --btn-bgColor6: #13c2c2;
532
+ --btn-txColor7: #313747;
533
+ --btn-txColor8: #2cd08c;
534
+ --btn-txColor9: #333333;
535
+ --btn-txColor10: #0987e5;
536
+ --btn-iconColor: #e6edff;
537
+ --btn-iconColor1: #d3d8e2;
538
+ --btn-iconColor2: #3875ff;
539
+ --btn-borderColor: #3875ff;
540
+ --btn-borderColor1: rgba(240, 244, 255, 0.16);
541
+ --btn-borderColor2: #e6e6e6;
542
+ --btn-borderColor3: #d5f6e8;
543
+ --btn-hoverBgColor: #fff;
544
+ --btn-hoverBgColor1: #ecf5ff;
545
+ --btn-hoverBgColor2: #2769c2;
546
+ --btn-hoverBgColor3: #253045;
547
+ --btn-hoverBgColor4: #409eff;
548
+ --btn-hoverBgColor5: linear-gradient(to bottom right, #1ecff7, #2e9bff);
549
+ --btn-hoverTXColor: #3875ff;
550
+ --btn-hoverTXColor1: #f0f4ff;
551
+ --btn-hoverBorColor: #264069;
552
+
553
+ --tab-bgColor: #f5f5f5;
554
+ --tab-bgColor2: #f5f5f5;
555
+ --tab-bgColor3: #2ba3fd;
556
+ --tab-bgColor4: #fff;
557
+ --tab-bgColor5: #f2f3f5;
558
+ --tab-bgColor6: #dbdee5;
559
+ --tab-bgColor7: transparent;
560
+ --tab-txColor: #333;
561
+ --tab-txColor1: rgba(51, 51, 51, 0.64);
562
+ --tab-txColor2: #333;
563
+ --tab-borderColor: #e1e3e6;
564
+ --tab-borderColor1: #eeeeee;
565
+ --tab-selBgColor: #fff;
566
+ --tab-selBgColor2: #fff;
567
+ --tab-selBgColor3: #fff;
568
+ --tab-selBgColor4: #1a90ff;
569
+ --tab-selBgColor5: #1a90ff;
570
+ --tab-selTXColor: #333;
571
+ --tab-selTXColor1: #ffffff;
572
+ --tab-hoverTXColor: #3875ff;
573
+ --tab-hoverBg: #fff;
574
+ --tab-actColor: #f5f7fa;
575
+
576
+ --input-bgColor: #fff;
577
+ --input-bgColor2: #919191;
578
+ --input-bgColor3: #fff;
579
+ --input-bgColor4: #fff;
580
+ --input-bgColor5: #fff;
581
+ --input-bgColor6: #f8f8f8;
582
+ --input-disabled-bgColor: #f8f8f8;
583
+ --input-btnBgColor3: #fff;
584
+ --input-btnBorColor: #e6e6e6;
585
+ --input-btnBgColor: #333;
586
+ --input-txColor: #d3d8e2;
587
+ --input-txColor1: #000;
588
+ --input-plaColor: #2d2e30;
589
+ --input-plaColor1: #8c8c8c;
590
+ --input-iconColor: #8f9091;
591
+ --input-iconColor1: #f0f4ff;
592
+ --input-borderColor: rgba(240, 244, 255, 0.16);
593
+ --input-borderColor1: rgba(235, 236, 240, 0.5);
594
+ --input-borderColor2: #e6e6e6;
595
+ --input-borderColor3: #e6e6e6;
596
+ --input-selBorColor: #3875ff;
597
+ --input-hoverBorColor: #8f9091;
598
+
599
+ --textarea-fontColor: #262626;
600
+ --textarea-backgroundColor: #fafafa;
601
+ --textarea-borderColor: #eee;
602
+
603
+ --txt-color-1: #3875ff;
604
+ --txt-color-2: #ff7a00;
605
+
606
+ --table-headerBgColor: #fafafa;
607
+ --table-headerBgColor2: #f2f6ff;
608
+ --table-txColor: #333;
609
+ --table-headerTXColor: #333;
610
+ --table-borderColor: #e6e6e6;
611
+ --table-rowBgColor: #fff;
612
+ --table-hoverRowBgColor: #e9f5fe;
613
+ --table-rowBgColor-strip: #fff;
614
+ --table-rowBgColor-strip2: #fff;
615
+ --table-iconEdit: #346ae4;
616
+ --table-iconDel: #bf2533;
617
+ --table-borderBottomColor: #fff;
618
+
619
+ --con-textColor1: #333;
620
+ --con-textColor2: #595959;
621
+ --con-textColor3: rgba(240, 244, 255, 0.64);
622
+ --con-textColor4: #606266;
623
+ --con-textColor5: rgba(240, 244, 255, 0.32);
624
+ --con-textColor6: rgba(240, 244, 255, 0.16);
625
+ --con-textColor7: rgba(240, 244, 255, 0.08);
626
+ --con-textColor8: #262626;
627
+ --con-textColor9: #262626;
628
+ --con-textColor10: #f0f4ff;
629
+ --con-textColor11: #409eff;
630
+ --con-textColor12: #0f283e;
631
+ --con-textColor13: linear-gradient(to top, #2c75d8, #61c5fe);
632
+ --con-textColor14: #0f283e;
633
+ --con-textColor15: #222222;
634
+ --con-textColor16: #999999;
635
+ --con-textColor17: #222222;
636
+ --con-textColor18: #777777;
637
+ --con-textColor19: #0f283e;
638
+ --con-textColor20: #666666;
639
+ --con-textColor21: #ff7700;
640
+ --con-textColor22: #0790ff;
641
+ --con-textColor23: #1c93fe;
642
+ --con-textColor24: #333333;
643
+ --con-textColor25: #666666;
644
+ --con-textColor26: #333333;
645
+ --con-textColor27: #333333;
646
+ --con-textColor28: #999999;
647
+ --con-textColor29: #0dbc00;
648
+ --con-bgColor1: #090f1a;
649
+ --con-bgColor2: #f5f5f5;
650
+ --con-bgColor3: #f5f5f5;
651
+ --con-bgColor4: #fff;
652
+ --con-bgColor5: #f5f5f5;
653
+ --con-bgColor5-1: #fff;
654
+ --con-bgColor6: #fff;
655
+ --con-bgColor6-1: #f9f9f9;
656
+ --con-bgColor7: #fff;
657
+ --con-bgColor8: #fff;
658
+ --con-bgColor9: #697073;
659
+ --con-bgColor10: #fff;
660
+ --con-bgColor11: #fff;
661
+ --con-bgColor12: #2ba3fd;
662
+ --con-bgColor13: linear-gradient(-43deg, rgba(39, 121, 230, 0.7) 4%, rgba(39, 176, 230, 0.9) 94%);
663
+ --con-bgColor14: linear-gradient(90deg, #104cb3, #16a6e2);
664
+ --con-bgColor15: #104cb3;
665
+ --con-bgColor16: transparent;
666
+ --con-bgColor17: #12202e;
667
+ --con-bgColor18: #fff;
668
+ --con-bgColor19: #fff;
669
+ --con-bgColor20: #fff;
670
+ --con-bgColor21: #f1f4f4;
671
+ --con-bgColor22: #f2f3f5;
672
+ --con-bgColor23: #f5f5f5;
673
+ --con-bgColor24: #f1f4f4;
674
+ --con-bgColor25: #dfdfdf;
675
+ --con-bgColor26: white;
676
+ --con-bgColor27: #f1f4f4;
677
+ --con-bgColor28: #f1f4f4;
678
+ --con-bgColor29: #ffffff;
679
+ --con-bgColor30: #efefef;
680
+ --con-bgColor31: #ffffff;
681
+ --con-borderColor: #e6e6e6;
682
+ --con-borderColor1: transparent;
683
+ --con-borderColor2: rgba(240, 244, 255, 0.08);
684
+ --con-borderColor3: #cccccc;
685
+ --con-borderColor4: #cccccc;
686
+ --con-borderColor5: #eeeeee;
687
+ --con-borderHoverColor: #c0c4cc;
688
+ --con-borderHoverColor2: #5d709b;
689
+
690
+ --con-themeColor: #3875ff;
691
+ --con-themeColor2: #2669ec;
692
+ --con-successColor: #63e03f;
693
+ --con-alarmColor: #f22433;
694
+ --con-alarmColor2: #f73231;
695
+ --con-warningColor: #f5bb36;
696
+
697
+ --border-color-1: #cccccc;
698
+ --border-color-2: #d9d9d9;
699
+ --border-color-3: #d9d9d9;
700
+ --border-color-4: #ffffff;
701
+ --border-color-5: #e6e6e6;
702
+ --bor-default: #e6e6e6;
703
+ --bor-primary: #3875ff;
704
+ --bor-danger: #f22433;
705
+ --bor-light: #fff;
706
+
707
+ --dialog-textColor1: #333;
708
+ --dialog-textColor2: rgba(0, 0, 0, 0.65);
709
+ --dialog-labelBgColor: #eee;
710
+ --dialog-bgColor: #fff;
711
+ --dialog-bgColor2: #f5f5f5;
712
+ --dialog-bgColor3: #fff;
713
+ --dialog-bgColor4: #fff;
714
+ --dialog-groupBgColor: #3875ff;
715
+ --dialog-groupBgColor2: #00b4ed;
716
+ --dialog-shadow: 0px 1px 6px 0px rgba(0, 0, 0, 0.2);
717
+
718
+ --tips-textColor1: #f0f4ff;
719
+ --tips-textColor2: rgba(240, 244, 255, 0.56);
720
+ --tips-bgColor: #252833;
721
+ --tips-text: #999999;
722
+
723
+ --sel-textColor: #f0f4ff;
724
+ --sel-bgColor: #0c0e14;
725
+ --sel-tagtextColor: #606266;
726
+ --sel-tagBgColor: #ebefef;
727
+ --sel-tagIconColor: #606266;
728
+
729
+ --dropdown-bgColor: #fff;
730
+ --dropdown-bgColor1: rgba(255, 255, 255, 0.8);
731
+
732
+ --page-textColor: #595959;
733
+ --page-textColor1: #888;
734
+ --page-borColor: #e6e6e6;
735
+ --page-bgColor: #3875ff;
736
+ --page-bgColor2: #ffffff;
737
+
738
+ --tree-bgColor: #fff;
739
+ --tree-bgColor1: #fff;
740
+ --tree-bgColor2: #fff;
741
+ --tree-bgColor3: #fff;
742
+ --tree-bgColor4: #f1efef;
743
+ --tree-bgColor5: #ffffff;
744
+ --tree-bgColor6: #f2f3f5;
745
+ --tree-bgColor7: #fff;
746
+ --tree-bgColor8: rgba(255, 255, 255, 0.5);
747
+ --tree-txColor: #595959;
748
+ --tree-txColor1: #606266;
749
+ --tree-iconColor: #979797;
750
+ --tree-selBgColor: #ffffff;
751
+ --tree-selBgColor1: #3875ff;
752
+ --tree-selTXColor: #fff;
753
+ --tree-linearColor: #8c8c8c;
754
+ --tree-borderColor: #e6e6e6;
755
+ --tree-borderColor1: #e6e6e6;
756
+ --tree-labelBg: #d9d9d9;
757
+
758
+ --radio-bgColor: #fff;
759
+ --radio-selectBg: #3875ff;
760
+ --radio-selectBorder: #fff;
761
+
762
+ --switch-bgColor: #d9d9d9;
763
+ --switch-bgColor1: #337cef;
764
+
765
+ --popover-bgColor: #fff;
766
+ --popover-bgColor2: #fff;
767
+ --popover-bgColor3: #fff;
768
+ --popover-txColor: #606266;
769
+ --popover-borderColor: #e6e6e6;
770
+ --popover-borderColor2: #595959;
771
+ --popover-borderColor3: #eee;
772
+ --popover-hoverBgColor: #f5f7fa;
773
+ --popover-hoverTXColor: #595959;
774
+
775
+ --scrollbar-bgColor: #e1e3e6;
776
+
777
+ --avater-textColor: #fff;
778
+ --avater-baColor: #c0c4cc;
779
+
780
+ --datePanelBg: #fff;
781
+ --timeHeaderColor: #333;
782
+ --pickerHeaderBg: #f2f3f5;
783
+ --iconBtnColor: #999;
784
+ --pickRangeBg: #dfe9ff;
785
+ --footerBtnColor: #666666;
786
+ --datePick-selectRangeBg: #f5f5f5;
787
+ --datePick-selectColor: #f0f4ff;
788
+ --timePick-hoverBg: #f5f7fa;
789
+
790
+ --noData-fontColor: #252833;
791
+ --noData-fontColor1: rgba(0, 0, 0, 0.65);
792
+
793
+ --fc-todayBg: #d9f5fe;
794
+
795
+ --radar-bgColor: #fcfdff;
796
+ --radar-title: #60a3ff;
797
+
798
+ --tag-title: #666666;
799
+ --tag-unit: #666666;
800
+ --tag-number1: #ff3a3a;
801
+ --tag-number2: #666666;
802
+ --tag-number3: #ff7700;
803
+ --tag-number4: #0dbc00;
804
+ --tag-number5: #999999;
805
+
806
+ --timeLine-default: #eeeeee;
807
+ --timeLine-infosBg: #f1f4f4;
808
+ --timeLine-dot1: #fff;
809
+ --timeLine-dotBorder1: #d7e3ff;
810
+ --timeLine-dotBorder2: #ccc;
811
+ --timeLine-line: #aeaeae;
812
+
813
+ --list-bgColor-1: #ffffff;
814
+ --list-bgColor-2: #f0f4ff;
815
+ --list-bgColor-3: #ffffff;
816
+ --list-labelBg: #f2f6ff;
817
+
818
+ --snapshots-bg: #fff;
819
+ --snapshots-bor: -webkit-linear-gradient(-40deg, transparent 0%, transparent 10%, transparent 90%, transparent 100%) 10;
820
+ --snapshot-bor: transparent;
821
+ --snapshot-bg: #fff;
822
+ --snapshot-bs: transparent;
823
+ --snapshot-number: #0f283e;
824
+
825
+ --splitline-bor1: #e7e7e7;
826
+ --splitline-bor2: #e7e7e7;
827
+
828
+ --notifyBg: #fff;
829
+ --notifytitle: #262626;
830
+ --notifytext: #606266;
831
+
832
+ --line-color: #bfbfbf;
833
+ --line-color-1: #ccc;
834
+ --line-finish: #3875ff;
835
+
836
+ --types-fc-opacity: #0f283e;
837
+ --types-fc-opacity2: #7d7d7d;
838
+ --types-fc-opacity3: #999999;
839
+ --types-fc: #0f283e;
840
+
841
+ --active-bg: #3875ff;
842
+ --active-fc: #fff;
843
+
844
+ --descriptions-bor: #ced9df;
845
+ --descriptions-fc: #0f283e;
846
+
847
+ --loadingBg: #7fa2f3;
848
+ --loading-bgColor: rgba(255, 255, 255, 0.9);
849
+
850
+ --img-color-1: linear-gradient(180deg, #f2f3f5 0%, #757d93 100%);
851
+ --img-color-2: #8b8f97;
852
+
853
+ --top-menu-bg: #eff4fe;
854
+ --top-menu-fc: #626d84;
855
+
856
+ --theme-hover: #e1e7eb;
857
+
858
+ --plugin-blue1: #0396ff;
859
+ --plugin-blue2: #2d94ff;
860
+ --plugin-bgColor1: #f9f9f9;
861
+ --plugin-bgColor2: #fff;
862
+ --plugin-bgColor3: #0396ff;
863
+ --plugin-bgColor4: #e8f3ff;
864
+ --plugin-bgColor5: #fff;
865
+ --plugin-radial-bgColor: #f9f9f9;
866
+ --plugin-tagColor1: #c6c6c6;
867
+ --plugin-tagColor2: #e6e6e6;
868
+ --plugin-tagColor3: #e8f3ff;
869
+ --plugin-tagColor4: #FFCB3E;
870
+ --plugin-borderColor1: #e3e3e3;
871
+ --plugin-text1: #f0f4ff;
872
+ --plugin-text2: #fff;
873
+ --plugin-titleColor1: #0e7cce;
874
+ --plugin-downloadColor: #000;
875
+
876
+ --allocation-menu-active-background: #3875ff;
877
+ --allocation-menu-active-color: white;
878
+
879
+
880
+
881
+
463
882
  }
@@ -1,23 +1,23 @@
1
1
  <template>
2
2
  <div class="app">
3
- <!-- 验证通过后显示页面 -->
4
- <el-config-provider>
5
- <router-view v-cloak v-if="isShow" />
3
+ <!-- 验证通过且语言包加载完成后显示页面 -->
4
+ <el-config-provider v-if="isShow">
5
+ <router-view v-cloak />
6
6
  </el-config-provider>
7
7
  </div>
8
8
  </template>
9
9
  <script>
10
10
  import muduleObserve from '@ganwei-web/gw-base-utils-plus/moduleObserve/dist/index.es.js'
11
11
 
12
- import judgePermission from './mixins/judgePermission'
13
12
  import { setTheme } from './utils/storage.ts'
14
13
 
15
14
  export default {
16
- mixins: [judgePermission, muduleObserve],
15
+ mixins: [muduleObserve],
17
16
  name: 'App',
18
17
  data() {
19
18
  return {
20
- isNoRequestObserveGetPublic: true
19
+ isNoRequestObserveGetPublic: true,
20
+ isLoading: true
21
21
  }
22
22
  },
23
23
  mounted() {
@@ -31,35 +31,6 @@ export default {
31
31
  </script>
32
32
 
33
33
  <style>
34
- /* 登录验证加载状态 */
35
- .auth-loading {
36
- position: fixed;
37
- top: 0;
38
- left: 0;
39
- right: 0;
40
- bottom: 0;
41
- background: var(--frame-main-background, #121622);
42
- display: flex;
43
- align-items: center;
44
- justify-content: center;
45
- z-index: 9999;
46
- }
47
-
48
- .loading-spinner {
49
- width: 40px;
50
- height: 40px;
51
- border: 3px solid var(--frame-main-border, #2a3441);
52
- border-top-color: var(--gw-color-primary, #3875ff);
53
- border-radius: 50%;
54
- animation: spin 0.8s linear infinite;
55
- }
56
-
57
- @keyframes spin {
58
- to {
59
- transform: rotate(360deg);
60
- }
61
- }
62
-
63
34
  html {
64
35
  height: 100%;
65
36
  --left: calc(var(--maxActiveWidth) + 10);
@@ -115,4 +86,8 @@ html body div {
115
86
  iframe {
116
87
  border: none;
117
88
  }
89
+
90
+ .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
91
+ background-color: var(--table-body-background__hover) !important;
92
+ }
118
93
  </style>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <el-dialog :title="$t('login.应用到期提醒')" class="systemInformation_main" v-model="dialogVisible" :before-close="closeDialog" width="690" top="6vh" center append-to="#index">
3
- <el-table :data="expirepluginList" height="400" border >
3
+ <el-table :data="expirepluginList" height="400px" border >
4
4
  <template v-slot:empty>
5
5
  <div class="noDataTips"></div>
6
6
  </template>
@@ -27,11 +27,11 @@ export default {
27
27
  dialogVisible: false,
28
28
  expirepluginList: [],
29
29
  stateList: [{
30
- value: true,
30
+ value: false,
31
31
  label: 'login.即将到期',
32
32
  type: 'warning'
33
33
  }, {
34
- value: false,
34
+ value: true,
35
35
  label: 'login.已到期',
36
36
  type: 'error'
37
37
  }]
@@ -102,6 +102,10 @@ export default {
102
102
  justify-content: center;
103
103
  align-items: center;
104
104
  }
105
+ .el-table {
106
+ min-height: 240px;
107
+ max-height: 480px;
108
+ }
105
109
  :deep(td.el-table__cell) {
106
110
  border-bottom: 1px solid var(--frame-main-border) !important;
107
111
  }
@@ -186,7 +186,7 @@ const contentIndent = computed(() => {
186
186
  >.el-sub-menu>.el-sub-menu__title {
187
187
  display: flex;
188
188
  align-items: center;
189
- height: 44px;
189
+ height: 40px;
190
190
  padding: 0;
191
191
  margin-bottom: 4px;
192
192
 
@@ -281,11 +281,12 @@ const contentIndent = computed(() => {
281
281
  border-radius: 8px;
282
282
  cursor: pointer;
283
283
  width: 100%;
284
+ margin-bottom: 4px;
284
285
 
285
286
  :deep(.el-sub-menu__title) {
286
287
  display: flex;
287
288
  align-items: center;
288
- height: 44px;
289
+ height: 40px;
289
290
 
290
291
  margin-bottom: 4px;
291
292
 
@@ -326,7 +327,7 @@ const contentIndent = computed(() => {
326
327
  :deep(.el-menu-item) {
327
328
  display: flex;
328
329
  align-items: center;
329
- height: 44px;
330
+ height: 40px;
330
331
  border-radius: 8px;
331
332
  cursor: pointer;
332
333
  padding: 0 !important;
@@ -4,31 +4,133 @@ import {
4
4
  createRouter,
5
5
  createWebHashHistory
6
6
  } from 'vue-router'
7
+ import hostMap from './hostMap.js'
7
8
 
8
9
  const INDEX = () => import('./views/Index.vue')
9
10
  const jumpIframe = () => import('@/views/jumpIframe/index.vue')
11
+
10
12
  const router = createRouter({
11
13
  history: createWebHashHistory(),
12
- routes: [{
13
- path: '/',
14
- redirect: '/Index'
15
- },
16
- {
17
- path: '/Index',
18
- name: 'INDEX',
19
- component: INDEX,
20
- children: [
21
- {
22
- path: 'jumpIframe/:packageName([^/]*)/:route(.*)',
23
- name: 'jumpIframe3',
24
- component: jumpIframe
25
- }
26
- ]
27
- },
14
+ routes: [
15
+ {
16
+ path: '/',
17
+ redirect: '/Index'
18
+ },
19
+ {
20
+ path: '/Index',
21
+ name: 'INDEX',
22
+ component: INDEX,
23
+ meta: { requiresAuth: true },
24
+ children: [
25
+ {
26
+ path: 'jumpIframe/:packageName([^/]*)/:route(.*)',
27
+ name: 'jumpIframe3',
28
+ component: jumpIframe,
29
+ meta: { requiresAuth: true }
30
+ }
31
+ ]
32
+ }
28
33
  ]
29
34
  })
35
+
36
+ // ==================== 登录验证状态管理 ====================
37
+ let authCheckPromise = null
38
+ let isAuthChecked = false
39
+
40
+ // 带超时的请求
41
+ function fetchWithTimeout(promise, timeout) {
42
+ return Promise.race([
43
+ promise,
44
+ new Promise((_, reject) =>
45
+ setTimeout(() => reject(new Error('请求超时')), timeout)
46
+ )
47
+ ])
48
+ }
49
+
50
+ // 用 AxiosBuilder 构建的带拦截器的实例
51
+ function getAxiosInstance() {
52
+ return window.AxiosBuilder?.axios || window.axios
53
+ }
54
+
55
+ // 验证登录状态(复用同一个 Promise,避免重复请求)
56
+ async function checkAuthStatus() {
57
+ if (isAuthChecked) return true
58
+ if (authCheckPromise) return authCheckPromise
59
+
60
+ authCheckPromise = (async () => {
61
+ try {
62
+ console.time('getSystemInfo')
63
+ const res = await fetchWithTimeout(
64
+ getAxiosInstance().get('/IoT/api/v3/Auth/GetSystemRuntimeInfo'),
65
+ 3000
66
+ )
67
+ console.timeEnd('getSystemInfo')
68
+
69
+ if (res?.data?.code == 200 || res?.data?.code == -99999) {
70
+ isAuthChecked = true
71
+ return true
72
+ }
73
+ return false
74
+ } catch (err) {
75
+ console.log('登录验证失败:', err?.message || err)
76
+ return false
77
+ } finally {
78
+ authCheckPromise = null
79
+ }
80
+ })()
81
+
82
+ return authCheckPromise
83
+ }
84
+
85
+ // 跳转登录页
86
+ function redirectToLogin() {
87
+ const url = process.env.NODE_ENV === 'development'
88
+ ? hostMap('ganwei-iotcenter-login')
89
+ : '/ganwei-iotcenter-login/#/'
90
+ window.location.href = url
91
+ }
92
+
93
+ // 设置开发环境参数(从 URL 参数中读取)
94
+ function setDevelopmentParams() {
95
+ let map = window?.getParameterMap() || {}
96
+ if (process.env.NODE_ENV === 'development' && map) {
97
+ if (map.get('languageType')) {
98
+ sessionStorage.languageType = localStorage.languageType = map.get('languageType')
99
+ }
100
+ sessionStorage.userName = map.get('userName')
101
+ sessionStorage.passwordPolicy = map.get('passwordPolicy')
102
+ if (map.get('multiPark')) {
103
+ localStorage.multiPark = map.get('multiPark')
104
+ }
105
+ if (!sessionStorage.getItem('theme') || sessionStorage.getItem('theme') == 'null' || sessionStorage.getItem('theme') == 'undefined') {
106
+ sessionStorage.setItem('theme', map.get('theme'))
107
+ }
108
+ }
109
+ }
110
+
111
+ // ==================== 路由守卫 ====================
30
112
  router.beforeEach(async (to, from, next) => {
31
- next()
113
+
114
+ // 不需要认证的路由直接放行
115
+ if (!to.meta.requiresAuth) {
116
+ next()
117
+ return
118
+ }
119
+
120
+ // 设置开发环境参数
121
+ setDevelopmentParams()
122
+
123
+ // 验证登录状态
124
+ const isValid = await checkAuthStatus()
125
+
126
+ if (isValid) {
127
+ next()
128
+ } else {
129
+ // 验证失败,跳转登录页
130
+ redirectToLogin()
131
+ }
32
132
  })
33
- router.afterEach((to, from, next) => { })
133
+
134
+ router.afterEach(() => { })
135
+
34
136
  export default router