跳到主要内容

JSelectDept部门选择 ✔


参数定义

参数类型是否必填默认值说明
value[String,Array]回显值
showButtonBooleantrue是否显示选择按钮
disabledBooleanfalse是否禁用
rowKeyStringkey取值字段配置,一般为主键字段
labelKeyStringtitle显示字段配置
defaultExpandLevelString0初始展开层级
checkStrictlyBooleanfalse父子节点选中状态不再关联
checkableBooleantrue是否显示复选框
startPidString-根节点初始值(serverTreeData不开启服务端数据转换时使用)
primaryKeyStringid主键字段
parentKeyStringparentId父ID字段
titleKeyStringtitletree节点显示文本字段
serverTreeDataBooleantrue是否开启服务端数据转换
syncBooleantrue是否开启异步加载数据
multipleBooleantruev1.1.0 是否允许多选
modalTitleString部门选择选择框标题

事件定义

事件名参数说明
getSelectResultoptions, values确认选择回调,单独使用选择框中使用该事件获取选中值

tree要求的数据格式

[{
"key": "1",
"title": "节点1",
"children":[
{
key:"1-1",
title:"子节点",
children:[]
}
]
},{
"key": "2",
"departName": "节点2",
"children":[]
}
]

使用示例

BaseForm中使用示例

{
field: 'user2',
component: 'JSelectDept',
label: '选择示例',
helpMessage: ['component模式'],
componentProps:{
labelKey:'departName',
rowKey:'orgCode'
}
}

插槽中使用示例

<template #jSelectDept="{model, field }">
<JSelectDept v-model:value="model[field]"/>
</template>

单独使用示例

<template>
<a-button type="primary" preIcon="ant-design:plus-outlined" @click="openHandle">选择</a-button>
<DeptSelectModal rowKey="id" @register="registerSelModal" @getSelectResult="onSelectOk"/>
</template>
<script lang="ts" setup>
import DeptSelectModalfrom '/@/components/Form/src/jeecg/components/modal/DeptSelectModal.vue'
// 注册选择框
const [registerSelModal, {openModal}] = useModal()
let selectValues = reactive<Recordable>({
//附值value
value: [],
});
//下发 selectValues
provide('selectValues', selectValues);
// 打开选择框
function openHandle() {
openModal()
}
// 选择确认事件
function onSelectOk(selectRows, selectKeys) {
//处理业务逻辑
}
</script>

前端转换tree数据结构

如下数据所示,后台返回的数据结构不是树形的但是必须的含有parentId,此时需要设置serverTreeData=false,开启前端转换为tree结构数据,并指定titleKey为departName,primaryKey为deptId,parentKey为parentId

[{
"deptId": "1",
"parentId": "",
"departName": "节点1",
},{
"deptId": "2",
"parentId": "",
"departName": "节点2",
}
]

代码示例

{
label: '所属部门',
field: 'selecteddeparts',
component: 'JSelectDept',
componentProps:({formActionType,formModel}) => {
return {
titleKey:"departName",
primaryKey:"id",
parentKey:"parentId",
serverTreeData:false
}
}
}

开启异步加载

当数据量过大时,我们希望tree是异步加载,此时可设置sync:true开启异步加载,如果数据结构不符合需要开启前端转换tree结构数据 代码示例

{
label: '所属部门',
field: 'selecteddeparts',
component: 'JSelectDept',
componentProps:({formActionType,formModel}) => {
return {
sync:true
}
}
}