SRM 准入申请选择供应商 - 前端联调方案
涉及页面
src/views/srm/supplierApply/index.vue — 准入申请列表页
src/views/srm/supplierApply/modules/form.vue — 准入申请新增/编辑弹窗
src/views/srm/supplierApply/data.ts — 表单和表格配置
业务流程
- 用户点击"新增准入申请" → 打开表单弹窗
- 用户通过**SRM 供应商选择器**从已有 SRM 供应商列表中选择
- 选择后,组件通过
onChange 回调自动填充表单字段
- 用户可手动修改自动填充的字段,补充缺失信息
- 提交申请 → 保存
supplierId 到后端
- 审批通过时,若已关联 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)的供应商
supplierId 和 supplierName 互斥校验:两者至少有一个有值