修改大屏,继续完善官网

This commit is contained in:
2025-09-15 17:53:30 +08:00
parent bc3b3d7b52
commit fab7e3e4ea
15 changed files with 1146 additions and 39 deletions

View File

@@ -285,6 +285,48 @@ body {
padding: 5rem 0;
}
/* 百度地图样式 */
#baidu-map-container {
border: 2px solid #e9ecef;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
#baidu-map-container:hover {
border-color: #667eea;
box-shadow: 0 5px 15px rgba(102, 126, 234, 0.2);
}
/* 地图加载状态样式 */
.map-loading {
background: linear-gradient(45deg, #f8f9fa 25%, transparent 25%),
linear-gradient(-45deg, #f8f9fa 25%, transparent 25%),
linear-gradient(45deg, transparent 75%, #f8f9fa 75%),
linear-gradient(-45deg, transparent 75%, #f8f9fa 75%);
background-size: 20px 20px;
background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
animation: mapLoading 1s linear infinite;
}
@keyframes mapLoading {
0% { background-position: 0 0, 0 10px, 10px -10px, -10px 0px; }
100% { background-position: 20px 20px, 20px 30px, 30px 10px, 10px 20px; }
}
/* 地图控件样式优化 */
.BMap_cpyCtrl {
display: none !important;
}
/* 响应式地图 */
@media (max-width: 768px) {
#baidu-map-container {
height: 250px !important;
margin-bottom: 2rem;
}
}
.contact-info {
margin-bottom: 2rem;
}
@@ -406,6 +448,163 @@ html {
100% { transform: rotate(360deg); }
}
/* 页面加载动画 */
.page-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
justify-content: center;
align-items: center;
z-index: 9999;
transition: opacity 0.5s ease-out;
}
.page-loader.fade-out {
opacity: 0;
pointer-events: none;
}
.loader-content {
text-align: center;
color: white;
}
.spinner {
width: 60px;
height: 60px;
border: 4px solid rgba(255, 255, 255, 0.3);
border-top: 4px solid white;
border-radius: 50%;
animation: spin 1s linear infinite;
margin: 0 auto 20px;
}
.loader-text {
font-size: 18px;
font-weight: 500;
margin-bottom: 10px;
}
.loader-subtitle {
font-size: 14px;
opacity: 0.8;
}
/* 性能优化 - 图片懒加载 */
.lazy-image {
opacity: 0;
transition: opacity 0.3s ease-in-out;
}
.lazy-image.loaded {
opacity: 1;
}
/* 按钮悬停效果优化 */
.btn {
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
transform: translateZ(0);
}
.btn:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
}
/* 卡片悬停效果优化 */
.card, .feature-card, .download-card {
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
transform: translateZ(0);
}
.card:hover, .feature-card:hover, .download-card:hover {
transform: translateY(-5px);
box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1);
}
/* 文字渐入动画 */
.fade-in-up {
opacity: 0;
transform: translateY(30px);
transition: all 0.6s ease-out;
}
.fade-in-up.animate {
opacity: 1;
transform: translateY(0);
}
/* 进度条动画 */
.progress-bar {
transition: width 1.5s ease-in-out;
}
/* 数字计数动画 */
.counter {
font-weight: bold;
color: #667eea;
}
/* 表单提交状态 */
.form-submitting {
pointer-events: none;
opacity: 0.7;
}
.form-submitting .btn {
cursor: not-allowed;
}
/* 通知样式优化 */
.alert {
border: none;
border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}
.alert-success {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
/* 骨架屏加载效果 */
.skeleton {
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
background-size: 200% 100%;
animation: loading 1.5s infinite;
}
@keyframes loading {
0% {
background-position: 200% 0;
}
100% {
background-position: -200% 0;
}
}
/* 图片加载优化 */
img {
max-width: 100%;
height: auto;
loading: lazy;
}
/* 减少重绘重排 */
* {
box-sizing: border-box;
}
/* GPU加速 */
.gpu-accelerated {
transform: translateZ(0);
will-change: transform;
}
/* 系统入口功能区 */
.systems-section {
padding: 5rem 0;

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 MiB

View File

@@ -0,0 +1,94 @@
<svg width="400" height="300" viewBox="0 0 400 300" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="skyGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#87CEEB;stop-opacity:1" />
<stop offset="100%" style="stop-color:#E0F6FF;stop-opacity:1" />
</linearGradient>
<linearGradient id="farmGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#8FBC8F;stop-opacity:1" />
<stop offset="100%" style="stop-color:#228B22;stop-opacity:1" />
</linearGradient>
</defs>
<!-- 背景天空 -->
<rect width="400" height="200" fill="url(#skyGradient)"/>
<!-- 地面 -->
<rect x="0" y="200" width="400" height="100" fill="url(#farmGradient)"/>
<!-- 云朵 -->
<ellipse cx="80" cy="50" rx="25" ry="15" fill="white" opacity="0.8"/>
<ellipse cx="95" cy="45" rx="20" ry="12" fill="white" opacity="0.8"/>
<ellipse cx="320" cy="70" rx="30" ry="18" fill="white" opacity="0.8"/>
<!-- 养殖场建筑 -->
<rect x="50" y="120" width="120" height="80" fill="#8B4513" stroke="#654321" stroke-width="2"/>
<polygon points="50,120 110,80 170,120" fill="#DC143C" stroke="#B22222" stroke-width="2"/>
<!-- 窗户 -->
<rect x="70" y="140" width="20" height="20" fill="#FFD700" stroke="#FFA500" stroke-width="1"/>
<rect x="130" y="140" width="20" height="20" fill="#FFD700" stroke="#FFA500" stroke-width="1"/>
<!---->
<rect x="100" y="170" width="20" height="30" fill="#8B4513" stroke="#654321" stroke-width="1"/>
<circle cx="115" cy="185" r="2" fill="#FFD700"/>
<!-- 智能设备 -->
<!-- 监控摄像头 -->
<rect x="45" y="115" width="8" height="6" fill="#2F4F4F" rx="2"/>
<circle cx="49" cy="118" r="3" fill="#000" stroke="#2F4F4F" stroke-width="1"/>
<!-- 传感器 -->
<rect x="175" y="130" width="6" height="15" fill="#4169E1" rx="3"/>
<circle cx="178" cy="125" r="3" fill="#1E90FF"/>
<!-- 数据传输线 -->
<path d="M 178 125 Q 200 100 250 110" stroke="#4169E1" stroke-width="2" fill="none" stroke-dasharray="5,5">
<animate attributeName="stroke-dashoffset" values="0;10" dur="2s" repeatCount="indefinite"/>
</path>
<!-- 控制中心 -->
<rect x="230" y="100" width="80" height="60" fill="#F5F5DC" stroke="#D3D3D3" stroke-width="2" rx="5"/>
<rect x="240" y="110" width="60" height="40" fill="#000" stroke="#333" stroke-width="1"/>
<!-- 屏幕显示 -->
<rect x="245" y="115" width="50" height="30" fill="#00FF00" opacity="0.3"/>
<text x="270" y="130" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#000">监控中心</text>
<text x="270" y="140" text-anchor="middle" font-family="Arial, sans-serif" font-size="6" fill="#000">实时数据</text>
<!-- 动物 -->
<!---->
<ellipse cx="100" cy="230" rx="25" ry="15" fill="#8B4513"/>
<ellipse cx="85" cy="225" rx="8" ry="6" fill="#8B4513"/>
<rect x="82" y="220" width="3" height="8" fill="#654321"/>
<rect x="87" y="220" width="3" height="8" fill="#654321"/>
<!---->
<ellipse cx="150" cy="235" rx="20" ry="12" fill="#F5F5F5"/>
<ellipse cx="138" cy="230" rx="6" ry="5" fill="#F5F5F5"/>
<rect x="136" y="225" width="2" height="6" fill="#000"/>
<rect x="140" y="225" width="2" height="6" fill="#000"/>
<!-- 智能标签 -->
<rect x="95" y="215" width="10" height="6" fill="#FF6347" rx="2"/>
<text x="100" y="220" text-anchor="middle" font-family="Arial, sans-serif" font-size="4" fill="white">ID</text>
<rect x="145" y="220" width="10" height="6" fill="#FF6347" rx="2"/>
<text x="150" y="225" text-anchor="middle" font-family="Arial, sans-serif" font-size="4" fill="white">ID</text>
<!-- 信号波纹 -->
<g opacity="0.6">
<circle cx="100" cy="218" r="15" fill="none" stroke="#FF6347" stroke-width="1">
<animate attributeName="r" values="5;20;5" dur="3s" repeatCount="indefinite"/>
<animate attributeName="opacity" values="1;0;1" dur="3s" repeatCount="indefinite"/>
</circle>
<circle cx="150" cy="223" r="12" fill="none" stroke="#FF6347" stroke-width="1">
<animate attributeName="r" values="5;18;5" dur="2.5s" repeatCount="indefinite"/>
<animate attributeName="opacity" values="1;0;1" dur="2.5s" repeatCount="indefinite"/>
</circle>
</g>
<!-- 标题 -->
<rect x="0" y="270" width="400" height="30" fill="rgba(0,0,0,0.7)"/>
<text x="200" y="290" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="16" font-weight="bold" fill="white">智能养殖监控系统</text>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 MiB

View File

@@ -0,0 +1,112 @@
<svg width="400" height="300" viewBox="0 0 400 300" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="bgGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:0.1" />
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:0.1" />
</linearGradient>
<linearGradient id="screenGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#1a202c;stop-opacity:1" />
<stop offset="100%" style="stop-color:#2d3748;stop-opacity:1" />
</linearGradient>
</defs>
<!-- 背景 -->
<rect width="400" height="300" fill="url(#bgGradient)"/>
<!-- 办公室环境 -->
<rect x="0" y="200" width="400" height="100" fill="#f7fafc"/>
<!-- 大屏幕显示器 -->
<rect x="50" y="50" width="300" height="180" fill="url(#screenGradient)" stroke="#4a5568" stroke-width="3" rx="10"/>
<rect x="60" y="60" width="280" height="160" fill="#000" rx="5"/>
<!-- 数据图表区域 -->
<!-- 折线图 -->
<g transform="translate(70, 70)">
<text x="0" y="15" font-family="Arial, sans-serif" font-size="12" fill="#00ff00">养殖数据趋势分析</text>
<!-- 坐标轴 -->
<line x1="10" y1="120" x2="120" y2="120" stroke="#4a5568" stroke-width="1"/>
<line x1="10" y1="20" x2="10" y2="120" stroke="#4a5568" stroke-width="1"/>
<!-- 折线图数据 -->
<polyline points="10,100 30,80 50,60 70,70 90,50 110,40"
fill="none" stroke="#00ff00" stroke-width="2"/>
<polyline points="10,110 30,95 50,85 70,90 90,75 110,65"
fill="none" stroke="#ff6b6b" stroke-width="2"/>
<!-- 数据点 -->
<circle cx="10" cy="100" r="3" fill="#00ff00"/>
<circle cx="30" cy="80" r="3" fill="#00ff00"/>
<circle cx="50" cy="60" r="3" fill="#00ff00"/>
<circle cx="70" cy="70" r="3" fill="#00ff00"/>
<circle cx="90" cy="50" r="3" fill="#00ff00"/>
<circle cx="110" cy="40" r="3" fill="#00ff00"/>
<!-- 图例 -->
<line x1="130" y1="30" x2="145" y2="30" stroke="#00ff00" stroke-width="2"/>
<text x="150" y="35" font-family="Arial, sans-serif" font-size="10" fill="#00ff00">产量</text>
<line x1="130" y1="45" x2="145" y2="45" stroke="#ff6b6b" stroke-width="2"/>
<text x="150" y="50" font-family="Arial, sans-serif" font-size="10" fill="#ff6b6b">成本</text>
</g>
<!-- 饼图 -->
<g transform="translate(220, 70)">
<text x="0" y="15" font-family="Arial, sans-serif" font-size="12" fill="#00ff00">养殖结构分布</text>
<!-- 饼图扇形 -->
<path d="M 40 70 L 40 40 A 30 30 0 0 1 65 55 Z" fill="#4facfe"/>
<path d="M 40 70 L 65 55 A 30 30 0 0 1 55 95 Z" fill="#43e97b"/>
<path d="M 40 70 L 55 95 A 30 30 0 0 1 15 85 Z" fill="#f093fb"/>
<path d="M 40 70 L 15 85 A 30 30 0 1 1 40 40 Z" fill="#feca57"/>
<!-- 标签 -->
<text x="0" y="110" font-family="Arial, sans-serif" font-size="8" fill="#4facfe">■ 牛 35%</text>
<text x="0" y="120" font-family="Arial, sans-serif" font-size="8" fill="#43e97b">■ 羊 25%</text>
<text x="0" y="130" font-family="Arial, sans-serif" font-size="8" fill="#f093fb">■ 猪 20%</text>
<text x="0" y="140" font-family="Arial, sans-serif" font-size="8" fill="#feca57">■ 鸡 20%</text>
</g>
<!-- 实时数据面板 -->
<rect x="70" y="170" width="260" height="40" fill="#2d3748" stroke="#4a5568" stroke-width="1" rx="5"/>
<!-- 数据指标 -->
<g transform="translate(80, 180)">
<text x="0" y="12" font-family="Arial, sans-serif" font-size="10" fill="#a0aec0">实时监控数据</text>
<text x="0" y="25" font-family="Arial, sans-serif" font-size="9" fill="#00ff00">温度: 24°C</text>
<text x="60" y="25" font-family="Arial, sans-serif" font-size="9" fill="#00ff00">湿度: 65%</text>
<text x="120" y="25" font-family="Arial, sans-serif" font-size="9" fill="#00ff00">存栏: 1,250头</text>
<text x="180" y="25" font-family="Arial, sans-serif" font-size="9" fill="#ff6b6b">预警: 2条</text>
</g>
<!-- 工作人员 -->
<g transform="translate(320, 160)">
<!-- 人物轮廓 -->
<ellipse cx="15" cy="35" rx="8" ry="12" fill="#4a5568"/>
<circle cx="15" cy="20" r="6" fill="#f7fafc"/>
<rect x="12" y="47" width="6" height="15" fill="#2d3748"/>
<rect x="8" y="62" width="4" height="8" fill="#2d3748"/>
<rect x="18" y="62" width="4" height="8" fill="#2d3748"/>
<!-- 手持设备 -->
<rect x="25" y="30" width="8" height="12" fill="#4a5568" rx="2"/>
<rect x="26" y="31" width="6" height="8" fill="#00ff00" opacity="0.3"/>
</g>
<!-- 数据流动效果 -->
<g opacity="0.6">
<circle cx="100" cy="100" r="2" fill="#00ff00">
<animate attributeName="cx" values="100;200;300" dur="3s" repeatCount="indefinite"/>
<animate attributeName="opacity" values="1;0.5;0" dur="3s" repeatCount="indefinite"/>
</circle>
<circle cx="150" cy="120" r="2" fill="#4facfe">
<animate attributeName="cx" values="150;250;350" dur="4s" repeatCount="indefinite"/>
<animate attributeName="opacity" values="1;0.5;0" dur="4s" repeatCount="indefinite"/>
</circle>
</g>
<!-- 标题 -->
<rect x="0" y="270" width="400" height="30" fill="rgba(0,0,0,0.7)"/>
<text x="200" y="290" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="16" font-weight="bold" fill="white">数据分析与决策支持</text>
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

View File

@@ -0,0 +1,146 @@
<svg width="400" height="300" viewBox="0 0 400 300" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="mobileGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1" />
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1" />
</linearGradient>
<linearGradient id="fieldGradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#87CEEB;stop-opacity:1" />
<stop offset="100%" style="stop-color:#98FB98;stop-opacity:1" />
</linearGradient>
</defs>
<!-- 背景 - 户外场景 -->
<rect width="400" height="300" fill="url(#fieldGradient)"/>
<!-- 地面 -->
<rect x="0" y="220" width="400" height="80" fill="#228B22"/>
<!-- 云朵 -->
<ellipse cx="60" cy="40" rx="20" ry="12" fill="white" opacity="0.8"/>
<ellipse cx="340" cy="60" rx="25" ry="15" fill="white" opacity="0.8"/>
<!-- 养殖场围栏 -->
<g stroke="#8B4513" stroke-width="3" fill="none">
<line x1="50" y1="180" x2="350" y2="180"/>
<line x1="50" y1="180" x2="50" y2="220"/>
<line x1="350" y1="180" x2="350" y2="220"/>
<!-- 围栏柱子 -->
<line x1="100" y1="175" x2="100" y2="225"/>
<line x1="150" y1="175" x2="150" y2="225"/>
<line x1="200" y1="175" x2="200" y2="225"/>
<line x1="250" y1="175" x2="250" y2="225"/>
<line x1="300" y1="175" x2="300" y2="225"/>
</g>
<!-- 动物群 -->
<!-- 牛群 -->
<ellipse cx="120" cy="200" rx="15" ry="10" fill="#8B4513"/>
<ellipse cx="110" cy="195" rx="5" ry="4" fill="#8B4513"/>
<ellipse cx="180" cy="205" rx="15" ry="10" fill="#654321"/>
<ellipse cx="170" cy="200" rx="5" ry="4" fill="#654321"/>
<ellipse cx="250" cy="195" rx="15" ry="10" fill="#8B4513"/>
<ellipse cx="240" cy="190" rx="5" ry="4" fill="#8B4513"/>
<!-- 管理员人物 -->
<g transform="translate(80, 120)">
<!-- 身体 -->
<ellipse cx="0" cy="30" rx="12" ry="20" fill="#4169E1"/>
<!-- 头部 -->
<circle cx="0" cy="10" r="8" fill="#FDBCB4"/>
<!-- 帽子 -->
<ellipse cx="0" cy="5" rx="10" ry="4" fill="#FF6347"/>
<!-- 手臂 -->
<ellipse cx="-8" cy="25" rx="4" ry="12" fill="#FDBCB4" transform="rotate(-20)"/>
<ellipse cx="8" cy="25" rx="4" ry="12" fill="#FDBCB4" transform="rotate(20)"/>
<!-- 腿部 -->
<rect x="-6" y="50" width="5" height="20" fill="#2F4F4F"/>
<rect x="1" y="50" width="5" height="20" fill="#2F4F4F"/>
</g>
<!-- 手机设备 -->
<g transform="translate(120, 140)">
<!-- 手机外壳 -->
<rect x="0" y="0" width="40" height="70" fill="#2F4F4F" rx="8" stroke="#1C1C1C" stroke-width="2"/>
<!-- 屏幕 -->
<rect x="3" y="8" width="34" height="54" fill="#000" rx="4"/>
<!-- 屏幕内容 -->
<rect x="5" y="10" width="30" height="50" fill="url(#mobileGradient)" rx="3"/>
<!-- APP界面 -->
<text x="20" y="20" text-anchor="middle" font-family="Arial, sans-serif" font-size="6" fill="white">养殖管理</text>
<!-- 状态指示器 -->
<circle cx="10" cy="28" r="3" fill="#00FF00"/>
<text x="15" y="32" font-family="Arial, sans-serif" font-size="4" fill="white">在线</text>
<!-- 数据显示 -->
<rect x="7" y="35" width="26" height="8" fill="rgba(255,255,255,0.2)" rx="2"/>
<text x="20" y="41" text-anchor="middle" font-family="Arial, sans-serif" font-size="4" fill="white">存栏: 125头</text>
<rect x="7" y="45" width="26" height="8" fill="rgba(255,255,255,0.2)" rx="2"/>
<text x="20" y="51" text-anchor="middle" font-family="Arial, sans-serif" font-size="4" fill="white">温度: 22°C</text>
<!-- 按钮 -->
<rect x="7" y="55" width="12" height="6" fill="#FF6347" rx="2"/>
<text x="13" y="59" text-anchor="middle" font-family="Arial, sans-serif" font-size="3" fill="white">报警</text>
<rect x="21" y="55" width="12" height="6" fill="#32CD32" rx="2"/>
<text x="27" y="59" text-anchor="middle" font-family="Arial, sans-serif" font-size="3" fill="white">记录</text>
<!-- Home键 -->
<circle cx="20" cy="66" r="2" fill="#4A4A4A"/>
</g>
<!-- 无线信号传输 -->
<g opacity="0.7">
<!-- 从动物到手机的信号 -->
<path d="M 120 190 Q 140 160 140 150" stroke="#00FF00" stroke-width="2" fill="none" stroke-dasharray="3,3">
<animate attributeName="stroke-dashoffset" values="0;6" dur="1.5s" repeatCount="indefinite"/>
</path>
<path d="M 180 195 Q 160 170 150 155" stroke="#00FF00" stroke-width="2" fill="none" stroke-dasharray="3,3">
<animate attributeName="stroke-dashoffset" values="0;6" dur="2s" repeatCount="indefinite"/>
</path>
<!-- 信号波纹 -->
<g transform="translate(140, 150)">
<circle cx="0" cy="0" r="8" fill="none" stroke="#00FF00" stroke-width="1">
<animate attributeName="r" values="3;15;3" dur="2s" repeatCount="indefinite"/>
<animate attributeName="opacity" values="1;0;1" dur="2s" repeatCount="indefinite"/>
</circle>
</g>
</g>
<!-- 智能标签 -->
<rect x="115" y="185" width="10" height="5" fill="#FF6347" rx="2"/>
<rect x="175" y="190" width="10" height="5" fill="#FF6347" rx="2"/>
<rect x="245" y="180" width="10" height="5" fill="#FF6347" rx="2"/>
<!-- GPS定位图标 -->
<g transform="translate(300, 50)">
<circle cx="0" cy="0" r="15" fill="none" stroke="#FF6347" stroke-width="2"/>
<circle cx="0" cy="0" r="3" fill="#FF6347"/>
<text x="0" y="25" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#2F4F4F">GPS定位</text>
</g>
<!-- 数据上传云端 -->
<g transform="translate(200, 30)">
<!-- 云朵图标 -->
<path d="M 0 15 c -8 0 -15 -7 -15 -15 c 0 -4 2 -8 5 -11 c 1 -6 6 -10 12 -10 c 8 0 15 7 15 15 c 0 1 0 2 -1 3 c 3 2 5 5 5 8 c 0 5 -4 10 -10 10 H 0 z" fill="white" stroke="#4A90E2" stroke-width="1"/>
<!-- 上传箭头 -->
<path d="M 0 5 L -3 8 L 3 8 Z" fill="#4A90E2"/>
<line x1="0" y1="5" x2="0" y2="12" stroke="#4A90E2" stroke-width="2"/>
<text x="0" y="25" text-anchor="middle" font-family="Arial, sans-serif" font-size="8" fill="#2F4F4F">云端同步</text>
</g>
<!-- 标题 -->
<rect x="0" y="270" width="400" height="30" fill="rgba(0,0,0,0.7)"/>
<text x="200" y="290" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="16" font-weight="bold" fill="white">移动端智能管理</text>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -0,0 +1,73 @@
<svg width="1920" height="1080" viewBox="0 0 1920 1080" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="bgGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:0.8" />
<stop offset="50%" style="stop-color:#764ba2;stop-opacity:0.6" />
<stop offset="100%" style="stop-color:#667eea;stop-opacity:0.4" />
</linearGradient>
<pattern id="gridPattern" x="0" y="0" width="100" height="100" patternUnits="userSpaceOnUse">
<path d="M 100 0 L 0 0 0 100" fill="none" stroke="rgba(255,255,255,0.1)" stroke-width="1"/>
</pattern>
<filter id="glow">
<feGaussianBlur stdDeviation="3" result="coloredBlur"/>
<feMerge>
<feMergeNode in="coloredBlur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- 主背景 -->
<rect width="1920" height="1080" fill="url(#bgGradient)"/>
<!-- 网格图案 -->
<rect width="1920" height="1080" fill="url(#gridPattern)" opacity="0.3"/>
<!-- 装饰性几何图形 -->
<g opacity="0.2">
<!-- 大圆 -->
<circle cx="1600" cy="200" r="150" fill="none" stroke="rgba(255,255,255,0.3)" stroke-width="2"/>
<circle cx="1600" cy="200" r="100" fill="none" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
<!-- 小圆群 -->
<circle cx="300" cy="800" r="80" fill="rgba(255,255,255,0.1)"/>
<circle cx="250" cy="750" r="40" fill="rgba(255,255,255,0.15)"/>
<circle cx="350" cy="720" r="30" fill="rgba(255,255,255,0.1)"/>
<!-- 三角形 -->
<polygon points="1400,900 1500,700 1600,900" fill="none" stroke="rgba(255,255,255,0.2)" stroke-width="2"/>
<!-- 六边形 -->
<polygon points="100,300 150,250 200,300 200,400 150,450 100,400" fill="rgba(255,255,255,0.1)" stroke="rgba(255,255,255,0.2)" stroke-width="1"/>
</g>
<!-- 浮动粒子效果 -->
<g opacity="0.6">
<circle cx="200" cy="200" r="3" fill="#ffffff" filter="url(#glow)">
<animate attributeName="cy" values="200;180;200" dur="3s" repeatCount="indefinite"/>
</circle>
<circle cx="800" cy="300" r="2" fill="#ffffff" filter="url(#glow)">
<animate attributeName="cy" values="300;280;300" dur="4s" repeatCount="indefinite"/>
</circle>
<circle cx="1200" cy="500" r="4" fill="#ffffff" filter="url(#glow)">
<animate attributeName="cy" values="500;470;500" dur="5s" repeatCount="indefinite"/>
</circle>
<circle cx="1500" cy="600" r="2" fill="#ffffff" filter="url(#glow)">
<animate attributeName="cy" values="600;580;600" dur="3.5s" repeatCount="indefinite"/>
</circle>
<circle cx="400" cy="900" r="3" fill="#ffffff" filter="url(#glow)">
<animate attributeName="cy" values="900;870;900" dur="4.5s" repeatCount="indefinite"/>
</circle>
</g>
<!-- 底部渐变遮罩 -->
<defs>
<linearGradient id="bottomMask" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:rgba(0,0,0,0);stop-opacity:0" />
<stop offset="100%" style="stop-color:rgba(0,0,0,0.3);stop-opacity:1" />
</linearGradient>
</defs>
<rect x="0" y="800" width="1920" height="280" fill="url(#bottomMask)"/>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

View File

@@ -0,0 +1,35 @@
<svg width="200" height="60" viewBox="0 0 200 60" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="logoGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1" />
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1" />
</linearGradient>
</defs>
<!-- 背景圆形 -->
<circle cx="30" cy="30" r="25" fill="url(#logoGradient)" opacity="0.1"/>
<!-- 主图标 - 云朵和农场 -->
<g transform="translate(10, 10)">
<!-- 云朵 -->
<path d="M15 20c-3.3 0-6-2.7-6-6 0-1.8.8-3.4 2.1-4.5C11.7 7.6 13.7 6 16 6c3.3 0 6 2.7 6 6 0 .5-.1 1-.2 1.4 1.2.8 2 2.2 2 3.6 0 2.2-1.8 4-4 4H15z" fill="url(#logoGradient)"/>
<!-- 农场建筑 -->
<rect x="8" y="25" width="24" height="15" fill="#4a5568" opacity="0.8"/>
<polygon points="8,25 20,15 32,25" fill="#e53e3e" opacity="0.8"/>
<!-- 窗户 -->
<rect x="12" y="28" width="4" height="4" fill="#ffd700"/>
<rect x="24" y="28" width="4" height="4" fill="#ffd700"/>
<!---->
<rect x="18" y="32" width="4" height="8" fill="#8b4513"/>
</g>
<!-- 文字部分 -->
<text x="65" y="25" font-family="'Microsoft YaHei', sans-serif" font-size="16" font-weight="bold" fill="url(#logoGradient)">宁夏智慧养殖</text>
<text x="65" y="42" font-family="'Microsoft YaHei', sans-serif" font-size="12" fill="#666">监管平台</text>
<!-- 装饰线条 -->
<line x1="65" y1="48" x2="190" y2="48" stroke="url(#logoGradient)" stroke-width="2" opacity="0.3"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

@@ -0,0 +1,125 @@
<svg width="800" height="600" viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="layerGradient1" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:0.8" />
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:0.8" />
</linearGradient>
<linearGradient id="layerGradient2" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#f093fb;stop-opacity:0.8" />
<stop offset="100%" style="stop-color:#f5576c;stop-opacity:0.8" />
</linearGradient>
<linearGradient id="layerGradient3" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#4facfe;stop-opacity:0.8" />
<stop offset="100%" style="stop-color:#00f2fe;stop-opacity:0.8" />
</linearGradient>
<linearGradient id="layerGradient4" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#43e97b;stop-opacity:0.8" />
<stop offset="100%" style="stop-color:#38f9d7;stop-opacity:0.8" />
</linearGradient>
</defs>
<!-- 背景 -->
<rect width="800" height="600" fill="#f8f9fa"/>
<!-- 标题 -->
<text x="400" y="30" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="24" font-weight="bold" fill="#2d3748">智慧养殖监管平台技术架构</text>
<!-- 表示层 -->
<rect x="50" y="80" width="700" height="80" rx="10" fill="url(#layerGradient1)" stroke="#667eea" stroke-width="2"/>
<text x="70" y="105" font-family="Microsoft YaHei, sans-serif" font-size="16" font-weight="bold" fill="white">表示层 (Presentation Layer)</text>
<!-- 表示层组件 -->
<rect x="80" y="115" width="120" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#667eea"/>
<text x="140" y="135" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="12" fill="#2d3748">Web管理界面</text>
<rect x="220" y="115" width="120" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#667eea"/>
<text x="280" y="135" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="12" fill="#2d3748">移动端APP</text>
<rect x="360" y="115" width="120" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#667eea"/>
<text x="420" y="135" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="12" fill="#2d3748">数据大屏</text>
<rect x="500" y="115" width="120" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#667eea"/>
<text x="560" y="135" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="12" fill="#2d3748">API接口</text>
<!-- 业务层 -->
<rect x="50" y="200" width="700" height="80" rx="10" fill="url(#layerGradient2)" stroke="#f5576c" stroke-width="2"/>
<text x="70" y="225" font-family="Microsoft YaHei, sans-serif" font-size="16" font-weight="bold" fill="white">业务层 (Business Layer)</text>
<!-- 业务层组件 -->
<rect x="80" y="235" width="100" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#f5576c"/>
<text x="130" y="255" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="11" fill="#2d3748">养殖管理</text>
<rect x="200" y="235" width="100" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#f5576c"/>
<text x="250" y="255" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="11" fill="#2d3748">监控预警</text>
<rect x="320" y="235" width="100" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#f5576c"/>
<text x="370" y="255" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="11" fill="#2d3748">数据分析</text>
<rect x="440" y="235" width="100" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#f5576c"/>
<text x="490" y="255" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="11" fill="#2d3748">用户权限</text>
<rect x="560" y="235" width="100" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#f5576c"/>
<text x="610" y="255" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="11" fill="#2d3748">系统配置</text>
<!-- 服务层 -->
<rect x="50" y="320" width="700" height="80" rx="10" fill="url(#layerGradient3)" stroke="#4facfe" stroke-width="2"/>
<text x="70" y="345" font-family="Microsoft YaHei, sans-serif" font-size="16" font-weight="bold" fill="white">服务层 (Service Layer)</text>
<!-- 服务层组件 -->
<rect x="80" y="355" width="100" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#4facfe"/>
<text x="130" y="375" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="11" fill="#2d3748">数据采集</text>
<rect x="200" y="355" width="100" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#4facfe"/>
<text x="250" y="375" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="11" fill="#2d3748">消息队列</text>
<rect x="320" y="355" width="100" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#4facfe"/>
<text x="370" y="375" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="11" fill="#2d3748">缓存服务</text>
<rect x="440" y="355" width="100" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#4facfe"/>
<text x="490" y="375" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="11" fill="#2d3748">文件存储</text>
<rect x="560" y="355" width="100" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#4facfe"/>
<text x="610" y="375" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="11" fill="#2d3748">第三方集成</text>
<!-- 数据层 -->
<rect x="50" y="440" width="700" height="80" rx="10" fill="url(#layerGradient4)" stroke="#43e97b" stroke-width="2"/>
<text x="70" y="465" font-family="Microsoft YaHei, sans-serif" font-size="16" font-weight="bold" fill="white">数据层 (Data Layer)</text>
<!-- 数据层组件 -->
<rect x="80" y="475" width="120" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#43e97b"/>
<text x="140" y="495" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="12" fill="#2d3748">MySQL数据库</text>
<rect x="220" y="475" width="120" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#43e97b"/>
<text x="280" y="495" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="12" fill="#2d3748">Redis缓存</text>
<rect x="360" y="475" width="120" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#43e97b"/>
<text x="420" y="495" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="12" fill="#2d3748">时序数据库</text>
<rect x="500" y="475" width="120" height="35" rx="5" fill="rgba(255,255,255,0.9)" stroke="#43e97b"/>
<text x="560" y="495" text-anchor="middle" font-family="Microsoft YaHei, sans-serif" font-size="12" fill="#2d3748">文件系统</text>
<!-- 连接线 -->
<g stroke="#718096" stroke-width="2" fill="none" opacity="0.6">
<!-- 表示层到业务层 -->
<line x1="140" y1="160" x2="130" y2="200"/>
<line x1="280" y1="160" x2="250" y2="200"/>
<line x1="420" y1="160" x2="370" y2="200"/>
<line x1="560" y1="160" x2="490" y2="200"/>
<!-- 业务层到服务层 -->
<line x1="130" y1="280" x2="130" y2="320"/>
<line x1="250" y1="280" x2="250" y2="320"/>
<line x1="370" y1="280" x2="370" y2="320"/>
<line x1="490" y1="280" x2="490" y2="320"/>
<line x1="610" y1="280" x2="610" y2="320"/>
<!-- 服务层到数据层 -->
<line x1="130" y1="400" x2="140" y2="440"/>
<line x1="250" y1="400" x2="280" y2="440"/>
<line x1="370" y1="400" x2="420" y2="440"/>
<line x1="490" y1="400" x2="560" y2="440"/>
</g>
<!-- 技术栈标注 -->
<text x="50" y="570" font-family="Microsoft YaHei, sans-serif" font-size="14" font-weight="bold" fill="#4a5568">技术栈Vue.js 3 + Node.js + MySQL + Redis + Docker</text>
</svg>

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -1,5 +1,8 @@
// 页面加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
// 页面加载动画
initPageLoader();
// 初始化导航栏滚动效果
initNavbarScroll();
@@ -11,8 +14,116 @@ document.addEventListener('DOMContentLoaded', function() {
// 初始化数据统计动画
initStatsCounter();
// 图片懒加载
initLazyLoading();
// 性能优化
initPerformanceOptimizations();
});
// 页面加载动画
function initPageLoader() {
// 创建加载器
const loader = document.createElement('div');
loader.className = 'page-loader';
loader.innerHTML = `
<div class="loader-content">
<div class="spinner"></div>
<div class="loader-text">宁夏智慧养殖监管平台</div>
<div class="loader-subtitle">正在加载中...</div>
</div>
`;
document.body.appendChild(loader);
// 页面加载完成后隐藏加载器
window.addEventListener('load', function() {
setTimeout(() => {
loader.classList.add('fade-out');
setTimeout(() => {
if (loader.parentNode) {
loader.parentNode.removeChild(loader);
}
}, 500);
}, 800);
});
}
// 图片懒加载
function initLazyLoading() {
const images = document.querySelectorAll('img[data-src]');
const imageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
img.classList.add('lazy-image');
img.onload = () => {
img.classList.add('loaded');
};
observer.unobserve(img);
}
});
});
images.forEach(img => imageObserver.observe(img));
}
// 性能优化
function initPerformanceOptimizations() {
// 导航栏滚动优化
let ticking = false;
function updateNavbar() {
const navbar = document.querySelector('.navbar');
if (window.scrollY > 50) {
navbar.classList.add('scrolled');
} else {
navbar.classList.remove('scrolled');
}
ticking = false;
}
window.addEventListener('scroll', () => {
if (!ticking) {
requestAnimationFrame(updateNavbar);
ticking = true;
}
});
// 平滑滚动到锚点
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
// 预加载关键资源
const criticalImages = [
'assets/images/hero-bg.svg',
'assets/images/logo.svg'
];
criticalImages.forEach(src => {
const link = document.createElement('link');
link.rel = 'preload';
link.as = 'image';
link.href = src;
document.head.appendChild(link);
});
}
// 导航栏滚动效果
function initNavbarScroll() {
const navbar = document.querySelector('.navbar');
@@ -79,9 +190,12 @@ function validateForm(form) {
if (input.hasAttribute('required') && !input.value.trim()) {
showInputError(input, '此字段为必填项');
isValid = false;
} else if (input.type === 'email' && !isValidEmail(input.value)) {
} else if (input.type === 'email' && input.value && !isValidEmail(input.value)) {
showInputError(input, '请输入有效的邮箱地址');
isValid = false;
} else if (input.type === 'tel' && input.value && !isValidPhone(input.value)) {
showInputError(input, '请输入有效的手机号码');
isValid = false;
} else {
clearInputError(input);
}
@@ -90,6 +204,84 @@ function validateForm(form) {
return isValid;
}
// 手机号验证
function isValidPhone(phone) {
const phoneRegex = /^1[3-9]\d{9}$/;
return phoneRegex.test(phone);
}
// 提交联系表单
function submitContactForm(event) {
event.preventDefault();
const form = event.target;
if (!validateForm(form)) {
return;
}
const formData = new FormData(form);
const data = {
name: formData.get('name'),
email: formData.get('email'),
phone: formData.get('phone'),
message: formData.get('message'),
timestamp: new Date().toISOString()
};
// 显示提交中状态
const submitBtn = form.querySelector('button[type="submit"]');
const originalText = submitBtn.innerHTML;
submitBtn.innerHTML = '<i class="bi bi-hourglass-split me-2"></i>提交中...';
submitBtn.disabled = true;
// 模拟提交到后端实际项目中替换为真实API
setTimeout(() => {
// 这里应该是实际的API调用
console.log('表单数据:', data);
// 显示成功消息
showNotification('消息发送成功!我们会尽快回复您。', 'success');
// 重置表单
form.reset();
// 恢复按钮状态
submitBtn.innerHTML = originalText;
submitBtn.disabled = false;
// 存储到本地(演示用)
saveContactToLocal(data);
}, 2000);
}
// 显示通知消息
function showNotification(message, type = 'info') {
const notification = document.createElement('div');
notification.className = `alert alert-${type === 'success' ? 'success' : 'info'} alert-dismissible fade show position-fixed`;
notification.style.cssText = 'top: 20px; right: 20px; z-index: 9999; min-width: 300px;';
notification.innerHTML = `
${message}
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
`;
document.body.appendChild(notification);
// 自动移除通知
setTimeout(() => {
if (notification.parentNode) {
notification.parentNode.removeChild(notification);
}
}, 5000);
}
// 保存联系信息到本地存储(演示用)
function saveContactToLocal(formData) {
let contacts = JSON.parse(localStorage.getItem('contacts') || '[]');
contacts.push(formData);
localStorage.setItem('contacts', JSON.stringify(contacts));
}
// 邮箱验证
function isValidEmail(email) {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;

25
website/favicon.svg Normal file
View File

@@ -0,0 +1,25 @@
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="faviconGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1" />
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1" />
</linearGradient>
</defs>
<!-- 背景圆形 -->
<circle cx="16" cy="16" r="15" fill="url(#faviconGradient)"/>
<!-- 云朵图标 -->
<path d="M10 18c-2.2 0-4-1.8-4-4 0-1.2.5-2.3 1.4-3C7.8 9.7 9.2 8.5 11 8.5c2.2 0 4 1.8 4 4 0 .3-.1.7-.1.9.8.5 1.3 1.5 1.3 2.4 0 1.5-1.2 2.7-2.7 2.7H10z" fill="white" opacity="0.9"/>
<!-- 农场建筑简化版 -->
<rect x="8" y="20" width="16" height="8" fill="white" opacity="0.8"/>
<polygon points="8,20 16,14 24,20" fill="white" opacity="0.9"/>
<!-- 窗户 -->
<rect x="11" y="22" width="2" height="2" fill="#667eea"/>
<rect x="19" y="22" width="2" height="2" fill="#667eea"/>
<!---->
<rect x="14.5" y="24" width="3" height="4" fill="#667eea"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -5,7 +5,21 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>宁夏智慧养殖监管平台 - 数字化养殖管理解决方案</title>
<meta name="description" content="宁夏智慧养殖监管平台,提供全面的数字化养殖管理解决方案,实时监控、数据分析、智能预警,助力养殖业数字化转型">
<meta name="keywords" content="智慧养殖,养殖监管,数字化管理,宁夏养殖,物联网养殖">
<meta name="keywords" content="智慧养殖,养殖监管,数字化管理,宁夏养殖,物联网养殖,农业科技,畜牧业管理">
<!-- SEO优化 -->
<meta name="author" content="宁夏智慧养殖监管平台">
<meta name="robots" content="index, follow">
<meta property="og:title" content="宁夏智慧养殖监管平台 - 数字化养殖管理解决方案">
<meta property="og:description" content="提供全面的数字化养殖管理解决方案,实时监控、数据分析、智能预警">
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.nxfarm.com">
<meta property="og:image" content="assets/images/hero-image.png">
<meta name="twitter:card" content="summary_large_image">
<!-- 网站图标 -->
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="apple-touch-icon" href="assets/images/logo.svg">
<!-- Bootstrap 5 CSS -->
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.2/css/bootstrap.min.css" rel="stylesheet">
@@ -24,8 +38,8 @@
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
<div class="container">
<a class="navbar-brand" href="#home">
<i class="bi bi-cloud-fog2 me-2"></i>
宁夏智慧养殖监管平台
<img src="assets/images/logo.svg" alt="宁夏智慧养殖监管平台" height="40" class="me-2">
<span class="d-none d-md-inline">宁夏智慧养殖监管平台</span>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
@@ -85,7 +99,7 @@
</div>
</div>
<div class="col-lg-6 text-center">
<img src="assets/images/hero-image.png" alt="智慧养殖平台" class="img-fluid hero-image" style="max-width: 500px;">
<img src="assets/images/hero-image.png" alt="智慧养殖平台" class="img-fluid hero-image" style="width: 800px;height: 500px;">
</div>
</div>
</div>
@@ -161,7 +175,7 @@
<div class="col-md-4 mb-4">
<div class="feature-card">
<div class="feature-icon">
<i class="bi bi-map-marked"></i>
<i class="bi bi-geo-alt-fill"></i>
</div>
<h4>地图管理</h4>
<p>基于地理位置的可视化管理,直观展示养殖场分布和状态</p>
@@ -170,7 +184,7 @@
<div class="col-md-4 mb-4">
<div class="feature-card">
<div class="feature-icon">
<i class="bi bi-users"></i>
<i class="bi bi-shield-lock-fill"></i>
</div>
<h4>权限管理</h4>
<p>多级权限控制系统,确保数据安全和操作规范</p>
@@ -179,7 +193,7 @@
<div class="col-md-4 mb-4">
<div class="feature-card">
<div class="feature-icon">
<i class="bi bi-mobile-alt"></i>
<i class="bi bi-laptop"></i>
</div>
<h4>移动办公</h4>
<p>支持多终端访问,随时随地管理养殖业务</p>
@@ -193,7 +207,7 @@
<section id="technology" class="technology-section py-5 bg-dark text-white">
<div class="container">
<div class="text-center mb-5">
<h2 class="section-title">技术优势</h2>
<h2 class="section-title" style="color: #fff;">技术优势</h2>
<p class="section-subtitle">领先的技术架构,确保系统稳定可靠</p>
</div>
<div class="row">
@@ -213,8 +227,8 @@
</div>
<div class="col-lg-6">
<div class="tech-image text-center">
<img src="assets/images/tech-architecture.png" alt="技术架构" class="img-fluid rounded">
<p class="mt-2 text-muted">系统技术架构图</p>
<img src="assets/images/tech-architecture.png" alt="技术架构" class="img-fluid rounded" style="width: 600px;height: 400px;">
<p class="mt-2 text-muted" style="color: #fff;">系统技术架构图</p>
</div>
</div>
</div>
@@ -361,50 +375,75 @@
<h2 class="section-title">联系我们</h2>
<p class="section-subtitle">期待与您合作</p>
</div>
<div class="row">
<div class="row g-4 align-items-stretch">
<!-- 左侧:百度地图 -->
<div class="col-lg-6">
<div class="contact-info">
<div class="contact-item">
<i class="bi bi-geo-alt"></i>
<div>
<h5>地址</h5>
<p>宁夏回族自治区银川市金凤区</p>
</div>
</div>
<div class="contact-item">
<i class="bi bi-telephone"></i>
<div>
<h5>电话</h5>
<p>0951-88888888</p>
</div>
</div>
<div class="contact-item">
<i class="bi bi-envelope"></i>
<div>
<h5>邮箱</h5>
<p>info@nxfarm.com</p>
<div id="baidu-map-container" class="rounded shadow-sm" style="height:360px;width:100%;background:#f8f9fa;">
<div class="d-flex align-items-center justify-content-center h-100 text-muted">
<div class="text-center">
<div class="spinner-border text-primary mb-3" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<p>地图加载中...</p>
</div>
</div>
</div>
</div>
<!-- 右侧:表单 -->
<div class="col-lg-6">
<div class="contact-form">
<h4>发送消息</h4>
<form>
<div class="mb-3">
<input type="text" class="form-control" placeholder="您的姓名" required>
<div class="contact-form p-4 bg-white rounded shadow-sm h-100">
<h4 class="mb-3">发送消息</h4>
<form id="contact-form" onsubmit="submitContactForm(event)">
<div class="row">
<div class="col-md-6 mb-3">
<input type="text" class="form-control" placeholder="您的姓名" required>
</div>
<div class="col-md-6 mb-3">
<input type="email" class="form-control" placeholder="您的邮箱" required>
</div>
</div>
<div class="mb-3">
<input type="email" class="form-control" placeholder="您的邮箱" required>
<input type="tel" class="form-control" placeholder="您的电话" required>
</div>
<div class="mb-3">
<textarea class="form-control" rows="4" placeholder="您的消息" required></textarea>
<textarea class="form-control" rows="5" placeholder="其他说明" required></textarea>
</div>
<button type="submit" class="btn btn-primary w-100">发送消息</button>
</form>
</div>
</div>
</div>
<!-- 底部:联系信息 -->
<div class="row text-center mt-5 g-4">
<div class="col-12 col-md-3">
<div class="p-3">
<div class="display-6 text-primary mb-2"><i class="bi bi-geo-alt-fill"></i></div>
<h6 class="mb-1">地址</h6>
<div class="text-muted small">宁夏回族自治区银川市金凤区</div>
</div>
</div>
<div class="col-12 col-md-3">
<div class="p-3">
<div class="display-6 text-success mb-2"><i class="bi bi-envelope-fill"></i></div>
<h6 class="mb-1">Email</h6>
<div class="text-muted small">info@nxfarm.com</div>
</div>
</div>
<div class="col-12 col-md-3">
<div class="p-3">
<div class="display-6 text-info mb-2"><i class="bi bi-globe"></i></div>
<h6 class="mb-1">官网</h6>
<div class="text-muted small">www.nxfarm.com</div>
</div>
</div>
<div class="col-12 col-md-3">
<div class="p-3">
<div class="display-6 text-warning mb-2"><i class="bi bi-telephone-outbound-fill"></i></div>
<h6 class="mb-1">电话</h6>
<div class="text-muted small">0951-88888888</div>
</div>
</div>
</div>
</div>
</section>
@@ -427,5 +466,72 @@
<script src="https://cdn.bootcdn.net/ajax/libs/bootstrap/5.3.2/js/bootstrap.bundle.min.js"></script>
<!-- 自定义脚本 -->
<script src="assets/js/script.js"></script>
<!-- 百度地图API -->
<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=SOawZTeQbxdgrKYYx0o2hn34G0DyU2uo"></script>
<script>
// 初始化百度地图
function initBaiduMap() {
try {
// 创建地图实例
var map = new BMap.Map("baidu-map-container");
// 设置中心点坐标(银川市金凤区)
var point = new BMap.Point(106.278179, 38.46637);
// 初始化地图,设置中心点坐标和地图级别
map.centerAndZoom(point, 15);
// 启用滚轮放大缩小
map.enableScrollWheelZoom(true);
// 添加地图类型控件
map.addControl(new BMap.MapTypeControl());
// 添加缩放控件
map.addControl(new BMap.NavigationControl());
// 添加比例尺控件
map.addControl(new BMap.ScaleControl());
// 创建标注
var marker = new BMap.Marker(point);
map.addOverlay(marker);
// 创建信息窗口
var infoWindow = new BMap.InfoWindow("<div style='padding:10px;'><h6>宁夏智慧养殖监管平台</h6><p>宁夏·银川(金凤区)</p></div>");
// 点击标注显示信息窗口
marker.addEventListener("click", function(){
map.openInfoWindow(infoWindow, point);
});
// 默认显示信息窗口
map.openInfoWindow(infoWindow, point);
console.log('百度地图初始化成功');
} catch (error) {
console.error('百度地图初始化失败:', error);
// 如果地图加载失败,显示备用内容
document.getElementById('baidu-map-container').innerHTML =
'<div class="d-flex align-items-center justify-content-center h-100 bg-light text-muted">' +
'<div class="text-center">' +
'<i class="bi bi-geo-alt-fill display-4 mb-3"></i>' +
'<h5>地图加载中...</h5>' +
'<p>如果地图无法显示,请检查网络连接</p>' +
'</div>' +
'</div>';
}
}
// 页面加载完成后初始化地图
document.addEventListener('DOMContentLoaded', function() {
// 延迟初始化确保百度地图API已加载
setTimeout(initBaiduMap, 1000);
});
// 如果百度地图API加载失败的回调
window.BMap_loadScriptTime = (new Date).getTime();
</script>
</body>
</html>