功能实现:点击办理人姓名input框(只读),弹出ztree树对应的多选框,选中则出现在input框中,以逗号分隔(gwjh-eodiSendprocessdefForm.ftl)
前台效果选中展示
取消其中一个效果展示
代码展示
ftl页面 表单元素
<body style="">
<div id="menuContent" class="menuContent" style="display:none; position: absolute;z-index:1000000000000;">
<ul id="userForSelect" class="ztree form-control" style="margin-top:0;margin-top: 10px;overflow-y:scroll;height:290px;background: #f0f6e4;padding-right:20px;width:260px;"></ul>
</div>
<div style="padding:5px;">
<div class="panel " >
<div class="panel-heading" style="">
<strong>
<#if (rid!'')!=''><i class="icon-pencil"></i>编辑<#else><i class="icon-plus"></i>添加</#if>发文流程定义
</strong>
</div>
<div class="panel-body" style="padding:5px;padding-top:15px;">
<form id="form" class="form-horizontal" role="form" method='post' action="./EodiSendprocessdefSave">
<input type="hidden" id="spdRid" name="spdRid" value="${rid?default('')}"/>
</div>
<div class="form-group">
<label class="col-sm-1 control-label required" >办理人姓名</label>
<div class="col-sm-3">
<input type="hidden" id='spdUserid' name="spdUserid" value="" />
<input type='text' id='spdUsername' name="spdUsername" readonly οnclick="showMenu(); return false;" value='<#if formData?exists>${formData.spdUsername!''}</#if>' class='form-control' placeholder=''/>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-2">
<button class="btn btn-primary" οnclick="save();" type="button"><i class="icon icon-save"></i> 保存</button>
<button class="btn" type="button" οnclick="JavaScript :history.back(-1)"><i class="icon icon-reply"></i> 返回</button>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
ftl 页面 js代码
<script>
var spdUsername="";
var spdUserid="";
var setting = {
async: {
enable: true,
url: "${_b}/sendfile/userTreeByOrganId"
},
check: {
enable: true
},
data: {
simpleData: {
enable: true
}
},
callback: {
onCheck: function(event, treeId, treeNode){
var treeObj = $.fn.zTree.getZTreeObj("userForSelect");
var nodes = treeObj.getCheckedNodes(true);
var spdUsernameArray = new Array();
var spdUseridArray = new Array();
if(treeNode.checked){
spdUsername+=","+treeNode.name;
spdUserid+=","+treeNode.id;
//alert(spdUsername[0]);
if(spdUsername[0]==","){
$("#spdUsername").val(spdUsername.substr(1));
}else{
$("#spdUsername").val(spdUsername);
}
if(spdUserid[0]==","){
$("#spdUserid").val(spdUserid.substr(1));
}else{
$("#spdUserid").val(spdUserid);
}
}else{
spdUsernameArray=spdUsername.split(",");
spdUseridArray=spdUserid.split(",");
for (i=0;i<spdUsernameArray.length ;i++ ){
for(j=0;j<spdUseridArray.length;j++){
if(spdUsernameArray[i]==treeNode.name&&spdUseridArray[j]==treeNode.id){
if(nodes.length>=1){
spdUsername=spdUsername.replace(","+treeNode.name,"");
spdUserid=spdUserid.replace(","+treeNode.id,"");
if(spdUsername[0]==","){
spdUsername=spdUsername.substring(1,spdUsername.length);
}
if(spdUserid[0]==","){
spdUserid=spdUserid.substring(1,spdUserid.length);
}
}else{
if(spdUsername=","+treeNode.name){
spdUsername=spdUsername.replace(","+treeNode.name,"");
spdUserid=spdUserid.replace(","+treeNode.id,"");
}else{
spdUsername=spdUsername.replace(treeNode.name,"");
spdUserid=spdUserid.replace(treeNode.id,"");
}
}
}
}
}
$("#spdUsername").val(spdUsername);
$("#spdUserid").val(spdUserid);
}
}
}
};
function showMenu() {
var userId = $("#spdUserid").val();
setting.async.otherParam = {"userId":userId};
$.fn.zTree.init($("#userForSelect"), setting);
var cityObj = $("#spdUsername");
var cityOffset = $("#spdUsername").offset();
$("#menuContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() - 8 + "px"}).slideDown("fast");
$("body").bind("mousedown", onBodyDown);
}
function hideMenu() {
$("#menuContent").fadeOut("fast");
$("body").unbind("mousedown", onBodyDown);
}
function onBodyDown(event) {
if (!(event.target.id == "menuBtn" || event.target.id == "menuContent" || $(event.target).parents("#menuContent").length>0)) {
hideMenu();
}
}
</script>
后台代码
@RequestMapping(value = "/userTreeByOrganId", method ={RequestMethod.GET,RequestMethod.POST })
@ResponseBody
public List<ZTreeModel> userTreeByOrganId(
@RequestParam(value = "userId", defaultValue = "", required = false) String userId,// 页号
HttpServletRequest request){
String[] str = userId.split(",");
EntityWrapper<User> entityWrapper = new EntityWrapper<User>();
entityWrapper.eq("organID", getOrganID());
List<User> users = userServiceImpl.selectList(entityWrapper);
List<ZTreeModel> treeList = new ArrayList<ZTreeModel>();
for (int i = 0; i < users.size(); i++) {
User user = users.get(i);
String userName = user.getUserName();
ZTreeModel atm = new ZTreeModel(user.getUserID(), getOrganID(),userName, true, "");
for (int j = 0; j < str.length; j++){
if(str[j].equals(user.getUserID())){
atm.setChecked(true);
}
}
treeList.add(atm);
}
return treeList;
}
ztreemodel
public class ZTreeModel {
private String id;
private String pId;
private String name;
private String path;
private boolean open;
private boolean checked;
private String icon;
private String iconSkin;
public ZTreeModel() {
}
public ZTreeModel(String id, String pId, String name,
boolean open, String iconSkin) {
this.id = id;
this.pId = pId;
this.name = name;
this.open = open;
this.iconSkin = iconSkin;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getpId() {
return pId;
}
public void setpId(String pId) {
this.pId = pId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public boolean isOpen() {
return open;
}
public void setOpen(boolean open) {
this.open = open;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getIconSkin() {
return iconSkin;
}
public void setIconSkin(String iconSkin) {
this.iconSkin = iconSkin;
}
}