知识管理树加载出来 kynamic.kynamicTreeOption.loadKynamicTree(); oOA中的jsTree

本文主要是介绍知识管理树加载出来 kynamic.kynamicTreeOption.loadKynamicTree(); oOA中的jsTree,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/**
 * 当加载kynamic.jsp完毕时,应该把知识管理树加载出来
 */
var kynamic = {
data: {
/**
         * 最常用的右键菜单保持默认值
         */
rMenu: {
addFolder: true,
addFile: true,
updateNode: true,
deleteNode: true,
x: 0,
y: 0
}

},

init: {
initEvent: function(){
/**
             * 当鼠标进入右键菜单时,做的事情和移出右键菜单时做的事情
             */
$("#rMenu").hover(function(){

/**
                 * 右键菜单事件的声明
                 */
                /**
                 * 添加文件夹事件
                 */
$("#addFolder").unbind("click");
$("#addFolder").bind("click",function(){

kynamic.kynamicTreeOption.addFolder();
});
/**
                 * 添加文件事件
                 */
$("#addFile").unbind("click");
$("#addFile").bind("click",function(){
kynamic.kynamicTreeOption.addFile();
});
/**
                 * 修改节点事件
                 */
$("#updateNode").unbind("click");
$("#updateNode").bind("click",function(){
kynamic.kynamicTreeOption.updateNode();
});
/**
                 * 删除节点事件
                 */
$("#deleteNode").unbind("click");
$("#deleteNode").bind("click",function(){
kynamic.kynamicTreeOption.deleteNode();
});

},function(){
$("#rMenu").hide();
});
/**
* 绑定checkin和checkout事件
*/
$("#checkin").unbind("click");
$("#checkin").bind("click",function(){
kynamic.versionOption.checkin();
});

$("#checkout").unbind("click");
$("#checkout").bind("click",function(){
kynamic.versionOption.checkout();
});

},
initData: function(){

}
},
/**
     * 树的所有的操作在该json对象中
     */
kynamicTreeOption:{
pNode:'',
kynamicTreePlugin:'',
setting:{
isSimpleData: true,
            treeNodeKey: "kid",
            treeNodeParentKey: "pid",
            showLine: true,
            root: {
                isRoot: true,
                nodes: []
},
/*
             *始终保持该节点的状态
             */
keepParent:true,
callback:{
/**
                 * 右击事件
                 */
rightClick:function(event,treeId,treeNode){
/**
                     * 把当前的节点赋值为pNode
                     */
kynamic.kynamicTreeOption.pNode=treeNode;
kynamic.kynamicTreeOption.showRMenu(event.clientX,event.clientY);
if(!treeNode.isParent){
//文件节点  文件夹节点保持默认值
kynamic.data.rMenu=$.extend(kynamic.data.rMenu,{
addFolder:false,
addFile:false
});


}else{
$.extend(kynamic.data.rMenu,{
addFolder:true,
addFile:true
});
}
/**
                     * 在kynamic.data.rMenu的配置基础上给x和y赋值
                     */
$.extend(kynamic.data.rMenu,{
x:event.clientX,
y:event.clientY
});
kynamic.kynamicTreeOption.showRMenu(kynamic.data.rMenu);
},
click:function(event,treeId,treeNode){
kynamic.kynamicTreeOption.pNode=treeNode;
kynamic.versionOption.divShow();
}
}
},
loadKynamicTree:function(){
$.post("kynamicAction_showAllKynamics.action",null,function(data){

kynamic.kynamicTreeOption.kynamicTreePlugin=
$("#kynamicTree").zTree(kynamic.kynamicTreeOption.setting,data.kynamicsList);
});

},
// setting:{
// treeNodeKey:'kid',
// callback:{
// "click":function(event,treeId,treeNode){
// $.tree.addNodes(treeNode,{
// kid:100,
// name:'aa',
// isParent:true,
// pid:1
//
// },false);
// $("#kynamicTree").createTree({
//
//
// }
// }
// },
/**
         * 显示右键菜单的div
         */
showRMenu:function(rMenuJSON){
$("#rMenu").css({
"top": rMenuJSON.y + "px",
                "left": rMenuJSON.x + "px",
                "display": "block"
});
if(rMenuJSON.addFolder){
$("#addFolder").show();
}else{
$("#addFolder").hide();
}
if(rMenuJSON.addFile){
$("#addFile").show();
}else{
$("#addFile").hide();
}
if(rMenuJSON.updateNode){
$("#updateNode").show();
}else{
$("#updateNode").hide();
}
if(rMenuJSON.deleteNode){
$("#deleteNode").show();
}else{
$("#deleteNode").hide();
}
},
/**
         * 添加文件夹
         */
addFolder:function(){
kynamic.kynamicTreeOption.addNode({
title:'请输入文件夹的名称',
error:'文件夹名称不能为空',
isParent:true,
message:'文件夹名已经存在'
});
},
/***
         * 添加文件
         */
addFile:function(){
kynamic.kynamicTreeOption.addNode({
title:'请输入文件的名称',
error:'文件名称不能为空',
isParent:false,
message:'文件名已经存在'
});
},
/**
         * 增加文件和文件夹的通用方法
         */
addNode:function(nodeJSON){

/**
             * 思路:在数据库中的kynamic表中插入一行数据,在kynamic树上,把新建的节点追加到父节点上
             * 步骤:1、弹出一个输出框,输入文件的名称
             *       2、得到文件的名称,触发ajax请求,把isParent,name,pid传到后台
             *       3、从后台回调到前台新的节点的KID值
             *       4、创建一个新的节点,把新的节点追加到树上
             */
var fileName=window.prompt(nodeJSON.title);
/**
             * 如果一个变量为null,undefined,'',0,该变量放入到if语句中都为false
             */
if(!fileName){
//特殊情况下的处理
if(fileName==""){
alert(nodeJSON.error);
}
}
else{
//正常情况
                /**
                 *  1、先检查该文件名称是否存在,如果存在,则提示该名称已经存在
                 *  2、如果不存在,则执行下面的操作
                 *            1、插入数据库数据
                 *            2、把新的节点追加到父节点上
                 */
alert("kk");
$.post("kynamicAction_showKynamicByName.action",{
name:fileName

},function(data){
if(data.message=="1"){
//该文件的名称是可用的
/**
                         * 向后台发出ajax请求,保存到kynamic表中一行内容
                         */
var parameter={
pid:kynamic.kynamicTreeOption.pNode.kid,
isParent:nodeJSON.isParent,
name:fileName
};
$.post("kynamicAction_saveKynamic.action",parameter,function(data1){
var Node={
kid:data1.kid,
name:fileName,
isParent:nodeJSON.isParent,
pid:kynamic.kynamicTreeOption.pNode.kid
};
//把新的节点追加到父节点上
                            /*
                             * 最后一个参数
                             *    true 不展开
                             *    false 展开
                             */
kynamic.kynamicTreeOption.kynamicTreePlugin.addNodes(
kynamic.kynamicTreeOption.pNode,newNode,false);
});
}
else{
//文件的名称不可用
alert(nodeJSON.message);
}
});
}
},
/**
         * 修改节点
         */
updateNode:function(){
/**
             * 1、弹出一个框,这个框中有要修改的节点的名字
             * 2、在弹出框中,输入一个新的名字
             * 3、检查该名字是否可用
             * 4、修改
             *        数据库的修改
             *        树的修改
             */
var fileName=window.prompt("请输入要修改的名字",kynamic.kynamicTreeOption.pNode.name);
if(!fileName){
//特殊情况下的处理
if(fileName==""){
alert("名字不能为空");
}
}
else{
$.post("kynamicAction_showKynamicByName.action",{
name:fileName
},function(data){
if(data.message=="1"){
//该文件的名称是可用的
                        /**
                         * 向后台发出ajax请求,保存到kynamic表中一行内容
                         */
var parameter={
kid:kynamic.kynamicTreeOption.pNode.kid,
name:fileName
};
$.post("kynamicAction_updateKynamic.action",parameter,function(data1){
//把树上的节点的名称修改
kynamic.kynamicTreeOption.pNode.name=fileName;
kynamic.kynamicTreeOption.kynamicTreePlugin.refresh();
});
}
else{
//文件的名称不可用
                        alert("该文件名称已经存在了");
}
});
}
},
 /*
         * 删除节点
         */
deleteNode:function(){
/**
             * 判断当前删除的节点是文件节点还是文件夹节点
             *    *  如果是文件节点,则直接删除
             *    *  如果是文件夹节点,再判断该文件夹节点下是否存在子节点
             *         如果存在子节点,则提示不能删除
             *         如果不存在子节点,则删除
             */
if(kynamic.kynamicTreeOption.pNode.isParent){
//文件夹节点
if(kynamic.kynamicTreeOption.kynamicTreePlugin.getNodeByParam("pid",kynamic.kynamicTreeOption.pNode.kid)){
//当前要删除的节点存在子节点
                    alert("存在子节点,不能删除");
}
else{
if(window.confirm("您确认要删除吗?")){
/**
                         * 后台需要得到kid删除该节点,同时删除整个版本
                         */
$.post("kynamicAction_deleteKynamic.action",{
kid:kynamic.kynamicTreeOption.pNode.kid
},function(data){
kynamic.kynamicTreeOption.kynamicTreePlugin.removeNode(kynamic.kynamicTreeOption.pNode);

});
}
}
}
else{
//文件节点
if(window.confirm("您确认要删除吗?")){
/**
                         * 后台需要得到kid删除该节点,同时删除整个版本
                         */
$.post("kynamicAction_deleteKynamic.action",{
kid:kynamic.kynamicTreeOption.pNode.kid
},function(data){
kynamic.kynamicTreeOption.kynamicTreePlugin.removeNode(kynamic.kynamicTreeOption.pNode);

});
   }
     }

}
},
/**
     * 所有的版本的操作
     */
versionOption: {
divShow: function(){

/**
* 根据知识管理节点查看该节点的版本号,如果有版本号,
* 则显示版本号的列表,如果没有版本号,则显示版本添加的div
*/
$.post("kynamicAction_showVersionsByKid.action", {
kid: kynamic.kynamicTreeOption.pNode.kid
}, function(data){
alert(data);
alert(" tfy   a");
if (data.versionsList.length == 0) {
alert("checkin");
//没有版本号
kynamic.versionOption.controlShow({
versionsList: false,
addVersion: true,
checkin: true,
checkout: false
});
}
else {
//有版本号
kynamic.versionOption.controlShow({
versionsList: true,
addVersion: false,
checkin: false,
checkout: false

});
/**
* <tr>
<td height="26" align="center" valign="middle" bgcolor="#FFFFFF" style="border-bottom:1px solid #f3f8fd;"><a>3</a></td>
<td align="center" valign="middle" bgcolor="#FFFFFF" style="border-bottom:1px solid #f3f8fd;">2010-5-24 09:56:33</td>
<td align="center" valign="middle" bgcolor="#FFFFFF" style="border-bottom:1px solid #f3f8fd;"><a>删除</a></td>
</tr>
*/
$("#versionContent").empty();
for (var i = 0; i < data.versionsList.length; i++) {
var $aVersion = $("<a/>");
$aVersion.text(data.versionsList[i].versionid);
$aVersion.css("cursor", "pointer");
var $tdVersion = $("<td/>");
$tdVersion.attr("height", "26");
$tdVersion.attr("align", "center");
$tdVersion.attr("valign", "middle");
$tdVersion.attr("bgcolor", "#FFFFFF");
$tdVersion.attr("style", "border-bottom:1px solid #f3f8fd;");
$tdVersion.append($aVersion);

var $tdDate = $("<td/>");
$tdDate.attr("height", "26");
$tdDate.attr("align", "center");
$tdDate.attr("valign", "middle");
$tdDate.attr("bgcolor", "#FFFFFF");
$tdDate.attr("style", "border-bottom:1px solid #f3f8fd;");
$tdDate.text(data.versionsList[i].updatetime);

var $aDel = $("<a/>");
$aDel.text("删除");
var $tdDel = $("<td/>");
$tdDel.attr("height", "26");
$tdDel.attr("align", "center");
$tdDel.attr("valign", "middle");
$tdDel.attr("bgcolor", "#FFFFFF");
$tdDel.attr("style", "border-bottom:1px solid #f3f8fd;");
$tdDel.append($aDel);

var $tr = $("<tr/>");
$tr.append($tdVersion);
$tr.append($tdDate);
$tr.append($tdDel);
$("#versionContent").append($tr);
}
}
});
},
/**
* 控制div和checkin和checkout的显示
*/
controlShow:function(versionJSON){
if (versionJSON.addVersion) {
$("#addVersion").show();
}
else {
$("#addVersion").hide();
}
if (versionJSON.versionsList) {
$("#versionsList").show();
}
else {
$("#versionsList").hide();
}
if (versionJSON.checkin) {
$("#checkin").show();
}
else {
$("#checkin").hide();
}
if (versionJSON.checkout) {
$("#checkout").show();
}
else {
$("#checkout").hide();
}
},
/**
* checkin操作
* 1、检查该节点是否有版本号,如果没有,则添加一个版本号,并且版本为1
* 2、如果该节点有版本号,则版本号的最大值加1
*/
checkin: function(){
var title = $("#title").val();
var content = $("#content").val();
alert(title);
var parameter = {
title: title,
content: content,
kid: kynamic.kynamicTreeOption.pNode.kid
};
$.post("kynamicAction_saveVersionByKid.action", parameter, function(){

});
}
}
};
$().ready(function(){
kynamic.kynamicTreeOption.loadKynamicTree();
/**
     * 1、该方法写在这里,不能确保树加载出来
     * 2、事件分为两步:
     *     1、事件的声明
     *          声明写在哪都行
     *     2、事件的触发
     *          如果在事件触发的函数中用到回调函数中的值,那么触发的函数在执行的执行,回调函数必须执行了
     *
     * 3、说明:
     *    如果js的一段代码要用到回调函数中的数据,那么
     *         方案1、这段代码写在回调函数中
     *         方案2、可以写在触发事件的函数中,但是必须确保在事件触发的时候,毁掉函数已经执行完毕了
     */
kynamic.init.initEvent();
});


/**
 * 作业:
 *    1、点击某一个版本号,显示增加版本的div,检查后台version表中相应的state的状态
 *         如果状态为true  说明上锁了,这个时候,页面上显示check out按钮  title和content处于不可编辑装填
 *         点击check out按钮,使后台的锁发生变化,页面上显示check in按钮,这个时候title和content处于可编辑状态
 *    2、删除某一个版本号
 *        超级链接的父亲的父亲的父亲干掉父亲的父亲
 */

这篇关于知识管理树加载出来 kynamic.kynamicTreeOption.loadKynamicTree(); oOA中的jsTree的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/849968

相关文章

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File