正在加载福源跨境货品管理平台...

{{ adminMode ? adminTitle : pageTitle }}

前台页面 管理端页面
退出登录
{{ t.label }} ×
刷新 中国人民银行中间价 ECB参考汇率(备用) 公布时间: {{ erLatestRates.publish_time || erLatestRates.date }} | 同步于 {{ erLatestSyncedAt }}
{{ r.base }}/{{ r.code }}
{{ r.name }}
{{ r.rate.toFixed(4) }}
{{ r.change===0 ? '持平' : (r.change>0?'▲ +':'▼ ')+r.change.toFixed(6)+' ('+r.change_pct+'%)' }}
无匹配货币
加载中...
→ 7天 30天 90天 180天 1年 查询
中国人民银行中间价 ECB参考汇率(备用) 央行中间价历史由平台逐交易日自动累积
{{ erActivePoint.date }} 1{{ erHistFrom }} = {{ erActivePoint.rate.toFixed(4) }} {{ erHistTo }}
点击图中数据点可查看对应日期的汇率值
请点击查询加载数据
最高
{{ erHistStats.high }}
最低
{{ erHistStats.low }}
均值
{{ erHistStats.avg }}
区间变动
{{ parseFloat(erHistStats.change)>=0?'+':'' }}{{ erHistStats.change }} ({{ erHistStats.changePct }}%)
⇅
换算
{{ erConvResult.result }} {{ erConvResult.to }}
1 {{ erConvResult.from }} = {{ erConvResult.rate.toFixed(4) }} {{ erConvResult.to }} | 数据日期: {{ erConvResult.date }}
创建汇率预警
添加预警
已设置预警
暂无预警
{{ a.from }}/{{ a.to }} 汇率{{ a.condition==='above'?'高于':'低于' }} {{ a.threshold }} | 创建于 {{ a.createdAt }}
{{ a.status==='monitoring'?'监控中':'已触发' }} 删除
采购订单 入库明细
查询
新建采购单 导出Excel Excel 导入 下载模板
供应商采购分布(点击方块穿透该供应商采购订单)
🏭 {{ sp.supplier_name }}
采购单数
{{ sp.order_count }}
采购数量
{{ sp.total_qty }}
采购金额
¥{{ sp.total_amount }}
点击查看订单 →
查询
全部 按日 按月 按季 按年 查询
新增货品 Excel导入 下载模板 导出Excel
🏭
合作伙伴总数
{{ supplierList.length }}
✅
合作中
{{ supplierList.filter(s=>s.status==='启用').length }}
📦
采购SKU总数
{{ supplierList.reduce((t,s)=>t+(s.sku_count||0),0) }}
查询
新建合作伙伴
🏪
店铺总数
{{ shopOnlyList.length }}
✅
启用中
{{ shopOnlyList.filter(c=>c.status==='启用').length }}
📄
停用中
{{ shopOnlyList.filter(c=>c.status!=='启用').length }}
查询
新建店铺
👥
客户总数
{{ customerOnlyList.length }}
✅
启用中
{{ customerOnlyList.filter(c=>c.status==='启用').length }}
📄
停用中
{{ customerOnlyList.filter(c=>c.status!=='启用').length }}
查询
新建客户
查询
新建销售单 Excel 导入 导出Excel 下载模板
仓库出库分布(点击方块穿透该仓库销售出库数据)
📦 {{ w.warehouse_name }}
出库单数
{{ w.order_count }}
出库总数
{{ w.total_qty }}
出库金额
¥{{ w.total_amount }}
点击查看出库明细 →
查询
新建调库单
新建调库单为「待审批」状态,审批通过后才执行库存调拨(出货仓库减库存、入货仓库加库存,双向记录库存流水,总量不变)
各角色提交的采购单 / 销售单 / 调库单 / 拆盒转换单 / 货盘调价单均流转至此,超级管理员审批通过后方可进入下一流程(入库 / 出库 / 调拨 / 转换 / 价格生效)
查询
全部 按月 按季 按年 查询
新建初始库存 初始库存导入 下载模板 导出
点击「实时库存」数字可查看库存数据链条(初始库存 + 采购入库 - 销售出库 + 退货入库 - 退货补发 + 拆盒转换等全部流水)
新建拆盒转换
将整盒货品转换为拆盒货品,例如:1盒100粒 → 10版×10粒。转换后源货品(整盒)库存减少,目标货品(拆盒)库存按比例增加,全程记录库存流水。
1 盒 = 版
{{ splitFromName }} ×{{ splitForm.qty||0 }} → {{ splitToName }} ×{{ (splitForm.qty||0)*(splitForm.ratio||0) }}
提交拆盒转换单 提交后需超级管理员审批,审批通过才执行转换
拆盒转换记录
仓库库存分布(点击方块穿透仓库库存明细)
🏪 {{ w.warehouse_name }}
SKU数
{{ w.sku_count }}
总库存
{{ w.total_qty }}
库存价值
¥{{ w.total_value }}
点击查看明细 →
查询
共 {{ revertInList.length }} 张已入库采购单可退回
查询
共 {{ revertOutList.length }} 张已出库销售单可退回
查询
新建仓库
全部 按日 按月 按季 按年 查询
新增货盘 批量导入 下载模板 导出Excel
查询
新增询价货品 Excel导入 下载模板 摩熵医药查询
本页只显示每个品种最新一条询价单(药局价格=每锭单价×锭数,对比价差=采购价格−药局价格);「调价」对已有询价单的采购价格和药局价格调整并生成新询价单,原单据收入历史询价。查询日本药品信息可用工具栏「摩熵医药查询」
查询
新增上品 上品核算
核算口径:佣金/平台扣点费用、分销手续费、支付手续费、海关税费=各自费率×产品当前售价;福源总收益=产品当前售价−物流−海关税费−扣点费用−分销手续费−支付手续费−采购/分销成本−平台处方费用−龙门处方;货盘收益=福源货盘价−采购/分销成本;店铺收益=总收益−货盘收益。本页仅显示每品种在每仓库的最新上品记录,历史记录请点「历史上品」
查询
共 {{ priceHistoryList.length }} 条历史记录
¥{{ quotePharmacyPrice.toLocaleString() }} (每锭单价 × 锭数) ¥{{ quoteDiff.toLocaleString() }} (采购价格 − 药局价格) {{ quoteDetailData.jan_code || '-' }} {{ quoteDetailData.jp_name || '-' }} {{ quoteDetailData.drug_name || '-' }} {{ quoteDetailData.spec || '-' }} {{ quoteDetailData.supplier_name || '-' }} {{ quoteDetailData.quote_date || '-' }} ¥{{ Number(quoteDetailData.purchase_price||0).toLocaleString() }} ¥{{ Number(quoteDetailData.unit_price||0).toLocaleString() }} {{ quoteDetailData.pill_count || 0 }} 锭 ¥{{ Number(quoteDetailData.pharmacy_price||0).toLocaleString() }} ¥{{ Number(quoteDetailData.diff||0).toLocaleString() }} {{ quoteDetailData.source || '-' }} {{ quoteDetailData.created_at }} ¥{{ adjustPharmacyPrice.toLocaleString() }} (每锭单价 × 锭数) ¥{{ adjustDiff.toLocaleString() }} (采购价格 − 药局价格)
查询
共 {{ quoteHistoryList.length }} 条历史询价单
{{ listingDetailData.warehouse_name || '-' }} {{ listingDetailData.platform }} {{ listingDetailData.created_at }} {{ listingDetailData.drug_name }} {{ listingDetailData.spec || '-' }} ¥{{ Number(listingDetailData.cost_price||0).toFixed(2) }} ¥{{ Number(listingDetailData.pan_price||0).toFixed(2) }} ¥{{ Number(listingDetailData.sale_price||0).toFixed(2) }} ¥{{ Number(listingDetailData.logistics_fee||0).toFixed(2) }} ¥{{ Number(listingDetailData.prescription_fee||0).toFixed(2) }} ¥{{ Number(listingDetailData.longmen_fee||0).toFixed(2) }} {{ (Number(listingDetailData.platform_rate||0)*100).toFixed(1) }}% {{ (Number(listingDetailData.commission_rate||0)*100).toFixed(1) }}% / ¥{{ Number(listingDetailData.commission_fee||0).toFixed(2) }} {{ (Number(listingDetailData.payment_rate||0)*100).toFixed(1) }}% / ¥{{ Number(listingDetailData.payment_fee||0).toFixed(2) }} ¥{{ Number(listingDetailData.platform_fee||0).toFixed(2) }} {{ (Number(listingDetailData.customs_rate||0)*100).toFixed(1) }}% ¥{{ Number(listingDetailData.customs_fee||0).toFixed(2) }} ¥{{ Number(listingDetailData.owner_profit||0).toFixed(2) }} ¥{{ Number(listingDetailData.pan_profit||0).toFixed(2) }} ¥{{ Number((menu==='scmlisting' ? listingDetailData.shop_view_profit : listingDetailData.shop_profit)||0).toFixed(2) }} {{ listingDetailData.owner_margin!==null && listingDetailData.owner_margin!==undefined ? (listingDetailData.owner_margin*100).toFixed(2)+'%' : '-' }} {{ listingDetailData.pan_margin!==null && listingDetailData.pan_margin!==undefined ? (listingDetailData.pan_margin*100).toFixed(2)+'%' : '-' }} {{ listingDetailData.shop_margin!==null && listingDetailData.shop_margin!==undefined ? (listingDetailData.shop_margin*100).toFixed(2)+'%' : '-' }} {{ listingDetailData.operator || '-' }} {{ listingDetailData.remark || '-' }}
查询
共 {{ listingHistoryList.length }} 条历史上品记录
核算预览(保存后按此口径计算)
¥{{ listingCalc.platform_fee.toFixed(2) }} ¥{{ listingCalc.commission_fee.toFixed(2) }} ¥{{ listingCalc.payment_fee.toFixed(2) }} ¥{{ listingCalc.customs_fee.toFixed(2) }} ¥{{ listingCalc.scm_shop_profit.toFixed(2) }} {{ listingCalc.scm_shop_margin!==null ? (listingCalc.scm_shop_margin*100).toFixed(2)+'%' : '-' }} ¥{{ listingCalc.pan_profit.toFixed(2) }} ¥{{ listingCalc.owner_profit.toFixed(2) }} ¥{{ listingCalc.shop_profit.toFixed(2) }} {{ listingCalc.owner_margin!==null ? (listingCalc.owner_margin*100).toFixed(2)+'%' : '-' }} {{ listingCalc.pan_margin!==null ? (listingCalc.pan_margin*100).toFixed(2)+'%' : '-' }} {{ listingCalc.shop_margin!==null ? (listingCalc.shop_margin*100).toFixed(2)+'%' : '-' }}
合计: {{ supDrill.items.length }} 张采购单 | 总数量 {{ supDrill.items.reduce((t,x)=>t+Number(x.total_qty||0),0) }} | 总金额 ¥{{ supDrill.items.reduce((t,x)=>t+Number(x.total_amount||0),0).toFixed(2) }}
合计: {{ salesWhDrill.items.length }} 单 | 数量 {{ salesWhDrill.items.reduce((t,x)=>t+Number(x.total_qty||x.qty||0),0) }} | 金额 ¥{{ salesWhDrill.items.reduce((t,x)=>t+Number(x.amount||0),0).toFixed(2) }}
合计: {{ whDrill.items.length }} 个SKU | 总数量 {{ whDrill.items.reduce((t,x)=>t+Number(x.stock||0),0) }} | 总金额 ¥{{ whDrill.items.reduce((t,x)=>t+Number(x.stock_value||0),0).toFixed(2) }}
{{ revertType==='inbound' ? '选择已入库的采购单,将其退回采购入库:冲回该单增加的库存、删除对应入库记录,采购单状态恢复为「已审批」,可重新入库或编辑。' : '选择已出库的销售单,将其退回销售处理:回补已扣减的库存、清除物流信息,订单状态恢复为「已审批」,可重新确认出库。' }}
单据明细
{{ s.label }}
{{ s.qty >= 0 ? '+' : '' }}{{ s.qty }}
流水明细(共 {{ stockBreakdownData.details.length }} 条) ■ 初始库存 ■ 入库(采购/退货入库/拆盒入/调库调入) ■ 出库(销售/退货补发/拆盒出/调库调出) ■ 实时库存
入库明细 添加明细
合计: ¥{{ openingCreateTotal }}  |  共 {{ openingCreateForm.items.reduce((s,x)=>s+(x.qty||0),0) }} 件
上传的数据如下,可直接修改数量、价格、所属仓库和货品名称;红色标记的行表示货品或仓库在系统中不存在,请修正后再导入(无效行将被跳过)。
共 {{ openingPreview.items.length }} 行,其中有效 {{ openingPreview.items.filter(r=>openingRowOk(r)).length }} 行
{{ priceMargin }}% 填写采购成本价后自动计算
调价将新增一条价格记录(历史价格保留),自记录日期起按新价核算利润
🖼️
上传图片 移除 支持 JPG/PNG, 2MB以内
{{ trendMeta.name }} | 共 {{ trendMeta.count }} 笔采购 | 最低价 ¥{{ trendMeta.min }} | 最高价 ¥{{ trendMeta.max }} 累计数量 {{ trendMeta.totalQty }} | 累计金额 ¥{{ trendMeta.totalAmount }}
价格(元)
暂无采购价格数据
销售明细 添加明细
合计: ¥{{ salesTotalAmount }}
调货明细 添加明细
合计: {{ transferForm.items.reduce((s,x)=>s+(x.qty||0),0) }} 件(调库不改变库存总量,仅变更货品归属仓库)
{{ transferDetailData.ref }} {{ transferDetailData.status }} {{ transferDetailData.transfer_date || '-' }} {{ transferDetailData.total_qty }} 件 {{ transferDetailData.from_wh }} {{ transferDetailData.to_wh }} {{ transferDetailData.operator || '-' }} {{ transferDetailData.remark || '-' }}
调货明细
{{ curSale.order_no }} {{ curSale.status }} {{ curSale.date }} {{ curSale.warehouse_name }} {{ curSale.customer_name || '-' }} ¥{{ (curSale.amount||0).toFixed(2) }}
销售明细
采购明细 添加明细
启用 停用 启用 停用 启用 停用 {{ curPurchase.po_no }} {{ curPurchase.supplier_name }} {{ curPurchase.warehouse_name }} {{ curPurchase.date }} {{ curPurchase.status }} ¥{{ curPurchase.total_amount }}
账号管理
新增账号
角色功能模板
为四种业务角色预设功能勾选模板:选择角色并勾选功能后保存,可作为该角色新账号配置功能时的参照。
运营 客服 管理者 财务对账
保存为该角色默认模板
Logo 管理
💊

