{{ toastMsg }}
🖨 面单打印预览 {{ labelPreviewName }}

📋 货易达内部工作台

🕐 最近同步: {{ syncInfo.run_at?.slice(0,19) }} · 范围 {{ syncInfo.start_time }} ~ {{ syncInfo.end_time }} · {{ syncInfo.total_count }} 单 · {{ syncInfo.inserted }} 新增
⏳ 首次数据同步中,请稍候...
📦 纸箱规格(已作为新产品加入商品库)
纸箱规格来自「仓库运营 › 📐 箱型」字典。每种纸箱作为一条新产品独立存在商品库(品类=纸箱), 规格、单价、每箱件数都是纸箱自己的属性,不再与具体商品做关联。
{{ catBoxSyncMsg }}
规格备注名纸箱价(€/箱)每箱件数作为商品
{{ b.label }} {{ b.name || '—' }} €{{ fmtNum(b.box_price_eur, 2) }} {{ b.qty_per_box > 1 ? b.qty_per_box + ' 件' : '1 件' }} BOX-{{ b.label.replace(/[^0-9A-Za-z]/g,'X').replace(/^X+|X+$/g,'').toUpperCase() }}
按 Enter 也可搜索
📜 历史批次
加载中...
批次号 运单状态 航班号 订单数 认证率 总运费(€) 关税(€) 毛利润(€) 操作
🔒{{ b.batch_no }} {{ waybillStateLabel(b.waybill_state) }} {{ b.flight_no || '—' }} {{ b.total_orders || b.total || 0 }} {{ b.verification_rate || 0 }}% {{ b.fee_order_count > 0 ? (b.fee_total/100).toFixed(2) : '—' }} {{ b.fee_order_count > 0 ? (b.fee_customs_total/100).toFixed(2) : '—' }} {{ (b.profit/100).toFixed(2) }} {{ (b.profit_est/100).toFixed(2) }}估 —
暂无历史批次
共 {{ batchHistoryTotal }} 条
{{ batchHistoryPage + 1 }}
🔒 已封锁批次(共 {{ lockedBatches.length }} 个)
{{ b.batch_no }} {{ b.total_orders }}单
最近批次快捷入口:
🔒{{ b.batch_no }} ({{ b.total }})
📦 批次
🔒{{ batchResult.batch_no }}
总订单
{{ batchResult.total_orders }}
✅ 已认证身份证
{{ batchResult.verified_count }}
{{ batchResult.verification_rate }}%
❌ 未认证
{{ batchResult.unverified_count }}
{{ (100 - batchResult.verification_rate).toFixed(1) }}%
💰 费用统计
{{ (batchResult.fee_total/100).toFixed(2) }} 元
关税 {{ (batchResult.fee_customs_total/100).toFixed(2) }} · 运费 {{ (batchResult.fee_ship_total/100).toFixed(2) }}
毛利润 € {{ (billingData.total_income - billingComputed.totalExpense).toFixed(2) }}
🧾 清关批次工作台
{{ batchResult.unverified_count }}人待查 (已认证 {{ batchResult.verified_count }} 单)
{{ exportFormat }}格式导出 {{ Math.round(exportProgress.current / exportProgress.total * 100) }}% {{ exportProgress.current }}/{{ exportProgress.total }} ...
{{ exportProgress.msg }}

👤 按寄件人统计

寄件人总单已认证缺资料认证率
{{ item.name }} {{ item.total }} {{ item.verified }} {{ item.unverified }} {{ item.rate }}%
第 {{ batchSenderPage+1 }} / {{ batchSenderTotalPages }} 页,共 {{ (batchSenderNames||[]).length }} 位寄件人

📋 订单明细

