AGILE TEAM
Skip to content

jh-picker - 关联数据挑选组件

平台统一的关联数据挑选组件,通过弹窗 + 表格形式从业务数据源中选择一条或多条数据,适用于关联客户、商品、订单等基础资料/单据选择场景

📝 作者
朱祥
朱祥·025877
研究院
谢飞
谢飞·026789
信息化中心

📦 组件位置

来源:@jhlc/common-core

ts
import "@jhlc/common-core";

组件已全局注册,可直接在模板中使用 <jh-picker />


基本用法

1️⃣ 单选关联数据(最常用)

vue
<template>
  <jh-picker
    v-model="form.customerId"
    :list-url="customerApi.list"
    :list-by-ids-url="customerApi.getByIds"
    :value-attr="['id']"
    :label-attr="['name']"
    :data-attr="['data', 'records']"
    :columns="customerColumns"
    :query="customerQueryItems"
    title="选择客户"
    start-placeholder="请选择客户"
  />
</template>

<script setup lang="ts">
const form = ref({ customerId: "" });

const customerColumns = [
  { name: "code", label: "客户编码" },
  { name: "name", label: "客户名称" },
];

const customerQueryItems = [
  { name: "keyword", label: "关键字", placeholder: "编码/名称" },
];
</script>

2️⃣ 多选关联数据

vue
<jh-picker
  v-model="form.productIds"
  :single="false"
  :list-url="productApi.list"
  :value-attr="['id']"
  :label-attr="['name']"
  :columns="productColumns"
  :query="productQueryItems"
  title="选择商品"
  start-placeholder="请选择商品"
/>

⚠️ 多选用 :single="false"没有 multiple 属性


Props 属性

以下属性以 props.ts 为唯一权威源。

基本属性 · 基础

参数说明类型默认值
forPick提供选择boolean-
showMultiEcho多选回显booleantrue
customLabel自定义标签Function | string-
label标题名称string""
showColon冒号(标题与输入框之间加英文冒号)booleantrue
prop字段属性(用于表单校验,确定是哪个字段,选择字段后自动会设置数据绑定)Array-
modelValue / v-model数据绑定string | Array-
placeholder占位提示string"请选择"
tip描述性文案string-
list列表绑定Array-
defaultValue默认值string-
status状态string"default"
size尺寸string"default"
labelWidth标签宽度(styleY 样式,比如 500px、100%,默认 450px)string-
maxWidth最大宽度(styleY 样式,比如 500px、100%,默认 450px)string"450px"
viewer阅读模式(阅读模式将输入框渲染为 span)booleanfalse
labelClass标签样式Array[]
appendText后缀string-
single是否单选booleantrue
dataType数据类型(多选时,字段数据类型,如果是字符串,则是逗号隔开)string"array"
validFun数据校验(用于校验数据项是否可选,不合法调用 cb(false),否则调用 cb(true))Function-
equals相等比较Function-
showType显示类型string""
inputable显示类型booleanfalse
showLabel按钮名称string"按钮"
buttonType按钮类型string"primary"
buttonIcon按钮图标string-
listUrl列表接口string-
listMethod列表接口string"get"
listByIdsUrl回显接口string | Function-

基本属性 · 弹窗

参数说明类型默认值
title标题名称string-
width弹框宽度string-
customClass弹框自定义类名string-
showSearchBtn是否展示搜索按钮booleantrue

数据配置 · 数据接口

参数说明类型默认值
tableRenderType表格渲染类型string-
_ct配置方式number1
_modelSelector模型配置(配置模型的默认接口,查询接口为 list,回显接口为 listByKeys)string-
fixQueryParam固定查询参数object{}
tableProps表格属性object-
listUrl查询接口string-
listDsId查询接口string-
dataAttr数据属性Array | string[""]
valueAttr值属性(将该字段的值绑定到组件上)Array | string[""]
valueExpr值表达式(优先级高于属性)Function | string-
labelAttr标签属性(将显示该字段到挑选框输入框中)Array | string[""]
labelExpr标签表达式(优先级高于值属性)Function | string-
listByIdsUrl回显接口string | Function-
listByIdsDsId回显接口(用于在表单编辑页中,显示值属性对应的标签属性值)string-
echoRequestType请求方式(回显接口请求方式)string"post"
listByIdsMethod回显请求(请求体:["id","id"];请求参数:id="id,id"ids="id,id"string"body"
echoParamAppends参数名(回显参数名后是否追加 s:追加 s 为 ids=xxx,不追加 s 为 id=xxxstring"appends"

数据配置 · 查询条件

参数说明类型默认值
queryParamType参数属性(单个变量如 username=xxx,多层变量如 user.username=xxxstring"singleWord"
query查询条件Array-
queryColumns查询列数number-

数据配置 · 显示列

参数说明类型默认值
columns显示列Array-

⚠️ 没有 options/multiple/disabled/clearable/filterable/remote/remoteMethod/valueKey/labelKey 属性。数据源用 listUrl(接口)或 list(本地),字段映射用 valueAttr/labelAttr/dataAttr(非 valueKey/labelKey)。


Events 事件

事件名说明回调参数
update:modelValuev-model 更新(value: string | string[]) => void
change选择变化时触发() => void
ok确认选择时触发() => void
clear清空时触发() => void

⚠️ 没有 blur 事件


常见场景

场景 1:选择关联客户(接口数据源)

vue
<jh-picker
  v-model="form.customerId"
  :list-url="customerApi.list"
  :list-by-ids-url="customerApi.getByIds"
  :value-attr="['id']"
  :label-attr="['name']"
  :data-attr="['data', 'records']"
  :columns="customerColumns"
  :query="customerQueryItems"
  title="选择客户"
/>

场景 2:本地静态数据

vue
<jh-picker
  v-model="form.materialId"
  :list="materialList"
  :value-attr="['id']"
  :label-attr="['name']"
  :columns="materialColumns"
  title="选择物料"
/>

场景 3:按钮模式

vue
<jh-picker
  v-model="form.userId"
  show-type="button"
  button-type="primary"
  button-icon="Search"
  show-label="选择用户"
  :list-url="userApi.list"
  :value-attr="['id']"
  :label-attr="['name']"
  :columns="userColumns"
  title="选择用户"
/>

关联组件

组件说明
jh-picker平铺列表数据选择(本组件)
jh-tree-picker树形数据选择(组织树、分类树)

注意事项

  1. 数据源必须配置

    • 接口模式:listUrl(列表查询)+ listByIdsUrl(ID 回显)+ valueAttr/labelAttr/dataAttr(字段映射)+ columns(弹窗表格列)+ query(查询条件)
    • 本地模式:list(静态数组)+ valueAttr/labelAttr + columns
  2. 多选用 :single="false"

    • 不是 multiple;多选返回值类型由 dataType 控制(array/string
  3. 字段映射用 attr 系列

    • valueAttr(值)、labelAttr(显示标签)、dataAttr(列表数据路径)均为数组路径,如 ["data", "records"]
  4. 组件仅返回关联 ID

    • 其他字段需自行处理或由后端返回

推荐作为平台统一的关联数据选择组件使用!

You may not distribute, modify, or sell this software without permission.