上传自定义 Logo 图片(支持 JPG/PNG,2MB 以内)。不上传时显示默认图标。

上传 Logo 恢复默认
当前数据库状态
{{ dbConfig.currentType || '-' }} {{ dbConfig.connected?'已连接':'未连接' }} {{ dbConfig.host || '-' }} {{ dbConfig.database || '-' }} {{ dbConfig.version || '-' }} {{ dbConfig.tableCount || 0 }}
数据库配置
SQLite (本地) MySQL (阿里云RDS) 测试连接 保存配置 初始化 MySQL 表结构
阿里云 RDS 部署指南

1. 购买 RDS 实例:登录阿里云控制台 → 云数据库 RDS → 创建实例,选择 MySQL 8.0,规格推荐 2核4G 起步。

2. 配置白名单:在 RDS 实例「数据安全性 → 白名单设置」中添加本服务器公网 IP。

3. 创建账号和数据库:在「账号管理」中创建管理账号 kejia_admin,在「数据库管理」中创建数据库 kejia_go,授权该账号。

4. 获取连接地址:在「数据库连接」中查看外网地址(需先开通外网访问),形如 rm-xxxx.mysql.rds.aliyuncs.com:3306。

5. 填写并测试:将上述信息填入左上角配置,点击「测试连接」,成功后点击「保存配置」。

6. 初始化表结构:点击「初始化 MySQL 表结构」按钮,系统将自动创建所有业务表。

7. 数据迁移:可使用 DTS(数据传输服务)将本地 SQLite 数据迁移至 RDS。

⚠️ 建议:生产环境请开启 RDS 自动备份,设置每日全量备份,保留 7 天以上。

平台信息
福源跨境货品管理平台 http://localhost:8000/(所有角色共用此地址登录) 超级管理员登录后可在左上角切换「前台页面 / 管理端页面」;其他角色(运营/客服/管理者/财务对账/管理员)登录后只能看到前台页面,且按配置的功能权限使用 运营/客服/管理者/财务对账:登录前台,按后端管理端配置的功能权限使用平台;管理员:前台基础数据删除权限;超级管理员:全部功能+管理端
勾选该账号登录前台后可以看到和使用的平台功能;不勾选的菜单在前台不显示。