{{ c.label }}
第 {{ batchOrderPage+1 }} / {{ batchOrderTotalPages }} 页,共 {{ (filteredBatchOrders||[]).length }} 条
❌ {{ batchError }}
共 {{ totalOrders }} 条 搜索: "{{ searchQuery }}"
☑️ 已选 {{ selectedIds.size }} 条
{{ c.label }}
第 {{ currentPage + 1 }} / {{ totalPages }} 页
{{ searchQuery ? '🔍' : '📦' }}
{{ searchQuery ? `未找到包含 "${searchQuery}" 的订单` : '暂无订单数据' }}
{{ searchQuery ? '试试其他关键词,或清除搜索条件' : '请先同步数据' }}
❌ 未认证身份证
{{ stats.truly_missing_count ?? stats.unverified_count ?? 0 }}
(近60天活跃: {{ stats.truly_missing_count ?? 0 }}人 / 全部: {{ stats.unverified_count ?? 0 }}人)
共 {{ verifiedOrdersTotal }} {{ showVerified ? '条' : '人' }}
{{ c.label }}
{{ showVerified ? '暂无已认证记录' : '✅ 全部已认证,无需补资料' }}
{{ c.label }}
🏭 仓库日常管理 📱 手机扫码(发货/入库) 加载中… {{ whError }}
👥 今日上班
{{ whData.shift.staff_count }} 人上班 合计 {{ whData.shift.total_hours }} 小时 人均 {{ whData.shift.avg_hours }} 小时
→
姓名上班下班工时备注
暂无考勤记录,请在上方添加。
📦 今日打包量与成本
总打包 {{ packData.kpi.total_pkgs }} 件 人工成本 €{{ fmtMoney(packData.kpi.labor_eur) }} ({{ packData.kpi.labor_hours }}h × €{{ packData.kpi.labor_rate_eur_per_hour }}) 纸箱费 €{{ fmtMoney(packData.kpi.box_eur) }} {{ packData.kpi.box_type_count }} 款纸箱 / {{ packData.kpi.staff_count }} 人 件数 vs 昨日 {{ packData.kpi.vs_yesterday.pkgs_pct >= 0 ? '+' : '' }}{{ packData.kpi.vs_yesterday.pkgs_pct }}%
📐 纸箱型号 × 品类(行=用了哪款纸箱,列=打了多少)
纸箱型号菲莱PM奶粉杂货合计件纸箱费(€)
{{ m.box_type }} {{ m.PM || '—' }} {{ m.奶粉 || '—' }} {{ m.杂货 || '—' }} {{ m.pkgs }} {{ fmtMoney(m.box_eur) }}
今日暂无打包记录,请在上方录入。
🧾 品类汇总
品类件数占比纸箱费(€)
{{ c.category === 'PM' ? '菲莱PM' : c.category }} {{ c.pkgs }}{{ c.share }}% {{ fmtMoney(c.box_eur) }}
👷 打包人效率
打包人菲莱PM奶粉杂货合计占比人工成本(€)
{{ s.staff }} {{ s.PM || '—' }}{{ s.奶粉 || '—' }}{{ s.杂货 || '—' }} {{ s.pkgs }}{{ s.share }}% {{ s.labor_eur ? '€' + fmtMoney(s.labor_eur) + ' (' + s.labor_hours + 'h)' : (s.manual_cny ? '€' + fmtMoney(s.manual_eur) : '—') }}
暂无数据
📋 明细记录
打包人纸箱品类客户件数纸箱费人工产出比来源
{{ r.staff }}{{ r.box_type }} {{ r.category === 'PM' ? '菲莱PM' : r.category }} {{ r.customer || '—' }} {{ r.pkg_count }} {{ fmtMoney(r.box_eur) }} {{ r.labor_ratio != null ? r.labor_ratio + ' 件/€' : '—' }} {{ r.source === 'manual' ? '人工值' : '公式值' }}
加载中…
📐 纸箱型号管理
暂无预置规格,请自行添加。纸箱价格按「每个包裹一个纸箱」计入成本(单价 × 件数)。
规格备注名纸箱价格(€/箱)
{{ b.label }}{{ b.name || '—' }} €{{ fmtNum(b.box_price_eur, 2) }}
📊 今日托盘
封托盘 {{ whData.pallet.sealed_pallets || 0 }} 个 扫描入库 {{ whData.scanned_pkgs || 0 }} 包裹 发走 {{ whData.pallet.shipped_pallets || 0 }} 托 / {{ fmtNum(whData.pallet.shipped_weight_kg) }} kg +人工 {{ (whData.pallet.manual_received_pallets || 0) + (whData.pallet.manual_shipped_pallets || 0) }} 托(不计入统计) 🛒 采购入库 {{ whPurchaseData.total_qty || 0 }} 件 / {{ fmtNum(whPurchaseData.total_weight_kg) }} kg / {{ whPurchaseData.pallet_count || 0 }} 托
🛒 采购入库挂托盘明细
{{ pn }}
收到 · {{ k }}
{{ v.pallets }} 托
{{ fmtNum(v.weight_kg) }} kg
今日暂无收到托盘记录。
托盘号品类重量(kg)方向备注
🔒 今日封托盘(过账运单)
批次包裹过账时间
{{ w.batch_no }}{{ w.orders }} {{ (w.post_time||'').replace('T',' ').slice(0,16) }}
✈️ 今日发走托盘
托盘号批次重量
{{ p.pallet_no }}{{ p.batch_no }} {{ fmtNum(p.weight_kg) }} kg
今日暂无发走托盘记录(托盘台账按航班日)。
🛒 商品采购入库
{{ whPurchaseData.lines || 0 }} 行 {{ whPurchaseData.total_qty || 0 }} 件 · {{ fmtNum(whPurchaseData.total_weight_kg) }} kg €{{ fmtNum(whPurchaseData.total_eur) }} {{ whPurchaseData.pallet_count || 0 }} 托盘 ✅ 已审核 {{ whPurchaseData.approved_lines || 0 }} ⏳ 待审核 {{ whPurchaseData.pending_lines }} ⚠️ 到货后需在「📊 库存管理」按账号登记库存基数
{{ whPurchaseError }}
{{ whPurchaseMatched }}
供应商SKU名称品类数量单价(€)金额(€)重量(kg)托盘账号备注审核
今日暂无采购入库记录。上游无采购接口,需人工录入。
📦 按品类
品类行数量重量金额(€)
{{ c.category }}{{ c.lines }}{{ fmtNum(c.qty) }} {{ fmtNum(c.weight_kg) }} kg{{ fmtNum(c.amount_eur) }}
🏢 按供应商
供应商行数量重量金额(€)
{{ s.supplier }}{{ s.lines }}{{ fmtNum(s.qty) }} {{ fmtNum(s.weight_kg) }} kg{{ fmtNum(s.amount_eur) }}
📦 累计结存(全部采购入库累计) {{ whPurchaseStock.total_skus }} 个SKU {{ fmtNum(whPurchaseStock.total_qty) }} 件 · {{ fmtNum(whPurchaseStock.total_weight_kg) }} kg €{{ fmtNum(whPurchaseStock.total_eur) }}
SKU名称品类在库数量在库重量在库金额(€)入库次数最后到货
{{ s.sku }} {{ s.name_cn }} {{ s.category }} {{ fmtNum(s.qty) }} {{ s.unit }} {{ fmtNum(s.w) }} kg {{ fmtNum(s.amount_eur) }} {{ s.lines }} {{ s.last_date }}
暂无累计入库数据。
🚚 今日卡车取货 📤 今日出库 {{ (whData.outbound && whData.outbound.pkgs) || 0 }} 包裹 · {{ fmtMoney((whData.outbound && whData.outbound.weight_kg) || 0) }} kg {{ whData.truck.merchant_count || 0 }} 家商家 · {{ whData.truck.total_pkgs || 0 }} 包裹 +人工 {{ whData.truck.manual_merchant_count || 0 }} 家 / {{ whData.truck.manual_count || 0 }} 件(不计入统计)
📦 今日出库构成: {{ b.category }} {{ b.pkgs }} 件 / {{ fmtMoney(b.weight_kg) }} kg
📌 口径说明 :今日出库 {{ whData.outbound.pkgs || 0 }} 件(含前几天入库的库存)· 下方商家表 = 今日入库 {{ (whData.truck.auto_count) || 0 }} 件(今天扫描入库,按货易达账号分组) · 差额 {{ (whData.outbound.pkgs || 0) - (whData.truck.auto_count || 0) }} 件为前几天入库、今天才出库
商家今日数量系统统计来源
今日暂无卡车取货记录。
🖨 打单发货 数据来自本地订单库(等同「订单列表」)· 点击「🔄 同步更新」只拉最新订单 ⏳ 扣库存中… {{ stockDeductMsg }} 查询中… ⏳ 同步最新订单中…{{ printSyncMsg }} 🖨 正在生成面单 PDF… ❌ {{ printError }} ⚠️ {{ printWarn }}
▼
全部线路
{{ ln.name }}
没有匹配的线路
▼
全部账号
{{ printMemberPicked.includes(m) ? '☑' : '☐' }}{{ m }}
没有匹配的账号
→
共 {{ printMeta.total }} 单 · 本地查询耗时 {{ printMeta.elapsed }}s (命中订单 {{ printMeta.upstream_total }} 单,本地商品筛选后 {{ printMeta.total }} 单) · 关键词「{{ printKeyword }}」命中 {{ printRowsAll.length }} 单 (未打印快递单 = 快递单号已生成但面单还没下载)
已选 {{ printPicked.length }} 单 第 {{ printPage }} / {{ printTotalPages }} 页 · 共 {{ printIncoming.length }} 单 (勾选跨页保留,导出/复制只针对所选订单)
打印 状态
{{ r.label_downloaded ? '已打印' : '未打印' }} {{ printShipTag(r) }}
{{ printKeyword ? '没有匹配「' + printKeyword + '」的订单。' : '没有符合条件的订单。' }}
{{ printGroupOpen[g.key] ? '▼' : '▶' }} {{ g.icon }} {{ g.label }} {{ g.count }} 单 {{ g.hint }}
状态
{{ printShipTag(r) }}
{{ g.label }} 第 {{ printGroupPage[g.key] }} / {{ printGroupTotalPages(g) }} 页 · 共 {{ g.count }} 单
总数 {{ catData.stats.total }} 奶粉 {{ catData.stats.milk_cnt }} 人工新增 {{ catData.stats.manual_cnt }} 人工修改 {{ catData.stats.edited_cnt }} 📦 纸箱 {{ catBoxStats.specs }} 种
{{ catError }}
{{ c.label }}
没有匹配的商品
{{ catOffset+1 }} - {{ Math.min(catOffset+50, catData.total) }} / {{ catData.total }}
📜 按历史发货记录同步商品库
账号:{{ (catHistAccounts||[]).join(' / ') }}
收录 {{ catHistPreview.scope_total }} SKU 发货商品 {{ catHistPreview.shipped_skus }} 耗材 {{ catHistPreview.consumable_skus }} 新增补录 {{ (catHistPreview.added||[]).length }} 移出范围 {{ catHistPreview.deleted_count }}
➕ 新增补录(历史发货但商品库没有)
{{ s }}
➖ 移出收录范围(其他账号在卖)
{{ s }}
⚠️ 移出的商品行在库内保留(不影响其它账号的库存扣减),仅从商品数据库列表移除。
按货易达账号拆分库存(MSCJ / tingna520 / junjie0803 / daniel) ⚠️ {{ invUnassigned }} 条未填基数
{{ a.account }}
库存基数 {{ a.stock }}
订单出库 {{ a.out }}
可用库存 {{ a.available }}
SKU {{ a.sku_count }} 个 · 出库 SKU {{ a.out_sku_count }} 个
涉及账号 {{ invSummary.allocated ? invSummary.allocated.accounts : 0 }} 个 出库台账 {{ invSummary.ledger ? invSummary.ledger.rows : 0 }} 条 / {{ invSummary.ledger ? invSummary.ledger.qty : 0 }}
⚠️ 还没有给任何账号登记库存基数 —— 请直接在下方表格里点库存基数数字填入各账号的实际存货 (红底行 = 有订单出库但还没填基数)。
{{ invError }}
{{ invMsg }}
📦 库存操作
调拨: →
{{ c.label }}
暂无数据,请点上方「✏️ 设置基数」登记各账号库存
第 {{ invPage }} / {{ invPages }} 页 · 共 {{ invTotal }} 条
共 {{ auditData.total }} 条写操作记录 (删除操作带 ⚠️ 并附删除前快照,可直接还原)
加载中…
暂无写操作记录
时间 操作者 来源 级别 动作 详情 操作
{{ a.ts.replace('T',' ') }} {{ a.actor }} {{ a.source==='local' ? '本机' : '外网' }} {{ a.level }} {{ a.action }} {{ (a.detail||'').slice(0,300) }}
加载数据中...

