Treeselect树形组件以及-其他树形组件的使用

2 篇文章 0 订阅
1 篇文章 0 订阅

1.下载插件

npm install @riophae/vue-treeselect --save

2.main.js页面中引入,声明组件

import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
Vue.component("Treeselect", Treeselect);

import { handleTree } from "@/utils/ruoyi";//该文件可从若依下载
Vue.prototype.handleTree = handleTree

3-1.页面使用

<el-form-item label="商铺类型" prop="shopTypeId">
 <!-- <el-tree :data="classList" :props="props" @node-click="handleNodeClick"></el-tree> 看element文档 列表展示用这个-->
<!-- 表单展示用treeselect -->
   <treeselect
      v-model="personalForm.shopTypeId"
      :options="classList"
      :normalizer="normalizer"
      :show-count="true"
      placeholder="请选择商铺类型"
    />
</el-form-item>

3-2.data字段

data(){
	return{
		//商铺类型
		classList: [],
		personalForm:{
		 	shopTypeId: null, //商家类型id,定义为null/undefined输入框不会出现---unknown
		}
	}
}

3-3.methods方法

/** 转换树形数据结构(商铺类型) */
normalizer(node) {
  if (node.cereShopType && !node.cereShopType.length) {
    delete node.cereShopType;
  }
  return {
    id: node.typeId,
    label: node.typeName,
    children: node.cereShopType
  };
},
//商铺类型
getClassList() {
  let that = this;
  let params = {
    url: "/api/check/getShopType",
    method: "get",
  };
  this.sendReq(params, (res) => {
    if (res.code === "") {
      //this.classList = res.data;//当不需要给树形添加-顶级站点-的时候-直接取data。
      const menu = { typeId: 0, name: '顶级站点'};
      menu.children = this.handleTree(res.data, "typeId");//给树形结构添加id为0的顶级站点,handleTree为引入ruoyi的文件
      this.classList .push(menu);
    } else {
      that.$message({
        message: res.message,
        type: "error",
      });
    }
  });
},

(备注:给自己看的参考突突到家-入驻-商铺类型)其他树形组件:
vue-treeselect的常见bug:(unknown)
找到node-modules/@riophae/vue-treeselect/dist/vue-treeselect.cjs.js该文件下的(unknown),然后替换为(请选择)
在这里插入图片描述
在这里插入图片描述

二、el-cascader组件
 <el-cascader v-model="tableFrom.parent_site_id" :options="treeArr" :props="Props" clearable @change="getList(1)" /> 
data中定义value、lable、children的键值,如果key和value相同就不用重新定义了
siteProps: {
  	value: "id",
	label: "name",
 	children: "children",
 	emitPath: false,
 	multiple: true,//多选-1,2,3级都能选,去掉,只能选第三级
 	checkStrictly:true,//选中父级后,是否勾选子级;false勾选,true不勾选
},

样式如下:
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
抱歉,由于我是一名AI语言模型,无法提供完整的编程代码。但是,我可以给您提供一些基本的步骤、示例和参考链接,以帮助您使用Element UI框架来创建treeselect树形菜单。 # 步骤: 1. 安装Element UI库: ```bash npm i element-ui -S ``` 2. 在Vue项目中引入Element UI,并注册所需组件:`TreeSelect`和`Option`。 ```javascript import Vue from 'vue'; import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); // 在组件中注册 import Treeselect from 'vue-treeselect' import 'vue-treeselect/dist/vue-treeselect.css' Vue.component('treeselect', Treeselect) ``` 3. 创建数据源(由于treeselect是一个树形结构,因此需要的是具有父/子关系的数据)。 ```javascript data() { return { // 模拟数据源 treeData: [{ id: 1, label: '一级 1', children: [{ id: 4, label: '二级 1-1', children: [{ id: 9, label: '三级 1-1-1', }, { id: 10, label: '三级 1-1-2', }] }] }, { id: 2, label: '一级 2', children: [{ id: 5, label: '二级 2-1' }, { id: 6, label: '二级 2-2' }] }, { id: 3, label: '一级 3', children: [{ id: 7, label: '二级 3-1' }, { id: 8, label: '二级 3-2' }] }] } } ``` 4. 在模板中使用`treeselect`组件,并将`treeData`传递给它。默认情况下,`treeselect`会自动将数据渲染为树形结构。如果需要自定义节点渲染,可以通过`option-component` prop来传递自定义Vue组件。 ```html <template> <div> <treeselect v-model="selected" :options="treeData" :multiple=true :clearable=true placeholder="请选择" :no-children-text="'暂无子级'" :loading=true :disabled=true /> </div> </template> <script> export default { name: 'MyComponent', data() { return { // 值 selected: null, // 模拟数据源 treeData: [ { id: 1, label: '一级 1', children: [ { id: 4, label: '二级 1-1', children: [ { id: 9, label: '三级 1-1-1' }, { id: 10, label: '三级 1-1-2' } ] } ] }, { id: 2, label: '一级 2', children: [ { id: 5, label: '二级 2-1' }, { id: 6, label: '二级 2-2' } ] }, { id: 3, label: '一级 3', children: [ { id: 7, label: '二级 3-1' }, { id: 8, label: '二级 3-2' } ] } ] } } } </script> ``` 5. 上述代码可以生成一个带有“一级/二级/三级”级别的简单树形菜单。 # 示例 以下是一个简单的treeselect树形菜单,演示了如何使用Element UI框架。它展示了三个级别的节点,并使用了一些常见的prop和事件。您可以根据需要进行修改和扩展。 ```html <template> <div> <h3>treeselect树形菜单:</h3> <treeselect v-model="selected" :options="treeData" :multiple=true :clearable=true placeholder="请选择" :no-children-text="'暂无子级'" :loading=true :disabled=true /> <h3>选中的值:</h3> <pre>{{ selected }}</pre> </div> </template> <script> import Treeselect from 'vue-treeselect'; import 'vue-treeselect/dist/vue-treeselect.css'; export default { components: { Treeselect }, name: 'TreeSelectExample', data() { return { selected: null, treeData: [{ id: 1, label: '一级 1', children: [{ id: 4, label: '二级 1-1', children: [{ id: 9, label: '三级 1-1-1', }, { id: 10, label: '三级 1-1-2', }] }] }, { id: 2, label: '一级 2', children: [{ id: 5, label: '二级 2-1' }, { id: 6, label: '二级 2-2' }] }, { id: 3, label: '一级 3', children: [{ id: 7, label: '二级 3-1' }, { id: 8, label: '二级 3-2' }] } ] }; }, methods: { handleNodeSelected(node) { console.log('节点选中了:', node); }, handleNodeDeselected(node) { console.log('节点取消选中了:', node); }, handleTreeLoaded() { console.log('树形结构已加载'); }, handleInputChange(value) { console.log('输入框值变化了:', value); } } }; </script> ``` # 参考链接 - [vue-treeselect官方文档](https://vue-treeselect.js.org/) - [Element UI TreeSelect](https://element.eleme.io/#/zh-CN/component/tree-select) - [Vue.js官方文档](https://cn.vuejs.org/)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值