Skip to content

AiRecordSelectorModal 记录选择器弹窗

模态框形式的业务记录选择器,支持远程搜索、多选、字段映射确认。常用于关联数据选择场景(如选择关联客户、关联订单等)。

基本用法

vue
<template>
  <AiRecordSelectorModal
    v-model:show="showSelector"
    object-code="Customer"
    :display-fields="['name', 'phone', 'address']"
    :keyword-fields="['name', 'phone']"
    multiple
    @confirm="handleConfirm"
  />
</template>

<script setup>
import { AiRecordSelectorModal } from '@/components/ai-form'
import { ref } from 'vue'

const showSelector = ref(false)
const handleConfirm = ({ rows, mappings }) => {
  console.log('选中记录:', rows)
  console.log('字段映射:', mappings)
}
</script>

带字段映射的选择

vue
<AiRecordSelectorModal
  v-model:show="showSelector"
  object-code="Order"
  :display-fields="['orderNo', 'customerName', 'totalAmount']"
  :field-mappings="[
    { sourceField: 'orderNo', targetField: 'relatedOrderNo' },
    { sourceField: 'customerName', targetField: 'relatedCustomer' }
  ]"
  @confirm="handleConfirm"
/>

Props

属性类型默认值说明
showBooleanfalse控制弹窗显示/隐藏,支持 v-model:show
titleString'选择记录'弹窗标题
objectCodeString''目标对象编码(首选)
businessObjectCodeString''业务对象编码(objectCode 为空时备选)
targetObjectCodeString''目标对象编码(备选)
targetEntityCodeString''目标实体编码(备选)
candidateObjectCodeString''候选对象编码(备选)
referenceObjectCodeString''引用对象编码(备选)
refObjectCodeString''引用对象编码(备选)
sourceObjectCodeString''源对象编码(备选)
targetCodeString''目标编码(备选)
suiteCodeString''业务套件编码
displayFieldsArray[]表格中显示的字段列表
keywordFieldsArray[]搜索关键词应用的目标字段
fieldMappingsArray | Object[]源字段到目标字段的映射配置
searchParamsObject{}附加搜索参数,支持 ${context.path} 模板语法
runtimeContextObject{}解析 searchParams 中模板表达式的运行时上下文
multipleBooleanfalse是否启用多选模式
pageSizeNumber10每页显示条数

objectCode 解析优先级objectCodebusinessObjectCodetargetObjectCodetargetEntityCodecandidateObjectCodereferenceObjectCoderefObjectCodesourceObjectCodetargetCode,取第一个非空值。

Events

事件名参数说明
update:show(visible: Boolean)弹窗显示状态变更
confirm({ rows, mappings })点击"确定"时触发,rows 为选中行数组,mappings 为规范化后的字段映射

Slots

插槽名说明
footer自定义弹窗页脚,默认显示「已选 N 条」计数 + 取消/确定按钮

工具函数

js
import {
  normalizeSelectorMappings,
  applyRecordFieldMappings,
  resolveSelectorSearchParams,
  normalizeRecordSelectorConfig
} from '@/components/ai-form/record-selector-utils'
  • normalizeSelectorMappings(mappings) — 将字段映射规范化为 { sourceField, targetField } 格式
  • applyRecordFieldMappings(rows, mappings) — 将映射应用到选中行
  • resolveSelectorSearchParams(params, context) — 解析搜索参数中的 ${context.path} 模板
  • normalizeRecordSelectorConfig(config) — 规范化选择器配置对象

Forge Admin — 基于 Vue3 + Spring Boot 的企业级后台管理框架