bootstrap 三级联动&四级联动
三级联动在日常开发中经常用到,现在自己亲自作了一个,四级联动的效果,前端后端代码如下。
前端代码如下:
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<meta charset="utf-8">
<head th:include="include :: header"></head>
<link th:href="@{/ajax/libs/jquery-layout/jquery.layout-latest.css}" rel="stylesheet"/>
<link th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
<body class="gray-bg">
<div class="container-div ui-layout-center">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="user-form">
<input type="hidden" id="cityStateCode" name="params[cityStateCode]" value="">
<input type="hidden" id="countyCode" name="params[countyCode]">
<input type="hidden" id="applyHospitalCode" name="params[applyHospitalCode]">
<div class="select-list">
<ul>
<!--省市县三级联动-开始-->
<li style="margin-top: 12px;margin-right: 0px;">申请方:</li>
<li>
<select name="input_province" id="input_province" class="form-control" style="width: 120px;">
<option value="">---请选择---</option>
<option value="520000">贵州省</option>
</select>
</li>
<!--市级-->
<li>
<select name="input_city" id="input_city" class="form-control" style="width: 120px;">
<option selected="selected" value="">---请选择---</option>
</select>
</li>
<!--区县-->
<li>
<select name="input_area" id="input_area" class="form-control" style="width: 120px;">
<option selected="selected" value="">---请选择---</option>
</select>
</li>
<!--机构-->
<li>
<select name="input_hospital" id="input_hospital" class="form-control" style="width: 200px;">
<option selected="selected" value="">---请选择---</option>
</select>
</li>
<!--省市县三级联动-结束-->
<li>
患者姓名:<input type="text" name="patiName" style="width: 120px;"/>
</li>
<li class="select-time">
<label>统计时间: </label>
<input type="text" class="time-input" id="startTime" placeholder="开始时间"
name="params[startTime]"/>
<span>-</span>
<input type="text" class="time-input" id="endTime" placeholder="结束时间"
name="params[endTime]"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
class="fa fa-search"></i> 搜索</a>
<a id="resetForm" class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i
class="fa fa-refresh"></i> 重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm hidden-xs" id="toolbar">
<a class="btn btn-warning" onclick="$.table.exportExcel()">
<i class="fa fa-download"></i> 导出
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table" data-mobile-responsive="true"></table>
</div>
</div>
</div>
<div th:include="include :: footer"></div>
<script th:src="@{/ajax/libs/jquery-layout/jquery.layout-latest.js}"></script>
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
<script th:inline="javascript">
var prefix = ctx + "biz/consultation";
$(function () {
var panehHidden = false;
if ($(this).width() < 769) {
panehHidden = true;
}
$('body').layout({initClosed: panehHidden, west__size: 185});
queryApplyConsList();
});
function queryApplyConsList() {
clearHiddenInfo(1);
var options = {
url: prefix + "/consultationApplication",
createUrl: prefix + "/add",
updateUrl: prefix + "/edit/{id}",
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
importUrl: prefix + "/importData",
importTemplateUrl: prefix + "/importTemplate",
sortName: "applyTime",
sortOrder: "desc",
modalName: "用户",
columns: [
/*{
checkbox: true
},*/
{
field: 'applyTime',
title: '申请时间',
sortable: true,
width: '6%'
},
{
field: 'primStatus',
title: '状态',
width: '4%'
},
{
field: 'primNo',
title: '会诊编号',
width: '3%'
},
{
field: 'primEmergency',
title: '会诊类型',
width: '2%'
},
{
field: 'primInteracyive',
title: '会诊方式',
width: '1%'
},
{
field: 'patiName',
title: '患者姓名',
width: '2%'
},
{
field: 'patiGender',
title: '性别',
width: '1%'
},
{
field: 'patiIdentity',
title: '身份证号',
width: '6%'
},
{
field: 'cityStateName',
title: '申请所属市',
width: '3%'
},
{
field: 'countyName',
title: '申请所属区县',
width: '3%'
},
{
field: 'applyHospitalName',
title: '申请机构',
width: '6%'
},
{
field: 'applyDepartmentName',
title: '申请科室',
width: '6%'
},
{
field: 'applySubdeptName',
title: '申请子科室',
width: '6%'
},
{
field: 'applyUserName',
title: '申请医生',
width: '5%'
},
{
field: 'primMdt',
title: '是否多学科',
width: '2%'
},
{
field: 'consHospitalName',
title: '会诊机构',
width: '6%'
},
{
field: 'consDepartmentName',
title: '会诊科室',
width: '6%'
},
{
field: 'consSubdeptName',
title: '会诊子科室',
width: '6%'
},
{
field: 'consUserName',
title: '会诊专家',
width: '5%'
},
{
field: 'professional',
title: '专家职称',
width: '1%'
},
{
field: 'submitTime',
title: '会诊时间',
sortable: true,
width: '6%'
},
{
title: '操作',
align: 'center',
formatter: function (value, row, index) {
var actions = [];
actions.push('<a href="#" onclick="$.operate.editTab(\'' + row.primId + '\')"><i class="fa fa-edit"></i>查看</a> ');
return actions.join('');
}, width: '5%'
}]
};
$.table.init(options);
}
/*三级联动省级节点-开始*/
$("#input_province").change(function () {
//清空隐藏域信息
clearHiddenInfo(1);
//每次切换都要清空市州下拉数据
$("#input_city").find("option").remove();
$("#input_city").append("<option value=''>---请选择---</option>>")
//每次切换都要清空区县下拉数据
$("#input_area").find("option").remove();
$("#input_area").append("<option value=''>---请选择---</option>>")
//每次切换都要清空机构下拉数据
$("#input_hospital").find("option").remove();
$("#input_hospital").append("<option value=''>---请选择---</option>>")
var str = "";
var formdata = new FormData();
var proviceCode = $("#input_province option:selected").val();
if(proviceCode == null || proviceCode ==''){
return;
}
formdata.append("provinceCode", proviceCode);
$.ajax({
url: ctx + "biz/consultation/queryCityList",
data: formdata,
type: "post",
processData: false,
contentType: false,
dataType: "json",
success: function (result) {
$.each(result,function(i,item){
str += "<option value=" + item.dictionarykey + ">" + item.dictionaryvalue + "</option>";
})
//将数据添加到市州下拉框里
$("#input_city").append(str);
}
})
});
/*三级联动省级节点-结束*/
/*三级联动市州级节点-开始*/
$("#input_city").change(function () {
//清空隐藏域信息
clearHiddenInfo(2);
//每次切换都要清空区县下拉数据
$("#input_area").find("option").remove();
$("#input_area").append("<option value=''>---请选择---</option>>")
//每次切换都要清空机构下拉数据
$("#input_hospital").find("option").remove();
$("#input_hospital").append("<option value=''>---请选择---</option>>")
var str = "";
var formdata = new FormData();
var cityCode = $("#input_city option:selected").val();
//给隐藏域市州code赋值
$("#cityStateCode").val(cityCode);
if(cityCode == null || cityCode ==''){
return;
}
formdata.append("cityCode", cityCode);
$.ajax({
url: ctx + "biz/consultation/queryAreaList",
data: formdata,
type: "post",
processData: false,
contentType: false,
dataType: "json",
success: function (result) {
$.each(result,function(i,item){
str += "<option value=" + item.dictionarykey + ">" + item.dictionaryvalue + "</option>";
})
//将数据添加到区县下拉框里
$("#input_area").append(str);
}
})
});
/*三级联动市州级节点-结束*/
/*机构信息联动-开始*/
$("#input_area").change(function () {
//清空隐藏域信息
clearHiddenInfo(3);
//每次切换都要清空机构下拉数据
$("#input_hospital").find("option").remove();
$("#input_hospital").append("<option value=''>---请选择---</option>>")
var str = "";
var formdata = new FormData();
var areaCode = $("#input_area option:selected").val();
//给隐藏域区县code赋值
$("#countyCode").val(areaCode);
if(areaCode == null || areaCode ==''){
return;
}
formdata.append("areaCode", areaCode);
$.ajax({
url: ctx + "biz/consultation/queryHospitalList",
data: formdata,
type: "post",
processData: false,
contentType: false,
dataType: "json",
success: function (result) {
$.each(result,function(i,item){
str += "<option value=" + item.dictionarykey + ">" + item.dictionaryvalue + "</option>";
})
//将数据添加到机构下拉框里
$("#input_hospital").append(str);
}
})
});
/*机构信息联动-结束*/
/*机构ochange事件赋值机构编码*/
$("#input_hospital").change(function () {
//清空隐藏域信息
//clearHiddenInfo(3);
var hospitalCode = $("#input_hospital option:selected").val();
//给隐藏域区县code赋值
$("#applyHospitalCode").val(hospitalCode);
});
// 重置:清空缓存域省、市、区县、机构信息
$("#resetForm").click(function () {
clearHiddenInfo(1);
});
/**
* 清空隐藏域函数
* 1:省事件操作;2:市级事件操作;3:区县事件操作
* @param type
*/
function clearHiddenInfo(type) {
if(type == 1){
$("#cityStateCode").val(null);
$("#countyCode").val(null);
$("#applyHospitalCode").val(null);
}
if(type == 2){
$("#countyCode").val(null);
$("#applyHospitalCode").val(null);
}
if(type == 3){
$("#applyHospitalCode").val(null);
}
}
</script>
</body>
<form id="importForm" enctype="multipart/form-data" class="mt20 mb10" style="display: none;">
<div class="col-xs-offset-1">
<input type="file" id="file" name="file"/>
<div class="mt10 pt5">
<input type="checkbox" id="updateSupport" name="updateSupport" title="如果登录账户已经存在,更新这条数据。"> 是否更新已经存在的用户数据
<a onclick="$.table.importTemplate()" class="btn btn-default btn-xs"><i
class="fa fa-file-excel-o"></i> 下载模板</a>
</div>
<font color="red" class="pull-left mt10">
提示:仅允许导入“xls”或“xlsx”格式文件!
</font>
</div>
</form>
</html>
后端代码如下:
/**
* 根据省级code获取市州数据列表.
*
* @return
*/
@PostMapping("/queryCityList")
@ResponseBody
public List<OrgInfo> queryAllCityList(@RequestParam("provinceCode") String provinceCode) {
OrgInfoVo vo = new OrgInfoVo();
vo.setProvinceCode(provinceCode);
List<OrgInfo> orgInfoList = bizDetailsService.selectAllCityList(vo);
return orgInfoList; //AjaxResult.success();
}
/**
* 根据市州code获取区县数据列表.
*
* @param cityCode
* @return
*/
@PostMapping("/queryAreaList")
@ResponseBody
public List<OrgInfo> queryAreaList(@RequestParam("cityCode") String cityCode) {
OrgInfoVo vo = new OrgInfoVo();
vo.setCityCode(cityCode);
List<OrgInfo> orgInfoList = bizDetailsService.selectAllAreaList(vo);
return orgInfoList;
}
@PostMapping("/queryHospitalList")
@ResponseBody
public List<OrgInfo> queryHospitalList(@RequestParam("areaCode") String areaCode) {
OrgInfoVo vo = new OrgInfoVo();
vo.setAreaCode(areaCode);
List<OrgInfo> orgInfoList = bizDetailsService.selectAllHospitalList(vo);
return orgInfoList;
}
运行效果: