Selaa lähdekoodia

ration tuning 04/27

TonyKang 8 vuotta sitten
vanhempi
commit
5d5f9ff807

+ 4 - 28
modules/rationRepository/controllers/rationChapterTreeController.js

@@ -22,14 +22,15 @@ module.exports ={
     getRationChapterTree:
         function(req,res){
             var libName = req.body.rationLibName;
-            rationChapterTreeData.getRationChapterTrees(libName,function(err,data){
+            rationChapterTreeData.getRationChapterTree(libName,function(err,data){
                 callback(req,res,err,data)
             })
         },
     createNewNode: function(req, res){
         var libName = req.body.rationLibName;
+        var lastNodeId = req.body.lastNodeId;
         var nodeData = JSON.parse(req.body.rawNodeData);
-        rationChapterTreeData.createNewNode(libName, nodeData, function(err,data){
+        rationChapterTreeData.createNewNode(libName, lastNodeId, nodeData, function(err,data){
             callback(req,res,err,data)
         });
     },
@@ -46,30 +47,5 @@ module.exports ={
         rationChapterTreeData.removeNodes(nodes, preNodeId, preNodeNextId, function(err,results){
             callback(req,res, err, results)
         });
-    },
-    tempRationChapterTreeInsert:
-        function(req,res){
-            var DBName = req.body.rationName;
-            var rationTempTree = JSON.parse(req.body.rationTempTree);
-            rationChapterTreeData.tempRationChapterTreeInsert(DBName,rationTempTree,function(err,data){
-                callback(req,res,err,data)
-            })
-        },
-    sectionUpsert:
-        function(req,res){
-            var LibName = req.body.rationLibName;
-            var section = JSON.parse(req.body.rationSection);
-            rationChapterTreeData.sectionUpsert(LibName,section,function(err,data){
-                callback(req,res,err,data)
-            })
-        },
-    deleteSection:
-        function(req,res){
-            var LibName = req.body.rationLibName;
-            var sectionID = req.body.sectionID;
-            rationChapterTreeData.deleteSection(LibName,sectionID,function(err,data){
-                callback(req,res,err,data)
-            })
-        }
-
+    }
 }

+ 11 - 33
modules/rationRepository/models/rationChapterTree.js

@@ -22,7 +22,7 @@ var counter = require('../../../public/counter/counter');
 
 var rationChapterTreeDAO = function(){};
 
-rationChapterTreeDAO.prototype.getRationChapterTrees = function(repositoryName,callback){
+rationChapterTreeDAO.prototype.getRationChapterTree = function(repositoryName,callback){
     repositoryMap.getRealLibName(repositoryName, function(err, rst){
         rationChapterTreeModel.find({"rationRepId": rst[0].ID, "$or": [{"isDeleted": null}, {"isDeleted": false} ]},function(err,data){
             if(data.length) callback(false,data);
@@ -32,7 +32,7 @@ rationChapterTreeDAO.prototype.getRationChapterTrees = function(repositoryName,c
     })
 }
 
-rationChapterTreeDAO.prototype.createNewNode = function(repositoryName,nodeData,callback){
+rationChapterTreeDAO.prototype.createNewNode = function(repositoryName, lastNodeId, nodeData,callback){
     var promise = repositoryMap.getRealLibName(repositoryName), libId;
     if (promise) {
         promise.then(function(rst){
@@ -45,7 +45,15 @@ rationChapterTreeDAO.prototype.createNewNode = function(repositoryName,nodeData,
                     if (err) {
                         callback("章节树ID错误!", false);
                     } else {
-                        callback(false, result);
+                        if (lastNodeId > 0) {
+                            rationChapterTreeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
+                                if (err) {
+                                    callback("章节树ID错误!", false);
+                                } else {
+                                    callback(false, result);
+                                }
+                            });
+                        } else callback(false, result);
                     }
                 });
             });
@@ -101,34 +109,4 @@ rationChapterTreeDAO.prototype.updateNodes = function(nodes,callback){
     });
 };
 
-rationChapterTreeDAO.prototype.sectionUpsert = function(repositoryName,section,callback){
-    var db = dbm.getCfgConnection(repositoryName);
-    var rationChapterTreeModel = db.model("rationChapterTrees",rationChapterTreeSchema, "rationChapterTrees");
-    rationChapterTreeModel.find({"sectionId": section.sectionId},function(err,data){
-        if(data.length){
-            rationChapterTreeModel.update({'sectionId':section.sectionId},section,function(err,data){
-                if(err){
-                    callback(" ",false);
-                }else
-                    callback(false,"ok");
-            });
-        }else{
-            var N = new rationChapterTreeModel(section).save(function(err){
-                if(err){
-                    callback(" ",false);
-                }else
-                    callback(false,"success!");
-            })
-        }
-    })
-}
-//待  ration模块完成
-rationChapterTreeDAO.prototype.deleteSection= function(repositoryName,sectionId,callback){
-    var db = dbm.getCfgConnection(repositoryName);
-    var rationChapterTreeModel = db.model("rationItems",rationChapterTreeSchema);
-    rationChapterTreeModel.find({"sectionId": sectionId},[],function(err,data){
-
-    })
-}
-
 module.exports = new rationChapterTreeDAO()

+ 0 - 3
modules/rationRepository/routes/rationRepRoutes.js

@@ -19,7 +19,4 @@ apiRouter.post("/createNewNode",rationChapterTreeController.createNewNode);
 apiRouter.post("/updateNodes",rationChapterTreeController.updateNodes);
 apiRouter.post("/deleteNodes",rationChapterTreeController.deleteNodes);
 
-apiRouter.post("/addSection",rationChapterTreeController.sectionUpsert);
-apiRouter.post("/deleteSection",rationChapterTreeController.deleteSection);
-
 module.exports = apiRouter;

+ 16 - 97
web/rationLibEditor/dinge.html

@@ -52,7 +52,7 @@
                           <a onclick="zTreeOprObj.addRootNode()" class="btn btn-secondary btn-sm">增加根节点</a>
                       </div>
                     <div class="tab-content">
-                      <ul id="treeDemo" class="ztree"></ul>
+                      <ul id="rationChapterTree" class="ztree"></ul>
                     </div>
                   </div>
                   <div class="main-content col-lg-9 p-0">
@@ -877,7 +877,8 @@
   	<script type="text/javascript" src="/lib/ztree/jquery.ztree.core.js"></script>
   	<script type="text/javascript" src="/lib/ztree/jquery.ztree.excheck.js"></script>
     <script type="text/javascript" src="/lib/ztree/jquery.ztree.exedit.js"></script>
-    <script type="text/javascript" src="/web/rationLibEditor/_zSpread.js"></script>
+    <script type="text/javascript" src="/web/rationLibEditor/js/_zSpread.js"></script>
+    <script type="text/javascript" src="/web/rationLibEditor/js/chapterTree.js"></script>
     <script type="text/javascript" src="/web/rationLibEditor/js/dinge.js"></script>
     <script type="text/javascript" src="/public/web/treeDataHelper.js"></script>
     <SCRIPT type="text/javascript">
@@ -901,15 +902,16 @@ var zNodes =[
 var setting = {
     view: {
         //	showIcon: showIconForTree,//已存在*/
-        addHoverDom: addHoverDom,
+        addHoverDom: zTreeOprObj.addHoverDom,
         removeHoverDom: removeHoverDom,
+        expandSpeed: "",
         selectedMulti: false
     },
     edit: {
         enable: true,
         editNameSelectAll: true,
-        showRemoveBtn: showRemoveBtn,
-        showRenameBtn: showRenameBtn
+        showRemoveBtn: true,
+        showRenameBtn: true
     },
     data: {
         keep: {
@@ -928,16 +930,13 @@ var setting = {
     },
     callback:{
         //onClick:SectionClick,
-        beforeDrag: beforeDrag,
-        beforeEditName: beforeEditName,
-        //beforeRemove: beforeRemove,
-        beforeRename: beforeRename,
-        //beforeClick:beforeClick,
+        beforeDrag: zTreeOprObj.beforeDrag,
+        beforeRename: zTreeOprObj.beforeRename,
         beforeRemove: zTreeOprObj.onBeforeRemove,
-        //onRemove: onRemove,
+        onRemove: zTreeOprObj.onRemove,
         onRename: zTreeOprObj.onRename
     }
-}; //ztree  setting
+};
 var log, className = "dark";
 var properties = {
 }
@@ -947,96 +946,12 @@ function SectionClick(event,treeId,treeNode){
     properties.selectedSection =sectionID
     getRationItems(sectionID);
 }
-function beforeDrag(treeId, treeNodes) {
-    return false;
-}
-function beforeEditName(treeId, treeNode) {
-    className = (className === "dark" ? "":"dark");
-    var zTree = $.fn.zTree.getZTreeObj("treeDemo");
-    zTree.selectNode(treeNode);
-    zTree.editName(treeNode);
-    return false;
-}
-function beforeClick(treeID,treeNode){
-    return (treeNode.level == 2);
-}
-function beforeRemove(treeId, treeNode) {
-    var zTree = $.fn.zTree.getZTreeObj("treeDemo");
-    zTree.selectNode(treeNode);
-    return true;
-}
-//删除树节点事件
-
-//级联删除章节点
-function caseDeleteTreeNode(arryObj){
-    for(var i=0;i<arryObj.length;i++){
-        {
-            $.ajax({
-                type:"POST",
-                url:"http://localhost:6060/ration/deleteRation",
-                data:{"rationName": rationName,"value":arryObj[i].RationCode},
-                async:false,
-                dataType:"json",
-                cache:false,
-                timeout:1000,
-                success:function(result){
-
-                },
-                error:function(){
-                    alert("nima")
-                }
-            })
-        }
-    }
-}
-//删除树节点ajax函
-function removeSection(id){
-    $.ajax({
-        type:"POST",
-        url:"http://localhost:6060/ration/removeSection",
-        data:{"rationName":rationName,"rationSection":id},
-        dataType:"json",
-        cache:false,
-        timeout:1000,
-        success:function(result){
-        },
-        error:function(){
-        }
-    })
-}
-function beforeRename(treeId, treeNode, newName, isCancel) {
-    className = (className === "dark" ? "":"dark");
-    if (newName.length == 0) {
-        setTimeout(function() {
-            var zTree = $.fn.zTree.getZTreeObj("treeDemo");
-            zTree.cancelEditName();
-            alert("节点名称不能为空.");
-        }, 0);
-        return false;
-    }
-    return true;
-}
-function showRemoveBtn(treeId, treeNode) {
-    return true
-}
-function showRenameBtn(treeId, treeNode) {
-    return true
-}
-function getTime() {
-    var now= new Date(),
-            h=now.getHours(),
-            m=now.getMinutes(),
-            s=now.getSeconds(),
-            ms=now.getMilliseconds();
-    return (h+":"+m+":"+s+ " " +ms);
-}
-
 
 function removeHoverDom(treeId, treeNode) {
     $("#addBtn_"+treeNode.tId).unbind().remove();
 };
 function selectAll() {
-    var zTree = $.fn.zTree.getZTreeObj("treeDemo");
+    var zTree = $.fn.zTree.getZTreeObj("rationChapterTree");
     zTree.setting.edit.editNameSelectAll =  $("#selectAll").attr("checked");
 }
 
@@ -1449,6 +1364,10 @@ $("#bt-inputCode").blur(function(){
 </body>
 <script type="text/javascript">
     autoFlashHeight();
+    $(document).ready(function(){
+        pageOprObj.initParam();
+        rationOprObj.mkRationItemSpread();
+    });
 </script>
 
 </html>

+ 1 - 1
web/rationLibEditor/gongliao.html

@@ -196,7 +196,7 @@
   	<script type="text/javascript" src="/lib/ztree/jquery.ztree.core.js"></script>
   	<script type="text/javascript" src="/lib/ztree/jquery.ztree.excheck.js"></script>
     <script type="text/javascript" src="/web/rationLibEditor/js/gongliao.js"></script>
-    <script type="text/javascript" src="/web/rationLibEditor/_zSpread.js"></script>
+    <script type="text/javascript" src="/web/rationLibEditor/js/_zSpread.js"></script>
     <SCRIPT type="text/javascript">
   		<!--
 var setting = {

+ 1 - 1
web/rationLibEditor/_zSpread.js

@@ -23,7 +23,7 @@
         isArray:function(arr){
             return Object.prototype.toString.apply(arr) === "[object Array]"
         },
-        clone:function(obj){  //���colon����  �������ֱ����ȸ��ƣ����󲻿���
+        clone:function(obj){
             if(obj===null) return null;
             var o = _tools.isArray(obj)?[]:{};
             for(var i in obj){

+ 194 - 0
web/rationLibEditor/js/chapterTree.js

@@ -0,0 +1,194 @@
+/**
+ * Created by Tony on 2017/4/27.
+ */
+
+function getQueryString(key){
+    var reg = new RegExp("(^|&)"+key+"=([^&]*)(&|$)");
+    var result = window.location.search.substr(1).match(reg);
+    return result?decodeURIComponent(result[2]):null;
+}
+
+var pageOprObj = {
+    initParam : function() {
+        var rationLibName = getQueryString("repository");//获取定额库参数
+        if (rationLibName) {
+            params.realLibName = rationLibName;
+            zTreeOprObj.getRationTree();
+        } else{
+            params = JSON.parse(getQueryString("params"));
+            zTreeOprObj.getRationTree();
+        }
+    }
+}
+var zTreeOprObj = {
+    getRationTree: function(){
+        var me = this;
+        $.ajax({
+            type:"POST",
+            url:"api/getRationTree",
+            data:{"rationLibName": params.realLibName},
+            dataType:"json",
+            cache:false,
+            timeout:20000,
+            success:function(result,textStatus,status){
+                if(status.status == 200) {
+                    me.createRationTree(result.data);
+                }
+            },
+            error:function(err){
+                alert(err.responseText.error)
+            }
+        })
+    },
+    createRationTree: function(sourceData){
+        var treeArr = tree_Data_Helper.buildTreeNodeDirectly(sourceData);
+        for (var i = 0; i < treeArr.length; i++) {
+            if (treeArr[i].ParentID = -1) {
+                //
+            }
+        }
+        treeObj = $.fn.zTree.init($("#rationChapterTree"), setting, treeArr);
+        treeObj.expandAll(true);
+    },
+    addRootNode: function() {
+        var me = this, rawNode = {ParentID: -1, NextSiblingID: -1, name: "新增节点"}, lastNodeId = -1;
+        if (treeObj) {
+            var rootNodes = treeObj.getNodes();
+            if (rootNodes.length > 0) {
+                lastNodeId = rootNodes[rootNodes.length - 1].ID;
+            }
+        }
+        me.addNewNode(rawNode, lastNodeId, function(err, rst){
+            if (!(err)) {
+                var newNodes = [], isSilent = false;
+                newNodes.push({ rationRepId: rst.data.rationRepId, ID: rst.data.ID, ParentID:-1, NextSiblingID:-1, name:"新增节点",isParent:true, items:[]});
+                if (treeObj) {
+                    treeObj.addNodes(null, -1, newNodes, isSilent);
+                } else {
+                    treeObj = $.fn.zTree.init($("#rationChapterTree"), setting, newNodes);
+                }
+            }
+        });
+    },
+    addNewNode : function(rawNode, lastNodeId, callback){
+        $.ajax({
+            type:"POST",
+            url:"api/createNewNode",
+            data:{"rationLibName":params.realLibName,"lastNodeId": lastNodeId, "rawNodeData": JSON.stringify(rawNode)},
+            dataType:"json",
+            cache:false,
+            timeout:1000,
+            success: function(result,textStatus,status){
+                callback(false, result);
+            },
+            error:function(err){
+                callback(err);
+            }
+        })
+    },
+    beforeRename: function(treeId, treeNode, newName, isCancel) {
+        className = (className === "dark" ? "":"dark");
+        if (newName.length == 0) {
+            return false;
+        }
+        return true;
+    },
+    onRename : function(e, treeId, treeNode, isCancel) {
+        var nodes = [];
+        nodes.push(treeNode);
+        zTreeOprObj.updateNodes(nodes);
+    },
+    onBeforeRemove: function(treeId, treeNode){
+        var nodeIds = [], preNode = treeNode.getPreNode(), preNodeId = -1;
+        if (preNode) {
+            preNodeId = preNode.ID;
+        }
+        nodeIds.push(treeNode.ID);
+        for (var i = 0; i < treeNode.items.length; i++) {
+            nodeIds.push(treeNode.items[i].ID);
+        }
+        $.ajax({
+            type:"POST",
+            url:"api/deleteNodes",
+            data:{"nodes": JSON.stringify(nodeIds), "preNodeId": preNodeId, "preNodeNextId": treeNode.NextSiblingID},
+            dataType:"json",
+            cache:false,
+            timeout:5000,
+            success:function(result,textStatus,status){
+                var pNode = treeNode.getParentNode();
+                if (pNode && pNode.items && pNode.items.length == 1) {
+                    pNode.isParent = false;
+                }
+            },
+            error:function(){
+            }
+        });
+        return true;
+    },
+    onRemove: function(e, treeId, treeNode){
+        var pNode = treeObj.getNodeByTId(treeNode.parentTId);
+        if (pNode && pNode.items && pNode.items.length == 0) {
+            pNode.isParent = false;
+            treeObj.refresh();
+            //treeObj.updateNode(pNode, false); //这方法有后遗症,多次操作后会造成节点新增子节点时,父节点icon显示不正确
+        }
+    },
+    beforeDrag: function(treeId, treeNodes) {
+        return false;
+    },
+    updateNodes: function(nodes){
+        if (nodes && nodes.length > 0) {
+            var reqData = []
+            for (var i = 0; i < nodes.length; i++) {
+                var node = {};
+                node.rationRepId = nodes[i].rationRepId;
+                node.ID = nodes[i].ID;
+                node.ParentID = nodes[i].ParentID;
+                node.NextSiblingID = nodes[i].NextSiblingID;
+                node.name = nodes[i].name;
+                if (nodes[i].__v != null) node.__v = nodes[i].__v + 1
+                else node.__v = 0;
+                reqData.push(node);
+            }
+            $.ajax({
+                type:"POST",
+                url:"api/updateNodes",
+                data:{"nodes": JSON.stringify(reqData)},
+                dataType:"json",
+                cache:false,
+                timeout:5000,
+                success:function(result,textStatus,status){
+                    console.log(status + ' : ' + result);
+                },
+                error:function(){
+                }
+            })
+        }
+    },
+    addHoverDom: function(treeId, treeNode) {
+        var sObj = $("#" + treeNode.tId + "_span");
+        //if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0||(treeNode.level==2)) return;
+        if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
+        var addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='add node' onfocus='this.blur();'></span>";
+        sObj.after(addStr);
+        var btn = $("#addBtn_"+treeNode.tId);
+        if (btn) btn.bind("click", function(){
+            var rawNode = {ParentID: treeNode.ID, NextSiblingID: -1, name: "新增子节点"}, lastNodeId = -1;
+            if (treeNode.items.length > 0) {
+                lastNodeId = treeNode.items[treeNode.items.length - 1].ID;
+            }
+            zTreeOprObj.addNewNode(rawNode, lastNodeId, function(err, rst){
+                if (!(err)) {
+                    var newNodes = [], isSilent = false;
+                    newNodes.push({ rationRepId: rst.data.rationRepId, ID: rst.data.ID, ParentID: rst.data.ParentID, NextSiblingID:-1, name:"新增子节点",isParent:false, items:[]});
+                    treeNode.isParent = true;
+                    if (treeObj) {
+                        treeObj.addNodes(treeNode, -1, newNodes, isSilent);
+                    } else {
+                        treeObj = $.fn.zTree.init($("#rationChapterTree"), setting, newNodes);
+                    }
+                }
+            });
+        });
+    }
+};

+ 43 - 228
web/rationLibEditor/js/dinge.js

@@ -1,11 +1,6 @@
 /**
  * Created by Syusuke on 2017/3/17.
  */
-function getQueryString(key){
-    var reg = new RegExp("(^|&)"+key+"=([^&]*)(&|$)");
-    var result = window.location.search.substr(1).match(reg);
-    return result?decodeURIComponent(result[2]):null;
-}
 //---------------------------------------------------页面跳转
 var params = {}
 $("#dinge").click(function(){
@@ -14,234 +9,54 @@ $("#dinge").click(function(){
 $("#gongliao").click(function(){
     $(this).attr('href', "/rationLibEditor/gongliao" + "?params=" + JSON.stringify(params))
 });
-//----------------------------------------------------页面初始化
-$(document).ready(function(){
-    rationOprObj.initParam();
-    mkRationItemSpread();
-});
 
 var rationOprObj = {
-    initParam : function() {
-        var me = this, rationLibName = getQueryString("repository");//获取定额库参数
-        if (rationLibName) {
-            params.realLibName = rationLibName;
-            me.getRationTree();
-        } else{
-            params = JSON.parse(getQueryString("params"));
-            me.getRationTree();
+    rationSpread : null,
+    rationGLJSpread: null,
+    spSetting_ration: {
+        spType:"Ration",
+        header:[
+            {headerName:"编码",headerWidth:120,data:"rationCode"},
+            {headerName:"名称",headerWidth:400,data:"rationName"},
+            {headerName:"单位",headerWidth:120,data:"unit"},
+            {headerName:"基价",headerWidth:120,data:"basePrice"},
+            {headerName:"显示名称(以%s表示参数)",headerWidth:450,data:"caption"},
+            {headerName:"取费专业",headerWidth:120,data:"feeType"}
+        ],
+        view:{
+            comboBox:[
+                {row:-1,col:2,rowCount:-1,colCount:1}
+            ],
+            lockedCells:[
+                {row:-1,col:3,rowCount:-1, colCount:1}
+            ]
         }
     },
-    getRationTree: function(){
-        var me = this;
-        $.ajax({
-            type:"POST",
-            url:"api/getRationTree",
-            data:{"rationLibName": params.realLibName},
-            dataType:"json",
-            cache:false,
-            timeout:20000,
-            success:function(result,textStatus,status){
-                if(status.status == 200) {
-                    me.createRationTree(result.data);
-                }
-            },
-            error:function(err){
-                alert(err.responseText.error)
-            }
-        })
-    },
-    createRationTree: function(sourceData){
-        var treeArr = tree_Data_Helper.buildTreeNodeDirectly(sourceData);
-        treeObj = $.fn.zTree.init($("#treeDemo"), setting, treeArr);
-    }
-}
-
-var zTreeOprObj = {
-    addRootNode: function() {
-        var me = this, rawNode = {ParentID: -1, NextSiblingID: -1, name: "新增节点"};
-        me.addNewNode(rawNode, function(err, rst){
-            if (!(err)) {
-                var newNodes = [], isSilent = false;
-                newNodes.push({ rationRepId: rst.data.rationRepId, ID: rst.data.ID, ParentID:-1, NextSiblingID:-1, name:"新增节点",isParent:true, items:[]});
-                if (treeObj) {
-                    treeObj.addNodes(null, -1, newNodes, isSilent);
-                } else {
-                    treeObj = $.fn.zTree.init($("#treeDemo"), setting, newNodes);
-                }
-            }
-        });
-    },
-    addNewNode : function(rawNode, callback){
-        $.ajax({
-            type:"POST",
-            url:"api/createNewNode",
-            data:{"rationLibName":params.realLibName,"rawNodeData": JSON.stringify(rawNode)},
-            dataType:"json",
-            cache:false,
-            timeout:1000,
-            success: function(result,textStatus,status){
-                callback(false, result);
-            },
-            error:function(err){
-                callback(err);
-            }
-        })
-    },
-    onRename : function(e, treeId, treeNode, isCancel) {
-        var nodes = [];
-        nodes.push(treeNode);
-        zTreeOprObj.updateNodes(nodes);
-    },
-    onBeforeRemove: function(treeId, treeNode){
-        var nodeIds = [], preNode = treeNode.getPreNode(), preNodeId = -1;
-        if (preNode) {
-            preNodeId = preNode.ID;
-        }
-        nodeIds.push(treeNode.ID);
-        for (var i = 0; i < treeNode.items.length; i++) {
-            nodeIds.push(treeNode.items[i].ID);
+    spSetting_rationGLJ: {
+        spType:"RationGLJ",
+        header:[
+            {headerName:"编码",headerWidth:160},
+            {headerName:"名称",headerWidth:400},
+            {headerName:"单位",headerWidth:160},
+            {headerName:"单位基价",headerWidth:160},
+            {headerName:"定额消耗",headerWidth:160},
+            {headerName:"类型",headerWidth:160},
+            {headerName:"操作",headerWidth:130}
+        ],
+        view:{
+            comboBox:[],
+            lockedCells:[
+                {row:-1,col:1,rowCount:-1, colCount:1},
+                {row:-1,col:2,rowCount:-1, colCount:1},
+                {row:-1,col:3,rowCount:-1, colCount:1},
+                {row:-1,col:5,rowCount:-1, colCount:1},
+                {row:-1,col:6,rowCount:-1, colCount:1}
+            ]
         }
-        $.ajax({
-            type:"POST",
-            url:"api/deleteNodes",
-            data:{"nodes": JSON.stringify(nodeIds), "preNodeId": preNodeId, "preNodeNextId": treeNode.NextSiblingID},
-            dataType:"json",
-            cache:false,
-            timeout:5000,
-            success:function(result,textStatus,status){
-                //if(result){
-                //    caseDeleteTreeNode(result.data)
-                //}
-            },
-            error:function(){
-            }
-        });
-        return true;
     },
-    updateNodes: function(nodes){
-        if (nodes && nodes.length > 0) {
-            var reqData = []
-            for (var i = 0; i < nodes.length; i++) {
-                var node = {};
-                node.rationRepId = nodes[i].rationRepId;
-                node.ID = nodes[i].ID;
-                node.ParentID = nodes[i].ParentID;
-                node.NextSiblingID = nodes[i].NextSiblingID;
-                node.name = nodes[i].name;
-                node.__v = nodes[i].__v + 1;
-                reqData.push(node);
-            }
-            $.ajax({
-                type:"POST",
-                url:"api/updateNodes",
-                data:{"nodes": JSON.stringify(reqData)},
-                dataType:"json",
-                cache:false,
-                timeout:5000,
-                success:function(result,textStatus,status){
-                    console.log(status + ' : ' + result);
-                },
-                error:function(){
-                }
-            })
-        }
-    }
-};
-//--------------------------------------------------------树处理事件
-var newCount = 13;
-//新增树节点
-function addHoverDom(treeId, treeNode) {
-    var sObj = $("#" + treeNode.tId + "_span");
-    if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0||(treeNode.level==2)) return;
-    var addStr = "<span class='button add' id='addBtn_" + treeNode.tId
-        + "' title='add node' onfocus='this.blur();'></span>";
-    sObj.after(addStr);
-    var btn = $("#addBtn_"+treeNode.tId);
-    if (btn) btn.bind("click", function(){
-        var zTree = $.fn.zTree.getZTreeObj("treeDemo");
-        if((treeNode.level==0)){
-            var newNode = zTree.addNodes(treeNode, {id:(++newCount), pId:treeNode.id,nId:-1,isParent:true, name:"请输入章节名称",items:[]});
-
-        }
-        else{
-            var newNode = zTree.addNodes(treeNode, {id:(++newCount), pId:treeNode.id,nId:-1,isParent:false, name:"请输入章节名称"});
-
-        }
-        saveNewSection(newNode[0]);
-        var pnode = newNode[0].getPreNode()
-        if(pnode){
-            pnode.nId = newNode[0].id;
-            saveNewSection(pnode);
-        }
-        return false;
-    });
-};
-
-//保存新增的节点
-function saveNewSection(n){
-    var sec={};
-    sec.sectionId = n.id;
-    sec.parentId = n.pId;
-    sec.nextSiblingId = n.nId;
-    sec.name = n.name;
-    var section = JSON.stringify(sec);
-    $.ajax({
-        type:"POST",
-        url:"api/addSection",
-        data:{"rationLibName":params.realLibName,"rationSection":section},
-        dataType:"json",
-        cache:false,
-        timeout:1000,
-        success:function(result,textStatus,status){
-        },
-        error:function(){
-        }
-    })
-}
-
-//--------------------------------------------------------定额spreadjs
-var spSetting_ration = {
-    spType:"Ration",
-    header:[
-        {headerName:"编码",headerWidth:120,data:"rationCode"},
-        {headerName:"名称",headerWidth:400,data:"rationName"},
-        {headerName:"单位",headerWidth:120,data:"unit"},
-        {headerName:"基价",headerWidth:120,data:"basePrice"},
-        {headerName:"显示名称(以%s表示参数)",headerWidth:450,data:"caption"},
-        {headerName:"取费专业",headerWidth:120,data:"feeType"}
-    ],
-    view:{
-        comboBox:[
-            {row:-1,col:2,rowCount:-1,colCount:1}
-        ],
-        lockedCells:[
-            {row:-1,col:3,rowCount:-1, colCount:1}
-        ]
-    }
-};
-var spSetting_rationGLJ = {
-    spType:"RationGLJ",
-    header:[
-        {headerName:"编码",headerWidth:160},
-        {headerName:"名称",headerWidth:400},
-        {headerName:"单位",headerWidth:160},
-        {headerName:"单位基价",headerWidth:160},
-        {headerName:"定额消耗",headerWidth:160},
-        {headerName:"类型",headerWidth:160},
-        {headerName:"操作",headerWidth:130}
-    ],
-    view:{
-        comboBox:[],
-        lockedCells:[
-            {row:-1,col:1,rowCount:-1, colCount:1},
-            {row:-1,col:2,rowCount:-1, colCount:1},
-            {row:-1,col:3,rowCount:-1, colCount:1},
-            {row:-1,col:5,rowCount:-1, colCount:1},
-            {row:-1,col:6,rowCount:-1, colCount:1}
-        ]
+    mkRationItemSpread: function() {
+        var me = this;
+        me.rationSpread =  $.fn.Spread.init($("#rationItemsSheet"), me.spSetting_ration);
+        me.rationGLJSpread =  $.fn.Spread.init($("#rationGLJSheet"), me.spSetting_rationGLJ);
     }
-};
-function mkRationItemSpread(){
-    var rationSpread =  $.fn.Spread.init($("#rationItemsSheet"),spSetting_ration);
-    var rationGLJSpread =  $.fn.Spread.init($("#rationGLJSheet"),spSetting_rationGLJ);
 }