guns 关于 分类学习 二
2020-01-30 本文已影响0人
阳光也学会了妩媚
分类上级显示的问题 主要修改 静态页面 和 info.js 对应请求接口写一个
如下:
1:修改静态页面
新增页面
<div>
<#input id="pName" name="上级" readonly="readonly" hidden="pid"
clickFun="DirInfoDlg.showDirectorySelectTree(); return false;"
style="background-color: #ffffff !important;"/>
</div>
<!-- 父级部门的选择框 -->
<div id="parentDirectoryMenu" class="menuContent"
style="display: none; position: absolute; z-index: 200;">
<ul id="parentDirectoryMenuTree" class="ztree tree-box" style="width: 245px !important;"></ul>
</div>
其他页面也可以 引用 <script src="${ctxPath}/static/..../dir/dir_info.js"></script> 并添加上述代码!
修改页面
对于引用的修改info.js 有三处
SiteInfoDlg.collectData = function() {
this
//.set('categoryId')
// .set('categoryName')
}
//sunyuechao
SiteInfoDlg.setPidAndPname = function() {
this.siteInfoData["categoryName"]=$("#pName").val();
this.siteInfoData["categoryId"]=$("#pid").val();
}
/**
* 提交修改
*/
SiteInfoDlg.editSubmit = function() {
this.clearData();
this.collectData();
this.setPidAndPname();//sunyuechao
//提交信息
var ajax = new $ax(Feng.ctxPath + "/site/update", function(data){
Feng.success("修改成功!");
window.parent.Site.table.refresh();
SiteInfoDlg.close();
},function(data){
Feng.error("修改失败!" + data.responseJSON.message + "!");
});
ajax.set(this.siteInfoData);
ajax.start();
}
<div>
<#input id="pName" name="上级" readonly="readonly" hidden="pid"
hiddenValue="${item.pid}" value="${pName}"
clickFun="DirInfoDlg.showDirectorySelectTree(); return false;"
style="background-color: #ffffff !important;"/>
</div>
<!-- 父级部门的选择框 -->
<div id="parentDirectoryMenu" class="menuContent"
style="display: none; position: absolute; z-index: 200;">
<ul id="parentDirectoryMenuTree" class="ztree tree-box" style="width: 245px !important;"></ul>
</div>
2 :js 中的改写
var DirInfoDlg = {
dirInfoData : {},
zTreeInstance : null,//添加树形参数
};
//sunyuechao
/**
* 点击部门ztree列表的选项时
*
* @param e
* @param treeId
* @param treeNode
* @returns
*/
DirInfoDlg.onClickDirectory = function (e, treeId, treeNode) {
$("#pName").attr("value", DirInfoDlg.zTreeInstance.getSelectedVal());
$("#pid").attr("value", treeNode.id);
}
//sunyuechao
/**
* 显示部门选择的树
*
* @returns
*/
//sunyuechao
DirInfoDlg.showDirectorySelectTree = function () {
var pName = $("#pName");
var pNameOffset = $("#pName").offset();
$("#parentDirectoryMenu").css({
left: pNameOffset.left + "px",
top: pNameOffset.top + pName.outerHeight() + "px"
}).slideDown("fast");
$("body").bind("mousedown", onBodyDown);
}
//sunyuechao
function onBodyDown(event) {
if (!(event.target.id == "menuBtn" || event.target.id == "parentDirectoryMenu" || $(
event.target).parents("#parentDirectoryMenu").length > 0)) {
DirInfoDlg.hideDirectorySelectTree();
}
}
//sunyuechao
/**
* 隐藏部门选择的树
*/
DirInfoDlg.hideDirectorySelectTree = function () {
$("#parentDirectoryMenu").fadeOut("fast");
$("body").unbind("mousedown", onBodyDown);// mousedown当鼠标按下就可以触发,不用弹起
}
//sunyuechao
$(function() {
var ztree = new $ZTree("parentDirectoryMenuTree", "/dir/tree");
ztree.bindOnClick(DirInfoDlg.onClickDirectory);
ztree.init();
DirInfoDlg.zTreeInstance = ztree;
});
3: 接口
/**
* 获取部门的tree列表(sunyuechao)
*/
@RequestMapping(value = "/tree")
@ResponseBody
public List<ZTreeNode> tree() {
List<ZTreeNode> tree = this.dirService.tree();
tree.add(ZTreeNode.createParent());
return tree;
}
Mapper
<select id="tree" resultType="com.stylefeng.guns.core.node.ZTreeNode">
select id,pid as pId,simplename as name,
(
CASE
WHEN (pId = 0 OR pId IS NULL) THEN
'true'
ELSE
'false'
END
) as isOpen from syc_dir
</select>
最后就显示出来了 也可以在别的 页面调用
补充:
增加方法 让增加和修改的时候 能让pids 按这样格式写 [0],[24],(从业务逻辑看,暂时没什么大用)
/**
* 根据父分类ID 书写分类内容 ,并格式[]
* @param dire
*/
private void directorySetPids(Dir dire) {
if (ToolUtil.isEmpty(dire.getPid()) || dire.getPid().equals(0)) {
dire.setPid(0);
dire.setPids("[0],");
} else {
int pid = dire.getPid();
Dir temp = dirService.selectById(pid);
String pids = temp.getPids();
dire.setPid(pid);
dire.setPids(pids + "[" + pid + "],");
}
}
在增加和修改的接口上 判断并 增加此功能
新增
/**
* 新增分类管理
*/
@RequestMapping(value = "/add")
@ResponseBody
public Object add(Dir dir) {
// //完善pids,根据pid拿到pid的pids添加[]
if (ToolUtil.isOneEmpty(dir, dir.getSimplename())) {
System.out.println("add is 相同");
throw new GunsException(BizExceptionEnum.REQUEST_NULL);
}
directorySetPids(dir);
////
dirService.insert(dir);
return SUCCESS_TIP;
}
修改
/**
* 修改分类管理
*/
@RequestMapping(value = "/update")
@ResponseBody
public Object update(Dir dir) {
//完善pids,根据pid拿到pid的pids添加[]
if (ToolUtil.isEmpty(dir) || dir.getId() == null) {
throw new GunsException(BizExceptionEnum.REQUEST_NULL);
}
directorySetPids(dir);
//
dirService.updateById(dir);
return SUCCESS_TIP;
}
另外 在修改传回参数中 要加上pName 否则报错!
/**
* 跳转到修改分类管理
*/
@RequestMapping("/dir_update/{dirId}")
public String dirUpdate(@PathVariable Integer dirId, Model model) {
Dir dir = dirService.selectById(dirId);
model.addAttribute("item",dir);
model.addAttribute("pName", dir.getSimplename());//原代码 有些不一样,测试看没什么大影响
LogObjectHolder.me().set(dir);
return PREFIX + "dir_edit.html";
}
完毕!!