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

news2025/6/3 23:56:23

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

组件用到了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.coloradmin.cn/o/2395749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8天Python从入门到精通【itheima】-62~63

目录 第六章开始-62节-数据容器入门 1.学习目标 2.为什么要学习数据容器&#xff1f; 3.什么是Python中的数据容器 4.小节总结 63节-列表的定义语法 1.学习目标 2.为什么需要列表&#xff1f; 3.列表定义的基本语法 4.列表定义的基本语法-案例演示 5.列表定义的基本语…

Linux基本指令/下

目录 1.echo、cat与printf 2. > 操作符 与 >> 操作符 3. < 操作符 4.消息传送 linux文件深入 5.文件类型 6.mv命令 7.时间相关指令 8.查找命令 9.grep命令 10.zip/unzip/tar命令 11.scp命令 12.bc命令 13.uname 指令 14.快捷键大全 15.关机/重启/睡…

matlab中绘图函数plot

MATLAB中的plot函数&#xff1a;数据可视化的强大工具 引言 在科学计算和工程领域&#xff0c;数据可视化是理解和分析数据的关键步骤。MATLAB作为一款强大的数值计算软件&#xff0c;提供了丰富的绘图功能&#xff0c;其中plot函数是最基础、最常用的二维图形绘制工具。本文…

在线音乐服务器测试报告

1.项目背景 此项目主要用于模拟市面上主流的音乐软件的主要功能&#xff0c;提高自己的开发和测试能力。此项目采用的技术栈是SpringBoot MyBatis SpringMVC Mysql实现的&#xff0c;为了实现简单&#xff0c;方便测试&#xff0c;此项目没有注册功能&#xff0c;数据提前存…

leetcode-hot-100 (矩阵)

1、矩阵置零 题目链接&#xff1a;矩阵置零 题目描述&#xff1a;给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 解答 方法一&#xff1a;使用一个二维数组 这是我看到这道题目的第一个想法&am…

评标专家系统随机抽选 开发 Excel 中使用东方仙盟软件助理——未来之窗——仙盟创梦IDE

评标专家抽取系统是针对建设项目与采购招投标&#xff0c;从专家库中随机抽取参与评标专家&#xff0c;并自动进行语音通知的管理软件。符合《中华人民共和国招标投标法》及发改委颁布的《评标专家和评标专家库管理暂行办法》&#xff1b;操作简便、保密性强。 软件根据设定抽取…

【第4章 图像与视频】4.6 结合剪辑区域来绘制图像

文章目录 前言示例 前言 本节将综合运用图像处理、离屏 canvas 以及剪辑区域等技术实现墨镜效果。 示例 主线程代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport&qu…

【Linux】Linux文件系统详解

目录 Linux系统简介 Linux常见发行版&#xff1a; Linux/windows文件系统区别 Linux文件系统各个目录用途 Linux系统核心文件 系统核心配置文件 用户与环境配置文件 系统运行与日志文件 Linux文件名颜色含义 Linux文件关键信息解析 &#x1f525;个人主页 &#x1f52…

IDEA使用Git进行commit提交到本地git空间后撤回到commit版本之前

一、前言 Git作为最流行和最全面的版本控制工具&#xff0c;非常好用&#xff0c;但是操作也会比SVN复杂一些。毕竟有得有失嘛&#xff0c;所以我选择Git&#xff0c;最近在工作中&#xff0c;一不小心吧一些无关紧要的文件commit了。还好在Push之前看到&#xff0c;不过就算P…

LangChain完全指南:从入门到精通,打造AI应用开发新范式

目录 1. 引言2. LangChain 框架概述3. 架构设计与模块划分4. 核心原理深度解析5. 工作流程与执行过程6. 扩展与定制7. 性能优化策略8. 实际应用案例9. 常见问题与解决方案10. 未来发展与展望11. 总结12. 参考文献与资源 1. 引言 1.1 LangChain 简介 LangChain 是一个开源的…

