Skip to content

部门人员选择组件 - IkPicker

用于选择部门、人员、角色、岗位的组件

ik_picker.png

props

script
<!-- 枚举 -->
  export enum EType {
    "部门" = "dep",
    "用户" = "user",
    "角色" = "role",
  }

  export type TList = {
    id: string;
    name: string;
    type: EType; // 部门  用户  角色
    [key: string]: any;
  };
  export type apiType = {
    methods?: "get" | "post";
    headers?: any;
    url?: string;
    param?: any;
    paramKey?: string;
  }
  export type typeOptionType = {
    dep?: string;
    user?: string;
    role?: string;
  }
  export type propOptionType = {
    // 部门名/姓名
    name?: string;
    // 类型
    type?: string;
    // id
    id?: string
    // 头像
    avatar: string;
  }
props类型说明默认值
modelValue/v-modelArray as PropType<Array<TList>>v-model绑定 选中数据[]
dataArray as PropType<Array<TList>已选数据 - 数据回显[]
showBoolean是否显示false
widthNumber || String弹框宽度'685px'
heightNumber || String弹框高度'580px'
titleString标题'选择人员'
depListArray as PropType<Array<TList>>部门数据[]
userListArray as PropType<Array<TList>>人员数据[]
roleListArray as PropType<Array<TList>>角色数据[]
postListArray as PropType<Array<TList>>岗位数据[]
multipleBoolean是否多选true
showDepBoolean是否显示部门true
chooseTypeArray选择类型["dep"]
maxNumber最大允许选择数量 0表示不限制0
apiArray as PropType<Array<apiType>>api地址 在不传数据是传递,但须满足要求{ methods: "get", headers: null, url: "", param: null, paramKey: "type", }
typeOptionArray as PropType<Array<typeOptionType>>类型别名 dep: 'dept'{ dep: "dep", user: "user", role: "role", post: "post",}
propOptionArray as PropType<Array<propOptionType>>字段映射{ name: "name", type: "type", id: "id", avatar: "avatar", }
searchboolean搜索栏true
lazyboolean懒加载,需传递api时生效true
cacheboolean缓存已查询到的数据true
emptyTextstring空数据时显示文字"暂无数据"
placeholderstringplaceholder"模糊搜索人员、部门"
tabsArray as PropType<Array<keyof typeof ETab>>可切换tabs["group", "role", "post"]
loadingboolean加载状态true

事件

名称说明类型
ok选中触发({ // 所有选项、部门、人员、角色分别列出 ...choose.value, // 排序后的列表 sort: chooseList.value, }) => void

示例代码

vue
<template>
  <!-- 示例 -->
  <IkPicker
    v-model="item.handList"
    v-model:show="item.isShow"
    @ok="handSelected($event, index)"
    :multiple="item.multiple"
    :type-option="{
      dep: 'DEPT',
      user: 'USER',
      role: 'ROLE',
      post: 'POST',
    }"
    :api="{
      methods: 'post',
      url: pickerUrl,
      headers: {
        'Content-Type': 'application/json;charset=UTF-8',
        'Authorization': TOKEN,
      },
    }"
    :dep-list="item.depList"
    :user-list="item.userList"
    :prop-option="{
      name: 'elementName',
      id: 'elementId',
      type: 'elementType',
      avatar: 'avatar',
    }"
    :chooseType="item.chooseType"
  ></IkPicker>
</template>