AGILE TEAM
Skip to content

jh-tree-picker - 树选择组件

平台统一的树形选择组件,弹窗式树选择,支持单选/多选、接口数据源、字段映射、查询参数,适用于组织、部门、菜单等树状数据选择场景

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

📦 组件位置

来源:@jhlc/common-core

ts
import "@jhlc/common-core";

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


基本用法

1️⃣ 单选(最常用)

vue
<template>
  <jh-tree-picker
    v-model="form.deptId"
    label="部门"
    placeholder="请选择部门"
    :ds-id="dsId"
    :value-attr="['id']"
    :label-attr="['name']"
    :data-attr="['data']"
  />
</template>

<script setup lang="ts">
import { ref } from "vue";

const form = ref({ deptId: "" });
</script>

dsId 指定接口数据源,value-attr/label-attr/data-attr 映射字段。single 默认 true(单选)。


2️⃣ 多选

vue
<jh-tree-picker
  v-model="form.roleIds"
  label="角色"
  :single="false"
  :ds-id="dsId"
  :value-attr="['id']"
  :label-attr="['name']"
/>

:single="false" 开启多选,v-model 绑定数组。


3️⃣ 自定义弹窗标题/宽度

vue
<jh-tree-picker
  v-model="form.userId"
  label="负责人"
  dialog-title="选择负责人"
  dialog-width="720px"
  :single="true"
  :url="apiUrl"
/>

Props 属性

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

基本属性 · 基础

参数说明类型默认值
label标题名称string""
showColon冒号booleantrue
placeholder占位提示string-
prop字段属性(用于表单校验,确定是哪个字段,选择字段后自动会设置数据绑定)Array-
modelValue / v-model数据绑定string | Array-
defaultValue默认值string-
status状态string"default"
size尺寸string"default"
labelWidth标签宽度(styleY 样式,比如 500px、100%,默认 450px)string-
maxWidth最大宽度(styleY 样式,比如 500px、100%,默认 450px)string"450px"
labelClass标签样式Array[]
single可多选booleantrue

基本属性 · 弹窗

参数说明类型默认值
dialogTitle标题名称string"请选择"
dialogWidth弹框宽度string"856px"
validFun数据校验Function-

数据配置 · 数据接口

参数说明类型默认值
urlurlstring-
methodmethodstring-
dsId查询接口string-
dataAttr数据属性Array[""]
valueAttr值属性Array-
labelAttr标签属性Array-

数据配置 · 查询条件

参数说明类型默认值
fixQueryParam固定查询参数object{}
query查询条件Array-

⚠️ 禁用/只读用 status"disabled" / "readonly"),不是 disabled。 ⚠️ 默认单选single 默认 true);多选需显式 :single="false"。 ⚠️ placeholder 默认值未定(声明为 unknown),建议显式传入。


Events 事件

事件名说明回调参数
update:modelValuev-model 更新时触发(value: string | array) => void
blur失去焦点时触发() => void
select选中节点时触发() => void

常见场景

场景 1:部门选择(单选)

vue
<jh-tree-picker
  v-model="form.deptId"
  label="部门"
  placeholder="请选择部门"
  :ds-id="dsId"
  :value-attr="['id']"
  :label-attr="['name']"
/>

场景 2:角色多选

vue
<jh-tree-picker
  v-model="form.roleIds"
  label="角色"
  :single="false"
  :ds-id="dsId"
  :value-attr="['id']"
  :label-attr="['name']"
/>

场景 3:只读查看

vue
<jh-tree-picker v-model="form.deptName" label="部门" status="readonly" />

场景 4:带固定查询参数

vue
<jh-tree-picker
  v-model="form.userId"
  label="负责人"
  :single="true"
  :ds-id="dsId"
  :fix-query-param="{ type: 'leader' }"
  :value-attr="['id']"
  :label-attr="['name']"
/>

注意事项

  1. 状态用 status,无 disabled

    • status="disabled" 禁用,status="readonly" 只读
  2. 默认单选

    • single 默认 true,多选需显式 :single="false"(v-model 绑定数组)
  3. 数据源字段映射

    • dsId/url/method 指定数据接口
    • dataAttr 取数据列表路径,valueAttr/labelAttr 映射节点值与标签
  4. v-model 类型

    • 单选:string
    • 多选:array
  5. 值变化监听

    • v-model@update:model-value;选中节点额外可监听 @select
  6. label 默认带冒号

    • showColon 默认 true,不需冒号传 :show-colon="false"

推荐作为平台统一的树选择组件使用!

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