@@ -1164,7 +1286,7 @@
// 首页五大核心业务轮播
let coreSlideIndex = 0;
let coreSlideTimer = null;
- const coreDetailRoutes = ['business', 'business', 'services', 'services', 'services'];
+ const coreBusinessSlugs = ['ocean', 'fulfillment', 'procurement', 'trucking', 'pallet'];
function showCoreSlide(index, restart = true) {
const slides = document.querySelectorAll('.core-slide');
@@ -1186,7 +1308,7 @@
}
});
const detailBtn = document.getElementById('coreDetailBtn');
- if (detailBtn) detailBtn.onclick = () => navigateTo(coreDetailRoutes[coreSlideIndex]);
+ if (detailBtn) detailBtn.onclick = () => navigateBusinessDetail(coreBusinessSlugs[coreSlideIndex]);
if (restart) startCoreCarousel();
}
@@ -1197,7 +1319,11 @@
}
document.querySelectorAll('[data-core-tab]').forEach(tab => {
- tab.addEventListener('click', () => showCoreSlide(Number(tab.dataset.coreTab)));
+ tab.addEventListener('click', () => {
+ const index = Number(tab.dataset.coreTab);
+ showCoreSlide(index);
+ navigateBusinessDetail(coreBusinessSlugs[index]);
+ });
});
const coreHero = document.querySelector('.core-hero');
if (coreHero) {
@@ -1206,6 +1332,79 @@
}
startCoreCarousel();
+ const businessDetails = {
+ ocean: {
+ name:'海运专线',eyebrow:'Ocean Freight',bg:"url('assets/core-ocean.jpg')",
+ desc:'连接中国主要港口与美国核心仓网,提供整柜、拼箱、美森快船与盐田普船等稳定的中美海运产品。',
+ intro:'从国内收货、装柜和出口报关,到美国目的港清关、海外仓入库及 FBA 派送,柏悦物流统一协调全链路节点,让货物按计划抵达销售仓。',
+ badges:[['fa-ship','每周固定船期'],['fa-file-shield','双清合规'],['fa-route','全程可追踪']],
+ features:[['fa-boxes-stacked','整柜与拼箱','按货量灵活选择 FCL、LCL,支持多票集货与统一出运。'],['fa-calendar-check','稳定船期','核心航线固定班期,提前锁定舱位,方便销售与库存计划。'],['fa-file-contract','清关协同','中美两端资料预审与申报协同,减少查验和滞港风险。'],['fa-warehouse','仓配衔接','到港后可接海外仓、FBA 预约及后续派送服务。']],
+ simple:[['fa-box-open','国内交货','货物送至集货仓'],['fa-cubes','装柜报关','装柜并完成出口申报'],['fa-ship','海运运输','按船期跨洋运输'],['fa-passport','美国清关','目的港清关提柜'],['fa-warehouse','海外仓入库','清点、上架、备货'],['fa-boxes-packing','FBA派送','预约送仓并签收']],
+ detail:[['01','需求建单','确认货量、品名、目的仓和船期,建立运输委托。'],['02','国内收货','核对件数、唛头与包装,测量体积重量并完成入仓。'],['03','配载装柜','多票货物按目的地配载,装柜加固并拍照留档。'],['04','出口报关','准备合同、发票、装箱单等资料,完成出口申报。'],['05','国际海运','船舶按计划离港,系统同步开船、到港及异常节点。'],['06','目的港清关','提交进口清关资料,完成税费处理与放行。'],['07','海外仓入库','提柜送仓,完成卸货、清点、上架和库存同步。'],['08','FBA派送','预约 FBA 入仓,安排尾程派送并回传签收凭证。']]
+ },
+ fulfillment: {
+ name:'一件代发',eyebrow:'Order Fulfillment',bg:"url('assets/core-fulfillment.jpg')",
+ desc:'以美国本土仓为履约中心,连接 Amazon、Walmart、独立站等销售渠道,订单产生后按件拣货、打包并快速发出。',
+ intro:'适合跨境电商卖家和多渠道品牌,将库存前置到美国仓库,由系统自动接单、分配库存和生成面单,提升订单履约速度。',
+ badges:[['fa-plug','多平台接入'],['fa-bolt','24小时出库'],['fa-chart-line','库存可视化']],
+ features:[['fa-arrows-to-circle','订单自动同步','对接主流平台与独立站,减少人工录单和漏单。'],['fa-barcode','精准拣货','按 SKU、库位和批次拣货,支持复核与称重。'],['fa-box','灵活包装','按渠道和商品要求完成装箱、贴标及合单。'],['fa-truck-fast','快速派送','自动匹配 USPS、UPS、FedEx 等渠道,回传轨迹。']],
+ simple:[['fa-warehouse','库存入仓','商品入库并上架'],['fa-cart-shopping','订单同步','平台订单进入系统'],['fa-hand-holding-box','拣货打包','按单拣货、复核、包装'],['fa-truck-fast','本土派送','匹配渠道并出库'],['fa-house','客户签收','回传轨迹与签收']],
+ detail:[['01','商品建档','维护 SKU、条码、包装和渠道规则,绑定货主库存。'],['02','头程入仓','货物抵达美国仓,完成收货、质检、上架和库位分配。'],['03','订单接入','API 或平台插件同步订单,校验地址、库存和风控规则。'],['04','订单审核','识别异常订单,合并拆分规则确认后进入履约队列。'],['05','波次拣货','按仓库、承运商和截单时间生成波次,拣货员扫码作业。'],['06','复核包装','复核 SKU 与数量,称重、打印面单并完成包装。'],['07','出库交接','与快递或卡车承运商交接,系统记录出库时间。'],['08','轨迹售后','同步跟踪号和签收状态,支持退件、换标与补发。']]
+ },
+ procurement: {
+ name:'海外采购',eyebrow:'Overseas Procurement',bg:"url('assets/core-procurement.jpg')",
+ desc:'从供应商寻源到质检集货,提供可控、透明的一站式采购执行服务,帮助品牌稳定获得海外商品与资源。',
+ intro:'柏悦物流协助客户完成供应商筛选、询价比价、样品确认、批量采购、质检和入仓,适用于电商备货、渠道采购及海外仓补货。',
+ badges:[['fa-magnifying-glass','供应商寻源'],['fa-clipboard-check','质检验货'],['fa-layer-group','集货发运']],
+ features:[['fa-address-book','供应商筛选','依据品类、资质、产能和交期建立供应商候选池。'],['fa-tags','询价比价','统一询价口径,比较采购价、交期和贸易条件。'],['fa-clipboard-check','质量把关','按确认样品和检验标准进行抽检并反馈结果。'],['fa-boxes-stacked','集中发运','多供应商货物集中到仓,合并包装后统一发运。']],
+ simple:[['fa-lightbulb','提出需求','确认品类与采购标准'],['fa-magnifying-glass','供应商寻源','筛选供应商并询价'],['fa-file-signature','下单采购','确认样品、价格和交期'],['fa-clipboard-check','验货质检','按标准抽检并反馈'],['fa-warehouse','集货入仓','集中收货、合包并发运']],
+ detail:[['01','需求确认','确认 SKU、数量、规格、目标成本和交期要求。'],['02','供应商寻源','筛选供应商并核验营业资质、产能和历史履约。'],['03','询价比价','获取阶梯价格与交期,输出采购建议和成本明细。'],['04','样品确认','寄送样品,确认材质、功能、包装和合规标签。'],['05','批量下单','签订采购订单,跟进排产、付款和交付节点。'],['06','到货验货','核对数量和外观,按抽检标准记录质量结果。'],['07','集货处理','多批货物集中入仓,完成合包、贴标和资料归档。'],['08','统一发运','根据销售计划安排海运、空运或海外仓补货。']]
+ },
+ trucking: {
+ name:'美本土卡车',eyebrow:'US Domestic Trucking',bg:"url('assets/core-trucking.jpg')",
+ desc:'覆盖美国主要区域的 FTL、LTL 与超大件运输网络,支持港口、海外仓、FBA 及客户地址之间的预约派送。',
+ intro:'从运输需求确认、车型与承运商匹配,到提货、在途跟踪、预约送货和签收回单,提供端到端的本土卡车管理。',
+ badges:[['fa-map-location-dot','全美网络'],['fa-truck','FTL / LTL'],['fa-location-crosshairs','GPS追踪']],
+ features:[['fa-route','线路规划','结合货量、时效和地址规划最优运输线路。'],['fa-truck-front','车型匹配','覆盖整车、零担、尾板和超大件等车型。'],['fa-calendar-days','预约派送','提前与仓库或收货方预约窗口,降低等待成本。'],['fa-file-signature','签收回单','留存 POD、照片和异常记录,方便对账追责。']],
+ simple:[['fa-file-circle-plus','提交需求','确认货量、地址和时效'],['fa-truck-front','匹配车辆','选择 FTL / LTL 车型'],['fa-box-open','提货装运','司机提货并核验货物'],['fa-location-dot','在途运输','GPS跟踪运输状态'],['fa-pen-to-square','预约签收','送达并回传POD']],
+ detail:[['01','运输建单','录入提货地、送货地、货物尺寸重量和预约窗口。'],['02','询价派车','根据线路和车型询价,确认承运商与报价。'],['03','预约提货','向发货仓预约提货时间,司机到场核对件数。'],['04','装车交接','检查托盘、唛头和封签,拍照完成交接。'],['05','在途跟踪','同步 GPS、里程和预计到达时间,异常主动预警。'],['06','目的地预约','与海外仓、FBA 或客户确认卸货时间。'],['07','现场交付','完成卸货、签收和异常备注,取得 POD。'],['08','费用结算','核对里程、附加费和等待费,完成承运商对账。']]
+ },
+ pallet: {
+ name:'美本土散板',eyebrow:'US Pallet Breakbulk',bg:"url('assets/core-pallet.jpg')",
+ desc:'面向托盘货物提供美国本土拆板、分拣、重组和多地址派送服务,适配 B2B 补货与多渠道订单。',
+ intro:'货物到达美国仓后,按 SKU、客户和目的地拆分托盘,重新组板、贴标并安排尾程派送,减少整板直发的限制。',
+ badges:[['fa-pallet','托盘作业'],['fa-arrows-split-up-and-left','拆分分拣'],['fa-share-nodes','多点配送']],
+ features:[['fa-boxes-stacked','拆板清点','按托盘和箱号拆分,清点数量并记录破损。'],['fa-filter','精细分拣','根据客户、SKU、渠道和目的地进行分拣。'],['fa-layer-group','重新组板','按照承运和收货要求重组托盘并加固。'],['fa-truck-ramp-box','多点派送','支持多个仓库、门店和客户地址分批配送。']],
+ simple:[['fa-pallet','托盘到仓','托盘货物入仓'],['fa-boxes-stacked','拆板清点','拆分并核对箱数'],['fa-filter','分拣组板','按目的地重新组板'],['fa-tags','贴标复核','打印标签并复核'],['fa-truck','分批派送','多地址预约交付']],
+ detail:[['01','托盘预报','登记托盘数量、尺寸、重量和预计到仓时间。'],['02','到仓收货','检查托盘外观、封签和箱数,登记收货差异。'],['03','拆板作业','按客户和 SKU 拆分托盘,扫描箱号并更新库存。'],['04','分区暂存','将货物放入对应作业区,标记目的地和作业批次。'],['05','订单分拣','根据派送订单拣选箱件,复核数量和包装状态。'],['06','重新组板','按承运商和收货要求组板、缠膜、加固并称重。'],['07','标签复核','打印运输标签和箱唛,校验地址、件数和渠道。'],['08','多点派送','安排卡车或快递分批派送,回传签收与异常凭证。']]
+ }
+ };
+ let activeBusinessSlug = 'ocean';
+ function renderBusinessDetail(slug) {
+ const data = businessDetails[slug] || businessDetails.ocean;
+ activeBusinessSlug = businessDetails[slug] ? slug : 'ocean';
+ const setText = (id,value) => { const el=document.getElementById(id); if(el)el.textContent=value; };
+ setText('bdBreadcrumbName',data.name); setText('bdEyebrow',data.eyebrow); setText('bdTitle',data.name); setText('bdDesc',data.desc); setText('bdIntro',data.intro); setText('bdFlowTitle',data.name+'流程图');
+ const hero=document.getElementById('bdHero'); if(hero)hero.style.setProperty('--bd-bg',data.bg);
+ const badges=document.getElementById('bdBadges'); if(badges)badges.innerHTML=data.badges.map(item=>`
${item[1]}`).join('');
+ const features=document.getElementById('bdFeatures'); if(features)features.innerHTML=data.features.map(item=>`
${item[1]}
${item[2]}
`).join('');
+ const simple=document.getElementById('bdSimpleFlow'); if(simple){simple.style.gridTemplateColumns=`repeat(${data.simple.length},minmax(120px,1fr))`;simple.innerHTML=data.simple.map(item=>`
`).join('');}
+ const detail=document.getElementById('bdDetailFlow'); if(detail)detail.innerHTML=data.detail.map(item=>`
${item[0]}${item[1]}
${item[2]}
`).join('');
+ const other=document.getElementById('bdOtherBusiness'); if(other)other.innerHTML=Object.entries(businessDetails).map(([key,item],i)=>`
`).join('');
+ switchBusinessFlow('simple');
+ }
+ function switchBusinessFlow(view,button) {
+ document.querySelectorAll('[data-flow-view]').forEach(x=>x.classList.toggle('active',x.dataset.flowView===view));
+ const simple=document.getElementById('bdSimplePanel'),detail=document.getElementById('bdDetailPanel');
+ if(simple)simple.classList.toggle('active',view==='simple'); if(detail)detail.classList.toggle('active',view==='detail');
+ }
+ function navigateBusinessDetail(slug,syncHistory=true) {
+ renderBusinessDetail(slug);
+ navigateTo('business-detail',null,false);
+ updateRouteNav('business');
+ if(syncHistory)history.pushState({page:'business-detail',slug:activeBusinessSlug},'',window.location.pathname+window.location.search+'#business/'+activeBusinessSlug);
+ }
+
function updateRouteNav(page) {
const routeKeys = { home:'nav_home', services:'nav_services', process:'nav_process', business:'nav_business', about:'nav_about', contact:'nav_contact' };
document.querySelectorAll('[data-i18n^="nav_"]').forEach(link => {
@@ -1234,6 +1433,7 @@
'services': 'servicesSection',
'process': 'processSection',
'business': 'businessSection',
+ 'business-detail': 'businessDetailSection',
'about': 'aboutSection',
'contact': 'contactSection',
};
@@ -1277,9 +1477,10 @@
}
function restoreRouteFromUrl() {
- const page = window.location.hash.replace('#', '') || 'home';
+ const hash = window.location.hash.replace('#', '') || 'home';
+ if(hash.indexOf('business/')===0){ navigateBusinessDetail(hash.split('/')[1],false); return; }
const validPages = ['home', 'services', 'process', 'business', 'about', 'contact'];
- navigateTo(validPages.includes(page) ? page : 'home', null, false);
+ navigateTo(validPages.includes(hash) ? hash : 'home', null, false);
}
window.addEventListener('popstate', restoreRouteFromUrl);
diff --git a/悦/官网头程下单/workbench.html b/悦/官网头程下单/workbench.html
index 064e0bc..0edbe1c 100644
--- a/悦/官网头程下单/workbench.html
+++ b/悦/官网头程下单/workbench.html
@@ -347,6 +347,70 @@
.dash-menu-sub.collapsed { max-height: 0; opacity: 0; margin-top: 0; }
.dash-nav-link.sub { padding-left: 2.55rem; font-size: 0.88rem; font-weight: 500; }
.dash-nav-link.sub i { font-size: 0.8rem; opacity: 0.65; }
+ .dash-business-subgroup { padding: 0.35rem 0 0.3rem; border-bottom: 1px solid rgba(148, 163, 184, 0.14); }
+ .dash-business-subgroup:last-child { border-bottom: 0; }
+ .dash-business-label { display: flex; align-items: center; gap: 0.55rem; padding: 0.42rem 1rem; color: rgba(255,255,255,0.55); font-size: 0.76rem; font-weight: 600; }
+ .dash-business-label i { width: 1rem; text-align: center; }
+ .dash-business-subgroup .dash-nav-link.sub { padding-left: 2.85rem; font-size: 0.82rem; }
+ .sea-business-page { display: flex; flex-direction: column; gap: 0.9rem; }
+ .sea-business-page.hidden, .sea-business-form-panel[hidden] { display: none; }
+ .sea-page-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
+ .sea-page-header h1 { margin: 0; color: #0f172a; font-size: 1.35rem; font-weight: 700; }
+ .sea-page-header p { margin: 0.3rem 0 0; color: #64748b; font-size: 0.85rem; }
+ .sea-order-filters { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.8rem; padding: 1rem; background: #fff; border-radius: 0.75rem; box-shadow: 0 4px 14px rgba(15,23,42,0.06); }
+ .sea-order-filters input, .sea-order-filters select { width: 100%; height: 2.4rem; padding: 0 0.75rem; border: 1px solid #dbe3ec; border-radius: 0.5rem; background: #fff; color: #334155; font-size: 0.84rem; }
+ .sea-filter-actions { display: flex; align-items: center; gap: 0.6rem; grid-column: 1 / -1; justify-content: flex-end; }
+ .sea-order-table-wrap { overflow-x: auto; background: #fff; border-radius: 0.75rem; box-shadow: 0 4px 14px rgba(15,23,42,0.06); }
+ .sea-order-table { width: 100%; min-width: 760px; border-collapse: collapse; font-size: 0.82rem; }
+ .sea-order-table th, .sea-order-table td { padding: 0.8rem 0.9rem; text-align: left; border-bottom: 1px solid #edf1f5; white-space: nowrap; }
+ .sea-order-table th { color: #475569; background: #f8fafc; font-weight: 600; }
+ .sea-business-page .btn-primary, .sea-business-form-panel .btn-primary, .sea-business-detail-page .btn-primary { background: linear-gradient(135deg, #667eea, #764ba2); box-shadow: 0 4px 15px rgba(102,126,234,0.35); }
+ .sea-business-page .btn-primary:hover, .sea-business-form-panel .btn-primary:hover, .sea-business-detail-page .btn-primary:hover { background: linear-gradient(135deg, #5a6fd8, #6b4295); box-shadow: 0 6px 20px rgba(102,126,234,0.45); }
+ .sea-business-page .sea-order-table th { background: linear-gradient(135deg, rgba(102,126,234,0.08), rgba(118,75,162,0.08)); color: #667eea; border-bottom-color: rgba(102,126,234,0.15); }
+ .sea-business-page .sea-table-action { color: #667eea; }
+ .sea-business-page .sea-table-action:hover { color: #764ba2; }
+ .sea-order-empty { padding: 2.2rem 1rem !important; color: #94a3b8; text-align: center !important; }
+ .sea-table-actions { display: flex; align-items: center; gap: 0.75rem; }
+ .sea-table-action { color: #1565c0; font-weight: 600; }
+ .sea-table-action:hover { color: #0d47a1; text-decoration: underline; }
+ .sea-business-detail-page { display: flex; flex-direction: column; gap: 1rem; }
+ .sea-business-detail-page[hidden] { display: none; }
+ .sea-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
+ .sea-detail-section { background: #fff; border: 1px solid #e2e8f0; border-radius: 0.75rem; padding: 1.15rem; }
+ .sea-detail-section h3 { margin: 0 0 1rem; color: #0f172a; font-size: 1rem; font-weight: 700; }
+ .sea-detail-section dl { display: grid; grid-template-columns: 7rem minmax(0, 1fr); row-gap: 0.75rem; margin: 0; font-size: 0.85rem; }
+ .sea-detail-section dt { color: #64748b; }
+ .sea-detail-section dd { min-width: 0; margin: 0; color: #1e293b; font-weight: 500; overflow-wrap: anywhere; }
+ .procurement-detail-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
+ .procurement-detail-heading h1 { margin: 0; color: #1f2937; font-size: 1.25rem; font-weight: 700; }
+ .procurement-detail-heading p { margin: 0.35rem 0 0; color: #64748b; font-size: 0.82rem; }
+ .procurement-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
+ .procurement-detail-card { overflow: hidden; border: 1px solid #e2e8f0; border-radius: 0.5rem; background: #fff; }
+ .procurement-detail-card.is-product { grid-column: 1 / -1; }
+ .procurement-detail-card h3 { margin: 0; padding: 0.8rem 1rem; border-bottom: 1px solid #e2e8f0; background: #f8fafc; color: #1f2937; font-size: 0.9rem; font-weight: 700; }
+ .procurement-detail-card dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; padding: 0.25rem 1rem 0.75rem; column-gap: 1.75rem; }
+ .procurement-detail-card .detail-field { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr); align-items: center; min-height: 2.65rem; border-bottom: 1px dashed #e2e8f0; font-size: 0.82rem; }
+ .procurement-detail-card .detail-field:last-child, .procurement-detail-card .detail-field:nth-last-child(2):nth-child(odd) { border-bottom-color: transparent; }
+ .procurement-detail-card dt { color: #64748b; }
+ .procurement-detail-card dd { min-width: 0; margin: 0; color: #1f2937; font-weight: 500; overflow-wrap: anywhere; }
+ .sea-progress-track { display: flex; align-items: flex-start; }
+ .sea-progress-step { position: relative; display: flex; flex: 1; flex-direction: column; align-items: center; gap: 0.45rem; color: #94a3b8; font-size: 0.78rem; text-align: center; }
+ .sea-progress-step:not(:last-child)::after { content: ''; position: absolute; top: 0.78rem; left: 58%; width: 84%; height: 2px; background: #e2e8f0; }
+ .sea-progress-step span { position: relative; z-index: 1; display: grid; width: 1.6rem; height: 1.6rem; place-items: center; border-radius: 50%; background: #e2e8f0; color: #64748b; font-weight: 700; }
+ .sea-progress-step.is-current { color: #1565c0; }
+ .sea-progress-step.is-current span { background: #1565c0; color: #fff; }
+ .sea-progress-step.is-done { color: #0f766e; }
+ .sea-progress-step.is-done span { background: #ccfbf1; color: #0f766e; }
+ .sea-edit-overlay { position: fixed; inset: 0; z-index: 1200; display: grid; place-items: center; padding: 1rem; background: rgba(15, 23, 42, 0.55); }
+ .sea-edit-overlay[hidden] { display: none; }
+ .sea-edit-dialog { display: flex; width: min(820px, 100%); max-height: min(88vh, 820px); flex-direction: column; overflow: hidden; border-radius: 0.75rem; background: #fff; box-shadow: 0 24px 60px rgba(15, 23, 42, 0.24); }
+ .sea-edit-header, .sea-edit-footer { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.25rem; border-bottom: 1px solid #e2e8f0; }
+ .sea-edit-header h2 { margin: 0; color: #0f172a; font-size: 1.1rem; font-weight: 700; }
+ .sea-edit-close { display: grid; width: 2.25rem; height: 2.25rem; place-items: center; border-radius: 0.5rem; color: #64748b; }
+ .sea-edit-close:hover { background: #f1f5f9; color: #0f172a; }
+ .sea-edit-body { overflow-y: auto; padding: 1.25rem; }
+ .sea-edit-footer { justify-content: flex-end; border-top: 1px solid #e2e8f0; border-bottom: 0; }
+ @media (max-width: 780px) { .sea-page-header, .procurement-detail-header { align-items: flex-start; flex-direction: column; } .sea-order-filters { grid-template-columns: 1fr; } .sea-filter-actions { grid-column: 1; justify-content: flex-start; } .sea-detail-grid, .procurement-detail-grid { grid-template-columns: 1fr; } .sea-detail-section dl { grid-template-columns: 6rem minmax(0, 1fr); } .procurement-detail-card.is-product { grid-column: auto; } .procurement-detail-card dl { grid-template-columns: 1fr; } .procurement-detail-card .detail-field { grid-template-columns: 6.5rem minmax(0, 1fr); } .sea-edit-dialog { max-height: 94vh; } }
.dash-nav-link.logout { color: #fca5a5; background: rgba(239, 68, 68, 0.10); margin-top: 0.2rem; }
.dash-nav-link.logout:hover { background: rgba(239, 68, 68, 0.22); color: #fff; }
@@ -1130,6 +1194,129 @@
.client-shell .btn-ghost:hover {
border-color: #667eea; color: #667eea; }
+/* ===== 仓储转运单 ===== */
+.client-shell .storage-transfer-filter-grid,
+.client-shell .storage-transfer-form-grid,
+.client-shell .storage-transfer-summary-grid {
+ display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px 20px; }
+.client-shell .storage-transfer-filter-item,
+.client-shell .storage-transfer-field {
+ display: flex; flex-direction: column; gap: 7px; min-width: 0; }
+.client-shell .storage-transfer-filter-label,
+.client-shell .storage-transfer-field-label {
+ color: #475569; font-size: 12px; font-weight: 600; }
+.client-shell .storage-transfer-input,
+.client-shell .storage-transfer-select,
+.client-shell .storage-transfer-textarea {
+ width: 100%; border: 1px solid #dbe3ef; border-radius: 8px; background: #fff;
+ color: #1e293b; font-size: 13px; outline: none; transition: border-color .2s, box-shadow .2s; }
+.client-shell .storage-transfer-input,
+.client-shell .storage-transfer-select {
+ height: 38px; padding: 0 11px; }
+.client-shell .storage-transfer-textarea {
+ min-height: 84px; padding: 10px 11px; resize: vertical; }
+.client-shell .storage-transfer-input:focus,
+.client-shell .storage-transfer-select:focus,
+.client-shell .storage-transfer-textarea:focus {
+ border-color: #667eea; box-shadow: 0 0 0 3px rgba(102,126,234,.1); }
+.client-shell .storage-transfer-span-3 {
+ grid-column: 1 / -1; }
+.client-shell .storage-transfer-filter-actions,
+.client-shell .storage-transfer-form-actions {
+ display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 18px; }
+.client-shell .storage-transfer-section {
+ margin-bottom: 14px; }
+.client-shell .storage-transfer-section-title {
+ color: #1e293b; font-size: 14px; font-weight: 700; margin-bottom: 16px;
+ padding-bottom: 10px; border-bottom: 1px solid #eef2f7; }
+.client-shell .storage-transfer-relabel {
+ display: flex; align-items: flex-start; gap: 10px; padding: 14px 16px;
+ border: 1px solid #dbe3ef; border-radius: 9px; background: #f8fafc; }
+.client-shell .storage-transfer-relabel-copy {
+ color: #64748b; font-size: 12px; line-height: 1.6; }
+.client-shell .storage-transfer-radio-group {
+ display: flex; align-items: center; gap: 18px; }
+.client-shell .storage-transfer-radio-option {
+ display: inline-flex; align-items: center; gap: 7px; color: #334155; font-size: 13px; cursor: pointer; }
+.client-shell .storage-transfer-date-range {
+ display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 7px; }
+.client-shell .storage-transfer-file-name {
+ display: block; max-width: 130px; margin-top: 5px; color: #64748b; font-size: 11px;
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
+.client-shell .storage-transfer-error {
+ min-height: 16px; margin-top: 4px; color: #ff4d4f; font-size: 12px; line-height: 1.35; }
+.client-shell .storage-transfer-input[aria-invalid="true"],
+.client-shell .storage-transfer-select[aria-invalid="true"],
+.client-shell .storage-transfer-cargo-input[aria-invalid="true"] {
+ border-color: #ff4d4f; }
+.client-shell .storage-transfer-cargo-input {
+ width: 100%; min-width: 108px; height: 34px; padding: 0 9px; border: 1px solid #d9d9d9;
+ border-radius: 6px; color: #1e293b; font-size: 12px; outline: none; }
+.client-shell .storage-transfer-cargo-input:focus {
+ border-color: #667eea; box-shadow: 0 0 0 3px rgba(102,126,234,.1); }
+.client-shell .storage-transfer-cargo-error {
+ min-height: 15px; margin-top: 3px; color: #ff4d4f; font-size: 11px; }
+.client-shell .storage-transfer-file-control {
+ display: inline-flex; align-items: center; min-height: 32px; color: #1677ff; cursor: pointer; }
+.client-shell .storage-transfer-file-control input { position: absolute; width: 1px; height: 1px; opacity: 0; }
+.client-shell .storage-transfer-cargo-table { min-width: 920px; }
+.client-shell .storage-transfer-list-card .table-wrap-simple { overflow-x: auto; }
+.client-shell .storage-transfer-list-card .data-table { min-width: 1500px; }
+.client-shell .storage-transfer-submit[disabled] { cursor: not-allowed; opacity: .65; }
+.client-shell .storage-transfer-summary-item {
+ padding: 14px 16px; border: 1px solid #e8edf5; border-radius: 8px; background: #f8fafc; }
+.client-shell .storage-transfer-summary-label {
+ color: #64748b; font-size: 12px; margin-bottom: 5px; }
+.client-shell .storage-transfer-summary-value {
+ color: #1e293b; font-size: 13px; font-weight: 600; }
+.client-shell .storage-transfer-relation-grid {
+ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
+.client-shell .storage-transfer-relation-item {
+ padding: 14px 16px; border: 1px solid #dbeafe; border-radius: 8px; background: #eff6ff; }
+.client-shell .storage-transfer-pagination {
+ display: flex; align-items: center; justify-content: space-between; min-height: 56px;
+ padding: 10px 16px; border-top: 1px solid #f0f0f0; }
+@media (max-width: 760px) {
+ .client-shell .storage-transfer-filter-grid,
+ .client-shell .storage-transfer-form-grid,
+ .client-shell .storage-transfer-summary-grid,
+ .client-shell .storage-transfer-relation-grid {
+ grid-template-columns: minmax(0, 1fr); }
+ .client-shell .storage-transfer-span-3 {
+ grid-column: auto; }
+ .client-shell .storage-transfer-filter-actions,
+ .client-shell .storage-transfer-form-actions {
+ flex-wrap: wrap; }
+}
+.client-shell .return-relabel-filter-grid,.client-shell .return-relabel-form-grid,.client-shell .return-relabel-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 20px}.client-shell .return-relabel-filter-grid label,.client-shell .return-relabel-form-grid label{display:block;color:#475569;font-size:12px;font-weight:600;margin-bottom:7px}.client-shell .return-relabel-input,.client-shell .return-relabel-select,.client-shell .return-relabel-textarea{width:100%;height:38px;padding:0 11px;border:1px solid #dbe3ef;border-radius:8px;background:#fff;color:#1e293b;font-size:13px;outline:none}.client-shell .return-relabel-textarea{height:84px;padding:10px;resize:vertical}.client-shell .return-relabel-filter-actions,.client-shell .return-relabel-form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.client-shell .return-relabel-table{min-width:1500px}.client-shell .return-relabel-list-card .table-wrap-simple,.client-shell .return-relabel-table-wrap{overflow-x:auto}.client-shell .return-relabel-pagination{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-top:1px solid #f0f0f0}.client-shell .return-relabel-section{margin-bottom:14px}.client-shell .return-relabel-section-title{font-weight:700;color:#1e293b;font-size:14px;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid #eef2f7}.client-shell .return-relabel-case-grid{display:flex;flex-wrap:wrap;gap:14px;margin:14px 0;color:#475569;font-size:12px}.client-shell .return-relabel-file-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.client-shell .return-relabel-relation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.client-shell .return-relabel-relation-grid>div{padding:14px;border:1px solid #dbeafe;background:#eff6ff;border-radius:8px}.client-shell .return-relabel-relation-grid label{display:block;color:#64748b;font-size:12px;margin-bottom:5px}.client-shell .return-relabel-error{min-height:18px;color:#ff4d4f;font-size:12px;margin-top:10px}.client-shell .return-relabel-span-2{grid-column:span 2}@media(max-width:760px){.client-shell .return-relabel-filter-grid,.client-shell .return-relabel-form-grid,.client-shell .return-relabel-summary-grid,.client-shell .return-relabel-relation-grid,.client-shell .return-relabel-file-grid{grid-template-columns:1fr}.client-shell .return-relabel-span-2{grid-column:auto}.client-shell .return-relabel-filter-actions,.client-shell .return-relabel-form-actions{flex-wrap:wrap;justify-content:flex-start}}
+.client-shell .cargo-disposal-filter-grid,
+.client-shell .cargo-disposal-summary-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px 20px; }
+.client-shell .cargo-disposal-filter-item,
+.client-shell .cargo-disposal-field { display:flex; flex-direction:column; gap:7px; min-width:0; }
+.client-shell .cargo-disposal-label { color:#475569; font-size:12px; font-weight:600; }
+.client-shell .cargo-disposal-input,
+.client-shell .cargo-disposal-select { width:100%; height:38px; padding:0 11px; border:1px solid #dbe3ef; border-radius:8px; background:#fff; color:#1e293b; font-size:13px; outline:none; }
+.client-shell .cargo-disposal-input:focus,.client-shell .cargo-disposal-select:focus { border-color:#1677ff; box-shadow:0 0 0 3px rgba(22,119,255,.1); }
+.client-shell .cargo-disposal-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:18px; }
+.client-shell .cargo-disposal-inbound-card { border:1px solid #dbe3ef; border-radius:10px; background:#fff; margin-bottom:12px; overflow:hidden; }
+.client-shell .cargo-disposal-inbound-card.is-selected { border-color:#1677ff; box-shadow:0 0 0 2px rgba(22,119,255,.08); }
+.client-shell .cargo-disposal-inbound-summary { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px 16px; cursor:pointer; }
+.client-shell .cargo-disposal-inbound-meta { color:#64748b; font-size:12px; margin-top:4px; }
+.client-shell .cargo-disposal-inbound-search { max-width:440px; margin:14px 0 16px; }
+.client-shell .cargo-disposal-inbound-search .cargo-disposal-label { display:block; margin-bottom:7px; }
+.client-shell .cargo-disposal-inbound-body { display:none; padding:0 16px 16px; border-top:1px solid #eef2f7; }
+.client-shell .cargo-disposal-inbound-card.expanded .cargo-disposal-inbound-body { display:block; }
+.client-shell .cargo-disposal-table { width:100%; min-width:680px; border-collapse:collapse; font-size:12px; }
+.client-shell .cargo-disposal-table th { background:#f8fafc; color:#64748b; padding:10px; text-align:left; }
+.client-shell .cargo-disposal-table td { padding:10px; border-top:1px solid #f0f0f0; }
+.client-shell .cargo-disposal-table-wrap { overflow-x:auto; margin-top:14px; }
+.client-shell .cargo-disposal-quantity { width:92px; height:34px; padding:0 8px; border:1px solid #d9d9d9; border-radius:6px; }
+.client-shell .cargo-disposal-fee-bar { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:14px 16px; margin-top:14px; border-radius:8px; background:#e7f4f1; color:#225b56; }
+.client-shell .cargo-disposal-fee-amount { color:#087d73; font-size:18px; font-weight:700; }
+.client-shell .cargo-disposal-relation-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
+.client-shell .cargo-disposal-relation-item { padding:14px 16px; border:1px solid #dbeafe; border-radius:8px; background:#eff6ff; }
+@media (max-width:760px) { .client-shell .cargo-disposal-filter-grid,.client-shell .cargo-disposal-summary-grid,.client-shell .cargo-disposal-relation-grid { grid-template-columns:minmax(0,1fr); } .client-shell .cargo-disposal-inbound-summary { align-items:flex-start; } .client-shell .cargo-disposal-actions { flex-wrap:wrap; } }
+
@@ -1175,9 +1362,9 @@
@@ -1189,10 +1376,10 @@