使用fast-crud element-plus vue 版本实现 树形表格

项目需求

实现树形折叠表格 效果如下图
在这里插入图片描述

技术栈:fast-crud(element版本) Vue3
查看 官方示例项目代码 (去官网找到源码地址 克隆 安装依赖运行 找到对应需求)
官方示例代码
每个crud.tsx文件配置table为树形表格  和  colimns同级配置

遇到问题

如上图配置后没有生效 下述为具体的代码配置

      table: {
        lazy: true,
        load: async (row: any, treeNode: unknown, resolve: (date: any[]) => void) => {
          //懒加载,更新和删除后,需要刷新父节点的状态,见上方
          const obj = await api.GetObj(row.id);
          resolve([...obj.children]);
        }
      },

tips:遇到小问题,表格最后一级展开 ,数据会顶格向左显示 只需调整宽度即可

	columns: {
				code: {
					title: '知识点编码',
					search: {
						show: true,
					},
					type: 'input',
					//  --------------开始--------------
					column: {
						width: '300px',
					},
					// --------------结束--------------
					form: {
						show: false,
						disabled: true,
						component: {
							placeholder: '请输入知识点编码',
						},
					},
				}
			}

如何解决

查看示例的数据格式

const list = [
  {
    radio: "1",
    data: "我会懒加载",
    time: "2020-01-01 11:11:11",
    province: "wh",
    amount: 100,
    hasChildren: true,
    loaded: false,
    children: [
      {
        data: "懒加载的子数据",
        province: ["sh", "gz"],
        time: "2020-01-01 11:11:11",
        amount: 100,
        hasChildren: false,
        parentId: 1
      },
      {
        data: "懒加载的子数据2",
        province: ["sh", "sz"],
        time: "2020-01-01 11:11:11",
        amount: 100,
        hasChildren: false,
        parentId: 1
      }
    ]
  },
  {
    data: "data2",
    province: "sh",
    time: "2020-01-01 11:11:11",
    amount: 100,
    children: [
      {
        id: 999,
        data: "data1_1",
        time: "2020-01-01 11:11:11",
        province: ["gz", "sz"], // 可以逗号分隔的字符串 'gz,sz'
        amount: 100,
        children: [
          {
            id: 1000,
            data: "data1_1_1",
            time: "2020-01-01 11:11:11",
            province: ["sz", "gz"], // 可以逗号分隔的字符串 'gz,sz'
            amount: 100
          }
        ]
      },
      {
        id: 888,
        data: "data1_2",
        time: "2020-01-01 11:11:11",
        province: "sh",
        amount: 100,
        children: [
          {
            id: 889,
            data: "data1_2_1",
            time: "2020-01-01 11:11:11",
            province: "gz",
            amount: 100
          }
        ]
      }
    ]
  },
  {
    data: "data3",
    province: ["sh", "gz"],
    time: "2020-01-01 11:11:11",
    amount: 100
  },
  {
    data: "data4",
    province: ["sh", "sz"],
    time: "2020-01-01 11:11:11",
    amount: 100
  }
]

查看服务器数据返回数据格式不一致 修改数据格式为 fast-crud框架所需的数据格式 修改如下

table: {
				lazy: true,
				children: 'children',
				hasChild: 'hasChildren',
				load: async (row: any, treeNode: unknown, resolve: (date: any[]) => void) => {
					//懒加载,更新和删除后,需要刷新父节点的状态,见上方
					return request({
						url: '/api/Config/KnowledgePointSet/',
						method: 'get',
						params: { pcode: row.code, limit: 999 },
					}).then((ret: any) => {
					//  这里是  pcode_count 字段判断有没有下一级的数据 根据实际情况修改
						ret.data.map((value: any) => {
							value.hasChildren = value.pcode_count !== 0;
						});
						row.hasChildren = false;
						//  !!!很重要 需要resolve 返回服务器获取的数据 不返回树形数据不会显示的
						resolve(ret.data);
					});
				},

				iconLoaded: 'el-icon-loading', // 美化loading图标
			},

配置说明

字段名含义
lazy开启懒加载,数据多时避免页面卡顿
children服务器数据返回的树形数据字段名不是children 可以更换为服务器返回的字段名
hasChild判断是否为最后一级的数据 true为不是 false为是
load懒加载时 获取下一级数据的处理函数
iconLoaded开启懒加载时 点击下一级数据 会显示加载中的图标
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值