package cn.com.shdmt.web.contorller; import cn.com.shdmt.BizConstants; import cn.com.shdmt.entity.ProductEntity; import cn.com.shdmt.entity.ProductTypeEntity; import cn.com.shdmt.framework.util.Constants; import cn.com.shdmt.service.ProductService; import cn.com.shdmt.service.ProductTypeService; import cn.com.shdmt.web.vo.ProductTypeVo; import cn.com.shdmt.web.vo.ZtreeVo; import com.fasterxml.jackson.annotation.JsonInclude; import com.google.common.collect.Lists; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springside.modules.mapper.JsonMapper; import javax.servlet.http.HttpSession; import javax.validation.Valid; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by yaoyao on 2015/1/26. */ @Controller @RequestMapping(value = "/productType") public class ProductTypeController { private static final String PAGE_SIZE = "10"; private Logger logger = LoggerFactory.getLogger(ProductTypeController.class); //当点击其他业务的时候 显示分类列表 有分类的id 标记他的父节点是 其他业务 //当点击分类id名称 显示业务列表 //如果没有父节点则显示直接显示 只可以选择叶子节点 不是父节点的都是叶子节点 @Autowired private ProductTypeService productTypeService; @Autowired private ProductService productService; @Value("#{appProperties[‘upload.config.uploadURL‘]}") private String uploadURL; @Value("#{appProperties[‘upload.config.fileURLPrefix‘]}") private String fileURLPrefix; @RequestMapping(method = RequestMethod.GET) public String list( @RequestParam(value = "page", defaultValue = "1") int pageNumber, @RequestParam(value = "order", defaultValue = "") String order, @RequestParam(value = "page.size", defaultValue = PAGE_SIZE) int pageSize, Model model) { /*Page<ProductTypeEntity> page = productTypeService.getAllProductType(new PageRequest(pageNumber - 1, pageSize), ViewParamsConvertUtils.getOrder(order)); if (!StringUtils.isBlank(order)) { model.addAttribute("order", order); } model.addAttribute("page", page); model.addAttribute("pageSize", pageSize); model.addAttribute("fileURLPrefix", fileURLPrefix);*/ return "productType/productType_list"; } @RequestMapping(value = "doAjax") @ResponseBody public String doAjax() { List<ProductTypeEntity> productTypeEntities = productTypeService.findAllByIsDeleted(Boolean.FALSE); List<ZtreeVo> ztreeVos = new ArrayList<ZtreeVo>(); ZtreeVo zTree = new ZtreeVo(); zTree.setId(0); zTree.setpId(-1); zTree.setName("服务分类管理"); ztreeVos.add(zTree); for (ProductTypeEntity p : productTypeEntities) { ZtreeVo ztreeVo = new ZtreeVo(); ztreeVo.setIsParent(!p.getIsLeaf()); ztreeVo.setId(p.getId().intValue()); ztreeVo.setpId(p.getParentId()); ztreeVo.setName(p.getProductTypeName()); ztreeVos.add(ztreeVo); } String json = new JsonMapper(JsonInclude.Include.ALWAYS).toJson(ztreeVos); return json; } @RequestMapping(value = "getproductById") @ResponseBody public ProductTypeVo getproductById( @RequestParam(value = "id", required = false) Long id ) { ProductTypeEntity productTypeEntity = productTypeService.getProductType(id); ProductTypeVo productTypeVo = new ProductTypeVo(); productTypeVo.setProductType(productTypeEntity.getProductType()); productTypeVo.setProductTypeName(productTypeEntity.getProductTypeName()); productTypeVo.setDescription(productTypeEntity.getDescription()); productTypeVo.setImageUrl(fileURLPrefix + productTypeEntity.getImageUrl()); return productTypeVo; } @RequestMapping(value = "delById") @ResponseBody public Map delById( @RequestParam(value = "id", required = false) Long id, @RequestParam(value = "isParent", required = false) Boolean isParent ) { //如果是父节点 则删除他的所有子节点 //如果是子节点 找到他的父节点 查看他的子节点数目是否大于1 如果不大于1 则把他的父节点变成子节点 Map map = new HashMap(); try { if (isParent) { DecimalToBinary(new Integer(id.intValue())); ProductTypeEntity productTypeEntity = productTypeService.getProductType(id); productTypeEntity.setIsDeleted(Boolean.TRUE); productTypeService.save(productTypeEntity); } else { ProductTypeEntity productTypeEntity = productTypeService.getProductType(id); //得到当前节点的父节点的id Integer parentId = productTypeEntity.getParentId(); List<ProductTypeEntity> productTypeEntities = productTypeService.findAllByParentIdAndIsDeleted(parentId, Boolean.FALSE); System.out.println(productTypeEntities.size()); if (productTypeEntities.size() <= 1) { productTypeEntity.setIsDeleted(Boolean.TRUE); productTypeService.save(productTypeEntity); ProductTypeEntity productTypeEntity1 = productTypeService.getProductType(Long.valueOf(parentId)); productTypeEntity1.setIsLeaf(Boolean.TRUE); productTypeService.save(productTypeEntity1); }else{ productTypeEntity.setIsDeleted(Boolean.TRUE); productTypeService.save(productTypeEntity); } } } catch (Exception e) { logger.error("删除失败" + e); map.put("fail", "删除失败"); } map.put("suc", "删除成功"); return map; } public void DecimalToBinary(Integer id) { if (id == -1) { //当num=0时,循环结束 return; } else { // ProductTypeEntity productTypeEntity = productTypeService.getProductType(id); //找到该节点的子节点 保存该节点子节点的id 循环调用 List<ProductTypeEntity> productTypeEntities = productTypeService.findAllByParentId(id); //如果有子节点 删除并记录子节点 if (!productTypeEntities.isEmpty()) { for (ProductTypeEntity p1 : productTypeEntities) { p1.setIsDeleted(Boolean.TRUE); productTypeService.save(p1); } Integer parentId = new Integer(productTypeEntities.get(0).getId().intValue()); DecimalToBinary(parentId); } id = -1; } } @RequestMapping(value = "update/{id}", method = RequestMethod.GET) public String updateForm(@PathVariable("id") Long id, Model model) { model.addAttribute("productType", productTypeService.getProductType(id)); model.addAttribute("action", "update"); return "productType/productType_edit"; } @RequestMapping(value = "create", method = RequestMethod.GET) public String createForm(Model model) { ProductTypeEntity productType = new ProductTypeEntity(); productType.setSortNo(0); model.addAttribute("productType", productType); model.addAttribute("action", "create"); return "productType/productType_edit"; } @RequestMapping(value = "create", method = RequestMethod.POST) public String create(@Valid ProductTypeEntity newProduct, @RequestParam(value = "id", required = false) Long id, @RequestParam(value = "isParent", required = false) Boolean isParent, @RequestParam(value = "productTypeImageFile", required = false) MultipartFile productTypeImageFile, RedirectAttributes redirectAttributes, HttpSession session) { String idStr = Constants.EMPTY_STRING; String filePath = null; //如果是父节点 则单纯添加一个子节点 他的父节点id 为treenode.id //如果是子节点treenode.id改为父节点 并且添加一个子节点他的父节点id为treenode.id if (productTypeImageFile != null && !productTypeImageFile.isEmpty()) { filePath = upload(productTypeImageFile, redirectAttributes, session); } if (id == null) { try { if (!isParent) { ProductTypeEntity productTypeEntity = productTypeService.getProductType(Long.valueOf(newProduct.getParentId())); productTypeEntity.setIsLeaf(Boolean.FALSE); productTypeService.save(productTypeEntity); } newProduct.setImageUrl(filePath); newProduct.setIsLeaf(Boolean.TRUE); productTypeService.save(newProduct); redirectAttributes.addFlashAttribute("message", "创建服务类型成功"); } catch (Exception e) { logger.error("创建服务类型失败", e); redirectAttributes.addFlashAttribute("error", "创建服务类型失败"); } } else { ProductTypeEntity productTypeEntity = null; try { productTypeEntity = productTypeService.getProductType(id); productTypeEntity.setDescription(newProduct.getDescription()); productTypeEntity.setProductType(newProduct.getProductType()); productTypeEntity.setProductTypeName(newProduct.getProductTypeName()); productTypeEntity.setImageUrl(filePath); productTypeService.save(productTypeEntity); idStr = productTypeEntity.getId().toString(); redirectAttributes.addFlashAttribute("message", "更新服务类型【" + productTypeEntity.getProductTypeName() + "】成功"); } catch (Exception e) { logger.error("更新服务类型失败", e); redirectAttributes.addFlashAttribute("error", "更新服务类型{" + productTypeEntity.getProductTypeName() + "}失败"); } } return "redirect:/productType/" + idStr; } @RequestMapping(value = "update", method = RequestMethod.POST) public String update(@Valid @ModelAttribute("productType") ProductTypeEntity productTypeEntity, @RequestParam(value = "productTypeImageFile", required = false) MultipartFile productTypeImageFile, RedirectAttributes redirectAttributes, HttpSession session) { String idStr = Constants.EMPTY_STRING; try { String filePath = null; if (productTypeImageFile != null && !productTypeImageFile.isEmpty()) { filePath = upload(productTypeImageFile, redirectAttributes, session); } productTypeEntity.setImageUrl(filePath); productTypeService.save(productTypeEntity); idStr = productTypeEntity.getId().toString(); redirectAttributes.addFlashAttribute("message", "更新服务类型【" + productTypeEntity.getProductTypeName() + "】成功"); } catch (Exception e) { logger.error("更新服务类型失败", e); redirectAttributes.addFlashAttribute("error", "更新服务类型{" + productTypeEntity.getProductTypeName() + "}失败"); } return "redirect:/productType/" + idStr; } //上传文件 private String upload(MultipartFile knowledgeFile, RedirectAttributes redirectAttributes, HttpSession session) { String filePath = null; try { // 保存文件 String fileName = knowledgeFile.getOriginalFilename(); if (StringUtils.isNotBlank(fileName) && !knowledgeFile.isEmpty()) { //生成转发URL String url = uploadURL; //保存到本地 File tempFile = new File(System.getProperty("java.io.tmpdir") + "/" + session.getId() + fileName.substring(fileName.lastIndexOf(‘.‘)).toLowerCase()); FileUtils.writeByteArrayToFile(tempFile, knowledgeFile.getBytes()); //读取图片 RestTemplate rest = new RestTemplate(); FileSystemResource resource = new FileSystemResource(tempFile); MultiValueMap<String, Object> param = new LinkedMultiValueMap<String, Object>(); //文件 param.add("file", resource); //验证字符串 param.add("validateString", BizConstants.UPLOAD_FILE_VALIDATE_STRING); //模块名,用于生成模块目录 param.add("modeName", "link"); //可选参数 fileType 文件类型,用于验证文件类型list,小写,默认{".jpg","png","gif"} // fileMaxSize 文件大小上限Long,默认80000 Map<String, String> message = rest.postForObject(url, param, Map.class); //删除临时文件 if (tempFile.exists()) { tempFile.delete(); } if (message.containsKey("error")) { redirectAttributes.addFlashAttribute("message", message.get("error")); } filePath = message.get("filePath"); } } catch (Exception ex) { logger.error("获取图片路径失败", ex); } return filePath; } @RequestMapping(value = "/{id}", method = RequestMethod.GET) public String info(@PathVariable("id") long id, Model model) { ProductTypeEntity productTypeEntity = productTypeService.getProductType(id); model.addAttribute("productType", productTypeEntity); model.addAttribute("fileURLPrefix", fileURLPrefix); return "productType/productType_info"; } @RequestMapping(value = "delete/{id}") public String delete(@PathVariable("id") Long id, Model model, RedirectAttributes redirectAttributes) { ProductTypeEntity productTypeEntity = productTypeService.getProductType(id); //如果服务分类下有服务 提示不能删除 List<ProductEntity> productEntities = productService.findByProductTypeAndIsDeleted(productTypeEntity,Boolean.FALSE); if (productEntities.size() > 0) { redirectAttributes.addFlashAttribute("error", "删除服务类型" + productTypeEntity.getProductTypeName() + "失败,该服务类型下存在未删除的服务"); return "redirect:/productType"; } model.addAttribute("fileURLPrefix", fileURLPrefix); productTypeEntity.setIsDeleted(Boolean.TRUE);//true 1 删除 productTypeService.save(productTypeEntity); redirectAttributes.addFlashAttribute("message", "删除服务类型" + productTypeEntity.getProductTypeName() + "成功"); return "redirect:/productType"; } @RequestMapping(value = "batchDel") public String delete(@RequestParam(value = "productTypeId", required = false) Long[] productTypeId, Model model, RedirectAttributes redirectAttributes) { List<String> stringList = Lists.newArrayList(); if (productTypeId != null && productTypeId.length > 0) { List<ProductTypeEntity> productTypeEntities = productTypeService.getProductTypes(productTypeId); for (ProductTypeEntity productTypeEntity : productTypeEntities) { List<ProductEntity> productEntities = productService.findByProductTypeAndIsDeleted(productTypeEntity,Boolean.FALSE); if (productEntities.size() > 0) { //存在预约单的 保留名字 提示客户哪些失败了 stringList.add(productTypeEntity.getProductTypeName()); } else { productTypeEntity.setIsDeleted(Boolean.TRUE);//true 1 删除 productTypeService.save(productTypeEntity); } } } if (stringList != null && stringList.size() > 0) { redirectAttributes.addFlashAttribute("error", "删除服务类型" + org.springframework.util.StringUtils.collectionToDelimitedString(stringList, ",") + "失败,该服务类型下存在未删除的服务,其他勾选成功删除"); } else { redirectAttributes.addFlashAttribute("message", "删除服务类型成功"); } model.addAttribute("fileURLPrefix", fileURLPrefix); return "redirect:/productType"; } @ModelAttribute public void getProduct(@RequestParam(value = "id", defaultValue = "-1") Long id, Model model) { if (id != -1) { model.addAttribute("productType", productTypeService.getProductType(id)); } } } jsp: <%@ page contentType="text/html;charset=UTF-8" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ taglib prefix="form" uri="http://www.springside.org.cn/tags/form" %><%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %><c:set var="ctx" value="${pageContext.request.contextPath}"/><html><head> <title>服务分类维护</title> <link href="${ctx}/static/zTree/css/zTreeStyle/zTreeStyle.css" media="screen" rel="stylesheet"/> <script type="text/javascript" src="${ctx}/static/zTree/js/jquery.ztree.core-3.5.min.js"></script> <script type="text/javascript" src="${ctx}/static/zTree/js/jquery.ztree.excheck-3.5.min.js"></script> <script type="text/javascript" src="${ctx}/static/zTree/js/jquery.ztree.exedit-3.5.js"></script> <style> .addLeaf { border: 1px solid #DDD; background-color: #F5F5F5; color: #ACA899; } </style></head><body> <%--<div id="activation_city_list" class="ztree"></div><input type="hidden" name="cityIds" id="cityIds"/>--%> [ <a id="addLeaf" href="#" title="增加节点" onclick="return false;">增加服务分类</a> ][ <a id="edit" href="#" title="编辑节点" onclick="return false;">编辑服务分类</a> ][ <a id="info" href="#" title="查看节点" onclick="return false;">查看服务分类</a> ][ <a id="del" href="#" title="删除节点" onclick="return false;">删除服务分类</a> ] <div style="float:left;"> <ul id="treeDemo" class="ztree"> </ul></div> <!-- 模态框(Modal) --><div class="modal hide fade" id="modelSave" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> × </button> <h4 class="modal-title"> 添加 </h4> </div> <div class="modal-body" style="max-height: 350px;"> <%--=======--%> <div class="well"> <form:form id="edit_custom_form" modelAttribute="productType" action="${ctx}/productType/create" method="post" enctype="multipart/form-data" class="form-horizontal"> <input type="hidden" name="id" id="id"/> <input type="hidden" id="pid" name="parentId"> <input type="hidden" id="isParent" name="isParent"> <fieldset> <div class="ui-state-default"> <b>基本信息</b> </div> <div class="well well-small"> <div class="control-group"> <label for="productType" class="control-label">服务分类编号:</label> <div class="controls"> <input id="productType" style="width: 200px" name="productType" type="number" maxlength="20" class="input-large required"/> <span style="color: red">*</span> </div> </div> <div class="control-group"> <label for="productTypeName" class="control-label">服务分类名称:</label> <div class="controls"> <input id="productTypeName" style="width: 200px" name="productTypeName" type="text" maxlength="20" class="input-large required"/> <span style="color: red">*</span> </div> </div> <div class="control-group"> <label for="productTypeImage" class="control-label">服务分类图片:</label> <div class="controls"> <input type="file" id="productTypeImage" name="productTypeImageFile" class="input-large"/> <span style="color: red">*</span> </div> </div> <div class="control-group"> <label for="description" class="control-label">服务分类描述:</label> <div class="controls"> <input id="description" style="width: 200px" name="description" type="text" maxlength="20" class="input-large required"/> <span style="color: red">*</span> </div> </div> <div class="form-actions"> <input class="btn btn-primary" style="width: 80px;float: left" type="submit" value="提交"/> </div> </div> </fieldset> </form:form> </div> <%--=======--%> </div> </div> <!-- /.modal-content --> </div> <!-- /.modal --></div> <!-- 模态框(Modal) --><%--查看--%><div class="modal hide fade" id="modelInfo" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> × </button> <h4 class="modal-title"> 查看 </h4> </div> <div class="modal-body" style="max-height: 350px;"> <%--=======--%> <div class="well"> <div class="ui-state-default"> <b>基本信息</b> </div> <table class="well table"> <tr> <th> 服务分类编号: </th> <td id="info_productType"> </td> </tr> <tr> <th> 服务分类名称: </th> <td id="info_productTypeName"> </td> </tr> <tr> <th> 服务分类图片: </th> <td id="info_imageUrl"> </td> </tr> <tr> <th> 服务分类描述: </th> <td id="info_description"> </td> </tr> </table> </div> <%--=======--%> </div> </div> <!-- /.modal-content --> </div> <!-- /.modal --></div> <script> //== var setting = { view: { selectedMulti: false //禁止多点选中 }, data: { simpleData: { enable: true, idKey: "id", pIdKey: "pId", rootPId: "" } }, callback: { onRename: onRename,//编辑后触发,用于操作后台 beforeDrag: beforeDrag, beforeRemove: beforeRemove, beforeRename: beforeRename, onClick: zTreeOnClick }}; function zTreeOnClick(event, treeId, treeNode) { if (treeNode.isParent) { //如果是父节点// $("#addLeaf").removeClass("addLeaf"); $("#edit").addClass("addLeaf"); $("#info").addClass("addLeaf");// $("#del").addClass("addLeaf"); } else {// $("#addLeaf").addClass("addLeaf"); $("#edit").removeClass("addLeaf"); $("#info").removeClass("addLeaf");// $("#del").removeClass("addLeaf"); }}; var log, className = "dark";function beforeDrag(treeId, treeNodes) { return false;}function beforeRemove(treeId, treeNode) { className = (className === "dark" ? "" : "dark"); showLog("[ " + getTime() + " beforeRemove ] " + treeNode.name); return confirm("确认删除 节点 -- " + treeNode.name + " 吗?");}function onRemove(e, treeId, treeNode) { showLog("[ " + getTime() + " onRemove ] " + treeNode.name);}function beforeRename(treeId, treeNode, newName) { if (newName.length == 0) { alert("节点名称不能为空."); var zTree = $.fn.zTree.getZTreeObj("treeDemo"); setTimeout(function () { zTree.editName(treeNode) }, 10); return false; } return true;}function showLog(str) { if (!log) log = $("#log"); log.append("<li class=‘" + className + "‘>" + str + "</li>"); if (log.children("li").length > 8) { log.get(0).removeChild(log.children("li")[0]); }}function getTime() { var now = new Date(), h = now.getHours(), m = now.getMinutes(), s = now.getSeconds(), ms = now.getMilliseconds(); return (h + ":" + m + ":" + s + " " + ms);} var newCount = 1; function add(e) { var zTree = $.fn.zTree.getZTreeObj("treeDemo"), isParent = e.data.isParent, nodes = zTree.getSelectedNodes(), treeNode = nodes[0]; if (typeof(treeNode) != "undefined") { if (treeNode.isParent) { $("#pid").val(treeNode.id);//拿到父节点的id填写名称后保存 重新加载 $("#isParent").val(treeNode.isParent); $("#id").val(""); $("#productType").val(""); $("#productTypeName").val(""); $("#description").val(""); //当点击添加的时候弹出框 $("#modelSave").modal(‘show‘); onloadZTree(); } else { //当前选中的节点 treeNode.id 变成父节点 并添加一个他的子节点 $("#pid").val(treeNode.id);//拿到父节点的id填写名称后保存 重新加载 $("#id").val(""); $("#isParent").val(treeNode.isParent); $("#productType").val(""); $("#productTypeName").val(""); $("#description").val(""); //当点击添加的时候弹出框 $("#modelSave").modal(‘show‘); } } else { }}; function info(e) { var zTree = $.fn.zTree.getZTreeObj("treeDemo"), isParent = e.data.isParent, nodes = zTree.getSelectedNodes(), treeNode = nodes[0]; if (typeof(treeNode) != "undefined") { if (treeNode.isParent) { } else { //根据id 进行 ajax var data = {id: treeNode.id}; $.ajax({ cache: false, //是否使用缓存 type: ‘post‘, //请求方式,post data: data, dataType: "json", //数据传输格式 url: "${ctx}/productType/getproductById", //请求链接 error: function () { alert(‘加载出错!‘); }, success: function (data) { if (data != null) { $("#info_productType").text(data.productType); $("#info_productTypeName").text(data.productTypeName); $("#info_imageUrl").html("<img src=‘${fileURLPrefix}" + data.imageUrl + "‘ style=‘width: 66; height: 56px;‘>"); $("#info_description").text(data.description); $("#modelInfo").modal(‘show‘); } else { alert("加载出错"); } } }); } } else { }} function edit(e) { var zTree = $.fn.zTree.getZTreeObj("treeDemo"), isParent = e.data.isParent, nodes = zTree.getSelectedNodes(), treeNode = nodes[0]; if (typeof(treeNode) != "undefined") { if (!treeNode.isParent) { //根据id 进行 ajax var data = {id: treeNode.id}; $.ajax({ cache: false, //是否使用缓存 type: ‘post‘, //请求方式,post data: data, dataType: "json", //数据传输格式 url: "${ctx}/productType/getproductById", //请求链接 error: function () { alert(‘加载出错!‘); }, success: function (data) { if (data != null) { $("#id").val(treeNode.id); $("#productType").val(data.productType); $("#productTypeName").val(data.productTypeName); $("#description").val(data.description); $("#modelSave").modal(‘show‘); } else { alert("加载出错"); } } }); } } } function del(e) { var zTree = $.fn.zTree.getZTreeObj("treeDemo"), isParent = e.data.isParent, nodes = zTree.getSelectedNodes(), treeNode = nodes[0]; if (typeof(treeNode) != "undefined") { var data; if (!treeNode.isParent) { //根据id 进行 ajax data = {id: treeNode.id, isParent: treeNode.isParent}; } else { data = {id: treeNode.id, isParent: treeNode.isParent}; } $.ajax({ cache: false, //是否使用缓存 type: ‘post‘, //请求方式,post data: data, dataType: "json", //数据传输格式 url: "${ctx}/productType/delById", //请求链接 success: function (data) { if (data["suc"] != null) { alert(data["suc"]); onloadZTree(); } else { alert(data["fail"]); } } }); }} function onRename(e, treeId, treeNode, isCancel) { //当编辑完成后 return treeNode.name;} //用于捕获分类编辑名称结束(Input 失去焦点 或 按下 Enter 键)之后,更新分类名称数据之前的事件回调函数function beforeRename(treeId, treeNode, newName) { if (newName.length == 0 || newName.indexOf("请输入名称") >= 0) { alert(‘亲,请输入分类名称!‘); var zTree = $.fn.zTree.getZTreeObj("treeDemo"); setTimeout(function () { zTree.editName(treeNode) }, 10); return false; } if (newName.length > 15) { alert(‘亲,分类名称过长!‘); var zTree = $.fn.zTree.getZTreeObj("treeDemo"); setTimeout(function () { zTree.editName(treeNode) }, 10); return false; } native_name = treeNode.name; return true;}; //加载ztreefunction onloadZTree() { var ztreeNodes; $.ajax({ async: true, //是否异步 cache: false, //是否使用缓存 type: ‘post‘, //请求方式,post dataType: "json", //数据传输格式 url: "${ctx}/productType/doAjax", //请求链接 error: function () { alert(‘网络出错!‘); }, success: function (data) { ztreeNodes = data; //将string类型转换成json对象 var treeObj = $.fn.zTree.init($("#treeDemo"), setting, ztreeNodes); treeObj.expandAll(true); zTree_Menu = $.fn.zTree.getZTreeObj("treeDemo"); } });} //初始化操作$(document).ready(function () { onloadZTree(); $("#addLeaf").bind("click", {isParent: false}, add); $("#info").bind("click", {isParent: false}, info); $("#edit").bind("click", {isParent: false}, edit); $("#del").bind("click", {isParent: false}, del);}); </script> <%--<tags:pagination page="${page}" paginationSize="${pageSize}"/>--%></body></html>
时间: 2024-10-25 14:16:04