{{ g.title }}
{{ level.title }}

{{ aiOpen ? 'AI助理 · 录入与稽核' : (docCenterOpen ? docCenter.title : (financeOpen ? finance.title : (accountOpen ? account.title : (saleOpen ? sale.title : (wmsOpen ? wms.title : (prodOpen ? prod.title : (crudOpen ? modules[active].title + '管理' : (piOpen ? '收货单' : (prOpen ? pr.title : (dashOpen ? '个人工作台 · 今日报板' : (onlineOpen ? '在线用户' : '尖锋旱雪商业ERP'))))))))))) }}

在线 {{ onlineCount }}
手机版 {{ user.display_name }}({{ user.role_label }}) 改密码 退出 尖锋旱雪体育设备 · v0.1
← 请从左侧选择功能(蓝色为已实现,其余为占位)

尖锋旱雪商业ERP

在线 {{ onlineCount }}
{{ g.icon || g.title.slice(0,1) }}{{ g.title }}
我的
{{ user.display_name }} {{ user.role_label }}
主题装扮
切换到桌面版
改密码
退出登录
{{ currentGroup.title }}
{{ c.icon || c.title.slice(0,1) }}{{ c.title }}
在线用户
当前在线 {{ online.count }} 人({{ online.minutes }} 分钟内有活动) 刷新
{{ u.display_name }} 在线
{{ u.username }}({{ u.role_label }})
{{ u.last_seen }}
{{ u.ip }}
今日报板
{{ c.label }} {{ c.value }} {{ c.foot }}
更多板块(规划中,先占位)
{{ t }}待开发 · 占位
{{ wms.title }}
+ 新增 + 库位 刷新
全部草稿 已过账作废 导出 导入
{{ row.doc_no }}{{ row.status_label }}
{{ row.doc_date }} {{ row.warehouse_name }}
{{ row.warehouse_to_name }}
{{ fmtQty(row.total_qty) }}
查看编辑过账恢复
{{ row.product_name || row.name }}{{ row.product_code || row.code }}
{{ row.warehouse_name }}
{{ fmtQty(row.qty) }} {{ row.base_unit }}
{{ fmtQty(row.onhand_qty) }} / {{ fmtQty(row.pending_in_qty) }} / {{ fmtQty(row.virtual_qty) }}
{{ fmtQty(row.opening_qty) }} / {{ fmtQty(row.in_qty) }} / {{ fmtQty(row.out_qty) }} / {{ fmtQty(row.closing_qty) }}
{{ row.code }} {{ row.name }}
查看流水
{{ canWrite?'编辑':'查看' }}删除
{{ docCenter.title }}
搜索
{{ row.doc_no||row.doc_type_label }}{{ row.status_label }}
{{ row.doc_type_label }} {{ row.doc_date||row.printed_at||'' }}
{{ row.partner_name }}
¥{{ fmt(row.amount) }}
打开打印
{{ finance.title }}
+ 新增搜索
{{ row.entry_no||row.name||row.fund_account_name }}{{ row.status_label }}
{{ row.category }}
{{ row.applicant||'—' }} → {{ row.approver||'—' }}
{{ row.fund_account_name }} → {{ row.target_fund_account_name }}
¥{{ fmt(row.amount??row.profit??row.net??0) }}
{{ row.remark }}
查看编辑确认
{{ account.title }}
+ 新增搜索
{{ row.partner_name||row.entry_no }}{{ row.status_label }}
{{ row.entry_no||row.doc_no }}
¥{{ fmt(row.amount??row.net??row.balance??0) }}
{{ row.remark }}
查看编辑确认
{{ sale.title }}
+ 新增搜索
{{ row.doc_no||row.name }}{{ row.status_label }}
{{ row.partner_name||row.customer }}
{{ row.doc_date }}
{{ fmtQty(row.total_qty??row.qty) }} / ¥{{ fmt(row.total_amount??row.amount) }}
查看编辑确认过账{{ sale.mode==='sale_order'?'生成出库':'生成退货' }}
{{ prod.title }}
+ BOM + 订单 + 新增 {{ prod.mode==='mrp'?'刷新':'搜索' }}
全部草稿已过账 全部草稿在产完工 缺料转采购 导出 导入
{{ row.name }} 默认 {{ row.status?'启用':'停用' }}
{{ row.product_name }} {{ row.spec||'' }}
{{ row.code }} {{ row.line_count }} 行
查看 复制 打印PDF 下订单
{{ row.doc_no }}{{ row.status_label }}
{{ row.product_name }} {{ row.spec||'' }}
{{ fmtQty(row.plan_qty) }} / {{ fmtQty(row.received_qty) }} {{ row.base_unit }}({{ row.percent }}%)
{{ row.expect_date }}{{ row.overdue?'(逾期)':'' }}
{{ row.remark }}
详情 下达 编辑
{{ row.doc_no }}{{ postStMap[row.status]||row.status }}
{{ row.doc_date }} {{ row.warehouse_name }}
{{ row.work_order_no }}
{{ fmtQty(row.total_qty) }} ¥{{ fmt(row.total_amount) }}
{{ row.remark }}
查看 编辑 过账 恢复
{{ row.doc_no }}{{ row.status_label }}
{{ row.product_name }}
{{ fmtQty(row.received_qty) }} / {{ fmtQty(row.plan_qty) }}
¥{{ fmt(row.net_cost) }}
¥{{ fmt(row.unit_cost) }}
¥{{ fmt(row.wip_cost) }}
{{ row.product_name }} {{ row.shortage_qty>0?('缺 '+fmtQty(row.shortage_qty)+row.base_unit):'不缺' }}
{{ fmtQty(row.need_qty) }} / {{ fmtQty(row.onhand_qty) }} / {{ fmtQty(row.onway_qty) }} {{ row.base_unit }}
{{ row.orders }}
收货单
+ 新增 凭照片 搜索
全部 草稿 已提交 作废 导出 导入
{{ row.doc_no }} {{ piStMap[row.status]||row.status }}
{{ row.doc_date }}
{{ row.partner_name }}
¥{{ fmt(row.total_amount) }}({{ row.line_count }} 行)
{{ row.remark }}
提交 反提交 复制 恢复
{{ pr.title }}
+ 新增申请 搜索
全部 {{ v.label }}
仅显示申请草稿
导出 导入
{{ row.doc_no }} {{ prStatusMap[row.status].label }}
{{ row.applicant }}({{ row.doc_date }})
{{ row.approver }}
{{ row.partner_name || '(未定)' }}
{{ (row.product_names||[]).join('、') || '—' }}
¥{{ fmt(row.total_amount) }}({{ row.line_count }} 行)
{{ row.expect_date }}
{{ [row.carrier, row.tracking_no].filter(Boolean).join(' ') }}
{{ payStatusMap[row.pay_status||0].label }}
{{ prFileTags(row).join('、') }}
{{ row.remark }}
{{ row.approve_note }}
编辑 发审批 批准 驳回 收货转入库 看入库单 恢复
AI助理 · 录入与稽核
相册替换移除
📷 拍照/相册粘贴 / 拖入↻ 重抓屏替换识别并检查
⚠ {{ w }}
{{ i+1 }}. {{ x.name }}
⚠ {{ w }}