📋 订单详情

系统订单号
{{ detailOrder.sn }}
创建时间
{{ detailOrder.creation_time }}
收件人
{{ detailOrder.consignee_name }}
身份证号
{{ detailOrder.consignee_id_number || '—' }}
国际运单号
{{ detailOrder.global_waybill || '—' }}
国内单号
{{ detailOrder.domestic_no || '—' }}
国内快递
{{ detailOrder.domestic_type || '—' }}
线路
{{ detailOrder.line_name }}
状态
{{ detailOrder.state_name }}
寄件人
{{ detailOrder.sender_name }}
平台单号
{{ detailOrder.platform_sn || '—' }}
批次号
{{ detailOrder.batch_no || '—' }}
重量
{{ detailOrder.weight ? (detailOrder.weight/1000).toFixed(2) + ' kg' : '—' }}
清关文件
{{ detailOrder.id_verified ? '已上传' : '缺' }}
🪪 身份证合并图

💰 批次计费 — {{ billingData.batch_no }}

🚢 航账 {{ billingData.hz_code }}
航班号
{{ batchResult.flt_no || '-' }}
订单数
{{ batchResult.total_orders }}
包裹总收入
€ {{ (batchResult.fee_total/100).toFixed(2) }}
总支出
€ {{ billingComputed.totalExpense.toFixed(2) }}
毛利润
€ {{ billingComputed.grossProfit.toFixed(2) }}
汇率 CNY/EUR
{{ billingComputed.exchangeRate }}
收入口径 = 订单实收({{ batchResult.total_orders }} 单实收合计);支出口径 = 下表「成本明细」逐项合计
📋 成本明细(逐项唯一口径)
🟣航账 🟢公式 ⚪人工 🔵订单实算
💵 包裹总收入
订单实收合计 € {{ (batchResult.fee_total/100).toFixed(2) }}
€ {{ parseFloat(billingData.total_income||0).toFixed(2) }}
🔵订单实算
🚚 德国提货费
€ {{ parseFloat(billingData.germany_pickup_fee||0).toFixed(2) }}
⚪人工
🔍 机检费
€ {{ parseFloat(billingData.security_check_fee||0).toFixed(2) }}
⚪人工
📄 报关费
€ {{ parseFloat(billingData.customs_declare_fee||0).toFixed(2) }}
⚪人工
🌍 欧洲杂费
€ {{ parseFloat(billingData.europe_extra_fee||0).toFixed(2) }}
⚪人工
✈️ 实际空运费
€ {{ parseFloat(billingData.actual_air_freight||0).toFixed(2) }}
⚪人工
🏛️ 清关费
折合 € {{ billingComputed.customsFeeEUR.toFixed(2) }}
¥ {{ parseFloat(billingData.customs_fee_cny||0).toFixed(2) }}
🟣航账 🟢¥{{ billingData.calc_clearance_cny }}
🧾 税费/关税(我方成本)
折合 € {{ billingComputed.dutyEUR.toFixed(2) }} · 仅航账批次级值
¥ {{ parseFloat(billingData.duty_total_cny||0).toFixed(2) }}
🟣航账 🟢¥{{ billingData.calc_duty_cny }}
🚚 国内派送费
折合 € {{ billingComputed.domesticEUR.toFixed(2) }}
¥ {{ parseFloat(billingData.domestic_cost_cny||0).toFixed(2) }}
🟣航账 🟢¥{{ billingData.calc_domestic_cny }}
⚖️ 申报计费重量
{{ parseFloat(billingData.declared_weight||0).toFixed(2) }} kg
🟣航账
💱 汇率 CNY/EUR
{{ billingComputed.exchangeRate }}
⚪人工
📦 批次计费总重量
{{ parseFloat(billingData.total_weight||0).toFixed(2) }} kg
🟢自动
订单实重汇总
🔵 菲莱计费重量
{{ parseFloat(billingData.feilai_weight||0).toFixed(2) }} kg
🟢自动
PM 专线
🍼 奶粉计费重量
{{ parseFloat(billingData.milk_powder_weight||0).toFixed(2) }} kg
🟢自动
奶粉专线
📦 杂货计费重量
{{ parseFloat(billingData.groceries_weight||0).toFixed(2) }} kg
🟢自动
杂货专线
📊 品类占比 · 交税包裹占比 · 关税费 (重量来自8895订单实重;交税包裹/关税费来自8900批次税费源,{{ (billingData.ratios && billingData.ratios.tax_rule) || '关税费=申报价×数量×13%,运单合计≥50元全额计税,<50元免缴' }})
品类
重量占比
交税包裹占比
关税费
关税占比
{{ c.label }} {{ c.weight_kg }} kg / {{ c.parcels }} 包裹
{{ (c.weight_ratio * 100).toFixed(1) }}%
{{ c.taxable_parcels }} / {{ c.parcels }} ({{ (c.taxable_ratio * 100).toFixed(1) }}%)
¥ {{ fmtMoney(c.tax_cny) }}
{{ (c.tax_ratio * 100).toFixed(1) }}%
合计 / 全部
100%
{{ billingData.ratios.total_taxable_parcels }} / {{ billingData.ratios.total_parcels }} ({{ (billingData.ratios.total_taxable_ratio * 100).toFixed(1) }}% · 免税 {{ billingData.ratios.total_exempt_parcels || 0 }})
¥ {{ fmtMoney(billingData.ratios.total_tax_cny) }}
100%
⚠️ 该批次在 8900 清关批次工作台暂无税费数据,无法统计交税包裹占比与关税费。
总支出
€ {{ billingComputed.totalExpense.toFixed(2) }}
CNY 项按汇率 {{ billingComputed.exchangeRate }} 折算
清关¥{{ parseFloat(billingData.customs_fee_cny||0).toFixed(2) }} · 税费¥{{ parseFloat(billingData.duty_total_cny||0).toFixed(2) }} · 派送¥{{ parseFloat(billingData.domestic_cost_cny||0).toFixed(2) }}
🧮 公式明细与对照数据(点击展开)
🟢 公式重算(8895 订单实际重量口径)
🚚 顺丰派送费
¥ {{ billingData.cost_calc.sf_cny||0 }} {{ billingData.cost_calc.sf_orders||0 }}单
📦 京东派送费
¥ {{ billingData.cost_calc.jd_cny||0 }} {{ billingData.cost_calc.jd_orders||0 }}单
国内派送费合计
¥ {{ billingData.cost_calc.domestic_cny||0 }}
🏛️ 清关费(重算)
¥ {{ billingData.cost_calc.clearance_cny||0 }}
🧮 {{ billingData.cost_calc.formula }}
重量:PM {{ billingData.cost_calc.pm_weight||0 }}kg · 奶粉 {{ billingData.cost_calc.milk_weight||0 }}kg · 杂货 {{ billingData.cost_calc.grocery_weight||0 }}kg · 合计 {{ billingData.cost_calc.total_weight||0 }}kg (缺重 {{ billingData.cost_calc.missing_weight }} 单) (缺省份 {{ billingData.cost_calc.missing_province }} 单)
ℹ️ 与🟣航账差异属正常:航账用「批次申报手工重量」,公式用「订单实际重量」。
🔵 订单实算(收入构成侧)
包裹总收入
€ {{ (batchResult.fee_total/100).toFixed(2) }}
国际运费合计
€ {{ (batchResult.fee_ship_total/100).toFixed(2) }}
客户侧关税合计
€ {{ (batchResult.fee_customs_total/100).toFixed(2) }} {{ batchResult.fee_customs_count }}单
订单数
{{ batchResult.total_orders }}
⚠️ 客户侧关税(€)与「🧾税费/关税(我方成本 ¥)」是两个不同科目,不重复计入支出。
⚙️ 计费重量来源:🟢 系统自动计算 —— 按批次内订单实重汇总, 品类按专线判定(PM / 奶粉 / 杂货)。{{ billingData.computed_weights.total_orders }} 单参与统计 ,缺重 {{ billingData.computed_weights.missing_weight }} 单未计入。
⚪ 申报计费重量为🟣航账批次申报口径,两者可能不同。
✈️ 起飞时间
🟢 已自动填充 (来源:快递鸟「航班起飞」轨迹) (来源:轨迹系统「航班起飞」状态时间) (来源:快递鸟抵达起飞机场时间) (来源:航账同步) (人工填写) 无轨迹数据时需人工填写
✅ 清关完成日期
🟢 已自动填充 (运单状态=已到达/已清关 · 来源:快递鸟清关轨迹) (运单状态=已到达/已清关 · 来源:轨迹系统状态时间) (来源:航账同步) (人工填写) 运单状态为「已到达/已清关」时按轨迹自动填充
📝 备注