当前位置: 首页 > article >正文

uni-data-picker级联选择器、fastadmin后端api

记录一个部门及部门人员选择的功能,效果如下:

组件用到了uni-ui的级联选择uni-data-picker

开发文档:uni-app官网

组件要求的数据格式如下:

后端使用的是fastadmin,需要用到fastadmin自带的tree类生成部门树 ,后端代码如下:

 /*** 获取部门及员工数据(树形结构)适用于uni-ui的uni-data-picker*/public function getDepartmentAndStaff(){// 获取所有部门(含层级关系)$departments = Db::name('wecom_department')->field('id, name, parent_id')->order('id ASC')->select();// 构建部门树$tree = new Tree();$tree->init($departments,'parent_id','    ');$treeList = $tree->getTreeList($tree->getTreeArray(210), 'name'); // 从顶级部门开始// 处理每个部门下的员工$result = [];foreach ($treeList as $dept) {$deptData = ['text' => $dept['name'],       // 前端显示名称'value' => 'dept_' . $dept['id'], // 部门唯一标识'children' => [],              // 子节点(员工或子部门)// 保留元数据(可选,前端如需区分部门/员工可使用)'meta' => ['type' => 'department','id' => $dept['id']]];// 查询部门下的员工(假设部门ID字段为department,需根据实际表结构调整)$staffList = Db::name('wecom_staff')->where('department', $dept['id']) // 员工表中部门关联字段->field('id, name')->order('id ASC')->select(); // 转换为数组// 转换员工数据格式$deptData['children'] = array_map(function ($staff) {return ['text' => $staff['name'],      // 员工显示名称'value' => 'staff_' . $staff['id'], // 员工唯一标识'isLeaf' => true,              // 标记为叶子节点(无子节点)'meta' => ['type' => 'employee','id' => $staff['id']]];}, $staffList);$result[] = $deptData;}$this->success('获取成功', $result);}

注意的点:tree->init()要传三个参数,特别是第二第三个参数,第二个参数应该为父id的字段名,第三个是空格占位符,默认是  在html会正常识别,但是小程序不行,所以要自己定义占位符。

tree类文件的注释也写的非常 清晰了。

设置了自定义占位符和默认的区别。

前端页面的调用,截取了部分:

<template><!-- 借用信息表单 --><view class="form-section"><view class="form-item"><text class="label">所属部门</text><uni-data-picker :localdata="departmentData" popup-title="请选择班级" @change="onchange"@nodeclick="onnodeclick"></uni-data-picker></view></view>
</template><script setup>import {ref,computed} from 'vue'import request from '@/utils/http2.js'const departmentData = ref([])onMounted(() => {// 加载部门树request({url: '/api/wecomapi/getDepartmentAndStaff',method: 'GET'}).then(res=>{if (res.code) {departmentData.value = res.data;}})})</script>

http://www.lryc.cn/news/2395749.html

相关文章:

  • 8天Python从入门到精通【itheima】-62~63
  • 运维 pgsql 安装完后某次启动不了
  • Linux基本指令/下
  • matlab中绘图函数plot
  • 在线音乐服务器测试报告
  • spark-AQE/Tungsten介绍及其触发条件
  • leetcode-hot-100 (矩阵)
  • 深度学习中常见的超参数对系统的影响
  • 评标专家系统随机抽选 开发 Excel 中使用东方仙盟软件助理——未来之窗——仙盟创梦IDE
  • MySQL、PostgreSQL、Oracle 区别详解
  • 【第4章 图像与视频】4.6 结合剪辑区域来绘制图像
  • 【Linux】Linux文件系统详解
  • IDEA使用Git进行commit提交到本地git空间后撤回到commit版本之前
  • LangChain完全指南:从入门到精通,打造AI应用开发新范式
  • 深入解析Vue.js:构建现代Web应用的高效之道
  • VS Code / Cursor 将默认终端设置为 CMD 完整指南
  • mybatis plus的源码无法在idea里 “download source“
  • 移动安全Android——客户端数据安全
  • Python包管理器 uv替代conda?
  • 数据库系统概论(十)SQL 嵌套查询 超详细讲解(附带例题表格对比带你一步步掌握)
  • Git仓库大文件清理指南
  • 华为OD机试真题——最小矩阵宽度(宽度最小的子矩阵)(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 苹果公司计划按年份来重命名重大的软件,将升级iOS 18软件至iOS 26
  • 园区智能化集成平台汇报方案
  • 奥威BI+AI——高效智能数据分析工具,引领数据分析新时代
  • Spark on Hive表结构变更
  • python做题日记(11)
  • 2025——》NumPy中的np.logspace使用/在什么场景下适合使用np.logspace?NumPy中的np.logspace用法详解
  • STM32F407VET6学习笔记8:UART5串口接收中断的Cubemx配置
  • UE5.5 pixelstreaming插件打包报错