规格:{{ x.spec||'待补' }} 单位:{{ x.base_unit||'待补' }}

数量:{{ fmtQty(x.purchase_qty) }} 单价:{{ fmt(x.price) }}

带入商品档案继续核对
{{ modules[active].title }}
+ 新增 搜索 其它筛选{{ activeOtherFilterCount ? ' '+activeOtherFilterCount : '' }} 全部重置 {{ loading ? '统计中…' : (hasActiveQuery ? '结果 '+total+' 条' : '共 '+total+' 条') }}

{{ t }}

🏠首页
🧾单据
📥收货
📦库存
👤我的
+ 添加商品 供应商图库{{ pi.form.partner_id ? '' : '(先选供应商)' }} 回购老货?去复制历史入库单 ↗
{{ i+1 }} 粘贴/拖入
这个物料还没有照片:点上方红色 拍一张(或先在商品档案里补商品图片);以后进货可不拍,重拍会覆盖旧照片
¥{{ fmt((l.unit_qty||0)*(l.price||0)) }}
{{ [l._enable_batch && l.batch_no ? '批次:'+l.batch_no : '', l.remark].filter(x=>x).join(';') }}
共 {{ pi.form.lines.length }} 行 合计:¥{{ fmt(piTotalAmount) }}
拍过照的进货商品会自动留在这里;点一下即可带出商品、单位和上次价格,只需再填数量。每个物料只保留一张照片,新照片自动覆盖旧照片。
{{ g.product_name }}
{{ ppMeta(g) }}
{{ pi.codeDoc.doc_no }}
扫码内容为单号,可贴在货物/单据上,在搜索框扫入单号即可调出本单
搜索
点右上 🔍 或双击看大图{{ pi.pp.mode==='view' ? ';勾选一张照片,下方操作区可生成单据、查历史、看供应商档案、发企业微信' : ';点选一张照片(再点取消勾选),勾选后点底部按钮直接生成'+(pi.pp.mode==='pr' ? '采购申请' : '入库单') }}。
🔍
{{ g.product_name }}
{{ g.partner_name || '—' }}
{{ ppMeta(g) }}
批准截图(签字抓屏凭证,点击看大图) 更换批准截图
采购文件(图片、Word、Excel/CSV;合同和发票另支持 PDF,单文件不超过 8MB)
{{ k.label }} +上传 粘贴/拖入
未传
付款登记(付一笔记一笔,即录即存;淘宝/1688 下单选支付宝账户) {{ payStatusMap[pr.form.pay_status||0].label }} 已付 ¥{{ fmt(pr.form.paid_amount) }} / 单据合计 ¥{{ fmt(prTotalAmount) }}
{{ p.pay_date }} {{ p.account_name || '—' }} ¥{{ fmt(p.amount) }} {{ p.remark }} {{ p.payment_entry_no }} 查看付款单
登记付款
识别并填入下方表单 识别 物品/数量/单位/单价/供应商/链接,逐条生成明细,填完请人工核对
该人员未配置企业微信 UserID,只会显示普通文字 @,不会触发消息提醒。
+ 添加商品 从照片生成 确定要买的物品一行一个;商品没建档的先去「商品档案」新增 回购老货?去复制历史入库单 ↗
{{ i+1 }}
¥{{ fmt((l.unit_qty||0)*(l.price||0)) }}
{{ a.v || '—' }}
{{ l.remark }}
共 {{ pr.form.lines.length }} 行 合计:¥{{ fmt(prTotalAmount) }}
询价抓屏 / 报价截图(可多张)
{{ img._uploading ? '' : '…' }}
粘贴 / 拖入图片
按申请明细生成一张入库单【草稿】:核对实收数量、单价,按规则拍照后再提交过账。
公司流程:群里抓屏签字表示批准 → 在企业微信复制截图后直接粘贴,或从相册上传存档(必填,财务打印入账凭证)。
{{ pr.apv.image_url ? '重新上传批准截图' : '上传批准截图(必填)' }} 粘贴 / 拖入
看清楚:就是这张签字抓屏吗?
不对,重选 确定上传
{{ unitGroups[converter.kind].units.length }} 个单位
在任意一格输入数值,同组其它单位立即自动换算;支持小数、负数和科学计数法。
挂账/不动资金立即支付收入支出调增成本调减成本
相关文件(照片、PDF){{ finance.form.status_label||finance.form.approval_status_label }}
+{{ k.label }}
{{ f.kind_label }}PDF 文件删除
签字审批截图:{{ finance.form.approval_by }} · {{ finance.form.approval_at||'' }}
上传签字截图
客户供应商客户+供应商
{{ x.name }}{{ [x.contact,x.phone,x.type===3?'客户+供应商':(x.type===2?'客户':'供应商')].filter(Boolean).join(' · ') }}
按未收金额自动分配 可选择任意多张出库;填写核销金额即表示选中 核销 ¥{{ fmt(accountAllocTotal) }} / 收款 ¥{{ fmt(account.form.amount||0) }}
按未付金额自动分配 可跨多张采购单付款,也可对一张采购单分次付款 核销 ¥{{ fmt(accountAllocTotal) }} / 付款 ¥{{ fmt(account.form.amount||0) }}
应付余额 ¥{{ fmt(account.payablePartner?.balance||0) }};采购单可分次付款,也可一笔付款核销多单。 对选中单据付款
{{ x.name }}{{ [x.contact,x.phone,x.type===3?'客户+供应商':'客户'].filter(Boolean).join(' · ') }}
业务提成(参数随本单保存,后续改规则不影响历史)
+ 加商品看图选商品
{{ p.name }} {{ p.spec||'' }}
{{ saleLineUnit(line)||'—' }}
{{ line.image_url?'重拍':'拍照' }}粘贴/拖入
删除
合计:{{ fmtQty(saleTotal.qty) }} 件 ¥{{ fmt(saleTotal.amount) }}
+ 增加商品行 凭照片加行
选择仓库后会带出当前有库存商品;填写实盘数量,过账时系统只按账面与实盘的差额生成盘盈或盘亏流水。
投入行扣减原商品,产出行增加新商品;未填写产出成本时,系统按投入商品的实际库存成本自动分摊。
照片选成品
+ 增加材料行 凭照片加料 导入材料xlsx
用量是产出「产出数量」个成品所需的材料数(基本单位);领料建议量 = 用量 ×(1 + 损耗率)。同一成品可存多个版本,勾了默认版本的下生产订单时自动带出。
照片选成品
{{ prod.det.status_label }} {{ prod.det.doc_date }} {{ prod.det.applicant||'—' }} {{ prod.det.product_name }} {{ prod.det.spec||'' }} {{ fmtQty(prod.det.plan_qty) }} / {{ fmtQty(prod.det.received_qty) }} {{ prod.det.base_unit }}({{ prod.det.percent }}%) {{ prod.det.expect_date||'—' }}{{ prod.det.overdue?'(逾期)':'' }} {{ prod.det.bom_code?prod.det.bom_code+' '+prod.det.bom_name:'未配' }} {{ prod.det.warehouse_name }} {{ prod.det.remark||'—' }} ¥{{ fmt(prod.det.issued_cost) }} ¥{{ fmt(prod.det.returned_cost) }} / ¥{{ fmt(prod.det.scrap_amount) }} ¥{{ fmt(prod.det.net_cost) }} / ¥{{ fmt(prod.det.received_cost) }} / ¥{{ fmt(prod.det.wip_cost) }}
材料执行(标准 vs 实际)
名下生产单据
+ 增加商品行 凭照片加料
{{ prodDocTip(prod.docForm.doc_type) }}
BOM 物料清单({{ rel.boms.length }})
共 {{ ppkList.length }} 张带照片的商品{{ ppkList.length>200?',只显示前 200 张,请先按分类或关键词收窄':'' }}; {{ ['bom_product','mo_product'].includes(ppk.target)?'点一张即选定成品':'点一张加一行,重复点同一张数量 +1,加完点关闭' }}。
{{ p.name }}
{{ (p.spec||'') + ' [' + p.code + ']' }}
「{{ todoName }}」功能占位。
页面结构已就位,具体的录入 / 查询 / 单据操作将在后续按计划实现。

按硬指标扫全库:商品链接(同平台同货号)、条码、名称+型号 相同的商品归为一组,大概率是同一商品被反复建档。

确认是同一商品:选一个「保留」,点「合并」——其余档案的单据明细、库存、图库整体并入保留档案后删除,历史单据数量金额不变。

{{ g.reason }}{{ g.key }}
保留
{{ it.name }} 停用
{{ [it.code, it.brand, it.model_no, it.spec].filter(Boolean).join(' / ') }} 单据明细 {{ it.doc_cnt }} 条
合并:其余并入所选保留档案
基本单位:{{ unitProduct.base_unit }}(换算率 1)。其它单位填「1 本单位 = 几个基本单位」。
添加单位
提示:只改本系统(统一身份库)的密码;售后系统接入统一登录前,两边密码互不影响。
{{ ai.result?'已关联识别草稿':'通用咨询' }}
可以直接说:
“第1件名称改为QQ150氩弧焊枪,规格改为4米,单位改为把。”
也可以问“为什么链接没有识别成功?”或提交“识别错误反馈”。
{{ m.content }}
解释原因 反馈识别错误 清空对话
发送
AI只能修正草稿和提供建议,正式保存仍需员工确认。