Browse Source

工料机 tuning

TonyKang 8 years ago
parent
commit
82178f85de

+ 6 - 7
modules/rationRepository/controllers/rationChapterTreeController.js

@@ -20,13 +20,12 @@ var callback = function(req,res,err,data){
     }
 }
 module.exports ={
-    getRationChapterTree:
-        function(req,res){
-            var libName = req.body.rationLibName;
-            rationChapterTreeData.getRationChapterTree(libName,function(err,data){
-                callback(req,res,err,data)
-            })
-        },
+    getRationChapterTree: function(req,res){
+        var libName = req.body.rationLibName;
+        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;

+ 47 - 0
modules/rationRepository/controllers/repositoryGljController.js

@@ -0,0 +1,47 @@
+/**
+ * Created by Tony on 2017/5/5.
+ */
+var gljRepository = require("../models/gljRepository");
+
+var callback = function(req,res,err,data){
+    if(data){
+        res.status(200)
+        res.json({success:true,data:data});
+    }
+    else
+    if(err){
+        res.status(500)
+        res.json({success:false,error:err});
+        //res.json(err);
+    }
+    else{
+        res.status(204);
+        res.json({success:true,data:null});
+    }
+}
+module.exports ={
+    getGljTree: function(req,res){
+        var libName = req.body.rationLibName;
+        gljRepository.getGljTypes(libName,function(err,data){
+            callback(req,res,err,data)
+        });
+    },
+    getGljItems: function(req, res) {
+        var repId = req.body.repositoryId,
+            gljType = req.body.type,
+            gljCode = req.body.code;
+        if (gljCode) {
+            gljRepository.getGljItem(repId, gljCode, function(err, data){
+                callback(req,res,err,data)
+            });
+        } else if (gljType) {
+            gljRepository.getGljItemByType(repId, gljType, function(err, data){
+                callback(req,res,err,data)
+            });
+        } else {
+            gljRepository.getGljItemsByRep(repId, function(err, data){
+                callback(req,res,err,data)
+            });
+        }
+    }
+}

+ 20 - 5
modules/rationRepository/models/gljRepository.js

@@ -30,14 +30,22 @@ var gljSchema = mongoose.Schema({
 });
 var gljTypeModel = db.model("gljType",gljTypeSchema, "gljType");
 var gljItemModel = db.model("gljRepository",gljSchema, "gljRepository");
+var repositoryMap = require('./repositoryMap');
 var counter = require('../../../public/counter/counter');
 
 var gljItemDAO = function(){};
-gljItemDAO.prototype.getGljTypes = function(repositoryId, callback){
-    gljTypeModel.find({"repositoryId": repositoryId},function(err,data){
-        if(err) callback(true, "获取工料机类型错误!", "")
-        else callback(false,"获取工料机类型", data);
-    })
+gljItemDAO.prototype.getGljTypes = function(repositoryName, callback){
+    repositoryMap.getRealLibName(repositoryName, function(err, rst){
+        if (err || rst.length == 0) {
+            callback("获取定额库错误!",false)
+        } else {
+            gljTypeModel.find({"repositoryId": rst[0].ID, "$or": [{"isDeleted": null}, {"isDeleted": false} ]},function(err,data){
+                if(data.length) callback(false,data);
+                else  if(err) callback("获取工料机类型错误!",false)
+                else callback(false,false);
+            })
+        }
+    });
 };
 
 gljItemDAO.prototype.getGljItemsByRep = function(repositoryId,callback){
@@ -47,6 +55,13 @@ gljItemDAO.prototype.getGljItemsByRep = function(repositoryId,callback){
     })
 };
 
+gljItemDAO.prototype.getGljItemByType = function(repositoryId, type, callback){
+    gljItemModel.find({"repositoryId": repositoryId, "gljType": type},function(err,data){
+        if(err) callback(true, "获取工料机错误!", "")
+        else callback(false,"获取工料机", data);
+    })
+};
+
 gljItemDAO.prototype.getGljItem = function(repositoryId, code, callback){
     gljItemModel.find({"repositoryId": repositoryId, "code": code},function(err,data){
         if(err) callback(true, "获取工料机错误!", "")

+ 6 - 1
modules/rationRepository/routes/rationRepRoutes.js

@@ -3,11 +3,12 @@
  */
 var express = require("express");
 var apiRouter =express.Router();
-var _rootDir = __dirname;
+//var _rootDir = __dirname;
 
 var rationRepositoryController = require("../controllers/rationRepositoryController");
 var rationChapterTreeController = require("../controllers/rationChapterTreeController");
 var rationController = require("../controllers/rationController");
+var repositoryGljController = require("../controllers/repositoryGljController");
 
 apiRouter.post("/getRationDisplayNames",rationRepositoryController.getDisPlayRationLibs);
 apiRouter.post("/editRationLibs",rationRepositoryController.updateRationRepositoryName);
@@ -23,4 +24,8 @@ apiRouter.post("/deleteNodes",rationChapterTreeController.deleteNodes);
 apiRouter.post("/getRationItems",rationController.getRationItemsBySection);
 apiRouter.post("/mixUpdateRationItems",rationController.mixUpdateRationItems);
 
+apiRouter.post("/getGljTree",repositoryGljController.getGljTree);
+apiRouter.post("/getGljItems",repositoryGljController.getGljItems);
+
+
 module.exports = apiRouter;

+ 9 - 0
public/QueryParam.js

@@ -0,0 +1,9 @@
+/**
+ * Created by Tony on 2017/5/5.
+ */
+
+function getQueryString(key){
+    var reg = new RegExp("(^|&)"+key+"=([^&]*)(&|$)");
+    var result = window.location.search.substr(1).match(reg);
+    return result?decodeURIComponent(result[2]):null;
+}

+ 1 - 1
server.js

@@ -145,7 +145,7 @@ app.get('/rationRepository/ration', function(req, res) {
             userID: req.session.userID
         });
 });
-app.get('/rationRepository/gongliao', function(req, res) {
+app.get('/rationRepository/lmm', function(req, res) {
     res.render('rationLibEditor/gongliao.html',
         {
             userAccount: req.session.userAccount,

+ 40 - 42
web/rationLibEditor/dinge.html

@@ -25,14 +25,13 @@
         <nav class="navbar navbar-toggleable-lg justify-content-between navbar-light p-0">
               <ul class="nav nav-tabs" role="tablist">
                   <li class="nav-item">
-                      <!--<a class="nav-link active px-3" href="rationLib">定额</a> zepadd  -->
                       <a class="nav-link active px-3" id ="dinge" >定额</a>
                   </li>
                   <li class="nav-item">
-                      <a class="nav-link px-3" id="gongliao">工料机</a>
+                      <a class="nav-link px-3" id="gongliao" href="/rationLibEditor/lmm">工料机</a>
                   </li>
                   <li class="nav-item">
-                      <a class="nav-link px-3" id="fuzhu">附注条件</a>
+                      <a class="nav-link px-3" id="fuzhu" href="/rationLibEditor/fuzhu">附注条件</a>
                   </li>
                   <li class="nav-item">
                       <a class="nav-link px-3" href="#maz">安装增加费</a>
@@ -882,52 +881,51 @@
     <script type="text/javascript" src="/web/rationLibEditor/js/ration.js"></script>
     <script type="text/javascript" src="/web/rationLibEditor/js/rationGLJ.js"></script>
     <script type="text/javascript" src="/public/web/treeDataHelper.js"></script>
+    <script type="text/javascript" src="/public/QueryParam.js"></script>
     <script type="text/javascript">
-
         var setting = {
-    view: {
-        //	showIcon: showIconForTree,//已存在*/
-        addHoverDom: zTreeOprObj.addHoverDom,
-        removeHoverDom: zTreeOprObj.removeHoverDom,
-        expandSpeed: "",
-        selectedMulti: false
-    },
-    edit: {
-        enable: true,
-        editNameSelectAll: true,
-        showRemoveBtn: true,
-        showRenameBtn: true
-    },
-    data: {
-        keep: {
-            parent:true,
-            leaf:true
-        },
-        key: {
-            children: "items"
-        },
-        simpleData: {
-            enable: true,
-            idKey: "ID",
-            pIdKey: "ParentID",
-            rootPId: -1
-        }
-    },
-    callback:{
-        onClick: zTreeOprObj.onClick,
-        beforeDrag: zTreeOprObj.beforeDrag,
-        beforeRename: zTreeOprObj.beforeRename,
-        beforeRemove: zTreeOprObj.onBeforeRemove,
-        onRemove: zTreeOprObj.onRemove,
-        onRename: zTreeOprObj.onRename
-    }
-};
+            view: {
+                addHoverDom: zTreeOprObj.addHoverDom,
+                removeHoverDom: zTreeOprObj.removeHoverDom,
+                expandSpeed: "",
+                selectedMulti: false
+            },
+            edit: {
+                enable: true,
+                editNameSelectAll: true,
+                showRemoveBtn: true,
+                showRenameBtn: true
+            },
+            data: {
+                keep: {
+                    parent:true,
+                    leaf:true
+                },
+                key: {
+                    children: "items"
+                },
+                simpleData: {
+                    enable: true,
+                    idKey: "ID",
+                    pIdKey: "ParentID",
+                    rootPId: -1
+                }
+            },
+            callback:{
+                onClick: zTreeOprObj.onClick,
+                beforeDrag: zTreeOprObj.beforeDrag,
+                beforeRename: zTreeOprObj.beforeRename,
+                beforeRemove: zTreeOprObj.onBeforeRemove,
+                onRemove: zTreeOprObj.onRemove,
+                onRename: zTreeOprObj.onRename
+            }
+        };
   	</script>
 </body>
 <script type="text/javascript">
     autoFlashHeight();
     $(document).ready(function(){
-        pageOprObj.initParam();
+        pageOprObj.initPage();
         rationOprObj.buildSheet($("#rationItemsSheet")[0]);
         rationGLJOprObj.buildSheet($("#rationGLJSheet")[0]);
     });

+ 40 - 48
web/rationLibEditor/gongliao.html

@@ -9,6 +9,7 @@
     <link rel="stylesheet" href="/web/css/bootstrap/bootstrap.min.css">
     <link rel="stylesheet" href="/web/css/main.css">
     <link rel="stylesheet" href="/web/css/font-awesome/font-awesome.min.css">
+    <link rel="stylesheet" href="/web/css/spreadjs/gc.spread.sheets.10.0.1.css" type="text/css">
     <!--zTree-->
   	<link rel="stylesheet" href="/web/css/ztree/zTreeStyle.css" type="text/css">
 </head>
@@ -22,13 +23,13 @@
         <nav class="navbar navbar-toggleable-lg justify-content-between navbar-light p-0">
               <ul class="nav nav-tabs" role="tablist">
                   <li class="nav-item">
-                      <a class="nav-link px-3" id="drirect-dinge" href="rationLib">定额</a>
+                      <a class="nav-link px-3" id="drirect-dinge" href="/rationLibEditor/ration">定额</a>
                   </li>
                   <li class="nav-item">
-                      <a class="nav-link active px-3" href="gongliao">工料机</a>
+                      <a class="nav-link active px-3">工料机</a>
                   </li>
                   <li class="nav-item">
-                      <a class="nav-link px-3" href="fuzhu">附注条件</a>
+                      <a class="nav-link px-3" href="/rationLibEditor/fuzhu">附注条件</a>
                   </li>
                   <li class="nav-item">
                       <a class="nav-link px-3" href="#maz">安装增加费</a>
@@ -39,32 +40,13 @@
     <div class="main">
         <div class="content">
             <div class="container-fluid">
-                <div class="row">
+                <div class="row" style="height: 660px">
                   <div class="main-side col-lg-3 p-0">
                     <div class="tab-content">
-                      <ul id="treeDemo" class="ztree"></ul>
+                      <ul id="repositoryTree" class="ztree"></ul>
                     </div>
                   </div>
                   <div id="GLJListSheet" class="main-content col-lg-9 p-0">
-          <!--       <table class="table table-sm table-bordered m-0">
-                      <thead>
-                        <tr>
-                          <th></th>
-                          <th>编码</th>
-                          <th>名称</th>
-                          <th>规格</th>
-                          <th>单位</th>
-                          <th>基价单价</th>
-                          <th>类型</th>
-                          <th>操作</th>
-                        </tr>
-                      </thead>
-                      <tbody>
-
-                      </tbody>
-                    </table>
-                    <div class="m-2"><a href="javacript:void(0);" data-toggle="modal" data-target="#add"  class="btn btn-primary btn-sm">添加</a></div>
-                    -->
                   </div>
                 </div>
             </div>
@@ -195,33 +177,43 @@
     <script src = "/lib/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js"></script>
   	<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">
-  		<!--
-var setting = {
-    view: {
-        showIcon: false
-    },
-    data: {
-        simpleData: {
-            enable: true
-        }
-    }
-};
-var zNodes =[
-{ id:1, pId:0, name:"全部", open:true},
-    { id:11, pId:1, name:"人工"},
-    { id:111, pId:1, name:"材料"},
-    { id:112, pId:1, name:"机械"}
-    ];
-function showIconForTree(treeId, treeNode) {
-    return !treeNode.isParent;
-};
-  		//-->
-  	</SCRIPT>
+    <script type="text/javascript" src="/public/web/treeDataHelper.js"></script>
+    <script type="text/javascript" src="/public/QueryParam.js"></script>
+    <script type="text/javascript" src="/web/rationLibEditor/js/repositoryGLJ.js"></script>
+    <script type="text/javascript" src="/web/rationLibEditor/js/sheetCommon.js"></script>
+    <script type="text/javascript">
+        var setting = {
+            view: {
+                showIcon: true
+            },
+            data: {
+                keep: {
+                    parent:true,
+                    leaf:true
+                },
+                key: {
+                    children: "items",
+                    name: "Name"
+                },
+                simpleData: {
+                    enable: true,
+                    idKey: "ID",
+                    pIdKey: "ParentID",
+                    rootPId: -1
+                }
+            },
+            callback:{
+                //onClick: zTreeOprObj.onClick,
+            }
+        };
+  	</script>
 </body>
 <script type="text/javascript">
     autoFlashHeight();
+    $(document).ready(function(){
+        pageOprObj.initPage();
+        repositoryGljObj.buildSheet($("#GLJListSheet")[0]);
+    });
 </script>
 
 </html>

+ 8 - 21
web/rationLibEditor/js/chapterTree.js

@@ -2,32 +2,24 @@
  * 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");//获取定额库参数
+    rationLibName : null,
+    initPage : function() {
+        var me = this, rationLibName = getQueryString("repository");//获取定额库参数
         if (rationLibName) {
-            params.realLibName = rationLibName;
-            zTreeOprObj.getRationTree();
-        } else{
-            params = JSON.parse(getQueryString("params"));
-            zTreeOprObj.getRationTree();
+            me.rationLibName = rationLibName;
+            zTreeOprObj.getRationTree(rationLibName);
         }
     }
 }
 var zTreeOprObj = {
     treeObj: null,
-    getRationTree: function(){
+    getRationTree: function(rationLibName){
         var me = this;
         $.ajax({
             type:"POST",
             url:"api/getRationTree",
-            data:{"rationLibName": params.realLibName},
+            data:{"rationLibName": rationLibName},
             dataType:"json",
             cache:false,
             timeout:20000,
@@ -43,11 +35,6 @@ var zTreeOprObj = {
     },
     createRationTree: function(sourceData){
         var me = zTreeOprObj, treeArr = tree_Data_Helper.buildTreeNodeDirectly(sourceData);
-        for (var i = 0; i < treeArr.length; i++) {
-            if (treeArr[i].ParentID = -1) {
-                //
-            }
-        }
         me.treeObj = $.fn.zTree.init($("#rationChapterTree"), setting, treeArr);
         me.treeObj.expandAll(true);
     },
@@ -75,7 +62,7 @@ var zTreeOprObj = {
         $.ajax({
             type:"POST",
             url:"api/createNewNode",
-            data:{"rationLibName":params.realLibName,"lastNodeId": lastNodeId, "rawNodeData": JSON.stringify(rawNode)},
+            data:{"rationLibName":pageOprObj.rationLibName,"lastNodeId": lastNodeId, "rawNodeData": JSON.stringify(rawNode)},
             dataType:"json",
             cache:false,
             timeout:1000,

+ 0 - 39
web/rationLibEditor/js/gongliao.js

@@ -1,39 +0,0 @@
-/**
- * Created by Syusuke on 2017/3/22.
- */
-//-----------------------------------------------获取参数对象
-var paramStr = getQueryString("params");
-var params = JSON.parse(paramStr);
-function getQueryString(key){
-    var reg = new RegExp("(^|&)"+key+"=([^&]*)(&|$)");
-    var result = window.location.search.substr(1).match(reg);
-    return result?decodeURIComponent(result[2]):null;
-}
-//-----------------------------------------------页面跳转
-$("#drirect-dinge").click(function(){
-  //  window.location = "/rationLibEditor/rationLib" + "?params=" + JSON.stringify(params);
-   $(this).attr('href', "/rationLibEditor/rationLib" + "?params=" + JSON.stringify(params))
-})
-//-----------------------------------------------页面初始化
-var spSetting_GLJ = {
-    spType:"GLJList",
-    header:[
-        {headerName:"编码",headerWidth:120,data:"GLJCode"},
-        {headerName:"名称",headerWidth:400,data:"GLJName"},
-        {headerName:"规格",headerWidth:120,data:"specs"},
-        {headerName:"单位",headerWidth:120,data:"unit"},
-        {headerName:"基价单价",headerWidth:120,data:"basePrice"},
-        {headerName:"类型",headerWidth:120,data:"type"}
-    ],
-    view:{
-        comboBox:[
-            {row:-1,col:3,rowCount:-1,colCount:1}
-        ],
-        lockedCells:[
-        ]
-    }
-};
-$(document).ready(function(){
-    $.fn.zTree.init($("#treeDemo"), setting, zNodes);
-    var rationSpread =  $.fn.Spread.init($("#GLJListSheet"),spSetting_GLJ);
-});

+ 2 - 5
web/rationLibEditor/js/ration.js

@@ -1,12 +1,9 @@
 /**
  * Created by Tony on 2017/4/28.
  */
-var params = {}
-$("#dinge").click(function(){
-    $(this).attr('href', "/rationRepository/ration" + "?params=" + JSON.stringify(params))
-})
+
 $("#gongliao").click(function(){
-    $(this).attr('href', "/rationRepository/gongliao" + "?params=" + JSON.stringify(params))
+    $(this).attr('href', "/rationRepository/lmm" + "?repository=" + getQueryString("repository"))
 });
 
 var rationOprObj = {

+ 129 - 0
web/rationLibEditor/js/repositoryGLJ.js

@@ -0,0 +1,129 @@
+/**
+ * Created by Tony on 2017/5/5.
+ */
+
+$("#drirect-dinge").click(function(){
+    $(this).attr('href', "/rationRepository/ration" + "?repository=" + getQueryString("repository"))
+});
+
+var pageOprObj = {
+    rationLibName : null,
+    initPage : function() {
+        var me = this, rationLibName = getQueryString("repository");//获取定额库参数
+        if (rationLibName) {
+            me.rationLibName = rationLibName;
+            repositoryGljObj.getGljTree(rationLibName, function(repId){
+                repositoryGljObj.getGljItems(repId);
+            });
+        }
+    }
+}
+repositoryGljObj = {
+    treeObj : null,
+    workBook: null,
+    gljAllTypeId: -1,
+    gljList: [],
+    setting: {
+        header:[
+            {headerName:"编码",headerWidth:120,data:"code"},
+            {headerName:"名称",headerWidth:400,data:"name"},
+            {headerName:"规格",headerWidth:120,data:"specs"},
+            {headerName:"单位",headerWidth:120,data:"unit"},
+            {headerName:"基价单价",headerWidth:120,data:"basePrice"},
+            {headerName:"类型",headerWidth:120,data:"gljType"}
+        ],
+        view:{
+            comboBox:[
+                {row:-1,col:3,rowCount:-1,colCount:1}
+            ],
+            lockedCells:[
+            ]
+        }
+    },
+    getGljTree: function(rationLibName, callback) {
+        var me = this;
+        $.ajax({
+            type:"POST",
+            url:"api/getGljTree",
+            data:{"rationLibName": rationLibName},
+            dataType:"json",
+            cache:false,
+            timeout:20000,
+            success:function(result,textStatus,status){
+                if(status.status == 200) {
+                    me.createRationTree(result.data);
+                    //me.gljAllTypeId
+                    if (result.data && result.data.length > 0) {
+                        for (var i = 0; i < result.data.length; i++) {
+                            if (result.data[i].Name === "全部") {
+                                me.gljAllTypeId = result.data[i].repositoryId;
+                                break;
+                            }
+                        }
+                        if (callback) {
+                            var repId = -1;
+                            repId = result.data[0].repositoryId;
+                            callback(repId);
+                        }
+                    }
+                }
+            },
+            error:function(err){
+                alert(err.responseJSON.error);
+            }
+        })
+    },
+    createRationTree : function(sourceData){
+        var me = repositoryGljObj, treeArr = tree_Data_Helper.buildTreeNodeDirectly(sourceData);
+        me.treeObj = $.fn.zTree.init($("#repositoryTree"), setting, treeArr);
+        me.treeObj.expandAll(true);
+    },
+    getGljItems: function(repId) {
+        var me = this;
+        $.ajax({
+            type:"POST",
+            url:"api/getGljItems",
+            data:{"repositoryId": repId},
+            dataType:"json",
+            cache:false,
+            timeout:5000,
+            success:function(result){
+                if(status.status == 200) {
+                    me.gljList = result.data;
+                    me.showGljItems(result.data, me.gljAllTypeId);
+                }
+            },
+            error:function(err){
+                alert(err.responseJSON.error);
+            }
+        })
+    },
+    showGljItems: function(data, type) {
+        var me = repositoryGljObj;
+        if (me.workBook) {
+            var cacheSection = [];
+            for (var i = 0; i < data.length; i++) {
+                if (type == me.gljAllTypeId || type == data[i].gljType) {
+                    cacheSection.push(data[i]);
+                }
+            }
+            sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
+            sheetCommonObj.showData(me.workBook.getSheet(0), me.setting, cacheSection);
+        }
+    },
+    buildSheet: function(container) {
+        var me = this;
+        me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30);
+        me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
+        me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
+    },
+    onClipboardPasting: function(sender, args) {
+        var me = repositoryGljObj;
+        if (args.cellRange.colCount != me.setting.header.length) {
+            args.cancel = true;
+        }
+    },
+    onClipboardPasted: function(e, info) {
+        var me = repositoryGljObj;
+    }
+}