编辑 | blame | 历史 | 原始文档

SRM 准入申请选择供应商 - 前端联调方案

涉及页面

  • src/views/srm/supplierApply/index.vue — 准入申请列表页
  • src/views/srm/supplierApply/modules/form.vue — 准入申请新增/编辑弹窗
  • src/views/srm/supplierApply/data.ts — 表单和表格配置

业务流程

  1. 用户点击"新增准入申请" → 打开表单弹窗
  2. 用户通过**SRM 供应商选择器**从已有 SRM 供应商列表中选择
  3. 选择后,组件通过 onChange 回调自动填充表单字段
  4. 用户可手动修改自动填充的字段,补充缺失信息
  5. 提交申请 → 保存 supplierId 到后端
  6. 审批通过时,若已关联 SRM 供应商则不重复创建;若未关联则根据申请信息创建新的 SRM 供应商

API

涉及接口

方法 路径 说明
GET /srm/supplier/page SRM 供应商分页列表(供应商选择器使用)
POST /srm/supplier-apply/create 创建准入申请
PUT /srm/supplier-apply/update 更新准入申请
GET /srm/supplier-apply/get?id={id} 获取准入申请详情

创建/更新准入申请 — 请求参数

参数 类型 必填 说明
supplierId Long 关联的 SRM 供应商 ID。与 supplierName 二选一必填
supplierName String 条件必填 供应商名称。supplierId 为空时必填

校验规则变更

  • supplierName 不再强制必填。当 supplierId 为空时,supplierName 必填
  • supplierId 有值时,后端会校验该供应商在 SRM 中存在

字段自动填充规则

选择 SRM 供应商后,组件的 onChange 回调接收 SupplierVO 对象,按以下映射自动填充:

SRM 供应商字段 准入申请表单字段 说明
name supplierName 供应商名称
contactName contactName 联系人
contactMobile contactMobile 联系电话
contactEmail contactEmail 邮箱
taxNo taxNo 税号
address address 地址

前端实现说明

1. 表单 schema(data.ts

表单字段 supplierId 使用 SrmSupplierSelect 组件:

  • 组件路径:src/views/srm/supplier/components/select.vue
  • modelValue 绑定到 supplierId(number 类型)
  • 通过 onChange 回调接收选中的 SupplierVO,调用 formApi.setValues() 自动填充
  • supplierName prop 用于回显已选供应商名称
  • 字段 supplierName 保留在表单中,由选择器自动填充或被用户手动输入

2. formApi 注入(form.vue

使用 formApi.setState({ schema: useFormSchema(formApi) }) 模式,在 useVbenForm 创建完成后将 formApi 注入 schema,使 onChange 回调能调用 formApi.setValues()

字段展示规则

字段 展示位置 说明
supplierId 详情 关联的 SRM 供应商 ID
supplierName 列表、详情 供应商名称(选择器自动填充或手动输入)

业务规则说明

场景 规则
选择了 SRM 供应商 supplierId 有值,信息从 SRM 自动带入,后端校验供应商存在
未选择 SRM 供应商 supplierId 为空,必须手动填写供应商名称
重新选择供应商 组件 onChange 重新触发,覆盖已有表单字段
编辑已有申请 通过 supplierName prop 回显选中供应商名称
审批通过(已关联 SRM 供应商) 不创建新的 SRM 供应商,直接使用已有 supplierId
审批通过(未关联 SRM 供应商) 后端根据申请信息创建新的 SRM 供应商

注意事项

  • SRM 供应商选择器组件位于 src/views/srm/supplier/components/,已新建
  • 自动填充后用户仍可手动修改任何字段
  • 供应商选择器仅查询启用状态(status: 1)的供应商
  • supplierIdsupplierName 互斥校验:两者至少有一个有值