Skip to content

小程序记账「写操作」扩展说明

Web 过账弹窗实现约定见 .cursor/skills/frontend-acc-posting-dialog/SKILL.md;Agent 总索引见仓库根 AGENTS.md

目标:在 与 Web 同一套 acc HTTP 接口 的前提下,逐步支持手机端 录入 / 改单,并与现有 RBAC + 站点范围 校验一致。


一、已实现(M1)

能力小程序页面后端接口说明
新建原料入库pages/recorder/inbound-createPOST /acc/inbound/post合格/次品分行;包装件数按商品 packRules 换算合格数量;保存即过账
  • 入口:入库单列表 FAB、工作台 role-menus、种子 mobile_recorder_inbound_create
  • 详情冲红:POST /acc/inbound/void(须 btn_acc_inbound_write);出库详情冲红另须 btn_acc_production_wip_correct
  • 入库明细子页 inbound-line-form:合格/次品、包装件数(acc-pack-spec)。

二、已实现(M2 出库)

能力小程序页面后端接口说明
新建成品出库pages/recorder/outbound-createPOST /acc/outbound/post客户 → 成品 → 可选批次 → 数量/单价弹窗;同一批次不可重复;行金额三位小数;列表展示合计。
  • 入口:出库单列表 FAB、种子 mobile_recorder_outbound_create
  • 与 Web 对齐:POST /acc/production/available-batchesproductionOutputId、可出量校验。
  • 弹层:InboundSearchPickPopup(客户/成品/批次)、OutboundLineQtyPricePopup(数量/单价)。
  • 部分退货outbound-detail部分退货outbound-returnPOST /acc/outbound/return/post(须 btn_acc_outbound_write,不需生产负责人角色)。
  • 详情展示每行已退/可退及退货记录;冲红按钮仅在 orderStatus=normal 且具备冲红权限时显示(已修正原 posted 误判)。

三、生产单新建 / 在制(M3,部分已有)

范围定稿(产品 / 实施必读):miniapp-wip-scope.md — 小程序支持在制 开单 + 登记审核 + 现场报工 + 关账冲红 以 Web 为准。

能力小程序页面说明
一次过账生产pages/recorder/production-create与 Web 同一 POST /acc/production/post
在制开单production-wip-openPOST /acc/production/wip/open
在制关账production-wip-closePOST /acc/production/wip/close
现场报工production-wip-op-addPOST /acc/production/wip/op/add
在制报工(登记链路)工人 labor-submission-*;审核 labor-submission-review*有审核时优先;见范围文档 §3

已做:生产详情(Web / 小程序)可带 productionOutputId 跳转出库;小程序详情展示工序报工子表;production-create 配方/工序加载已抽 useProductionCreateCatalog

