组织架构树形选择组件使用说明(Vue3 + UniApp)

文章目录

  • 组织架构树形选择组件使用说明(Vue3 + UniApp)
      1. 效果预览
      1. 核心功能
      1. 代码实现
        1. 模板部分(Template)
        1. 脚本部分(Script)
      1. 数据结构示例(`data.js`)
      1. 插件市场链接
    • 使用建议
    • 6.总结

组织架构树形选择组件使用说明(Vue3 + UniApp)

本文介绍如何在 UniApp 项目中使用 select-tree-zhikuany 组件实现组织架构的树形展示与选择功能,支持多选、反选,并可通过事件回调返回选中数据。适用于微信小程序等多端场景。

1. 效果预览

以下为组件在实际项目中的展示效果:

图:树形结构清晰展示部门层级,支持节点展开/收起、勾选操作。

2. 核心功能

  • 树形结构展示组织架构
  • 支持多选 / 单选模式
  • 可配置是否允许取消选择(isCheck
  • 选中后可通过 $emit 回传数据至上级页面
  • 基于 Vue3 <script setup> 语法糖开发,兼容 UniApp 框架

3. 代码实现

1. 模板部分(Template)

vue 复制代码
<template>
  <view>
    <!-- 动态渲染树形选择组件 -->
    <select-tree
      :checkList="checkList"
      v-if="tree.length > 0"
      :options="prop"
      @sendValue="confirm"
      :isCheck="isCheck"
      :treeNone="tree"
    />
  </view>
</template>

⚠️ 注意:v-if="tree.length > 0" 确保数据加载完成后再渲染组件,避免空数据导致异常。


2. 脚本部分(Script)

vue 复制代码
<script setup lang="ts">
  import SelectTree from '@/components/select-tree-zhikuany/tree.vue'
  import { ref } from 'vue'
  import { onLoad } from '@dcloudio/uni-app'
  import { treeNode } from './data.js' // 组织架构树形数据源

  // 响应式数据定义
  const checkList = ref([])           // 已选择的节点列表
  const tree = ref<any>([])            // 组织架构树数据
  const prop = ref<any>(null)          // 组件配置项
  const isCheck = ref<boolean>(false)  // 是否支持取消选择

  // 接收页面传参
  const queryData = defineProps<{
    prop?: string
  }>()

  // 页面加载时初始化参数
  onLoad((params) => {
    console.log('页面加载参数:', params)

    if (params.prop) {
      prop.value = JSON.parse(params.prop)
      isCheck.value = prop.value.isCheck ?? false
    }

    // 设置组织架构树数据
    tree.value = treeNode
    console.log('组织架构数据:', tree.value)
  })

  /**
   * 处理选中值的回调函数
   * @param val - 选中的节点数组
   * @param back - 是否触发返回上一页逻辑
   */
  const confirm = (val: any, back: boolean) => {
    console.log('选中数据:', val)
    if (back) {
      backConfirm(val)
    } else {
      uni.showToast({
        title: JSON.stringify(val),
        icon: 'none',
        duration: 2000
      })
    }
  }

  /**
   * 返回上一页并传递选中数据
   * @param val - 选中的组织架构节点
   */
  const backConfirm = (val: any) => {
    uni.$emit('selectSuccess', { list: val })
    uni.navigateBack()
  }
</script>

4. 数据结构示例(data.js

确保 treeNode 数据格式符合组件要求,示例如下:

js 复制代码
export const treeNode = [
  {
    id: 1,
    label: '公司总部',
    children: [
      {
        id: 2,
        label: '技术部',
        children: [
          { id: 5, label: '前端组' },
          { id: 6, label: '后端组' }
        ]
      },
      {
        id: 3,
        label: '人事部'
      }
    ]
  }
]

✅ 节点字段可根据 prop 配置进行映射(如 labelKey, valueKey, childrenKey)。

5. 插件市场链接

本组件基于 select-tree-zhikuany(Vue3 版本) 开发,已在 UniApp 插件市场发布,支持微信小程序及其他端。

👉 点击前往插件详情页下载与文档查看

使用建议

  1. 传参规范 :通过页面跳转时使用 ?prop=${encodeURIComponent(JSON.stringify(config))} 传递配置。
  2. 事件通信 :利用 uni.$emit('selectSuccess', data) 实现跨页面数据传递。
  3. 性能优化:对于大型组织架构,建议添加虚拟滚动或懒加载功能。
  4. 类型安全 :可进一步定义 treeNodeprop 的 TypeScript 接口以提升可维护性。

6.总结

该方案通过封装良好的树形选择组件,实现了组织架构的可视化选择,具备良好的扩展性和用户体验。结合 UniApp 的跨平台能力,可广泛应用于企业级小程序管理系统中。

如有疑问或定制需求,欢迎参考插件文档或联系作者

相关推荐
java1234_小锋2 小时前
分享一套优质的微信小程序校园志愿者系统(SpringBoot后端+Vue3管理端)
微信小程序·小程序·校园志愿者
“负拾捌”1 天前
python + uniapp 结合腾讯云实现实时语音识别功能(WebSocket)
python·websocket·微信小程序·uni-app·大模型·腾讯云·语音识别
换日线°2 天前
NFC标签打开微信小程序
前端·微信小程序
浮桥2 天前
uniapp+h5 公众号实现分享海报绘制
uni-app·notepad++
菜鸟una2 天前
【微信小程序+Taro 3+NutUI 3】input (nut-input) 、 textarea (nut-texteare)类型使用避坑
前端·vue.js·微信小程序·小程序·taro
计算机毕设指导62 天前
基于微信小程序的校园二手交易系统【源码文末联系】
java·spring boot·spring·微信小程序·小程序·tomcat·maven
Java.慈祥3 天前
速通-微信小程序 2Day
微信小程序·小程序·前端框架
zandy10113 天前
AI驱动全球销售商机管理:钉钉DingTalk A1的跨域管理智能解决方案
人工智能·百度·钉钉
2501_933907213 天前
宁波小程序公司是什么?主要提供宁波微信小程序制作与服务吗?
科技·微信小程序·小程序
码云数智-大飞3 天前
微信商城小程序怎么弄?2026年主流小程序商城平台对比
微信小程序