function batchDelete() { if (!hasPerm('deleteShip')) { showToast('无删除权限', 'err'); return; } const ids = Array.from(document.querySelectorAll('.row-check:checked')).map(cb => cb.value); if (!ids.length) { showToast('请先勾选要删除的货件', 'warn'); return; } if (!confirm(`确认删除选中的 ${ids.length} 条货件?此操作不可撤销。`)) return; if (window.api) { api.batchDelete(ids).then(() => { shipments = shipments.filter(s => !ids.includes(s.id)); ids.forEach(id => delete riskResults[id]); recalcAll(false); renderList(); renderStats(); showToast(`✓ 已删除 ${ids.length} 条货件`); }).catch(err => showToast('删除失败:' + err.message, 'err')); return; } // 本地模式 shipments = shipments.filter(s => !ids.includes(s.id)); ids.forEach(id => delete riskResults[id]); saveShipments(); recalcAll(false); renderList(); renderStats(); showToast(`✓ 已删除 ${ids.length} 条货件`); } function initAuth() { // ── API 模式:检查 JWT token ──────────────────────────────────────────── if (window.api && window.isApiLoggedIn && window.isApiLoggedIn()) { api.getMe().then(user => { currentUser = user; document.getElementById('login-screen').style.display = 'none'; document.getElementById('header-username').textContent = user.displayName || user.username; applyPermissions(); _loadAllFromAPI(); }).catch(() => { // Token 失效,显示登录界面 window.apiClearToken && window.apiClearToken(); document.getElementById('login-screen').style.display = 'flex'; }); return; } // ── 本地模式兜底 ────────────────────────────────────────────────────── if (!users || users.length === 0) { const setupModal = document.getElementById('modal-first-run'); if (setupModal) setupModal.style.display = 'flex'; document.getElementById('login-screen').style.display = 'none'; return; } document.getElementById('login-screen').style.display = 'flex'; const sess = sessionStorage.getItem('fsp_session'); if (sess) { try { const s = JSON.parse(sess); const u = users.find(x => x.id === s.id && x.username === s.username && x.active); if (u) { currentUser = u; document.getElementById('login-screen').style.display = 'none'; document.getElementById('header-username').textContent = u.displayName || u.username; applyPermissions(); return; } } catch(e) {} } } // ── 从 API 加载所有核心数据 ──────────────────────────────────────────────── async function _loadAllFromAPI() { if (!window.api) return; try { showToast('正在从服务器加载数据...', 'info'); const [ apiShipments, apiChannels, apiCustomersList, apiSuppliersList, apiCarriersList, apiAR, apiAP, apiLeads, apiContracts, apiForex ] = await Promise.all([ api.getShipments().catch(()=>[]), api.getChannels().catch(()=>[]), api.getCustomers().catch(()=>[]), api.getSuppliers().catch(()=>[]), api.getCarriers().catch(()=>[]), api.getAR().catch(()=>[]), api.getAP().catch(()=>[]), api.getLeads().catch(()=>[]), api.getContracts().catch(()=>[]), api.getForex().catch(()=>[]), ]); shipments = apiShipments; channels = apiChannels.length ? apiChannels : channels; customers = apiCustomersList.length ? apiCustomersList : customers; receivables = apiAR; payables = apiAP; crmLeads = apiLeads; crmContracts = apiContracts; if (apiForex.length) { apiForex.forEach(f => { forexRates[f.base] = f.rate; }); } recalcAll(false); renderTableHeader(); setFilter('all'); showToast('✅ 数据加载完成,共 ' + shipments.length + ' 票货件'); } catch(e) { console.error('API load error:', e); showToast('数据加载部分失败,使用本地缓存', 'warn'); } } FreightScan Pro v1.0 · 货运管理及智能预警系统
自动扫描
5:00
-
📊 统计栏已隐藏
📦 全部
0
✅ 安全
0
⚠️ 低风险
0
🔶 中风险
0
🚨 高风险
0
✅ 已签收
0
🚚 未签收
0
~
已选 0 条
⚠️ 风险因子管理
录入 8 类风险因子 → 自动关联货件 → 系统重算延误天数与风险评分
🧠 智能文本解析 · 自动识别 8 类风险因子
支持自然语言输入,自动识别提单号 + 风险类型 + 延误天数,每行一条,多条一次提交:
UKSZ001 FBA15ABCDE(多行单号)
以上单号出口查验 · 提单OOLU888 进口查验5天 · 提单COSU567 航司延误3天 原因:台风 · 提单EMS001 班次顺延4天
🛃
起运地海关查验
出口海关检验 / 商检 / 报关延误
0条
暂无数据
点击「录入」或使用上方智能解析
🔍
目的地海关查验
进口清关 / X光检查 / 查验延误
0条
暂无数据
点击「录入」或使用上方智能解析
🗓️
班次顺延
满舱 / 舱位取消 / 班期顺延
0条
暂无数据
点击「录入」或使用上方智能解析
✈️
航司延误
航班取消 / 天气 / 机械故障延误
0条
暂无数据
点击「录入」或使用上方智能解析
🚢
船司延误
船期延误 / 港口拥堵 / 绕航
0条
暂无数据
点击「录入」或使用上方智能解析
🎌
节假日
法定假日 / 春节 / 圣诞停运
0条
暂无数据
点击「录入」或使用上方智能解析
突发事件
罢工 / 地缘冲突 / 自然灾害
0条
暂无数据
点击「录入」或使用上方智能解析
🚚
目的地派送渠道延误
末端派送 / 本地快递拥堵
0条
暂无数据
点击「录入」或使用上方智能解析
🗄️ 数据管理中心
大数据分析 · 渠道管理 · 事件库 · 拥堵指数
数据源:港口管理局 · 海关署 · 航司官网 · 气象局 · 新闻API · 节假日数据库 模拟数据 · 实际部署可接入真实API
💰 财务管理中心
应收管理 · 应付管理 · 对账汇总 · 发票台账
📥 应收账款 Top 逾期 应收
📤 应付账款 待支付 应付
📊 本月收支趋势
🏭 供应商应付分布
🤝 销售CRM
潜在客户跟进 · 客户合同 · 运价确认入口
公司名称联系人电话/微信货运需求跟进阶段预计月票最近跟进下次跟进备注操作