项目需要,可选择的下拉树,由于数据过多,显示要有层级感,所以使用了懒加载模式

vue-treeselect官网:https://www.vue-treeselect.cn/

1、前端代码

1、下载依赖

  1. npm install --save @riophae/vue-treeselect

2、引用进来

  1. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  2. import Treeselect from "@riophae/vue-treeselect";
  3. import {LOAD_CHILDREN_OPTIONS} from '@riophae/vue-treeselect'

3、html

  1. <treeselect
  2. v-model="form.deptId"
  3. :options="deptList"
  4. :loadOptions="loadOptions"
  5. placeholder="选择组织机构"
  6. ></treeselect>

4、js

查看代码
  1.  <script>
  2. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  3. import Treeselect from "@riophae/vue-treeselect";
  4. import {LOAD_CHILDREN_OPTIONS} from '@riophae/vue-treeselect'
  5. export default {
  6. name: "deptCoding",
  7. components: {
  8. Treeselect
  9. },
  10. data(){
  11. return{
  12. form: {},
  13. // 部门集合
  14. deptList: [],
  15. }
  16. },
  17. created() {
  18. //初始化组织机构
  19. this.getdatafromback("-1")
  20. },
  21. watch:{
  22. // 监听deptId
  23. 'form.deptId':'selectChangedBindDeptName'
  24. },
  25. methods: {
  26. // 获取选择组织对应组织名称
  27. selectChangedBindDeptName(deptId){
  28. console.log("=========",deptId);
  29. const deptList = this.deptList;
  30. // 获取选择的对应组织名称
  31. this.recursionDept(deptId,deptList);
  32. },
  33. // 递归寻找组织名称
  34. recursionDept(deptId,deptList) {
  35. deptList.forEach(value => {
  36. if (value.id === deptId) {
  37. this.form.deptName = value.label;
  38. return;
  39. }
  40. if (value.children) {
  41. this.recursionDept(deptId, value.children);
  42. }
  43. })
  44. },
  45. // 查询树父组织列表
  46. getdatafromback2(orgCode) {
  47. getorganization({'searchParams': {'orgCode': orgCode}}).then(res => {
  48. const deptList = res.responseBody;
  49. deptList.forEach(d => {
  50. var dept = {};
  51. dept.id = d.orgCode;
  52. dept.label = d.orgName;
  53. dept.children = null;
  54. this.deptList.push(dept);
  55. })
  56. })
  57. },
  58. // 加载子节点数据
  59. loadOptions({action,parentNode,callback}) {
  60. if (action === LOAD_CHILDREN_OPTIONS) {
  61. // 加载点击节点的子节点数据
  62. getorganization({'searchParams': {'orgCode': parentNode.id}}).then(res => {
  63. const deptList = res.responseBody;
  64. var arr = [];
  65. if (deptList.length > 0) {
  66. deptList.forEach(d => {
  67. var dept = {};
  68. dept.id = d.orgCode;
  69. dept.label = d.orgName;
  70. dept.children = null
  71. // 后端返回参数,判断是否还有子节点
  72. if (!d.attributes.count) {
  73. delete dept.children // 为末级时删掉children,就不会出现末级小箭头
  74. }
  75. arr.push(dept);
  76. })
  77. }
  78. parentNode.children = arr;
  79. })
  80. callback();
  81. }
  82. },
  83. }
  84. }
  85. </script>

2、后端返回结构

至此over

最终效果图:

