知识管理树加载出来 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

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

SpringBoot加载profile全面解析

《SpringBoot加载profile全面解析》SpringBoot的Profile机制通过多配置文件和注解实现环境隔离,支持开发、测试、生产等不同环境的灵活配置切换,无需修改代码,关键点包括配置文... 目录题目详细答案什么是 Profile配置 Profile使用application-{profil

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底