子页门禁(已接 useMiniappPageGateinbound-createoutbound-createproduction-createproduction-wip-openproduction-wip-closeproduction-wip-op-addlabour-viewlabor-submission-reviewsettlement-create、经理结算/发放/报表、工人记工/工资条列表。

接口用途
POST /acc/production/post一次过账生产单(原料 + 成品产出 + 记工)。
POST /acc/production/wip/open在制多阶段报工、关账、冲红等。

复杂度:记工与 成品工序 强相关。建议先做 极简一次过账在制报工 单场景。

出库预填:Web 生产详情产出行点「出库」打开过账弹窗;小程序生产详情点「去出库」进入 outbound-create?goodsId=&productionOutputId=&qty=


三.1、经理端 — 新建工资结算(M4)

能力小程序页面后端接口说明
新建结算单pages/manager/settlement-createPOST /acc/settlement/post与 Web SettlementPostDialog 一致:labor-pending/page 勾选记工 + 可选出库筛选 + 加减项
  • 入口:结算列表 FAB(须 btn_acc_settlement_write)、经理菜单「新建结算」、PagePath.manager.settlementCreate
  • 待结算记工:POST /acc/settlement/labor-pending/page;可选出库:POST /acc/outbound/page + pendingLaborWorkerId
  • 逻辑:composables/manager/useSettlementCreate.ts
  • 列表:settlement.vue 支持状态 Tab、工人下拉、结算日期区间筛选(与 Web AccSettlementListView 一致);FAB 新建。

M4 验收

  • 自动化:发版前根目录 pnpm run check:release-acceptance(含预发 STRICT 校验 + 月结 SQL;须本地 DB)。
  • 手工用例表:见 acc-release-acceptance.md §4(签字存档,非仅文档勾选)。

三.2、经理报表与月结巡检

能力页面说明
站点概览pages/manager/reports(Tab,默认)POST /acc/home/summary:本月入/出库单数、商品/往来、近 N 天出库销售与毛利(柱图)、成品产出(柱图)、记工/结算概况、原料/成品库存摘要
记工汇总同上 Tab按员工、近 12 个月、工种汇总待结算/已进结算单金额
月结巡检同上 Tab(ADMINPOST /acc/ops/month-close-integrity;与 Web /acc/ops、脚本 check:month-close 同语义
  • 站点概览读权限:menu_acc_homemobile_manager_reports / 结算·出库菜单(见 assert-acc-home-read.ts)。
  • 工人选择:InboundSearchPickPopup + settlement-worker-search(keyword,非 size:500)。
  • 非 ADMIN 仅见「记工汇总」「站点概览」Tab。

写操作补齐(入/出库)

能力页面说明
新建过账inbound-create / outbound-createM1 / M2
单据冲红inbound-detail / outbound-detail与 Web 同一 void 接口;须对应 btn_acc_*_write
生产冲红仍在 Webbtn_acc_production_wip_correct),见 miniapp-wip-scope.md

列表页提示已改为「详情可冲红」;生产整单/报工冲红仍以 Web 为准。


四、权限与入口

  • API 错误文案:业务页 catch 统一 getMiniappApiErrorMessage(err, fallback)miniapp/src/utils/api-error.ts);网关 403 PERMISSION_DENIED 会附带 requiredPermissions 说明。http.ts 在 reject 前已 formatGatewayErrorMessage,勿再手写 e instanceof Error ? e.message
  • 过账须 btn_acc_inbound_write / btn_acc_outbound_write / btn_acc_production_write / btn_acc_settlement_writeADMIN 放行)。
  • 入库/出库冲红与过账共用对应模块写权限。
  • 矩阵与种子:见 permission-matrix.mdpermission-code-conventions.md
  • 子页useMiniappPageGate + miniapp/src/utils/acc-permissions.tsminiRole 仍用于 tab,不能替代 btn_* / mobile_*)。
  • 改 seed / 角色后用户须 重新登录

五、测试清单

M1 入库

  • [x] 无站点 / 未登录不可进 inbound-create
  • [x] 选品仅原料;误入成品应被后端拒绝。
  • [x] 多行金额与 Web 过账一致;明细区展示进货合计。
  • [x] 详情页冲红(具备写权限且单状态为已过账)。

M2 出库

  • [x] 无站点不可进 outbound-create
  • [x] 同一 productionOutputId 不可添加两行。
  • [x] 数量不超过批次可出量;单价三位小数;销售金额合计。
  • [x] 详情页冲红(写权限 + 生产冲红按钮)。
  • [x] 会话过期:consumeSessionExpiredAndRelaunch 正常。
  • [x] 记录员生产开单/过账:原料、配方加载失败时 getMiniappApiErrorMessage + Toast(含 PERMISSION_DENIED)。
  • [x] 权限按钮态:useAccPermissionsPOST /sys/me/auth-claims 刷新;App.onShow 合并最新 permissionCodes

六、个人收支(首页「常用」)

站点记账(Acc) 不同:个人账本走 POST /sys/bookkeeping/*,按 sys_users.id 隔离。

首页入口路径与参数
记一笔pages/bookkeeping/home?mode=record
账本管理pages/bookkeeping/home?mode=manage
周 / 月 / 年统计pages/bookkeeping/stats?period=week / month / year

入口:miniapp/src/constants/mobile-shell-local.ts

TaskFlow 内部文档 Released under the MIT License.