-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path404.html
More file actions
1206 lines (1120 loc) · 63.1 KB
/
404.html
File metadata and controls
1206 lines (1120 loc) · 63.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="zh-CN" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>404 Not Found - GasGx</title>
<!-- Tailwind CSS -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Font Awesome 6.5.1 -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;900&display=swap" rel="stylesheet">
<!-- html2canvas for Screenshot -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
gas: {
bg: '#0F0F0F',
card: '#202020',
green: '#5DD62C',
darkGreen: '#337418',
text: '#F8F8F8',
subtext: '#94a3b8'
}
},
fontFamily: {
sans: ['Inter', 'sans-serif'],
},
boxShadow: {
'glow': '0 0 20px rgba(93, 214, 44, 0.4)',
'glow-sm': '0 0 10px rgba(93, 214, 44, 0.2)',
},
animation: {
'glitch': 'glitch 1s linear infinite',
'float': 'float 6s ease-in-out infinite',
'spin-slow': 'spin 12s linear infinite',
},
keyframes: {
glitch: {
'2%, 64%': { transform: 'translate(2px,0) skew(0deg)' },
'4%, 60%': { transform: 'translate(-2px,0) skew(0deg)' },
'62%': { transform: 'translate(0,0) skew(5deg)' },
},
float: {
'0%, 100%': { transform: 'translateY(0)' },
'50%': { transform: 'translateY(-20px)' },
}
}
}
}
}
</script>
<style>
:root { color-scheme: dark; }
body {
background-color: #0F0F0F;
color: #F8F8F8;
font-family: 'Inter', sans-serif;
overflow-x: hidden;
display: flex;
flex-direction: column;
min-height: 100vh;
}
/* 滚动条 */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: #0F0F0F; }
::-webkit-scrollbar-thumb { background: #333; border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #5DD62C; }
/* 卡片磨砂效果 */
.gas-card {
background-color: rgba(32, 32, 32, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}
/* 404 Specific Styles */
.text-shadow-glow {
text-shadow: 0 0 20px rgba(93, 214, 44, 0.3);
}
.bg-grid-pattern {
background-image: linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
background-size: 40px 40px;
}
/* Mega Menu 动画 (从原文件保留) */
.mega-menu {
display: none;
position: absolute;
top: 100%;
left: 0;
width: 100%;
background-color: #151515;
border-top: 1px solid rgba(255, 255, 255, 0.1);
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
padding: 1.5rem 0;
box-shadow: 0 20px 40px rgba(0,0,0,0.5);
z-index: 40;
}
.group:hover .mega-menu {
display: block;
animation: slideDown 0.2s ease-out;
}
/* Dropdown Menu 动画 (从原文件保留) */
.dropdown-menu {
display: none;
position: absolute;
top: 100%;
min-width: 220px;
background-color: #151515;
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 0 0 8px 8px;
padding: 0.5rem 0;
box-shadow: 0 10px 25px rgba(0,0,0,0.5);
z-index: 40;
}
.group:hover .dropdown-menu {
display: block;
animation: slideDown 0.2s ease-out;
}
@keyframes slideDown {
from { opacity: 0; transform: translateY(-10px); }
to { opacity: 1; transform: translateY(0); }
}
.nav-item-link {
position: relative;
padding: 1.5rem 0.5rem;
color: #94a3b8;
transition: color 0.3s;
white-space: nowrap;
display: flex;
align-items: center;
gap: 4px;
}
.nav-item-link:hover { color: #5DD62C; }
.nav-item-link::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 0;
height: 2px;
background-color: #5DD62C;
transition: width 0.3s;
}
.nav-item-link:hover::after { width: 100%; }
/* Footer Link Hover */
.footer-link {
color: #94a3b8;
transition: all 0.2s;
font-size: 0.8rem;
white-space: nowrap;
}
.footer-link:hover {
color: #5DD62C;
}
/* Mobile Menu Styles */
#mobile-menu-container {
transition: transform 0.3s ease-in-out;
}
.mobile-submenu {
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease-out;
}
/* Footer Accordion (Mobile) */
.footer-accordion-content {
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease-out;
}
/* Floating Share Button Animation */
@keyframes floatPulse {
0% { box-shadow: 0 0 0 0 rgba(93, 214, 44, 0.4); }
70% { box-shadow: 0 0 0 10px rgba(93, 214, 44, 0); }
100% { box-shadow: 0 0 0 0 rgba(93, 214, 44, 0); }
}
.float-btn {
animation: floatPulse 2s infinite;
}
</style>
</head>
<body class="flex flex-col min-h-screen relative bg-grid-pattern">
<!-- Header -->
<header class="fixed top-0 w-full z-50 gas-card h-16 transition-all duration-300">
<div class="max-w-[1800px] mx-auto px-4 h-full flex justify-between items-center relative">
<!-- Left: Logo + Tagline -->
<div class="flex items-center gap-3 w-auto shrink-0 mr-4">
<a href="/index.html" class="flex items-center gap-2 group">
<h1 class="text-2xl font-bold tracking-wider text-gas-green hover:text-white transition-colors cursor-pointer">GasGx</h1>
</a>
<!-- Tagline: Header (Desktop) -->
<div class="hidden md:flex flex-col justify-center border-l border-gray-700 pl-3 h-8">
<span id="header-tagline" class="text-gas-green text-xs font-bold tracking-wide">Natural Gas Power Mining Assistant</span>
</div>
</div>
<!-- Center: Desktop Navigation -->
<nav id="desktop-nav" class="hidden lg:flex items-center justify-center gap-2 xl:gap-6 h-full flex-1">
<!-- JS Generated -->
</nav>
<!-- Right: Language & Mobile Toggle -->
<div class="flex items-center gap-4 w-auto shrink-0 justify-end ml-4">
<!-- Language Switcher (Desktop) -->
<div class="hidden sm:flex items-center gap-1 bg-[#111] border border-white/10 rounded-full px-1 py-1">
<button onclick="app.setLanguage('zh')" id="btn-lang-zh" class="px-2 py-1 rounded-full text-[10px] font-medium transition-all w-8 text-center text-gas-subtext">CN</button>
<button onclick="app.setLanguage('en')" id="btn-lang-en" class="px-2 py-1 rounded-full text-[10px] font-bold transition-all w-8 text-center text-black bg-gas-green shadow-glow">EN</button>
<button onclick="app.setLanguage('ru')" id="btn-lang-ru" class="px-2 py-1 rounded-full text-[10px] font-medium transition-all w-8 text-center text-gas-subtext">RU</button>
</div>
<!-- Mobile Menu Button -->
<button id="mobile-menu-btn" onclick="app.toggleMobileMenu()" class="lg:hidden p-2 text-white hover:text-gas-green text-xl focus:outline-none z-50 relative">
<i class="fa-solid fa-bars"></i>
</button>
</div>
</div>
</header>
<!-- Mobile Navigation Overlay -->
<div id="mobile-menu-container" class="fixed inset-0 z-40 bg-[#111] transform translate-x-full pt-20 px-4 pb-8 overflow-y-auto lg:hidden">
<!-- Mobile Lang Switcher -->
<div class="flex justify-center gap-4 mb-6 border-b border-white/10 pb-4">
<div class="flex items-center gap-2 bg-[#222] border border-white/10 rounded-full px-1 py-1">
<button onclick="app.setLanguage('zh')" id="mob-btn-lang-zh" class="px-4 py-2 rounded-full text-xs font-bold transition-all text-gray-400">CN</button>
<button onclick="app.setLanguage('en')" id="mob-btn-lang-en" class="px-4 py-2 rounded-full text-xs font-medium transition-all text-black bg-gas-green">EN</button>
<button onclick="app.setLanguage('ru')" id="mob-btn-lang-ru" class="px-4 py-2 rounded-full text-xs font-medium transition-all text-gray-400">RU</button>
</div>
</div>
<nav id="mobile-nav-content" class="flex flex-col space-y-1">
<!-- JS Generated Mobile Nav -->
</nav>
</div>
<!-- Main Content Area: 404 Error -->
<main class="flex-grow pt-24 pb-12 px-4 w-full flex items-center justify-center min-h-[80vh] relative overflow-hidden">
<!-- Background Elements -->
<div class="absolute inset-0 z-0 pointer-events-none overflow-hidden">
<!-- Background Glow -->
<div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] bg-gas-green/5 rounded-full blur-3xl"></div>
<!-- Floating Gear Left -->
<i class="fa-solid fa-gear text-[200px] text-white/5 absolute -left-20 top-1/4 animate-spin-slow"></i>
<!-- Floating Gear Right -->
<i class="fa-solid fa-gear text-[150px] text-white/5 absolute -right-10 bottom-1/4 animate-spin-slow" style="animation-direction: reverse;"></i>
</div>
<div class="max-w-3xl w-full text-center relative z-10 px-4">
<!-- 404 Graphic -->
<div class="mb-8 relative inline-block animate-float">
<h1 class="text-[120px] md:text-[180px] font-black leading-none text-transparent bg-clip-text bg-gradient-to-b from-gas-green to-gas-darkGreen text-shadow-glow select-none tracking-tighter">
404
</h1>
<div class="absolute -top-4 -right-4 md:-right-8 bg-gas-card border border-gas-green/30 px-3 py-1 rounded text-xs font-mono text-gas-green">
ERROR_CODE_NOT_FOUND
</div>
<!-- Warning Icon Overlay -->
<div class="absolute bottom-4 left-1/2 -translate-x-1/2 bg-[#0F0F0F] rounded-full p-2 border-2 border-gas-bg">
<i class="fa-solid fa-triangle-exclamation text-4xl text-gas-green animate-pulse"></i>
</div>
</div>
<!-- Text Content -->
<div class="space-y-6 mb-12">
<h2 class="text-3xl md:text-4xl font-bold text-white">
<span data-i18n="pageNotFoundTitle">链接中断</span>
</h2>
<p class="text-gas-subtext text-lg max-w-xl mx-auto" data-i18n="pageNotFoundDesc">
您访问的页面似乎已断开连接,或者已被移动到新的管道网络中。
</p>
<div class="font-mono text-sm text-gas-green/60 bg-white/5 inline-block px-4 py-2 rounded border border-white/5">
> Error Code: 404_NOT_FOUND
</div>
</div>
<!-- Action Buttons -->
<div class="flex flex-col sm:flex-row gap-4 justify-center items-center">
<a href="/index.html" class="group relative px-8 py-3 bg-gas-green text-black font-bold rounded hover:bg-white transition-all duration-300 shadow-glow overflow-hidden">
<span class="relative z-10 flex items-center gap-2">
<i class="fa-solid fa-house"></i>
<span data-i18n="backHome">返回首页</span>
</span>
<div class="absolute inset-0 bg-white/20 translate-y-full group-hover:translate-y-0 transition-transform duration-300"></div>
</a>
<a href="#" onclick="history.back()" class="px-8 py-3 bg-transparent border border-white/20 text-white font-medium rounded hover:border-gas-green hover:text-gas-green transition-all duration-300 flex items-center gap-2">
<i class="fa-solid fa-arrow-left"></i>
<span data-i18n="goBack">返回上一页</span>
</a>
</div>
<!-- Quick Links Suggestion (Optional) -->
<div class="mt-16 pt-8 border-t border-white/5">
<p class="text-sm text-gray-500 mb-4" data-i18n="youMightBeLookingFor">您可能在寻找:</p>
<div class="flex flex-wrap justify-center gap-4 text-sm">
<a href="/products" class="text-gas-subtext hover:text-gas-green transition-colors flex items-center gap-2">
<i class="fa-solid fa-server"></i> <span data-i18n="机型库">机型库</span>
</a>
<span class="text-gray-700">|</span>
<a href="/tools/mining-income-calculator" class="text-gas-subtext hover:text-gas-green transition-colors flex items-center gap-2">
<i class="fa-solid fa-calculator"></i> <span data-i18n="挖矿收益计算器">挖矿收益计算器</span>
</a>
<span class="text-gray-700">|</span>
<a href="/about/contact" class="text-gas-subtext hover:text-gas-green transition-colors flex items-center gap-2">
<i class="fa-solid fa-envelope"></i> <span data-i18n="联系我们">联系我们</span>
</a>
</div>
</div>
</div>
</main>
<!-- Footer -->
<footer class="bg-[#0a0a0a] border-t border-white/10 mt-auto pt-10 pb-8 relative z-10">
<div class="max-w-[1800px] mx-auto px-6">
<!-- Footer Top Row: Brand & Contact -->
<div class="flex flex-col md:flex-row justify-between items-start mb-8 pb-6 border-b border-white/5">
<!-- Left: Logo & Tagline -->
<div class="mb-6 md:mb-0">
<div class="flex items-center gap-2 mb-2">
<span class="text-2xl font-bold text-gas-green">GasGx</span>
</div>
<p class="text-sm text-gray-400 font-medium" data-i18n="footerTagline">Making natural gas power mining easier</p>
</div>
<!-- Right: Contact Info -->
<div class="flex flex-col md:items-end space-y-2">
<h4 class="text-white font-bold text-sm uppercase tracking-wider mb-1" data-i18n="联系我们">Contact Us</h4>
<a href="mailto:contact@gasgx.com" class="text-sm text-gray-400 hover:text-gas-green flex items-center gap-2 transition-colors">
<i class="fa-solid fa-envelope"></i> contact@gasgx.com
</a>
<div class="text-sm text-gray-400 flex items-center gap-2">
<i class="fa-brands fa-weixin"></i> <span class="hover:text-gas-green cursor-pointer">www_gasgx_com</span>
</div>
</div>
</div>
<!-- Footer Links: Row Layout (Desktop) / Accordion (Mobile) -->
<div id="footer-links" class="mb-10 space-y-2">
<!-- JS Generated -->
</div>
<!-- Bottom: Copyright & Social -->
<div class="flex flex-col md:flex-row justify-between items-center gap-6 pt-6 border-t border-white/5">
<div class="text-xs text-gray-600">
© 2026 GasGx. All rights reserved.
</div>
<div class="flex gap-4">
<a href="#" target="_blank" class="text-gray-500 hover:text-gas-green transition-colors"><i class="fa-brands fa-tiktok text-lg"></i></a>
<a href="#" target="_blank" class="text-gray-500 hover:text-gas-green transition-colors"><i class="fa-brands fa-linkedin text-lg"></i></a>
<a href="#" target="_blank" class="text-gray-500 hover:text-gas-green transition-colors"><i class="fa-brands fa-facebook text-lg"></i></a>
<a href="#" target="_blank" class="text-gray-500 hover:text-gas-green transition-colors"><i class="fa-brands fa-weixin text-lg"></i></a>
<a href="#" target="_blank" class="text-gray-500 hover:text-gas-green transition-colors"><i class="fa-brands fa-x-twitter text-lg"></i></a>
<a href="#" target="_blank" class="text-gray-500 hover:text-gas-green transition-colors"><i class="fa-brands fa-youtube text-lg"></i></a>
<a href="#" target="_blank" class="text-gray-500 hover:text-gas-green transition-colors"><i class="fa-brands fa-telegram text-lg"></i></a>
</div>
</div>
</div>
</footer>
<!-- Back to Top -->
<button onclick="window.scrollTo({top:0, behavior:'smooth'})" id="backToTopBtn" class="fixed bottom-6 right-6 bg-gas-green text-black w-10 h-10 rounded-full shadow-[0_0_15px_rgba(93,214,44,0.5)] flex items-center justify-center translate-y-20 opacity-0 transition-all duration-300 hover:scale-110 z-40 cursor-pointer">
<i class="fa-solid fa-arrow-up"></i>
</button>
<!-- Application Logic -->
<script>
// --- DATA OBJECT (Identical to original for navigation consistency) ---
const AppData = {
navigation: [
{ title: "首页", path: "/index.html", type: "link", icon: "fa-solid fa-house" },
{
title: "解决方案",
path: "/solutions",
type: "menu",
children: [
{ title: "油气井/伴生气发电", path: "/solutions/oilfield" },
{ title: "工业园区与分布式能源", path: "/solutions/industrial" },
{ title: "数据中心 / 挖矿电力", path: "/solutions/mining" },
{ title: "热电联供 CHP", path: "/solutions/chp" }
]
},
{
title: "机型库",
path: "/products",
type: "mega",
sections: [
{
header: "按功率分类",
items: [
{ title: "小于 500 kW", path: "/products/power-range/0-500kw" },
{ title: "500 – 1,000 kW", path: "/products/power-range/500-1000kw" },
{ title: "1 MW 以上", path: "/products/power-range/1mw-plus" }
]
},
{
header: "按冷却方式",
items: [
{ title: "风冷", path: "/products/cooling/air" },
{ title: "液冷", path: "/products/cooling/liquid" }
]
},
{
header: "按气源类型",
items: [
{ title: "天然气", path: "/products/gas/natural" },
{ title: "伴生气", path: "/products/gas/associated" },
{ title: "低甲烷值气", path: "/products/gas/low-methane" }
]
},
{
header: "按部署形式",
items: [
{ title: "集装箱机组", path: "/products/deployment/container" },
{ title: "一体化机组 AIS", path: "/products/deployment/ais" },
{ title: "滑撬式机组", path: "/products/deployment/skid" }
]
},
{
header: "按品牌",
items: [
{ title: "全部品牌", path: "/products/brands" },
{ title: "中国生产", path: "/products/brands/china" },
{ title: "海外生产", path: "/products/brands/overseas" }
]
}
]
},
{
title: "排行榜",
path: "/rankings",
type: "mega",
gridCols: "grid-cols-6",
sections: [
{
header: "性能榜",
items: [
{ title: "综合性能 TOP 榜", path: "/rankings/performance" },
{ title: "高效率榜", path: "/rankings/efficiency" },
{ title: "天然气内燃机发电效率排行榜", path: "/rankings/engine-efficiency" },
{ title: "天然气内燃机热效率排行榜", path: "/rankings/thermal-efficiency" },
{ title: "天然气内燃机耗气量排行榜", path: "/rankings/gas-consumption" }
]
},
{
header: "经济性榜",
items: [
{ title: "最佳 ROI 榜", path: "/rankings/roi" },
{ title: "最低发电成本 LCOE 榜", path: "/rankings/lcoe" },
{ title: "天然气内燃机折旧排行榜", path: "/rankings/depreciation" },
{ title: "天然气内燃机投资回报率排行榜", path: "/rankings/engine-roi" }
]
},
{
header: "可靠性榜",
items: [
{ title: "高可靠机组榜", path: "/rankings/reliability" },
{ title: "最长 MTBF 榜", path: "/rankings/mtbf" },
{ title: "天然气内燃机保养时间排行榜", path: "/rankings/maintenance-interval" },
{ title: "天然气内燃机备件保障排行榜", path: "/rankings/spare-parts" }
]
},
{
header: "品质与环保榜",
items: [
{ title: "天然气内燃机排放排行榜", path: "/rankings/emissions" },
{ title: "天然气内燃机噪音排行榜", path: "/rankings/noise" }
]
},
{
header: "系统能力榜",
items: [
{ title: "天然气内燃机发电机排行榜", path: "/rankings/generator" },
{ title: "天然气内燃机控制系统排行榜", path: "/rankings/control-system" }
]
},
{
header: "区域榜",
items: [
{ title: "美国市场榜", path: "/rankings/usa" },
{ title: "加拿大市场榜", path: "/rankings/canada" },
{ title: "中东市场榜", path: "/rankings/middle-east" },
{ title: "俄罗斯市场榜", path: "/rankings/russia" }
]
}
]
},
{
title: "应用场景",
path: "/use-cases",
type: "menu",
children: [
{ title: "油气井 / 伴生气", path: "/use-cases/oilfield" },
{ title: "工业与园区能源", path: "/use-cases/industrial" },
{ title: "挖矿 / 数据中心", path: "/use-cases/mining" },
{ title: "CHP 热电联供", path: "/use-cases/chp" }
]
},
{
title: "工具箱",
path: "/tools",
type: "mega",
gridCols: "grid-cols-5",
sections: [
{
header: "经济测算工具",
items: [
{ title: "LCOE 成本计算器", path: "/tools/lcoe-calculator" },
{ title: "ROI 回报估算器", path: "/tools/roi" },
{ title: "燃气发电挖矿收益计算器", path: "/tools/mining-power-calc" },
{ title: "蒙特卡洛模拟盈利分析", path: "/tools/monte-carlo-profit" },
{ title: "天然气发电耗气成本分析", path: "/tools/gas-cost-analysis" }
]
},
{
header: "工程与技术工具",
items: [
{ title: "气质适配工具", path: "/tools/gas-fit" },
{ title: "排放估算工具", path: "/tools/emission" },
{ title: "气体分析计算器", path: "/tools/gas-analyzer" },
{ title: "能电转换计算器", path: "/tools/energy-conversion" },
{ title: "天然气主要成分热值表", path: "/tools/gas-composition-heat" }
]
},
{
header: "项目与选型工具",
items: [
{ title: "站点匹配向导", path: "/tools/site-fit" },
{ title: "气源所在地分析", path: "/tools/gas-location-analysis" },
{ title: "燃气发动机选型与运营经济性", path: "/tools/engine-selection" },
{ title: "天然气发电机机油消耗率", path: "/tools/oil-consumption" },
{ title: "车机 VS 工业机 10MW 对比分析", path: "/tools/vehicle-vs-industrial-10mw" },
{ title: "多机型对比 3 年运营数据", path: "/tools/3y-compare" }
]
},
{
header: "矿工专区(托管与算力分析)",
items: [
{ title: "挖矿收益计算器", path: "/tools/mining-income-calculator" },
{ title: "矿机盈利能力计算器", path: "/tools/miner-profitability" },
{ title: "矿机选购速查", path: "/tools/miner-buying-guide" }
]
},
{
header: "全球支持与合规",
items: [
{ title: "加拿大 AECO 天然气价格预测", path: "/tools/aeco-price-forecast" },
{ title: "全球物流运输推荐", path: "/tools/global-logistics" },
{ title: "全球合规政策", path: "/tools/global-compliance" }
]
}
]
},
{
title: "资料中心",
path: "/resources",
type: "mega",
gridCols: "grid-cols-4",
sections: [
{
header: "文档",
items: [
{ title: "白皮书", path: "/resources/whitepapers" },
{ title: "行业报告", path: "/resources/reports" }
]
},
{
header: "案例",
items: [
{ title: "全部案例", path: "/resources/case-studies" },
{ title: "按区域查看", path: "/resources/case-studies/regions" },
{ title: "按场景查看", path: "/resources/case-studies/scenarios" }
]
},
{
header: "技术库",
items: [
{ title: "技术参数表", path: "/resources/datasheets" },
{ title: "认证与合规文件", path: "/resources/certifications" }
]
},
{
header: "媒体与支持",
items: [
{ title: "视频与教程", path: "/resources/videos" },
{ title: "常见问答 FAQ", path: "/resources/faq" }
]
}
]
},
{
title: "服务支持",
path: "/support",
type: "menu",
children: [
{ title: "服务网络", path: "/support/network" },
{ title: "技术支持", path: "/support/tech" },
{ title: "售后与保养", path: "/support/service" }
]
},
{
title: "关于我们",
path: "/about",
type: "menu",
children: [
{ title: "公司介绍", path: "/about/company" },
{ title: "联系我们", path: "/about/contact" }
]
}
],
i18n: {
zh: {
tagline: "天然气发电挖矿助手",
footerTagline: "让天然气发电挖矿更简单",
pageNotFoundTitle: "链接中断",
pageNotFoundDesc: "您访问的页面似乎已断开连接,或者已被移动到新的管道网络中。",
backHome: "返回首页",
goBack: "返回上一页",
youMightBeLookingFor: "您可能在寻找:"
},
en: {
tagline: "Natural Gas Power Mining Assistant",
footerTagline: "Making natural gas power mining easier",
pageNotFoundTitle: "Connection Severed",
pageNotFoundDesc: "The page you are looking for seems to have been disconnected or moved to a new pipeline network.",
backHome: "Back to Home",
goBack: "Go Back",
youMightBeLookingFor: "You might be looking for:",
"首页": "Home",
"解决方案": "Solutions",
"机型库": "Products",
"排行榜": "Rankings",
"应用场景": "Use Cases",
"工具箱": "Tools",
"资料中心": "Resources",
"服务支持": "Support",
"关于我们": "About Us",
"联系我们": "Contact Us",
"油气井/伴生气发电": "Oil & Gas Power",
"工业园区与分布式能源": "Industrial Power",
"数据中心 / 挖矿电力": "Data Center / Mining",
"热电联供 CHP": "CHP Cogeneration",
"按功率分类": "By Power",
"按冷却方式": "By Cooling",
"按气源类型": "By Gas Type",
"按部署形式": "By Deployment",
"按品牌": "By Brand",
"小于 500 kW": "< 500 kW",
"500 – 1,000 kW": "500 – 1,000 kW",
"1 MW 以上": "1 MW+",
"风冷": "Air Cooled",
"液冷": "Liquid Cooled",
"天然气": "Natural Gas",
"伴生气": "Associated Gas",
"低甲烷值气": "Low Methane Gas",
"集装箱机组": "Containerized",
"一体化机组 AIS": "Integrated (AIS)",
"滑撬式机组": "Skid Mounted",
"全部品牌": "All Brands",
"中国生产": "Made in China",
"海外生产": "Overseas Brands",
"性能榜": "Performance",
"经济性榜": "Economics",
"可靠性榜": "Reliability",
"品质与环保榜": "Quality & Eco",
"系统能力榜": "System Cap.",
"区域榜": "Regions",
"综合性能 TOP 榜": "Top Performance",
"高效率榜": "High Efficiency",
"天然气内燃机发电效率排行榜": "Elec. Efficiency Rank",
"天然气内燃机热效率排行榜": "Thermal Efficiency Rank",
"天然气内燃机耗气量排行榜": "Gas Consumption Rank",
"最佳 ROI 榜": "Best ROI",
"最低发电成本 LCOE 榜": "Lowest LCOE",
"天然气内燃机折旧排行榜": "Depreciation Rank",
"天然气内燃机投资回报率排行榜": "ROI Rank",
"高可靠机组榜": "High Reliability",
"最长 MTBF 榜": "Longest MTBF",
"天然气内燃机保养时间排行榜": "Maintenance Interval Rank",
"天然气内燃机备件保障排行榜": "Spare Parts Rank",
"天然气内燃机排放排行榜": "Emission Rank",
"天然气内燃机噪音排行榜": "Noise Rank",
"天然气内燃机发电机排行榜": "Generator Rank",
"天然气内燃机控制系统排行榜": "Control System Rank",
"美国市场榜": "USA Market",
"加拿大市场榜": "Canada Market",
"中东市场榜": "Middle East Market",
"俄罗斯市场榜": "Russia Market",
"油气井 / 伴生气": "Oilfield / Associated Gas",
"工业与园区能源": "Industrial & Park",
"挖矿 / 数据中心": "Mining / Data Center",
"CHP 热电联供": "CHP",
"经济测算工具": "Economic Tools",
"工程与技术工具": "Engineering Tools",
"项目与选型工具": "Selection Tools",
"矿工专区(托管与算力分析)": "Miners Zone",
"全球支持与合规": "Global Support",
"LCOE 成本计算器": "LCOE Calculator",
"ROI 回报估算器": "ROI Estimator",
"燃气发电挖矿收益计算器": "Gas Mining Revenue",
"蒙特卡洛模拟盈利分析": "Monte Carlo Sim",
"天然气发电耗气成本分析": "Gas Cost Analysis",
"气质适配工具": "Gas Fit Tool",
"排放估算工具": "Emission Estimator",
"气体分析计算器": "Gas Analyzer",
"能电转换计算器": "Energy Conversion",
"天然气主要成分热值表": "Heat Value Table",
"站点匹配向导": "Site Fit Wizard",
"气源所在地分析": "Location Analysis",
"燃气发动机选型与运营经济性": "Engine Selection & Econ",
"天然气发电机机油消耗率": "Oil Consumption",
"车机 VS 工业机 10MW 对比分析": "Vehicle vs Ind. (10MW)",
"多机型对比 3 年运营数据": "3-Year Ops Data",
"挖矿收益计算器": "Mining Revenue Calc",
"矿机盈利能力计算器": "Miner Profitability",
"矿机选购速查": "Miner Buyer Guide",
"加拿大 AECO 天然气价格预测": "AECO Price Forecast",
"全球物流运输推荐": "Global Logistics",
"全球合规政策": "Global Compliance",
"文档": "Documents",
"案例": "Case Studies",
"技术库": "Tech Library",
"媒体与支持": "Media & Support",
"白皮书": "Whitepapers",
"行业报告": "Industry Reports",
"全部案例": "All Cases",
"按区域查看": "By Region",
"按场景查看": "By Scenario",
"技术参数表": "Datasheets",
"认证与合规文件": "Certifications",
"视频与教程": "Videos & Tutorials",
"常见问答 FAQ": "FAQ",
"服务网络": "Service Network",
"技术支持": "Tech Support",
"售后与保养": "After-sales",
"公司介绍": "Company Profile"
},
ru: {
tagline: "Помощник по газовому майнингу",
footerTagline: "Майнинг на газе проще",
pageNotFoundTitle: "Соединение разорвано",
pageNotFoundDesc: "Запрашиваемая страница, похоже, отключена или перемещена в новую сеть трубопроводов.",
backHome: "На главную",
goBack: "Назад",
youMightBeLookingFor: "Возможно, вы ищете:",
"首页": "Главная",
"解决方案": "Решения",
"机型库": "Продукты",
"排行榜": "Рейтинги",
"应用场景": "Кейсы",
"工具箱": "Инструменты",
"资料中心": "Ресурсы",
"服务支持": "Поддержка",
"关于我们": "О нас",
"联系我们": "Контакты",
"油气井/伴生气发电": "Нефтегаз",
"工业园区与分布式能源": "Пром. энергия",
"数据中心 / 挖矿电力": "Майнинг",
"热电联供 CHP": "Когенерация",
"按功率分类": "По мощности",
"按冷却方式": "По охлаждению",
"按气源类型": "По типу газа",
"按部署形式": "По типу",
"按品牌": "По бренду",
"小于 500 kW": "< 500 кВт",
"500 – 1,000 kW": "500 – 1,000 кВт",
"1 MW 以上": "1 МВт+",
"风冷": "Воздушное",
"液冷": "Жидкостное",
"天然气": "Природный газ",
"伴生气": "Попутный газ",
"低甲烷值气": "Низкий метан",
"集装箱机组": "Контейнерные",
"一体化机组 AIS": "Интегрированные",
"滑撬式机组": "На раме",
"全部品牌": "Все бренды",
"中国生产": "Китай",
"海外生产": "Зарубежные",
"性能榜": "Производ.",
"经济性榜": "Экономика",
"可靠性榜": "Надежность",
"品质与环保榜": "Качество",
"系统能力榜": "Системы",
"区域榜": "Регионы",
"综合性能 TOP 榜": "Топ прозвод.",
"高效率榜": "Выс. эффективность",
"天然气内燃机发电效率排行榜": "Эл. КПД",
"天然气内燃机热效率排行榜": "Тепл. КПД",
"天然气内燃机耗气量排行榜": "Расход газа",
"最佳 ROI 榜": "Лучший ROI",
"最低发电成本 LCOE 榜": "Мин. LCOE",
"天然气内燃机折旧排行榜": "Амортизация",
"天然气内燃机投资回报率排行榜": "Рейтинг ROI",
"高可靠机组榜": "Надежность",
"最长 MTBF 榜": "Макс. MTBF",
"天然气内燃机保养时间排行榜": "Интервал ТО",
"天然气内燃机备件保障排行榜": "Запчасти",
"天然气内燃机排放排行榜": "Выбросы",
"天然气内燃机噪音排行榜": "Шум",
"天然气内燃机发电机排行榜": "Генераторы",
"天然气内燃机控制系统排行榜": "Системы упр.",
"美国市场榜": "Рынок США",
"加拿大市场榜": "Рынок Канады",
"中东市场榜": "Ближний Восток",
"俄罗斯市场榜": "Рынок РФ",
"油气井 / 伴生气": "Нефтегаз",
"工业与园区能源": "Пром. зоны",
"挖矿 / 数据中心": "Майнинг ЦОД",
"CHP 热电联供": "ТЭЦ",
"经济测算工具": "Экономика",
"工程与技术工具": "Инжиниринг",
"项目与选型工具": "Подбор",
"矿工专区(托管与算力分析)": "Майнерам",
"全球支持与合规": "Поддержка",
"LCOE 成本计算器": "LCOE Кальк.",
"ROI 回报估算器": "ROI Оценка",
"燃气发电挖矿收益计算器": "Доход майнинга",
"蒙特卡洛模拟盈利分析": "Монте-Карло",
"天然气发电耗气成本分析": "Затраты на газ",
"气质适配工具": "Анализ газа",
"排放估算工具": "Выбросы",
"气体分析计算器": "Газовый анализ",
"能电转换计算器": "Конвертер",
"天然气主要成分热值表": "Таблица тепла",
"站点匹配向导": "Подбор площадки",
"气源所在地分析": "Локация",
"燃气发动机选型与运营经济性": "Выбор двигателя",
"天然气发电机机油消耗率": "Расход масла",
"车机 VS 工业机 10MW 对比分析": "Авто vs Пром",
"多机型对比 3 年运营数据": "Данные за 3 года",
"挖矿收益计算器": "Доходность",
"矿机盈利能力计算器": "Рентабельность",
"矿机选购速查": "Выбор майнера",
"加拿大 AECO 天然气价格预测": "Прогноз AECO",
"全球物流运输推荐": "Логистика",
"全球合规政策": "Комплаенс",
"文档": "Документы",
"案例": "Кейсы",
"技术库": "Тех. база",
"媒体与支持": "Медиа",
"白皮书": "Whitepapers",
"行业报告": "Отчеты",
"全部案例": "Все кейсы",
"按区域查看": "По регионам",
"按场景查看": "По сценариям",
"技术参数表": "Спецификации",
"认证与合规文件": "Сертификаты",
"视频与教程": "Видео",
"常见问答 FAQ": "FAQ",
"服务网络": "Сервис",
"技术支持": "Техподдержка",
"售后与保养": "Обслуживание",
"公司介绍": "О компании"
}
}
};
const app = {
currentLang: 'en', // Default to English
isMobileMenuOpen: false,
init() {
this.renderNav();
this.renderFooter();
this.updateStaticText();
// Back to Top Scroll Logic
window.onscroll = () => {
const btn = document.getElementById('backToTopBtn');
if (document.body.scrollTop > 100 || document.documentElement.scrollTop > 100) {
btn.classList.remove('translate-y-20', 'opacity-0');
} else {
btn.classList.add('translate-y-20', 'opacity-0');
}
};
},
setLanguage(lang) {
this.currentLang = lang;
['zh', 'en', 'ru'].forEach(l => {
const btn = document.getElementById(`btn-lang-${l}`);
const mobBtn = document.getElementById(`mob-btn-lang-${l}`);
const activeClass = "text-black bg-gas-green shadow-glow font-bold";
const inactiveClass = "text-gas-subtext hover:text-white hover:bg-white/5 font-medium";
const mobActiveClass = "text-black bg-gas-green font-bold";
const mobInactiveClass = "text-gray-400 font-medium";
if (btn) btn.className = `px-2 py-1 rounded-full text-[10px] transition-all w-8 text-center ${l === lang ? activeClass : inactiveClass}`;
if (mobBtn) mobBtn.className = `px-4 py-2 rounded-full text-xs transition-all ${l === lang ? mobActiveClass : mobInactiveClass}`;
});
this.renderNav();
this.renderMobileNav();
this.renderFooter();
this.updateStaticText();
},
t(key) {
const dict = AppData.i18n[this.currentLang];
return (dict && dict[key]) ? dict[key] : key;
},
toggleMobileMenu() {
this.isMobileMenuOpen = !this.isMobileMenuOpen;
const menu = document.getElementById('mobile-menu-container');
const btnIcon = document.querySelector('#mobile-menu-btn i');
if (this.isMobileMenuOpen) {
menu.classList.remove('translate-x-full');
btnIcon.classList.remove('fa-bars');
btnIcon.classList.add('fa-xmark');
document.body.style.overflow = 'hidden';
this.renderMobileNav();
} else {
menu.classList.add('translate-x-full');
btnIcon.classList.remove('fa-xmark');
btnIcon.classList.add('fa-bars');
document.body.style.overflow = '';
}
},
toggleMobileSubmenu(id) {
const el = document.getElementById(id);
const icon = document.getElementById(`icon-${id}`);
if (el.style.maxHeight) {
el.style.maxHeight = null;
icon.classList.remove('rotate-180');
} else {
el.style.maxHeight = el.scrollHeight + "px";
icon.classList.add('rotate-180');
}
},
// Footer Toggle Function (Mobile)
toggleFooter(id) {
const el = document.getElementById(id);
const icon = document.getElementById(`footer-icon-${id}`);
if (el.style.maxHeight) {
el.style.maxHeight = null;
icon.classList.remove('fa-minus');
icon.classList.add('fa-plus');
icon.classList.remove('text-gas-green');
} else {
el.style.maxHeight = el.scrollHeight + "px";
icon.classList.remove('fa-plus');
icon.classList.add('fa-minus');
icon.classList.add('text-gas-green');
}
},
renderNav() {
const navContainer = document.getElementById('desktop-nav');
navContainer.innerHTML = '';
const totalItems = AppData.navigation.length;
AppData.navigation.forEach((item, index) => {
if (item.type === 'link') {
navContainer.innerHTML += `
<a href="${item.path}" class="nav-item-link font-medium text-sm">
<span>${this.t(item.title)}</span>
</a>
`;
}
else if (item.type === 'menu' || item.type === 'mega') {
let dropContent = '';
let isMega = item.type === 'mega';