Vue-treeselect 实现下拉树懒加载,末节点不要箭头的更多相关文章

  1. 分页插件思想:pc加载更多功能和移动端下拉刷新加载数据

    感觉一个人玩lol也没意思了,玩会手机,看到这个下拉刷新功能就写了这个demo! 这个demo写的比较随意,咱不能当做插件使用,基本思想是没问题的,要用就自己封装吧! 直接上代码分析下吧! 布局: & ...

  2. 页面滚动动态加载数据,页面下拉自动加载内容 jquery

    <!DOCTYPE=html> <html> <head> < script src="js/jquery.js" type=" ...

  3. Android UI--自定义ListView(实现下拉刷新+加载更多)

    Android UI--自定义ListView(实现下拉刷新+加载更多) 关于实现ListView下拉刷新和加载更多的实现,我想网上一搜就一堆.不过我就没发现比较实用的,要不就是实现起来太复杂,要不就 ...

  4. Jquery页面滚动动态加载数据,页面下拉自动加载内容

    <!DOCTYPE=html> <html> <head> <script src="js/jquery.js" type="t ...

  5. Android Demo 下拉刷新+加载更多+滑动删除

    小伙伴们在逛淘宝或者是各种app上,都可以看到这样的功能,下拉刷新和加载更多以及滑动删除,刷新,指刷洗之后使之变新,比喻突破旧的而创造出新的,比如在手机上浏览新闻的时候,使用下拉刷新的功能,我们可以第 ...

  6. PullToRefresh下拉刷新 加载更多 详解 +示例

    常用设置 项目地址:https://github.com/chrisbanes/Android-PullToRefresh a. 设置刷新模式 如果Mode设置成Mode.PULL_FROM_STAR ...

  7. Android智能下拉刷新加载框架—看这些就够了

    一些值得学习的几个下拉刷新上拉加载开源库 Android智能下拉刷新框架-SmartRefreshLayout 支持所有的 View(AbsListView.RecyclerView.WebView. ...

  8. 微信小程序 - (下拉)加载更多数据

    注意和后端配合就行了,前端也只能把数据拼接起来! 无论是下拉加载还是加载更多,一样的道理! 注意首次加载传递参数 注意每次加载数据数 wxml <view class='table-rank'& ...

  9. uni-app下拉刷新加载刷新数据

    onPullDownRefresh监听该页面用户下拉刷新事件需要在 pages.json 里开启 enablePullDownRefresh "globalStyle": { } ...

  10. vue+element树组件 实现树懒加载

    本文连接https://www.cnblogs.com/aknife/p/11709255.html 一.页面样式 二.数据库 三.前端页面代码 <template> <el-tre ...

随机推荐

  1. 如何在 vue3 中使用 jsx/tsx?

    我们都知道,通常情况下我们使用 vue 大多都是用的 SFC(Signle File Component)单文件组件模式,即一个组件就是一个文件,但其实 Vue 也是支持使用 JSX 来编写组件的.这 ...

  2. 【机器学习与深度学习理论要点】11.什么是L1、L2正则化?

    机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作 L1-norm 和L2-norm,中文称作 L1正则化 和 L2正则化,或者 L1范数 和 L2范数.L1正 ...

  3. 继承 extends

    首先是基础的继承关系,用extend就可以继承. 再者是继承的东西,包括:变量(也包括类变量).全部非私有的属性和方法(除了父类的构造方法) 注:构造方法 class C{ public C() { ...

  4. springMVC中注解

    其中常见注解: 1.@RequestMapping:用于请求url路径,可用于类和方法上,用于类上,则表示类中所有响应请求的方法都是以该路径作为父路径. 2.@RequestBody:注解实现接收 h ...

  5. node可以用nvm快速切换版本,golang如何快速切换版本?用gvm就行。

    使用 gvm 可以带来以下好处: 快速切换 Golang 版本,方便进行版本测试和开发: 可以在多个项目中同时使用不同版本的 Golang 包和工具,避免冲突: 可以通过 gvm 管理不同版本的 Go ...

  6. 2022-09-11:arr是一个可能包含重复元素的整数数组,我们将这个数组分割成几个“块”, 并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。 我们最多能将数组分成

    2022-09-11:arr是一个可能包含重复元素的整数数组,我们将这个数组分割成几个"块", 并将这些块分别进行排序.之后再连接起来,使得连接的结果和按升序排序后的原数组相同. ...

  7. 2020-12-24:MQ中,如何保证消息不丢失?

    福哥答案2020-12-24: 生产者丢失消息:如网络传输中丢失消息.MQ 发生异常未成功接收消息等情况. 解决办法:主流的 MQ 都有确认或事务机制,可以保证生产者将消息送达到 MQ.如 Rabbi ...

  8. vue全家桶进阶之路10:修饰符

    Vue2 中的修饰符是指在指令后面添加点号(.)和修饰符名称的方式,用于控制指令的行为.修饰符可以分为事件修饰符和属性修饰符两种类型,下面分别介绍它们的作用和使用方法. 事件修饰符 事件修饰符用于控制 ...

  9. 使用umi+dva做一个demo

    最初只是使用react 进行开发项目,发现项目过大状态管理起来就相当困难,虽然有redux, mobx,但是使用起来还是相当繁琐,而目前umi有现成的轮子使用简单,当然愿意尝试了,趁现在假期有时间简单 ...

  10. 火爆,Github标星240K的编程学习路线图,适合所有程序员!

    推荐一个涵盖开发.运维.产品设计的学习路线图,在Github已经start超过240K,包括各门编程语言! 一.涵盖的路线图 该项目涵盖了非常全面的学习路线图: 前端路线图 后端路线图 ASP.NET ...