1. 程式人生 > >高階查詢元件dynamicCondition升級為v2.0.0版本(一)

高階查詢元件dynamicCondition升級為v2.0.0版本(一)

效果預覽:
1.省份和城市可以實現聯動效果。
2.可以自定義查詢條件編輯器。如下拉樹,單選按鈕組。
效果預覽

新版本特性:
1.新增ops和allowDel屬性
2.支援擴充套件編輯器。可以實現下拉框級聯,下拉樹,單選組等ui控制元件。
3.新增輔助介面:instance.getRowDivs(fieldName),instance.getVal(fieldName),afterOpen
具體使用後面介紹。
首先介紹下查詢元件一般使用步驟吧。

第一步,首先引入相關的js和css檔案。

<link  href="/static/layui/css/layui.css" />
<script src="/static/layui/layui.js"></script>

js中模組按需載入元件:

layui.config({
  base: '/static/layui-extend/' //設定擴充套件的Layui模組的所在目錄,一般用於外部模組擴充套件
}).extend({
	dynamicCondition: 'dynamicCondition/dynamicCondition',
}).use(['table','form','dynamicCondition'], function(){
	//這裡寫你的業務程式碼
})

檔案存放路徑:
在這裡插入圖片描述

第二步,編輯html頁面。

<div id="msg" style="margin-top:10px;margin-left:10px;">查詢條件:</div>	
   <ul id="dynamicCondition" style="display:none;">
	<li field="DynamicCondition.name" title="姓名" ops="equal,like,end" edit="text" layVerify=""></li>
	<li field="DynamicCondition.sex" title="性別" edit="select" layVerify="number" templet="#dict-sex"></li>
	<li field="DynamicCondition.birthday" title="生日" edit="date" layVerify=""></li>
	<li field="DynamicCondition.phone" title="手機號碼" edit="text" layVerify=""></li>
</ul>
<script type="text/html" id="toolbarBts">
	 <div>
	 	<a class="layui-btn layui-btn-xs" onclick="dynamicConditionSave()" #(printStyle(session,"/demo/dynamicCondition/save"))>新增</a>
	 	<a class="layui-btn layui-btn-xs" onclick="dynamicConditionQuery()" #(printStyle(session,"/demo/dynamicCondition/list"))>查詢</a>
	 </div>
</script>
<table class="layui-hide" id="listTable" lay-filter="listMainTable"></table>

第三步,編輯js頁面。
1.元件自帶查詢條件編輯器有text(文字輸入框),select(下拉框),date(日期輸入框)。
如果要擴充套件編輯器,則先定義擴充套件編輯器。具體定義方法後面會講。點選檢視編輯器擴充套件。
2.建立一個查詢元件例項。

var dc = dynamicCondition.create({
  		//通過容器選擇器傳入,也可以$("#dynamicCondition"),或者document.getElementById("dynamicCondition")
  		elem:"#dynamicCondition"  //對應第二步中ul標籤的id
	  	,tableId:"listTableId"  //tableId對應table.render(config)的config.id引數.
		,conditionTextId:"#msg" //對應第二步中查詢條件容器div的id
		//,instanceName:"twoInstance" //單例項不配置,一個頁面多個例項時配置。
	});

3.設定初始查詢條件。如果沒有,可以跳過這一步。

dc.setCondition([["DynamicCondition.province",null,""],["DynamicCondition.city",null,""]
		  ,["DynamicCondition.goodsClassifyId",null,""],["DynamicCondition.name","like","張三"]
		 ,["DynamicCondition.sex",null,{value:1,text:"男"}]
		 ,["DynamicCondition.birthday","between","2018-01-01","2018-12-31"]
		,["DynamicCondition.logicDel",null,{value:'N',text:"是"}]  
  ]);

設定初始條件的引數是一個二維陣列。[“DynamicCondition.province”,null,""]
第一個引數:對應查詢條件的li裡的field屬性值。
第二個引數:取值範圍:equal,like,between,start,end,unequal,empty 或者為null(如果為null則等價equal)
第三個引數:可以是字串或者帶value和text屬性的物件,如{value:1,text:“男”}。表示對應條件的值。
第四個引數:這個只有當第二個引數是between,才有效。
4.渲染表格。和以前的渲染基本一樣,不同點在where的設定。
當有初始條件時,通過dc.buildRequestData()可以設定查詢條件。

table.render({
    elem: '#listTable'
    ,url:'/#(appName)/demo/dynamicCondition/list'
    ,method:"post"
    ,where: dc.buildRequestData()
    ,sortType:'server'
    ,height: tableDivHeight
    ,cellMinWidth: 80 //全域性定義常規單元格的最小寬度,layui 2.2.1 新增
    ,toolbar: '#toolbarBts'
    ,cols: [[
       {field:'layui_seq', title: '序號',width:80,align:'center' }
    	   ,{field:'id', title: 'id',sort:true} 
    	   ,{field:'name', title: '姓名',sort:true} 
    	   ,{field:'sex', title: '性別',sort:true,templet: '<div>{{ getDictLabel("dict-sex", d.sex) }}</div>'} 
    	   ,{field:'birthday', title: '生日',sort:true} 
    	   ,{field:'phone', title: '手機號碼',sort:true} 
    	   ,{field:'email', title: '郵箱',sort:true} 
    	   ,{field:'province',  title: '省份',sort:true} 
    	   ,{field:'city',  title: '城市',sort:true} 
    	   ,{field:'goodsClassifyName',  title: '商品分類',sort:true} 
    	   ,{field:'logicDel', title: '有效',width:80,templet: '#logicDelTpl',sort:true} 
      ,{fixed: 'right', width:178, align:'center', toolbar: '#barBtns',title: '操作'} //單元格內容水平居中
    ]]
  	,id: 'listTableId'
  	,page: true
  	,limit:#(pageSize)
  });

5.點選查詢按鈕彈出視窗。

function dynamicConditionQuery(){
	dynamicCondition.getInstance().open();
}

由於dc是區域性變數,所以用dynamicCondition.getInstance()代替。
當有多個例項時,可以dynamicCondition.getInstance(instanceName)獲取例項。
整個元件執行流程大概就是上面這樣。下一章介紹如何使用這些新特性。

相關連結:
外掛原始碼:去碼雲下載 或者 去layui官網下載
體驗地址1:動態新增條件查詢Demo
體驗地址2:帶後臺的查詢demo
基於layui的動態新增條件查詢ui外掛
高階查詢元件dynamicCondition升級為v2.0.0版本(二)
高階查詢元件下拉框聯動(三)