diff --git a/assets/css/solution.css b/assets/css/solution.css
index 7c347e3..20639b7 100644
--- a/assets/css/solution.css
+++ b/assets/css/solution.css
@@ -456,6 +456,7 @@
.arch-grid-item {
background: rgba(30, 41, 59, 0.8);
+ -webkit-backdrop-filter: blur(8px);
backdrop-filter: blur(8px);
border: 1px solid rgba(71, 85, 105, 0.5);
border-radius: 16px;
@@ -519,6 +520,7 @@
border-radius: 16px;
padding: 10px ;
border: 1px solid rgba(71, 85, 105, 0.5);
+ -webkit-backdrop-filter: blur(8px);
backdrop-filter: blur(8px);
box-shadow: 0 20px 60px -20px rgba(0, 0, 0, 0.3);
display: flex;
diff --git a/assets/css/style.css b/assets/css/style.css
index bc65d78..9c6c281 100644
--- a/assets/css/style.css
+++ b/assets/css/style.css
@@ -4679,6 +4679,7 @@ color:#ffffff;
box-shadow: -1px 3px 6px rgb(5 99 241 / 67%);
border-radius: 30px;
background: rgba(16, 119, 255, 0.918);
+ -webkit-backdrop-filter: blur(6px);
backdrop-filter: blur(6px);
transform: translateY(-4px);
}
@@ -7730,16 +7731,18 @@ color:#ffffff;
display: flex;
flex-direction: column;
position: relative;
+
}
.product-card .card-header {
display: flex;
justify-content: space-between;
- align-items: center;
+ align-items:top;
+ height: 2em;
margin-bottom: 12px;
}
.product-card .card-header h4 {
margin: 0;
- font-size: 17px;
+ font-size: 16px;
color: #102541;
font-weight: 600;
white-space: normal;
@@ -7761,7 +7764,7 @@ color:#ffffff;
color: #666;
line-height: 1.6;
display: -webkit-box;
- -webkit-line-clamp: 3;
+ -webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
@@ -7986,3 +7989,76 @@ color:#ffffff;
color: #23527c;
text-decoration: none;
}
+
+/* 客户案例详情页项目 Tab */
+.case-project-switcher {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 14px;
+ margin: 40px 0 30px;
+ padding-bottom: 18px;
+ border-bottom: 1px solid #dbe6f3;
+}
+
+.case-project-tab {
+ border: 0;
+ border-radius: 16px;
+ padding: 14px 22px;
+ background: #f2f7ff;
+ color: #39526d;
+ font-size: 15px;
+ font-weight: 600;
+ line-height: 1.4;
+ transition: background-color 0.25s ease, color 0.25s ease, box-shadow 0.25s ease, transform 0.25s ease;
+}
+
+.case-project-tab:hover,
+.case-project-tab:focus {
+ background: #e3efff;
+ color: #173f73;
+ outline: none;
+}
+
+.case-project-tab.is-active {
+ background: linear-gradient(135deg, #0b63ce 0%, #1ba0ff 100%);
+ color: #ffffff;
+ box-shadow: 0 12px 24px rgba(11, 99, 206, 0.2);
+}
+
+.case-project-pane {
+ display: none;
+}
+
+.case-project-pane.is-active {
+ display: block;
+ animation: caseProjectFadeIn 0.25s ease;
+}
+
+.case-project-pane .project-single-content {
+ margin-bottom: 24px;
+}
+
+@keyframes caseProjectFadeIn {
+ from {
+ opacity: 0;
+ transform: translateY(8px);
+ }
+
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+@media (max-width: 991px) {
+ .case-project-switcher {
+ margin-top: 30px;
+ }
+}
+
+@media (max-width: 767px) {
+ .case-project-tab {
+ width: 100%;
+ text-align: left;
+ }
+}
diff --git a/assets/css/timeline.css b/assets/css/timeline.css
index 862cbdc..113b0d3 100644
--- a/assets/css/timeline.css
+++ b/assets/css/timeline.css
@@ -241,7 +241,7 @@
background: linear-gradient(90deg, rgba(20, 129, 255, 0.08) 0%, transparent 100%);
}
-.timeline-container:has(.auto-expanded) .timeline-item:not(.auto-expanded) {
+.timeline-container.has-auto-expanded .timeline-item:not(.auto-expanded) {
opacity: 0.4;
}
diff --git a/assets/js/classiccase-project-tabs.js b/assets/js/classiccase-project-tabs.js
new file mode 100644
index 0000000..004c7df
--- /dev/null
+++ b/assets/js/classiccase-project-tabs.js
@@ -0,0 +1,52 @@
+document.addEventListener("DOMContentLoaded", function() {
+ var tabGroups = document.querySelectorAll("[data-case-tabs]");
+
+ Array.prototype.forEach.call(tabGroups, function(group) {
+ var buttons = group.querySelectorAll("[data-case-tab]");
+ var panes = group.querySelectorAll("[data-case-pane]");
+ var params = new URLSearchParams(window.location.search);
+ var requestedTab = params.get("tab");
+ var defaultTab = group.getAttribute("data-default-tab");
+ var initialTab = requestedTab || defaultTab;
+
+ function activateTab(tabName, updateUrl) {
+ var hasMatch = false;
+
+ Array.prototype.forEach.call(buttons, function(button) {
+ var isActive = button.getAttribute("data-case-tab") === tabName;
+ button.classList.toggle("is-active", isActive);
+ button.setAttribute("aria-selected", isActive ? "true" : "false");
+ button.setAttribute("tabindex", isActive ? "0" : "-1");
+ if (isActive) {
+ hasMatch = true;
+ }
+ });
+
+ Array.prototype.forEach.call(panes, function(pane) {
+ var isActive = pane.getAttribute("data-case-pane") === tabName;
+ pane.classList.toggle("is-active", isActive);
+ pane.hidden = !isActive;
+ });
+
+ if (!hasMatch) {
+ if (defaultTab && defaultTab !== tabName) {
+ activateTab(defaultTab, updateUrl);
+ }
+ return;
+ }
+
+ if (updateUrl) {
+ params.set("tab", tabName);
+ window.history.replaceState({}, "", window.location.pathname + "?" + params.toString() + window.location.hash);
+ }
+ }
+
+ Array.prototype.forEach.call(buttons, function(button) {
+ button.addEventListener("click", function() {
+ activateTab(button.getAttribute("data-case-tab"), true);
+ });
+ });
+
+ activateTab(initialTab, Boolean(requestedTab));
+ });
+});
diff --git a/assets/js/map3d-loader.js b/assets/js/map3d-loader.js
new file mode 100644
index 0000000..eacb845
--- /dev/null
+++ b/assets/js/map3d-loader.js
@@ -0,0 +1,47 @@
+(function () {
+ "use strict";
+
+ function supportsModuleScripts() {
+ var script = document.createElement("script");
+ return "noModule" in script;
+ }
+
+ function supportsWebGL() {
+ try {
+ var canvas = document.createElement("canvas");
+ return !!(window.WebGLRenderingContext && (canvas.getContext("webgl") || canvas.getContext("experimental-webgl")));
+ } catch (err) {
+ return false;
+ }
+ }
+
+ function bootstrapMapModule() {
+ var map = document.getElementById("map");
+ var script;
+
+ if (!map || map.getAttribute("data-map-module-loaded") === "true") {
+ return;
+ }
+
+ if (!supportsModuleScripts() || !supportsWebGL() || typeof Promise === "undefined" || typeof fetch === "undefined") {
+ return;
+ }
+
+ map.setAttribute("data-map-module-loaded", "true");
+
+ script = document.createElement("script");
+ script.type = "module";
+ script.src = "assets/js/map3d.js";
+ script.onerror = function () {
+ map.removeAttribute("data-map-module-loaded");
+ };
+
+ document.body.appendChild(script);
+ }
+
+ if (document.readyState === "loading") {
+ document.addEventListener("DOMContentLoaded", bootstrapMapModule);
+ } else {
+ bootstrapMapModule();
+ }
+}());
diff --git a/assets/js/map3d.js b/assets/js/map3d.js
index 645ea2f..fc3abfd 100644
--- a/assets/js/map3d.js
+++ b/assets/js/map3d.js
@@ -74,6 +74,8 @@ async function initMap3D(geoDataPromise = null, threeJSPromise = null) {
const labelRenderer = new CSS2DRenderer();
labelRenderer.domElement.style.position = "absolute";
labelRenderer.domElement.style.top = "0px";
+ labelRenderer.domElement.style.left = "0px";
+ labelRenderer.domElement.style.zIndex = "3";
labelRenderer.domElement.style.pointerEvents = "none";
labelRenderer.setSize(container.clientWidth, container.clientHeight);
container.appendChild(labelRenderer.domElement);
@@ -81,6 +83,8 @@ async function initMap3D(geoDataPromise = null, threeJSPromise = null) {
const renderer = new THREE.WebGLRenderer({ alpha: true, antialias: true });
renderer.setSize(container.clientWidth, container.clientHeight);
renderer.setPixelRatio(window.devicePixelRatio || 1);
+ renderer.domElement.style.position = "relative";
+ renderer.domElement.style.zIndex = "2";
container.appendChild(renderer.domElement);
const controls = new OrbitControls(camera, renderer.domElement);
@@ -95,6 +99,7 @@ async function initMap3D(geoDataPromise = null, threeJSPromise = null) {
const tooltip = document.createElement("div");
tooltip.style.cssText = "position:absolute;padding:6px 10px;background:rgba(24,118,242,0.92);color:#fff;font-size:13px;border-radius:6px;pointer-events:none;box-shadow:0 2px 6px rgba(0,0,0,0.25);display:none;";
+ tooltip.style.zIndex = "4";
container.appendChild(tooltip);
const animate = () => {
@@ -372,6 +377,7 @@ async function initMap3D(geoDataPromise = null, threeJSPromise = null) {
const map = createMap(data, 0.05);
map.add(createPulseRings(data, 0.05));
scene.add(map);
+ container.classList.add("map-enhanced-ready");
} catch (err) {
console.error("Failed to load map data:", err);
}
diff --git a/assets/js/timeline.js b/assets/js/timeline.js
index 43a423c..95a1e4d 100644
--- a/assets/js/timeline.js
+++ b/assets/js/timeline.js
@@ -6,72 +6,104 @@
(function() {
'use strict';
- // 等待DOM加载完成
document.addEventListener('DOMContentLoaded', initTimeline);
+ function forEachNode(list, callback) {
+ Array.prototype.forEach.call(list, callback);
+ }
+
+ function supportsSmoothScroll() {
+ return 'scrollBehavior' in document.documentElement.style;
+ }
+
function initTimeline() {
- const container = document.querySelector('.timeline-container');
+ var container = document.querySelector('.timeline-container');
if (!container) return;
- const items = container.querySelectorAll('.timeline-item');
+ var items = container.querySelectorAll('.timeline-item');
if (!items.length) return;
- // 入场动画 - 使用 Intersection Observer
- const observerOptions = {
+ var hasIntersectionObserver = 'IntersectionObserver' in window;
+ var touchStartX = null;
+ var scrollLeft = null;
+ var isDragging = false;
+ var startX;
+ var dragScrollLeft;
+ var currentIndex = 0;
+ var autoPlayIndex = 0;
+ var autoPlayTimer = null;
+ var isUserInteracting = false;
+ var interactionTimer = null;
+ var autoPlayInterval = 3000;
+ var pauseAfterInteraction = 5000;
+ var observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
- const observer = new IntersectionObserver((entries) => {
- entries.forEach(entry => {
- if (entry.isIntersecting) {
- animateItems();
- observer.unobserve(entry.target);
- }
+ function updateExpandedState(active) {
+ if (active) {
+ container.classList.add('has-auto-expanded');
+ } else {
+ container.classList.remove('has-auto-expanded');
+ }
+ }
+
+ function clearExpandedItems() {
+ forEachNode(items, function(item) {
+ item.classList.remove('auto-expanded');
});
- }, observerOptions);
+ updateExpandedState(false);
+ }
- observer.observe(container);
-
- // 节点逐个入场动画
- function animateItems() {
- items.forEach((item, index) => {
- setTimeout(() => {
+ function animateItems(useDelay) {
+ forEachNode(items, function(item, index) {
+ var delay = useDelay ? index * 80 : 0;
+ setTimeout(function() {
item.style.opacity = '1';
item.style.transform = 'translateY(0)';
- }, index * 80);
+ }, delay);
});
}
- // 初始化节点样式(用于动画)
- items.forEach(item => {
+ forEachNode(items, function(item) {
item.style.opacity = '0';
item.style.transform = 'translateY(20px)';
item.style.transition = 'opacity 0.5s ease, transform 0.5s ease, flex 0.5s cubic-bezier(0.25, 0.1, 0.25, 1), background 0.5s ease';
});
- // 触摸设备支持
- let touchStartX = null;
- let scrollLeft = null;
+ if (hasIntersectionObserver) {
+ var observer = new IntersectionObserver(function(entries) {
+ for (var entryIndex = 0; entryIndex < entries.length; entryIndex += 1) {
+ if (entries[entryIndex].isIntersecting) {
+ animateItems(true);
+ observer.unobserve(entries[entryIndex].target);
+ }
+ }
+ }, observerOptions);
- container.addEventListener('touchstart', (e) => {
+ observer.observe(container);
+ } else {
+ animateItems(false);
+ }
+
+ container.addEventListener('touchstart', function(e) {
touchStartX = e.touches[0].pageX;
scrollLeft = container.scrollLeft;
}, { passive: true });
- container.addEventListener('touchmove', (e) => {
+ container.addEventListener('touchmove', function(e) {
if (!touchStartX) return;
- const x = e.touches[0].pageX;
- const walk = (touchStartX - x) * 1.5;
+ var x = e.touches[0].pageX;
+ var walk = (touchStartX - x) * 1.5;
container.scrollLeft = scrollLeft + walk;
}, { passive: true });
- container.addEventListener('touchend', () => {
+ container.addEventListener('touchend', function() {
touchStartX = null;
});
- // 鼠标滚轮横向滚动(移动端视图时)
- container.addEventListener('wheel', (e) => {
+ container.addEventListener('wheel', function(e) {
if (container.scrollWidth > container.clientWidth) {
if (Math.abs(e.deltaX) < Math.abs(e.deltaY)) {
e.preventDefault();
@@ -80,56 +112,46 @@
}
}, { passive: false });
- // 拖拽滚动(移动端视图时)
- let isDragging = false;
- let startX;
- let dragScrollLeft;
-
- container.addEventListener('mousedown', (e) => {
+ container.addEventListener('mousedown', function(e) {
if (container.scrollWidth <= container.clientWidth) return;
- if (e.target.closest('.timeline-item')) return;
+ if (e.target.closest && e.target.closest('.timeline-item')) return;
isDragging = true;
container.style.cursor = 'grabbing';
startX = e.pageX - container.offsetLeft;
dragScrollLeft = container.scrollLeft;
});
- container.addEventListener('mouseleave', () => {
+ container.addEventListener('mouseleave', function() {
isDragging = false;
container.style.cursor = '';
});
- container.addEventListener('mouseup', () => {
+ container.addEventListener('mouseup', function() {
isDragging = false;
container.style.cursor = '';
});
- container.addEventListener('mousemove', (e) => {
+ container.addEventListener('mousemove', function(e) {
if (!isDragging) return;
e.preventDefault();
- const x = e.pageX - container.offsetLeft;
- const walk = (x - startX) * 2;
+ var x = e.pageX - container.offsetLeft;
+ var walk = (x - startX) * 2;
container.scrollLeft = dragScrollLeft - walk;
});
- // 节点点击事件(可扩展)
- items.forEach((item) => {
- item.addEventListener('click', () => {
- // 添加点击反馈动画
- const dot = item.querySelector('.dot');
+ forEachNode(items, function(item) {
+ item.addEventListener('click', function() {
+ var dot = item.querySelector('.dot');
if (dot) {
dot.style.transform = 'translate(-50%, -50%) scale(2)';
- setTimeout(() => {
+ setTimeout(function() {
dot.style.transform = '';
}, 200);
}
});
});
- // 键盘导航支持
- let currentIndex = 0;
-
- document.addEventListener('keydown', (e) => {
+ document.addEventListener('keydown', function(e) {
if (!isElementInViewport(container)) return;
if (e.key === 'ArrowLeft') {
@@ -144,42 +166,32 @@
function scrollToItem(index) {
if (container.scrollWidth <= container.clientWidth) return;
- const item = items[index];
+ var item = items[index];
if (!item) return;
- const containerRect = container.getBoundingClientRect();
- const itemRect = item.getBoundingClientRect();
+ var containerRect = container.getBoundingClientRect();
+ var itemRect = item.getBoundingClientRect();
+ var targetScrollLeft = container.scrollLeft + (itemRect.left - containerRect.left) - (containerRect.width / 2) + (itemRect.width / 2);
- const targetScrollLeft = container.scrollLeft + (itemRect.left - containerRect.left) - (containerRect.width / 2) + (itemRect.width / 2);
+ if (typeof container.scrollTo === 'function' && supportsSmoothScroll()) {
+ container.scrollTo({
+ left: targetScrollLeft,
+ behavior: 'smooth'
+ });
+ return;
+ }
- container.scrollTo({
- left: targetScrollLeft,
- behavior: 'smooth'
- });
+ container.scrollLeft = targetScrollLeft;
}
- // ============================================
- // 自动轮播功能 - 从左到右循环展开
- // ============================================
- let autoPlayIndex = 0;
- let autoPlayTimer = null;
- let isUserInteracting = false;
- const autoPlayInterval = 3000; // 每个节点展开持续时间(毫秒)
- const pauseAfterInteraction = 5000; // 用户交互后暂停时间(毫秒)
-
- // 添加自动展开的CSS类
function expandItem(index) {
- // 移除所有节点的展开状态
- items.forEach(item => {
- item.classList.remove('auto-expanded');
- });
- // 给当前节点添加展开状态
+ clearExpandedItems();
if (items[index]) {
items[index].classList.add('auto-expanded');
+ updateExpandedState(true);
}
}
- // 自动轮播
function autoPlay() {
if (isUserInteracting) return;
@@ -187,63 +199,56 @@
autoPlayIndex = (autoPlayIndex + 1) % items.length;
}
- // 启动自动轮播
function startAutoPlay() {
if (autoPlayTimer) return;
autoPlayTimer = setInterval(autoPlay, autoPlayInterval);
- // 立即展开第一个
autoPlay();
}
- // 停止自动轮播
function stopAutoPlay() {
if (autoPlayTimer) {
clearInterval(autoPlayTimer);
autoPlayTimer = null;
}
- // 移除所有展开状态
- items.forEach(item => {
- item.classList.remove('auto-expanded');
- });
+ clearExpandedItems();
}
- // 用户交互时暂停自动轮播
function pauseAutoPlay() {
isUserInteracting = true;
stopAutoPlay();
- // 一段时间后恢复自动轮播
- setTimeout(() => {
+ if (interactionTimer) {
+ clearTimeout(interactionTimer);
+ }
+
+ interactionTimer = setTimeout(function() {
isUserInteracting = false;
- if (isElementInViewport(container)) {
+ if (hasIntersectionObserver && isElementInViewport(container)) {
startAutoPlay();
}
}, pauseAfterInteraction);
}
- // 监听用户交互
container.addEventListener('mouseenter', pauseAutoPlay);
container.addEventListener('touchstart', pauseAutoPlay, { passive: true });
- // 使用 Intersection Observer 控制自动轮播
- const autoPlayObserver = new IntersectionObserver((entries) => {
- entries.forEach(entry => {
- if (entry.isIntersecting && !isUserInteracting) {
- startAutoPlay();
- } else {
- stopAutoPlay();
+ if (hasIntersectionObserver) {
+ var autoPlayObserver = new IntersectionObserver(function(entries) {
+ for (var entryIndex = 0; entryIndex < entries.length; entryIndex += 1) {
+ if (entries[entryIndex].isIntersecting && !isUserInteracting) {
+ startAutoPlay();
+ } else {
+ stopAutoPlay();
+ }
}
- });
- }, { threshold: 0.3 });
+ }, { threshold: 0.3 });
- autoPlayObserver.observe(container);
-
- console.log("Timeline Loaded with Enhanced Labels and Positioning");
+ autoPlayObserver.observe(container);
+ }
}
- // 工具函数:检查元素是否在视口中
function isElementInViewport(el) {
- const rect = el.getBoundingClientRect();
+ var rect = el.getBoundingClientRect();
return (
rect.top < window.innerHeight &&
rect.bottom > 0
diff --git a/classiccase.html b/classiccase.html
index 7537c37..d3800fc 100644
--- a/classiccase.html
+++ b/classiccase.html
@@ -121,12 +121,11 @@
// 数据定义
const caseData = [
{id: 1, title: "唐山港集团有限公司", desc: "唐山港集团有限公司是中国北方重要的综合性港口企业,拥有煤炭、矿石、集装箱、液体化工等多种专业化码头...", img: "assets/images/tangshangang.jpg", href: "classiccase/tangshan_ore_terminal.html",category:["port"]},
- {id: 2, title: "中山港航集团股份有限公司", desc: "创立于2000年12月,注册地位于中山市火炬开发区沿江东一路3号港航大厦...", img: "assets/images/zhongshanganghang.jpg", href: "classiccase/zhongshan_port_service.html",category:["port"]},
+ {id: 2, title: "中山港航集团股份有限公司", desc: "创立于2000年12月,注册地位于中山市火炬开发区沿江东一路3号港航大厦,围绕港口服务平台与集装箱码头系统推进全流程数字化升级...", img: "assets/images/zhongshanganghang.jpg", href: "classiccase/zhongshan_port_service.html",category:["port"]},
{id: 3, title: "秦皇岛港股份有限公司", desc: "河北港口集团核心企业,全球最大大宗干散货公众码头之一,1898年开埠,现有生产泊位71个...", img: "assets/images/logo2.jpg", href: "classiccase/qinhuangdao_cargo_system.html",category:["port"]},
- {id: 4, title: "中山港航集团股份有限公司", desc: "中山港航集团股份有限公司集装箱码头系统,提供集装箱码头全流程数字化管理...", img: "assets/images/zhongshanganghang.jpg", href: "classiccase/zhongshan_container_terminal.html",category:["port"]},
- {id: 5, title: "上海航华国际船务代理有限公司", desc: "2000年4月成立的国有控股国际船舶代理企业,由上海国际港务(集团)股份有限公司、上海航运交易所共同投资...", img: "assets/images/logo5.jpg", href: "classiccase/shanghai_hanghua_ship_agent.html",category:["ship-agent","shipping-company","freight-forwarder"]},
- {id: 6, title: "北部湾港防城港码头有限公司", desc: "广西北部湾国际港务集团有限公司旗下核心企业,主要从事集装箱、散货的装卸、仓储、运输等业务...", img: "assets/images/fangcheng.png", href: "classiccase/fangchenggang_railway_container.html",category:["port"]},
- {id: 7, title: "上海上港联合国际船舶代理有限公司", desc: "上海上港联合国际船舶代理有限公司订舱平台,提供一站式在线订舱服务...", img: "assets/images/liandai.png", href: "classiccase/shanggang_liandai_booking.html",category:["shipping-company","ship-agent","freight-forwarder"]},
+ {id: 5, title: "上海航华国际船务代理有限公司", desc: "2000年4月成立的国有控股国际船舶代理企业,由上海国际港务(集团)股份有限公司、上海航运交易所共同投资,已建设船代业务系统与海运电商云服务平台...", img: "assets/images/logo5.jpg", href: "classiccase/shanghai_hanghua_ship_agent.html",category:["ship-agent","shipping-company","freight-forwarder"]},
+ {id: 6, title: "北部湾港防城港码头有限公司", desc: "广西北部湾国际港务集团有限公司旗下核心企业,主要从事集装箱、散货的装卸、仓储、运输等业务,覆盖铁路集装箱场站与穿梭巴士业务场景...", img: "assets/images/fangcheng.png", href: "classiccase/fangchenggang_railway_container.html",category:["port","shipping-company","logistics"]},
+ {id: 7, title: "上海上港联合国际船舶代理有限公司", desc: "1994年成立,系上海国际港务(集团)股份有限公司全资子公司,围绕订舱平台与船代货代一体化系统持续提升数字化服务能力...", img: "assets/images/liandai.png", href: "classiccase/shanggang_liandai_booking.html",category:["shipping-company","ship-agent","freight-forwarder"]},
{id: 8, title: "威海港通信息科技有限公司", desc: "山东港口威海港有限公司全资控股的国有企业,成立于2015年,注册资本500万元...", img: "assets/images/weihaigang.jpg", href: "classiccase/weihai_gate_yard.html",category:["port","shipping-company"]},
{id: 9, title: "安徽港口集团合肥有限公司", desc: "统筹管理南淝河港区、巢湖港区与派河港区,拥有生产性泊位25个,年设计吞吐能力达集装箱90万标箱...", img: "assets/images/hefei.png", href: "classiccase/anhui_port_hefei.html",category:["fleet","freight-forwarder","logistics"]},
{id: 10, title: "梧州市港务发展集团有限公司", desc: "市直属国有独资企业,2022年3月注册成立,注册资本10亿元,打造智慧梧州港...", img: "assets/images/wuzhou.png", href: "classiccase/smart_wuzhou_port.html",category:["shipping-company"]},
@@ -140,22 +139,18 @@
{id: 18, title: "秦皇岛港股份有限公司流动机械分公司", desc: "秦皇岛港股份有限公司旗下重要作业单位,负责港区内流动机械的统一调度、运营维护与管理工作...", img: "assets/images/logo2.jpg", href: "classiccase/mobile_machinery_dispatch.html",category:["port","machinery"]},
{id: 19, title: "珠江船务企业(集团)有限公司", desc: "珠江船务对现有码头区域平台化经营管理的尝试,解决平台内各码头的拖车集中监控、集中调配问题...", img: "assets/images/zhujiang.png", href: "classiccase/zhujiang_shipping.html",category:["fleet","freight-forwarder"]},
{id: 20, title: "海南海峡航运股份有限公司", desc: "成立于2002年,是中远海运集团旗下A股上市公司,注册资本22.29亿元,是琼州海峡客滚运输龙头企业...", img: "assets/images/haixia.png", href: "classiccase/hainan_strait_shipping.html",category:["shipping-company"]},
- {id: 21, title: "唐山港合德海运有限公司", desc: "唐山港合德海运有限公司是河北港口集团唐港集团旗下内外贸兼营的集装箱航运企业,注册资本18.5亿元...", img: "assets/images/shanghaihede.webp", href: "classiccase/hede_international_shipping.html",category:["shipping-company"]},
+ {id: 21, title: "唐山港合德海运有限公司", desc: "河北港口集团旗下内外贸兼营的集装箱航运企业,围绕国际航运智能配载与全球供应链平台建设持续提升运营能力...", img: "assets/images/shanghaihede.webp", href: "classiccase/hede_international_shipping.html",category:["shipping-company","freight-forwarder","logistics"]},
{id: 22, title: "上海海华轮船有限公司", desc: "1990年成立,系上海锦江航运(集团)股份有限公司全资国有航运企业,专注近洋集装箱班轮运输...", img: "assets/images/haihua.jpg", href: "classiccase/shanghai_haihua_shipping.html",category:[]},
{id: 23, title: "上海锦江航运(集团)有限公司", desc: "上海锦江航运(集团)股份有限公司,1983年成立的中国领先区域性集装箱航运企业...", img: "assets/images/logo1.jpg", href: "classiccase/jinjiang_shipping_ecommerce.html",category:["shipping-company"]},
{id: 24, title: "嘉华航运(香港)有限公司", desc: "嘉华航运(香港)有限公司,2023年成立的新兴国际航运企业,专注中东及北非市场...", img: "assets/images/jiahua.jpg", href: "classiccase/jiahua_shipping_system.html",category:["shipping-company","ship-agent","freight-forwarder"]},
{id: 25, title: "天津中运海运集团有限公司", desc: "成立于2012年,注册资金叁仟万元,总部设于天津滨海经济开发区...", img: "assets/images/tianjinzhongyun.jpg", href: "classiccase/tianjin_zhongyun_shipping.html",category:["shipping-company"]},
{id: 26, title: "连云港中韩轮渡有限公司", desc: "位于新亚欧大陆桥东桥头堡——连云港东端,独家经营连云港至仁川、平泽客货班轮航线...", img: "assets/images/lianyungang.jpg", href: "classiccase/lianyungang_china_korea_ferry.html",category:["shipping-company","ship-agent","freight-forwarder"]},
- {id: 27, title: "唐山港合德海运有限公司", desc: "唐山港合德海运有限公司,专注内外贸集装箱航线运营,主营国际国内水路运输、货运代理、船舶代理...", img: "assets/images/shanghaihede.webp", href: "classiccase/hede_global_supply_chain.html",category:["shipping-company","freight-forwarder","logistics"]},
{id: 28, title: "烟台哈尼泰克集装箱租赁有限公司", desc: "成立于2017年,是烟台片区专注集装箱租赁服务的小微企业,亟需建设智能化集装箱租赁管理系统...", img: "assets/images/hani.png", href: "classiccase/yantai_hanitek_container.html",category:["shipping-company","logistics","container-yard"]},
{id: 29, title: "唐山海港海通海运代理有限公司", desc: "2002年6月成立于唐山海港开发区,深耕海运代理领域二十余载,核心业务为货物运输代理...", img: "assets/images/haitong.png", href: "classiccase/tangshan_haitong_shipping.html",category:["freight-forwarder","logistics","fleet"]},
{id: 30, title: "河北黄骅港", desc: "我国\"西煤东运、北煤南运\"核心枢纽港口,货物吞吐量连续五年超3亿吨,年疏港车辆通行量突破120万辆次...", img: "assets/images/huanghua.jpg", href: "classiccase/huanghua_vehicle_analysis.html",category:["fleet","logistics","port"]},
- {id: 31, title: "北部湾港防城港码头有限公司", desc: "广西北部湾港涵盖防城港域、北海港域、钦州港域,位居泛北部湾经济圈核心位置...", img: "assets/images/fangcheng.png", href: "classiccase/beibuwan_shuttle_bus.html",category:["shipping-company","logistics"]},
{id: 32, title: "华海国际船舶代理有限公司", desc: "华海集团创立于2003年,主营船舶代理、货物代理、国际远洋及国内沿海运输、租船订舱...", img: "assets/images/huahai.png", href: "classiccase/rizhao_huahai_shipping.html",category:["ship-agent","freight-forwarder","logistics"]},
- {id: 33, title: "上海上港联合国际船舶代理有限公司", desc: "1994年成立,系上海国际港务(集团)股份有限公司全资子公司,上海港主要国际船舶代理服务企业之一...", img: "assets/images/liandai.png", href: "classiccase/shanggang_liandai_integration.html",category:["ship-agent","shipping-company","freight-forwarder"]},
{id: 34, title: "上海港船务代理有限公司", desc: "1993年8月成立,植根上海并深度依托国际航运中心优势,专注水上运输领域的专业船舶代理服务...", img: "assets/images/shanghaigang.png", href: "classiccase/shanghai_port_coastal_system.html",category:["shipping-company","ship-agent","freight-forwarder"]},
{id: 35, title: "唐山港口实业集团有限公司", desc: "河北省港口整合平台核心企业,负责运营唐山港\"三港四区\"中的京唐港区与曹妃甸港区,年吞吐量逾3亿吨...", img: "assets/images/tangshangang.jpg", href: "classiccase/tangshan_bigdata_platform.html",category:["port"]},
- {id: 36, title: "上海航华国际船务代理有限公司", desc: "上海航华国际船务代理有限公司海运电商云服务平台,提供数字化航运服务...", img: "assets/images/logo5.jpg", href: "classiccase/shanghai_hanghua_cloud.html",category:["ship-agent","shipping-company","freight-forwarder"]},
{id: 37, title: "上海鹏华船务有限公司", desc: "2004年成立的中国首家公共船舶代理合资企业,致力于为全球客户提供全方位、高效率国际船舶代理服务...", img: "assets/images/shanghaipenghua.jpg", href: "classiccase/shanghai_penghua_platform.html",category:["ship-agent","shipping-company","freight-forwarder"]},
{id: 38, title: "上海新海国际船舶代理有限公司", desc: "1993年3月29日成立于上海,专注提供全方位国际船舶代理服务,作为连接船东、租家、港口及相关方的关键纽带...", img: "assets/images/xinhai.jpg", href: "classiccase/shanghai_xinhai_freight.html",category:["ship-agent","shipping-company","freight-forwarder"]},
{id: 39, title: "济宁港航建设有限公司", desc: "济宁能源集团核心子公司,主营京杭运河济宁段港口、航道、船闸一体化投资运营,年吞吐量超3000万吨...", img: "assets/images/jining.png", href: "classiccase/canal_logistics_supervision.html",category:["port","logistics"]}
diff --git a/classiccase/beibuwan_shuttle_bus.html b/classiccase/beibuwan_shuttle_bus.html
deleted file mode 100644
index b1eda69..0000000
--- a/classiccase/beibuwan_shuttle_bus.html
+++ /dev/null
@@ -1,224 +0,0 @@
-
-
-
-
-
-
-
-
-
- 客户案例-岸基科技
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
首页 >
客户案例 > 北部湾防城港有限公司
-
-
-
-
-
-
-
-
-
-
-
-
-
北部湾防城港有限公司
-
广西北部湾港涵盖防城港域、北海港域、钦州港域,位于泛北部湾、泛珠三角与中国—东盟经济圈交汇核心,是“一带一路”与“西部陆海新通道”战略关键节点,也是西南地区距离最短的出海口及面向东盟最便捷的出海通道。当前运营穿梭巴士船舶14艘,2022年穿巴业务吞吐量目标160万TEU,本次系统采购将支撑年处理400万标准箱的业务规模。
-
-
-
-
-
-
-
-
-
1. 分布式港口协同需求
- 北港集团在钦州港、防城港、北海港(含铁山)实施分布式码头布局,三港分布式布局需建立标准化作业单元与穿巴运输体系,打通码头间物理隔阂,构建高效联通港口网络。
-
2. 穿巴智能调度挑战
- 传统穿巴管理难以满足枢纽港规模化需求,需解决多码头间运力与货源匹配效率问题。
-
3. 标准化体系贯通瓶颈
- 现有各港区作业标准不统一,亟需建立覆盖调度、装卸、信息交互的标准化体系,消除协作壁垒。
-
-
-
-
-
-
-
-
-
-
1. 全流程信息化升级
- 构建穿巴业务综合管控平台,覆盖商务、订舱、船舶管理、单证交互等全环节,实现业务规范化管理。
-
2. 智能化调度与监控
- 部署智能配舱与调度引擎,动态优化运力分配与航线规划,集成安全监控与预警功能。
-
3. 跨系统数据互联
- 打通码头生产系统与北港网数据链路,实现船期、货物、场地信息自动同步与计费自动化。
-
4. 数据驱动决策支持
- 建立统计分析中枢,整合运力效能、成本结构等数据,生成分级决策报表,支撑战略目标达成。
-
-
-
-
-
-
-
-
-
-
1. 运营效率跃升
- 智能调度实现资源与任务精准匹配,船舶闲置与等待时间减少30%以上,显著降低人力与能耗成本。
-
2. 协同作业效能突破
- 打通码头间信息壁垒,跨部门协调耗时缩减50%,电子单证流转实现留痕式沟通与责任分工。
-
3. 多港航线资源整合
- 钦州、防城港、北海三港互联形成“超级大港”,航线选择丰富度提升200%以上,货主可共享全部远洋航线资源。
-
4. 客户体验智能化升级
- 线上订舱平台支持查询、预订、支付及动态跟踪,客户沟通成本降低60%,提供便捷服务体验。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/classiccase/fangchenggang_railway_container.html b/classiccase/fangchenggang_railway_container.html
index 08df88d..a710ef8 100644
--- a/classiccase/fangchenggang_railway_container.html
+++ b/classiccase/fangchenggang_railway_container.html
@@ -29,15 +29,10 @@
-
-
-
-
-
-
-
-
+
-
-
-
-
北部湾港防城港码头有限公司
-
北部湾港防城港码头有限公司是广西北部湾国际港务集团有限公司旗下核心企业,主要从事集装箱、散货的装卸、仓储、运输等业务。作为西南地区重要的海铁联运枢纽,公司致力于提升港口智能化水平,推动区域经济发展,是国家"一带一路"倡议中重要的物流节点。
+
+
+
北部湾港防城港码头有限公司
+
北部湾港防城港码头有限公司是广西北部湾国际港务集团有限公司旗下核心企业,主要从事集装箱、散货的装卸、仓储、运输等业务。作为西南地区重要的海铁联运枢纽,公司致力于提升港口智能化水平,推动区域经济发展,是国家一带一路倡议中的重要物流节点。
+
+
-
-
-
-
-
-
-
-
1. 铁路集装箱作业量激增,管理难度加大
- 铁路集装箱吞吐量增长,传统人工理货、纸质运单已无法满足高效作业需求。
-
2. 多系统割裂,数据无法共享
- 铁路、散货、集装箱、闸口等系统数据孤立,导致重复录入与信息不一致。
-
3. 人工理货效率低,出错率高
- 理货员现场手工记录录入,存在较大人为差错风险,影响车辆周转效率。
-
4. 安全管理与监管要求提升
- 需实现作业全过程可视化、可追溯,提升对人员、车辆、货物的实时监控能力。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1. 铁路集装箱作业量激增,管理难度加大
+ 铁路集装箱吞吐量增长,传统人工理货、纸质运单已无法满足高效作业需求。
+
2. 多系统割裂,数据无法共享
+ 铁路、散货、集装箱、闸口等系统数据孤立,导致重复录入与信息不一致。
+
3. 人工理货效率低,出错率高
+ 理货员现场手工记录录入,存在较大人为差错风险,影响车辆周转效率。
+
4. 安全管理与监管要求提升
+ 需实现作业全过程可视化、可追溯,提升对人员、车辆、货物的实时监控能力。
+
+
+
+
+
+
+
+
+
1. 实现铁路集装箱系统一体化升级
+ 构建统一平台,整合多系统数据,实现数据共享与业务协同,提升作业效率与管理水平。
+
2. 推动理货作业智能化、远程化
+ 通过远程智能理货系统,实现后台远程核对确认,减少现场人员投入。
+
3. 实现作业流程无纸化、自动化
+ 通过电子运单、自动识别替代纸质单据与人工录入,降低差错率。
+
4. 强化作业安全与过程可视化
+ 通过视频监控、图像识别等手段,实现全过程可视化监管与异常快速响应。
+
+
+
+
+
+
+
+
+
1. 作业效率提升
+ 智能调度与自动识别显著缩短车辆停留时间,日均作业量提升30%以上。
+
2. 人工成本降低
+ 减少现场理货、录入等环节,优化人员配置30%,释放人力用于更高价值工作。
+
3. 数据准确率提升
+ 系统自动识别比对,杜绝人工录入错误,确保数据实时、准确、可追溯。
+
4. 客户满意度显著提升
+ 作业流程更清晰、响应更及时,客户满意度提升至95%以上,信任度大幅增强。
+
+
+
+
+
-
-
-
-
项目目标
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1. 分布式港口协同需求
+ 北港集团在钦州港、防城港、北海港实施分布式码头布局,需建立标准化作业单元与穿巴运输体系,构建高效联通港口网络。
+
2. 穿巴智能调度挑战
+ 传统穿巴管理难以满足枢纽港规模化需求,需解决多码头间运力与货源匹配效率问题。
+
3. 标准化体系贯通瓶颈
+ 现有各港区作业标准不统一,亟需建立覆盖调度、装卸、信息交互的标准化体系,消除协作壁垒。
+
+
+
+
+
+
+
+
+
1. 全流程信息化升级
+ 构建穿巴业务综合管控平台,覆盖商务、订舱、船舶管理、单证交互等全环节,实现业务规范化管理。
+
2. 智能化调度与监控
+ 部署智能配舱与调度引擎,动态优化运力分配与航线规划,集成安全监控与预警功能。
+
3. 跨系统数据互联
+ 打通码头生产系统与北港网数据链路,实现船期、货物、场地信息自动同步与计费自动化。
+
4. 数据驱动决策支持
+ 建立统计分析中枢,整合运力效能、成本结构等数据,生成分级决策报表,支撑战略目标达成。
+
+
+
+
+
+
+
+
+
1. 运营效率跃升
+ 智能调度实现资源与任务精准匹配,船舶闲置与等待时间减少30%以上,显著降低人力与能耗成本。
+
2. 协同作业效能突破
+ 打通码头间信息壁垒,跨部门协调耗时缩减50%,电子单证流转实现留痕式沟通与责任分工。
+
3. 多港航线资源整合
+ 钦州、防城港、北海三港互联形成超级大港,航线选择丰富度提升200%以上,货主可共享全部远洋航线资源。
+
4. 客户体验智能化升级
+ 线上订舱平台支持查询、预订、支付及动态跟踪,客户沟通成本降低60%,提供便捷服务体验。
+
+
+
+
+
-
-
-
-
-
-
1. 作业效率提升
- 智能调度与自动识别显著缩短车辆停留时间,日均作业量提升30%以上。
-
2. 人工成本降低
- 减少现场理货、录入等环节,优化人员配置30%,释放人力用于更高价值工作。
-
3. 数据准确率提升
- 系统自动识别比对,杜绝人工录入错误,确保数据实时、准确、可追溯。
-
4. 客户满意度显著提升
- 作业流程更清晰、响应更及时,客户满意度提升至95%以上,信任度大幅增强。
+
+
@@ -150,65 +276,25 @@
-
-
-
-
+
-
+
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-