Files
JY1.0/docs/移动端适配/采购合同生成入库单移动端组件设计方案.md

5.9 KiB
Raw Blame History

采购合同生成入库单移动端组件设计方案

目标

在不改动现有采购合同查询组件 src/views/PurchasingManagement/OrderInquiry/index.vue 的前提下,将其中“生成入库单”功能设计为一个独立的新组件,优先适配手机和平板操作,同时在桌面端保持可用。

采购合同生成入库单移动端预览

现状梳理

现有入口位于采购合同查询页面工具栏,按钮触发 addArrivalNotice(),打开 width="1000px"el-dialog。弹窗内包含供应商选择、合同号选择、查询、入库单号展示、合同明细表、到货数量输入、是否质检开关、推送部门展示、到货汇总、提交和取消。

现有逻辑主要包含:

  • getArrivalContract():按供应商加载可生成入库单的采购合同。
  • searchArrivalDetail():按供应商和合同查询合同明细,并读取后端返回的入库单号。
  • submitArrivalNotice():筛选本次到货数量大于 0 的明细,按是否质检拆分提示,并调用新增接口提交。
  • 涉及接口名称包括 仓储管理_采购入库合同_查询采购管理_采购入库合同明细_查询采购管理_到货内容_新增

当前问题是弹窗宽度固定、明细依赖横向表格,手机端选择合同、输入到货数量、切换质检开关和确认汇总都不方便。

新组件建议

建议新增独立视图组件:

src/views/PurchasingManagement/PurchaseInboundCreateMobile/index.vue

也可以在后续实现时拆成业务组件:

src/components/PurchaseInboundCreateMobile/index.vue

若需要菜单直接访问,使用视图路径;若只作为其他页面内嵌入口,使用组件路径。为了满足“单独做一个新组件方便移动端使用”,本方案优先建议新增视图组件,后端配置菜单后通过动态路由进入,不影响原采购合同查询页面。

页面布局

移动端采用单列流程:

  1. 顶部固定标题区:显示“生成入库单”、当前状态、返回按钮。
  2. 查询条件区:供应商、合同号使用整行选择框,合同号随供应商联动加载。
  3. 单据摘要区:展示入库单号、本次到货物料数、需质检数、直入库数。
  4. 明细卡片区:每个物料一张卡片,展示合同号、物料名称、图号或型号、采购数、已到数、可到数。
  5. 卡片操作区:到货数量使用 el-input-number,质检使用 el-switch,推送部门用标签显示“质检部/仓库”。
  6. 底部固定操作栏:提交入库单、清空本次数量。

桌面端自适应为双栏:

  • 左侧为条件和摘要。
  • 右侧为明细表格或卡片网格。
  • 最大宽度控制在内容区内,不再使用固定 1000px 弹窗。

交互流程

  1. 用户进入新组件。
  2. 选择供应商,组件调用合同查询接口刷新合同列表。
  3. 选择合同号后自动查询明细,也保留“查询”按钮用于手动刷新。
  4. 明细默认 到货数量=0需要质检=false
  5. 用户填写某一行到货数量后,该行质检开关可操作。
  6. 汇总区实时计算本次到货条数、需质检条数、直入库条数。
  7. 提交前校验至少一条明细 到货数量 > 0,并校验到货数量不超过 采购数 - 已到数
  8. 提交成功后提示成功、清空当前明细或停留展示结果,由实现时按现场使用习惯确定。

数据设计

组件内部建议沿用原页面字段,不新增后端字段:

  • arrivalSupplierName:供应商流水号。
  • arrivalContractNo:采购合同流水号。
  • arrivalContractLabel:采购合同编号。
  • 入库单号:后端返回的入库单号。
  • arrivalTableData:合同明细数组。
  • 到货数量:前端临时输入字段。
  • 需要质检:前端临时开关字段。

提交参数继续沿用原逻辑:

  • 通知内容
  • 发起人
  • 采购合同流水号
  • 到货数组
  • 物料流水号组
  • 质检标志组
  • 采购合同
  • 供应商流水号
  • 入库单号

技术实现要点

  • 使用 Vue 2 Options API不使用 Composition API。
  • 请求继续使用 this.CreateData()this.ExecDatabase(),不单独封装新的请求客户端。
  • 生命周期使用普通函数,不使用箭头函数。
  • 移动端样式放在 <style scoped>,通过媒体查询控制桌面和手机布局。
  • 断点建议:max-width: 768px 使用单列卡片和底部固定按钮;min-width: 769px 使用双栏或表格。
  • 明细卡片保留中文字段访问,和后端返回字段保持一致。
  • 组件创建后不修改采购合同查询组件;若后续需要入口,可以由菜单配置或新增移动端菜单进入。

样式建议

  • 手机端避免 el-table 作为主要录入载体,改用卡片列表承载物料明细。
  • 数量输入按钮高度不小于 36px底部提交按钮高度不小于 44px。
  • 顶部和底部区域使用 position: sticky 或固定布局,方便长列表滚动时随时提交。
  • 摘要区使用三个轻量统计块:本次到货、需质检、直入库。
  • 质检状态用颜色区分:需质检为橙色,直入库为绿色。

实施步骤

  1. 新增 PurchaseInboundCreateMobile/index.vue,复制并整理原生成入库单相关 data、computed、methods。
  2. 将明细展示从表格改为移动端卡片,桌面端可保留表格或两列卡片。
  3. 增加响应式样式和底部固定提交栏。
  4. 本地验证供应商联动、合同明细查询、数量上限、质检开关、汇总和提交参数。
  5. 由后端配置菜单,指向新组件路径,原采购合同查询组件保持不动。

验收标准

  • 手机端宽度 375px 下不出现横向滚动。
  • 到货数量、质检开关、提交按钮在触屏下易点击。
  • 提交参数与原弹窗一致。
  • 原采购合同查询页面行为不变。
  • 新组件可通过动态路由单独打开。

修改人:Ld 修改时间:2026-07-21 13:10:54;