VS Code / Cursor 将默认终端设置为 CMD 完整指南

文章目录 &#x1f9ed; 适用范围&#x1f4cc; 背景与问题分析&#x1f6e0; 配置步骤1. 打开设置&#xff08;settings.json&#xff09;2. 添加或更新配置3. 重启终端与编辑器 &#x1f4a1; 补充&#xff1a;支持多个终端配置&#x1f9ef; 常见问题排查✅ 总结 在 Windows…

mybatis plus的源码无法在idea里 “download source“

下载不了源码 如下&#xff1a; Souces not found for com.baomidou:mybatis-plus-extension 解决方案 运行 mvn dependency:resolve -Dclassifiersources 不知道啥作用&#xff0c;总之对我管用&#xff0c;在项目根目录运行即可&#xff0c;即根pom.xml的位置。

移动安全Android——客户端数据安全

本地文件权限配置 测试流程 &#xff08;1&#xff09;手机运行待测APP应用&#xff0c;adb执行命令找到APP包名 adb shell dumpsys activity top|findstr ACTIVITY &#xff08;2&#xff09;adb shell 进入设备&#xff0c;以Root权限进入/data/data/package包名目录下 c…

Python包管理器 uv替代conda?

有人问&#xff1a;python的包管理器uv可以替代conda吗? 搞数据和算法的把conda当宝贝&#xff0c;其他的场景能替代。 Python的包管理器有很多&#xff0c;pip是原配&#xff0c;uv是后起之秀&#xff0c;conda则主打数据科学。 uv替代pip似乎只是时间问题了&#xff0c;它…

数据库系统概论(十)SQL 嵌套查询 超详细讲解(附带例题表格对比带你一步步掌握)

数据库系统概论&#xff08;十&#xff09;SQL 嵌套查询 超详细讲解&#xff08;附带例题表格对比带你一步步掌握&#xff09; 前言一、什么是嵌套查询&#xff1f;1. 基础组成&#xff1a;查询块2. 嵌套的两种常见位置&#xff08;1&#xff09;藏在 FROM 子句里&#xff08;当…

Git仓库大文件清理指南

前言 当大文件被提交到 Git 仓库后又删除&#xff0c;但仓库体积仍然很大时&#xff0c;这是因为 Git 保留了这些文件的历史记录。要彻底清理这些文件并减小仓库体积&#xff0c;你需要重写 Git 历史。 注意事项 这会重写历史 - 所有协作者都需要重新克隆仓库 备份你的仓库 …

华为OD机试真题——最小矩阵宽度(宽度最小的子矩阵)(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

苹果公司计划按年份来重命名重大的软件,将升级iOS 18软件至iOS 26

苹果公司计划从今年开始&#xff0c;所有苹果操作系统将统一采用年份标识&#xff0c;而非此前混乱的版本号体系。苹果将在6月9日的全球开发者大会上正式宣布这一变革。周三截至发稿&#xff0c;苹果股价震荡微涨0.46%&#xff0c;重回3万亿美元市值。 苹果公司正在筹划其操作…

园区智能化集成平台汇报方案

该方案为园区智能化集成平台设计,依据《智能建筑设计标准》等 20 余项国家与行业规范,针对传统园区信息孤岛、反应滞后、经验流失、管理粗放等痛点,构建可视化智慧园区管理平台,实现大屏数据可视化、三维设备监控、智慧运维(含工单管理、巡检打卡)、能源能耗分析、AI 安防…

奥威BI+AI——高效智能数据分析工具,引领数据分析新时代

随着数据量的激增&#xff0c;企业对高效、智能的数据分析工具——奥威BIAI的需求日益迫切。奥威BIAI&#xff0c;作为一款颠覆性的数据分析工具&#xff0c;凭借其独特功能&#xff0c;正在引领数据分析领域的新纪元。 一、‌零报表环境下的极致体验‌ 奥威BIAI突破传统报表限…