IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> avue tree 懒加载及联动(完整案例) -> 正文阅读

[JavaScript知识库]avue tree 懒加载及联动(完整案例)

请添加图片描述

<template>
  <basic-container>
    <avue-crud
      :option="option"
      :table-loading="loading"
      :data="data"
      :page.sync="page"
      :permission="permissionList"
      :before-open="beforeOpen"
      v-model="form"
      ref="crud"
      @row-update="rowUpdate"
      @row-save="rowSave"
      @row-del="rowDel"
      @search-change="searchChange"
      @search-reset="searchReset"
      @selection-change="selectionChange"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @on-load="onLoad"
    >
    
    </avue-crud>
  </basic-container>
</template>

<script>
// 数据接口
import {
  getList,
  getSchoolList,
  getSchoolBm,
} from "@/api/basic/teacher";
export default {
  data() {
    return {
      form: {},
      query: {},
      loading: true,
     
      selectionList: [],
      option: {
        height: "auto",
        calcHeight: 30,
        tip: false,
        column: [

          {
            label: "校区",
            prop: "xiaoqu",
            type: "tree",
            // 接口对应字段
            props: {
              label: "deptName",
              value: "id",
            },
            dicData: [],
            lazy:true,
            treeLoad(node,resolve){
              console.log("节点",node)
              let stop_level = 2;
              let level = node.level;
              let data = node.data || {}
              let code = data.id;
              var list = []; 
              let callback = () => {
                  resolve((list || []).map(ele => {
                    return Object.assign(ele, {
                      leaf: level >= stop_level
                    })
                  }));
              }
               if(level ==0 ){
                  getSchoolList().then(res => {
                    list = res.data.data
                    callback()
                  });
               }
               if(level == 1){
                  getSchoolList(code).then(res => {
                    list = res.data.data
                    callback()
                  });
               }else if(level == 2){
                   getSchoolList(code).then(res => {
                    list = res.data.data
                    callback()
                  });
               }else{
                   getSchoolList().then(res => {
                    list = res.data.data
                    callback()
                  });
               }
            },
            change: ({ value }) => {
                // 联动下一级
              this.getSchoolBmFn(value);
            //   调取父及数据接口,避免再次点击没有数据
              this.getSchoolListFn()
            },
            rules: [
              {
                required: true,
                message: "请输入校区",
                trigger: "blur",
              },
            ],
          },
          {
            label: "部门",
            prop: "bumen",
            type: "tree",
              // 接口对应字段
            props: {
              label: "title",
              value: "id",
            },
            dicData: [],
            rules: [
              {
                // required: true,
                message: "请输入部门",
                trigger: "blur",
              },
            ],
          },
          
         
        ],
      },
      data: [],
    };
  },


  methods: {

  //  部门
    getSchoolBmFn(id) {
      let _this = this;
      if(id){
         getSchoolBm(id).then((res) => {
        if (res.data.code == 200) {
          _this.option.column.forEach((item) => {
            if (item.prop == "bumen") {
              item.dicData = res.data.data;
            }
          });
        }
      });
      }
     
    },

    onLoad(page, params = {}) {
      this.loading = true;
      getList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
        this.loading = false;
        this.selectionClear();
      });
    },
    // 校区数据
    getSchoolListFn() {
      let _this = this;
      getSchoolList().then((res) => {
        if (res.data.code == 200) {
          _this.option.column.forEach((item) => {
            if (item.prop == "xiaoqu") {
              item.dicData = res.data.data;
            }
          });
        }
      });
    },
   

  },
};
</script>

<style>
</style>

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:12:45  更:2022-03-16 22:13:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:54:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码