xmselect下拉树方法封装

文档

开发文档地址点击跳转

渲染dom元素 xmSelectUtil.js


<link rel="stylesheet" href="/plugin/layui/css/admin.css" >
<script src="/plugin/layui/lay/modules/xm-select.js"></script>
<script src="/plugin/layui/lay/modules/xm-select.js"></script>
<script src="/js/xmSelectUtil.js"></script>

<div class="layui-inline">
	<label class="layui-form-label">组织机构</label>
		<div class="layui-input-inline">
			<ul  id="query_organ_tree" data-id="0"></ul>
		</div>
	</div>

<script>

 //渲染下拉树
		var organTreeObj = renderselect("query_organ_tree",'请选择组织机构',true,true,false,"500px");

		//请求下拉数据  填充下拉树数据
		$.ajax({
			url : '/admin/organ/loadOrganListNew',
			type : 'get',
			data : {},
			success : function(res){
				if(res.status == '0'){
					list = res.data.childList || [];
					var selval = arrayToTree(list,0);
					organTreeObj.update({
						data: selval,
						autoRow: true,
					});
				}
			}
		});

 // var organId =  organTreeObj.getValue('valueStr'); //获取选中值

</script>

渲染下拉树工具类 xmSelectUtil.js

/**
 *
 * @param id 要渲染的dom
 * @param tips 下拉框默认显示字样
 * @param clickClose  是否开启单选完关闭下拉框
 * @param filterable 是否开启搜索
 * @param radio 是否开启单选
 * @param height  高度 "auto"
 * @returns {*}
 */
function renderselect(id,tips,clickClose,filterable,radio,height){
    return xmSelect.render({
        el: "#"+id,
        tips: tips,
        clickClose: clickClose,       //单选完关闭下拉框
        filterable: filterable,       //搜索
        direction: 'down',      // 展开方向 下
        radio: radio,            //单选
        tree: {
            //把tree删掉就是下拉框
            show: true, //是否显示树状结构
            showFolderIcon: true, //是否展示三角图标
            showLine: true, //是否显示虚线
            expandedKeys: true , 默认展开节点的数组, 为 true 时, 展开所有节点
            //是否严格遵守父子模式
            //strict: false
        },
        height: height,  //"auto"
        data: [],
        model: {
            label: {type: 'text'}
        }  //文本显示模式
        , on: function (data) {
            // console.log(data)
            if (data.isAdd) {
                //$("#"+id+"input").val(data.arr[0].value)
                return data.change.slice(0, 1)
            }
        },
    });
}

/**
 * 数组转化为树形结构
 * @param list
 * @returns {*[]}
 */
function arrayToTree (arr, pid){
    var list = [];
    arr.map(item=>{
        if (item.parent == pid){
            var result = {
                value : item.id,
                name : item.name,
                selected : false,
                disabled : false,
                parent : item.parent,
                children : []
            };
            list.push(result);
        }
    });

    list.map(item=>{
        item.children = arrayToTree(arr,item.value) ;
    })
    return list;
};


/**
 * 获取选中的值
 * @param item 下拉框对象
 * @returns {*}
 */
function getXmSelectValue(item){
    return item.getValue('valueStr');
}

/**
 * 赋值
 * @param item
 * @param value
 */
function setXmSelectValue(item,value) {
    item.setValue(value)
}



数据结构

data = [
{
	value :"",
    name : "",
     selected : false,
     disabled : false,
     parent : "",
     children : []
},
{
	value :"",
    name : "",
     selected : false,
     disabled : false,
     parent : "",
     children : [{
			value :"",
		    name : "",
		     selected : false,
		     disabled : false,
		     parent : "",
		     children : []
		}]
}
]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好!对于您提到的 "xmselect layui" ,我理解您是在询问关于在layui中使用xmSelect方法xmSelect是一款基于jQuery的下框插件,而layui是一款轻量级的前端UI框架。要在layui中使用xmSelect,您需要先引入相应的库文件。 首先,您需要在页面中引入jQuery库和layui库: ```html <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/layui@2.6.8/dist/css/layui.css"> <script src="https://cdn.jsdelivr.net/npm/layui@2.6.8/dist/layui.all.js"></script> ``` 然后,您需要引入xmSelect的样式文件和JavaScript文件: ```html <link rel="stylesheet" href="https://unpkg.com/xm-select/dist/css/xm-select.css"> <script src="https://unpkg.com/xm-select"></script> ``` 接下来,在您需要使用xmSelect的地方,可以使用以下代码进行初始化: ```javascript layui.use(['xmSelect'], function () { var xmSelect = layui.xmSelect; // 初始化xmSelect var demoSelect = xmSelect.render({ el: '#selectId', // 容器ID language: 'zh-CN', // 设置语言为中文 data: [{name: '选项1', value: '1'}, {name: '选项2', value: '2'}, {name: '选项3', value: '3'}], // 下框选项数据 filterable: true, // 是否启用搜索功能 radio: true // 是否单选模式 // 其他配置项... }); }); ``` 请注意,上述代码中的 `#selectId` 是一个容器元素的ID,您需要在页面中创建一个对应的 `<div id="selectId"></div>` 元素作为xmSelect的容器。 通过以上步骤,您就可以在layui中使用xmSelect了。当然,您也可以根据自己的需求进一步定制化配置,具体参数和用法可以参考xmSelect的官方文档(https://gitee.com/xm-plus/xm-select)。 希望以上信息对您有所帮助!如有任何疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成年人的苦衷

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值