Browse Source

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost

TonyKang 8 years ago
parent
commit
c903c13a5a

+ 4 - 33
modules/bills/controllers/billsControllers.js

@@ -24,41 +24,12 @@ module.exports = {
         });
     },
     createStdBillsLib: function(req, res){
-        var data = {};
-        data.name = req.body.name;
-        data.createDate = req.body.createDate;
-        var billsLibId = 1;
+        var data = JSON.parse(req.body.data);
         var billsLibName = data.name;
         //to do 以服务器时间为准 new Date();
-        var createDate = data.createDate;
-        var newStdBillsLib = new StdBillsLib({billsLibId: billsLibId, billsLibName: billsLibName, createDate: createDate});
-        newStdBillsLib.save(function(err){
-            if(err){
-                res.json({message: "Error"});
-            }
-            else{
-                res.json({success: true, message: "Success"});
-            }
-        });
-        /*  billsDao.createStdBillsLib(data, function(err, message){
-         //callback(req, res, err, message, null);
-
-         });*/
-        //--------
-        /*    var newStdBillsLib = {
-         billsLibId: billsLibId,
-         billsLibName: billsLibName,
-         createDate: createDate
-         }
-         StdBillsLib.create(newStdBillsLib, function(err){
-         if(err){
-         res.json({message: "Error", data: null});
-         }
-         else {
-         res.json({message: "", data: null});
-         }
-         });*/
-        //--------
+         billsDao.createStdBillsLib(data, function(err, message, info){
+            callback(req, res, err, message, info);
+         });
     },
     deleteStdBillsLib: function(req, res){
         var data = JSON.parse(req.body.data);

+ 14 - 8
modules/bills/model/interfaces.js

@@ -24,11 +24,10 @@ billsDao.prototype.getStdBillsLib = function(userId, callback){
 }
 
 billsDao.prototype.createStdBillsLib = function(clibData, callback){
-    //counter.getIDAfterCount("bills", 1, function(err, result){
-       // var billsLibId = result.value.sequence_value;
-        var billsLibId = 1;
+    counter.getIDAfterCount("bills", 1, function(err, result){
+        var billsLibId = result.value.sequence_value;
         var billsLibName = clibData.name;
-        var createDate = clibData.createDate;
+        var createDate = Date.now();
         var newStdBillsLib = {
             billsLibId: billsLibId,
             billsLibName: billsLibName,
@@ -36,13 +35,20 @@ billsDao.prototype.createStdBillsLib = function(clibData, callback){
         }
         StdBillsLib.create(newStdBillsLib, function(err){
             if(err){
-                callback(1, "Error");
+                callback(1, "Error", null);
             }
             else {
-                callback(0, "");
+                StdBillsLib.find({billsLibId: billsLibId}, function(err, data){
+                    if(err){
+                        callback(1, "Error", null)
+                    }
+                    else {
+                        callback(0, "", data);
+                    }
+                });
             }
         });
-    //});
+    });
 }
 
 billsDao.prototype.deleteStdBillsLib = function(billsLibId, callback){
@@ -58,7 +64,7 @@ billsDao.prototype.deleteStdBillsLib = function(billsLibId, callback){
 
 billsDao.prototype.renameStdBillsLib = function(renameData, callback){
     var billsLibId = renameData.id;
-    var renameVal = renameData.data;
+    var renameVal = renameData.value;
     StdBillsLib.update({billsLibId: billsLibId}, {$set:{billsLibName: renameVal}}, function(err){
         if(err){
             callback(1, "Error");

+ 11 - 11
modules/bills/model/schemas.js

@@ -1,11 +1,11 @@
 var mongoose = require('mongoose');
-//헌데방橙淃커蝎
+//占썲데占쏙옙占쏙옙占쏙옙커占쏙옙
 var stdBillsLibSchema =mongoose.Schema({
     billsLibId: Number,
     billsLibName: String,
     createDate: Date
 });
-//
+//占썲
 var billsSchema = mongoose.Schema({
     //serialNo: Number,
     ID: Number,
@@ -16,27 +16,27 @@ var billsSchema = mongoose.Schema({
     unit: String,
     ruleText: String,
     Expression: String,
-    jobs: Array,//헌데묏鱗코휭
-    items: Array,//헌데淃커景瀝
-    recharge:String,//헌데껸
-    billsLibId: Number//杰橄淃커蝎
+    jobs: Array,//占썲데占쏙옙占쏙옙占쏙옙占쏙옙
+    items: Array,//占썲데占쏙옙커占쏙옙占쏙옙
+    recharge:String,//占썲데占쏙옙
+    billsLibId: Number//占쏙옙占쏙옙占쏙옙커占쏙옙
 });
-//묏鱗코휭
+//占쏙옙占쏙옙占쏙옙占쏙옙
 var jobContentSchema = mongoose.Schema({
     id: Number,
     code: String,
     content: String,
-    billsLibId: Number//杰橄淃커蝎
+    billsLibId: Number//占쏙옙占쏙옙占쏙옙커占쏙옙
 });
-//淃커景瀝
+//占쏙옙커占쏙옙占쏙옙
 var itemCharacterSchema = mongoose.Schema({
     id: Number,
     code: String,
     character: String,
     itemValue: Array,
-    billsLibId: Number//杰橄淃커蝎
+    billsLibId: Number//占쏙옙占쏙옙占쏙옙커占쏙옙
 });
-/*//景瀝
+/*//占쏙옙占쏙옙
 var eigenvalueSchema = mongoose.Schema({
     eigenvalId: Number,
     eigenvalContent: String

+ 10 - 0
modules/fees/controllers/fees_controller.js

@@ -3,6 +3,7 @@
  */
 
 var stdFeeLib = require('../../feeLibs/models/feeLibs_db');
+var projectFeeFile = require('../models/fees_db');
 
 module.exports = {
     feeLibFiles: function (req, res) {
@@ -17,7 +18,16 @@ module.exports = {
         stdFeeLib.fees(fileID, function (doc) {
             res.json({data: doc});
         })
+    },
+
+    projectFees: function (req, res) {
+        var fileID = req.body.fileID;
+        projectFeeFile.fees(fileID, function (doc) {
+            res.json({data: doc});
+        })
     }
+
+
 }
 
 

+ 42 - 0
modules/fees/models/fees_db.js

@@ -0,0 +1,42 @@
+/**
+ * Created by CSL on 2017-03-29.
+ */
+
+var mg = require('mongoose');
+var dbm = require("../../../config/db/db_manager");
+var umDB = dbm.getCfgConnection("projectFees");
+
+var feeArrSchema = new mg.Schema({
+    ID: Number,
+    ParentID: Number,
+    name: String,
+    fee: Number,
+    memo: String
+});
+
+var feeSchema = new mg.Schema({
+    ID: Number,
+    //projectID: Number,    // 被多个项目引用。项目记录该文件ID
+    feeFileID: Number,
+    feeFileName: String,
+    fees: [feeArrSchema]
+});
+
+var feeModel = umDB.model('fees', feeSchema);
+
+var feeFile = function(){};
+
+feeFile.prototype.fees = function(fileID, controllerFun){
+    feeModel.find({"ID": fileID}, ["fees"], function(err, data){
+        if(data.length){
+            controllerFun(data);
+        }
+        else{
+            controllerFun(false);
+        }
+    })
+};
+
+module.exports = new feeFile();
+
+

+ 2 - 0
modules/fees/routes/fees_router.js

@@ -12,5 +12,7 @@ feesRouter.get('/', function(req, res) {
 
 feesRouter.post('/getLibFiles', feesController.feeLibFiles);
 feesRouter.post('/getLibFees', feesController.feeLibFees);
+feesRouter.post('/getProjectFees', feesController.projectFees);
+
 
 module.exports = feesRouter;

+ 0 - 11
server.js

@@ -94,17 +94,6 @@ app.get("/stdBillsmain", function(req, res){
     res.render("bills/html/main.html");
 });
 
-//app.get("/stdBillsEditor/bills", function(req, res){
-//    res.render("bills/html/qingdan.html");
-//});
-//
-//app.get("/stdBillsEditor/jobs", function(req, res){
-//    res.render("bills/html/neirong.html");
-//});
-//
-//app.get("/stdBillsEditor/items", function(req, res){
-//    res.render("bills/html/tezheng.html");
-//});
 var billsRouter = require("./modules/bills/routes/billsRoutes");
 app.use("/stdBillsEditor", billsRouter);
 //-----------------

+ 39 - 8
web/bills/html/main.html

@@ -23,7 +23,7 @@
         <nav class="navbar navbar-toggleable-lg justify-content-between navbar-light p-0">
           <ul class="nav navbar-nav px-1">
                           <li class="nav-item">
-                              <a class="nav-link" href="javacript:void(0);" aria-haspopup="true" aria-expanded="false" data-toggle="modal" data-target="#add">新建清单规则</a>
+                              <a class="nav-link" href="javascript:void(0);" aria-haspopup="true" aria-expanded="false" data-toggle="modal" data-target="#add">新建清单规则</a>
                           </li>
                       </ul>
         </nav>
@@ -62,13 +62,13 @@
                   <form>
                     <div class="form-group">
                       <label>清单规则名称</label>
-                      <input id="cBillsLib" class="form-control" placeholder="输入清单规则名称" type="text">
+                      <input id="createText" class="form-control" placeholder="输入清单规则名称" type="text">
                     </div>
                   </form>
                 </div>
                 <div class="modal-footer">
                     <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                    <a id="createA" class="btn btn-primary">新建</a>
+                    <a id="createA"  href="javascript:void(0);" class="btn btn-primary" data-dismiss="modal">新建</a>
                 </div>
             </div>
         </div>
@@ -87,13 +87,13 @@
                   <form>
                     <div class="form-group">
                       <label>清单规则名称</label>
-                      <input class="form-control" placeholder="输入名称" type="text" value="XXX库">
+                      <input id="renameText" class="form-control" placeholder="输入名称" type="text" value="">
                     </div>
                   </form>
                 </div>
                 <div class="modal-footer">
                     <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                    <a href="" class="btn btn-primary">确定</a>
+                    <a id="renameA" href="javascript: void(0);" class="btn btn-primary" data-dismiss="modal" renameId="">确定</a>
                 </div>
             </div>
         </div>
@@ -114,7 +114,7 @@
                 </div>
                 <div class="modal-footer">
                     <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                    <a href="" class="btn btn-danger">删除</a>
+                    <a id="deleteA" href="javascript:void(0);" class="btn btn-danger" data-dismiss="modal" deleteId="">删除</a>
                 </div>
             </div>
         </div>
@@ -127,23 +127,54 @@
     <!-- zTree -->
     <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 src="/web/bills/scripts/billsAjax.js"></script>
+    <script src="web/bills/scripts/billsAjax.js"></script>
+    <script src="web/bills/scripts/dateFormat.js"></script>
 
 </body>
 <script type="text/javascript">
     autoFlashHeight();
+    mainAjax.getStdBillsLib(null);
 </script>
 <script>
     $(document).ready(function(){
+        //main 增删改
         $("#createA").click(function(){
-            var billsLibName = $("#cBillsLib").val();
+            var billsLibName = $("#createText").val();
             if(billsLibName){
                 mainAjax.createStdBillsLib(billsLibName);
+                $("#createText").val("");
             }
             else{
                 alert("请输入清单规则名称!");
             }
         });
+
+       $("#showArea").on("click", "[data-target = '#del']", function(){
+            var deleteId = $(this).parent().parent().attr("id")
+           $("#deleteA").attr("deleteId", deleteId);
+       });
+        $("#deleteA").click(function(){
+            var deleteId = $(this).attr("deleteId");
+            mainAjax.deleteStdBillsLib(deleteId);
+        });
+
+       $("#showArea").on("click", "[data-target = '#edit']", function(){
+           var renameId = $(this).parent().parent().attr("id");
+           $("#renameA").attr("renameId", renameId);
+
+       });
+
+        $("#renameA").click(function(){
+            var newName = $("#renameText").val();
+            var renameId = $(this).attr("renameId");
+            if(newName){
+                mainAjax.renameStdBillsLib(renameId, newName);
+                $("#renameText").val("");
+            }
+            else {
+                alert("请输入名称!");
+            }
+        });
     });
 </script>
 

+ 33 - 15
web/bills/scripts/billsAjax.js

@@ -2,7 +2,7 @@
  * Created by vian on 2017/3/27.
  */
 var mainAjax = {
-    getStdBillsLib: function(){
+    getStdBillsLib: function(userId){
         $.ajax({
             type: "post",
             url: "/stdBillsEditor/getStdBillsLib",
@@ -11,12 +11,18 @@ var mainAjax = {
             success: function(result){
                 if(result.data){
                     for(var i=0; i<result.data.length; i++){
+                        var id = result.data[i].billsLibId;
                         var billsLibName = result.data[i].billsLibName;
                         var createDate = result.data[i].createDate;
+                        var createDateFmt = new Date(createDate).format("yyyy-MM-dd");
                         $("#showArea").append(
-                            "<tr><td><a href='qingdan.html'>"+billsLibName+"</a></td><td>"+createDate+" </td><td><a href='javacript:void(0);' data-toggle='modal' data-target='#edit' title='�༭'>" +
-                            "<i class='fa fa-pencil-square-o'></i></a> <a href='javacript:void(0);' data-toggle='modal' data-target='#del' class='text-danger' title='ɾ��'>" +
+                            "<tr id='tempId'>" +
+                            "<td><a href='web/bills/html/qingdan.html'>"+billsLibName+"</a></td>" +
+                            "<td>"+createDateFmt+" </td>" +
+                            "<td><a href='javascript:void(0);' data-toggle='modal' data-target='#edit' title='编辑'>" +
+                            "<i class='fa fa-pencil-square-o'></i></a> <a href='javascript:void(0);' data-toggle='modal' data-target='#del' class='text-danger' title='删除'>" +
                             "<i class='fa fa-remove'></i></a></td></tr>");
+                        $("#tempId").attr("id", id);
                     }
                 }
 
@@ -27,18 +33,19 @@ var mainAjax = {
         $.ajax({
             type: "POST",
             url: "/stdBillsEditor/createStdBillsLib",
-            //data: {"data": JSON.stringify({"name": billsLibName, "createDate": "no!"}) },
-            data: {"name": billsLibName, "createDate": "no!"},
+            data: {"data": JSON.stringify({"name": billsLibName}) },
             dataType: "json",
-            cache: false,
-            timeout: 50000,
             success: function(result){
-               alert("success!");
-            },
-            error: function(jqXHR, textStatus, errorThrown){
-                alert('error ' + textStatus + " " + errorThrown);
+                var id = result.data[0].billsLibId;
+                var createDate = result.data[0].createDate;
+                var createDateFmt = new Date(createDate).format("yyyy-MM-dd");
+                $("#showArea").append(
+                    "<tr id='tempId'><td><a href='web/bills/html/qingdan.html'>"+billsLibName+"</a></td><td>"+createDateFmt+" </td><td><a href='javascript:void(0);' data-toggle='modal' data-target='#edit' title='编辑'>" +
+                    "<i class='fa fa-pencil-square-o'></i></a> <a href='javascript:void(0);' data-toggle='modal' data-target='#del' class='text-danger' title='删除'>" +
+                    "<i class='fa fa-remove'></i></a></td></tr>"
+                );
+                $("#tempId").attr("id", id);
             }
-
         });
     },
     deleteStdBillsLib: function(billsLibId){
@@ -49,11 +56,22 @@ var mainAjax = {
             dataType: "json",
             success: function(result){
                 if(!result.error){
-                    var jqId = "#"+billsLibId;
-                    $(jqId).remove();
+                    var jqSel = "#"+billsLibId;
+                    $(jqSel).remove();
                 }
             }
         });
+    },
+    renameStdBillsLib: function(billsLibId, newName){
+        $.ajax({
+            type: "post",
+            url: "/stdBillsEditor/renameStdbillsLib",
+            data: {"data": JSON.stringify({"id": billsLibId, "value": newName})},
+            dataType: "json",
+            success: function(result){
+                var jqSel = "#" + billsLibId + " td:first" + " a";
+                $(jqSel).text(newName);
+            }
+        });
     }
-
 }

+ 21 - 0
web/bills/scripts/dateFormat.js

@@ -0,0 +1,21 @@
+/**
+ * Created by vian on 2017/3/30.
+ */
+Date.prototype.format = function(fmt)
+{
+    var o = {
+        "M+" : this.getMonth()+1,                 //月份
+        "d+" : this.getDate(),                    //日
+        "h+" : this.getHours(),                   //小时
+        "m+" : this.getMinutes(),                 //分
+        "s+" : this.getSeconds(),                 //秒
+        "q+" : Math.floor((this.getMonth()+3)/3), //季度
+        "S"  : this.getMilliseconds()             //毫秒
+    };
+    if(/(y+)/.test(fmt))
+        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
+    for(var k in o)
+        if(new RegExp("("+ k +")").test(fmt))
+            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
+    return fmt;
+}

+ 3 - 8
web/fees/feeRate.html

@@ -102,6 +102,7 @@
                   <option value="2">Two</option>
                   <option value="3">Three</option>
                 </select>
+                  <span>&nbsp;</span><button id="projectFeeFile">本项目费率文件</button>
               </div>
             </div>
             <div class="grid" id="divFee"></div>
@@ -116,14 +117,8 @@
 </body>
 <script type="text/javascript">
     autoFlashHeight();
-    loadLibFiles('重庆');
-
-    $(document).ready(function () {
-        $("#inlineFormCustomSelect").change(function () {
-            var fileID = $("#inlineFormCustomSelect").val();
-            loadLibFees(fileID);
-        });
-    });
+    loadLibFiles(region);
+    loadProjectFees(projectID);
 </script>
 
 </html>

+ 47 - 11
web/fees/feeRate.js

@@ -1,6 +1,36 @@
 /**
  * Created by CSL on 2017-03-23.
  */
+var region = '重庆';
+var projectID = 5;
+var spreadView;
+
+$(document).ready(function () {
+    $("#inlineFormCustomSelect").change(function () {
+        var fileID = $("#inlineFormCustomSelect").val();
+        loadLibFees(fileID);
+    });
+
+    $("#projectFeeFile").click(function () {
+        loadProjectFees(projectID);
+    });
+});
+
+function loadProjectFees(fileID) {
+    $.ajax({
+        type: "POST",
+        url: '/fees/getProjectFees',
+        data: {"fileID": fileID},
+        success: function (result) {
+            if (result.data) {
+                createSpreadView(result.data[0].fees, true);
+            }
+        },
+        error: function (result) {
+            alert('内部程序错误!');
+        }
+    });
+}
 
 function loadLibFiles(region) {
     $('#inlineFormCustomSelect').empty();
@@ -16,8 +46,6 @@ function loadLibFiles(region) {
                         result.data[i].fileName + "</option>");
                 }
                 $("#inlineFormCustomSelect").get(0).selectedIndex = 0;
-                var fileID = $("#inlineFormCustomSelect").val();
-                loadLibFees(fileID);
             }
         },
         error: function (result) {
@@ -33,7 +61,7 @@ function loadLibFees(fileID) {
         data: {"fileID": fileID},
         success: function (result) {
             if (result.data) {
-                createSpreadView(result.data[0].fees);
+                createSpreadView(result.data[0].fees, false);
             }
         },
         error: function (result) {
@@ -42,11 +70,16 @@ function loadLibFees(fileID) {
     });
 }
 
-function createSpreadView(data) {
+function createSpreadView(data, canEdit) {
     // 创建前先销毁旧树表。
     //$('#divFee').empty();  // 清空不行,浏览器跟踪显示错误数狂飚:TypeError: G is null
-    $('#divFee').remove();
-    $('#content').append($('<div class="grid" id="divFee"></div>'));
+    //$('#divFee').remove(); // 删除可以,但是太山寨。
+    //$('#content').append($('<div class="grid" id="divFee"></div>'));
+    // 以下找到官方的处理方法,比较面向对象
+    if (spreadView) {
+        spreadView.destroy();
+        spreadView = null;
+    }
 
     var columns = [
         {
@@ -92,7 +125,7 @@ function createSpreadView(data) {
         colMinWidth: 80,
         colHeaderHeight: 35,
         rowHeight: 30,
-        allowEditing: true,
+        allowEditing: canEdit,
         hierarchy: {
             keyField: 'ID',
             parentField: 'ParentID',
@@ -101,12 +134,15 @@ function createSpreadView(data) {
         }
     };
 
-    var dataView = new GC.Spread.Views.DataView(document.getElementById('divFee'),
+    spreadView = new GC.Spread.Views.DataView($('#divFee')[0],
         data, columns, new GC.Spread.Views.Plugins.GridLayout(option));
-    var opts = dataView.layoutEngine.options;
+    var opts = spreadView.layoutEngine.options;
     opts.editMode = 'inline';
     opts.editUnit = 'cell';
-    opts.selectionUnit = 'cell';
-    dataView.invalidate();
+    if (canEdit){ opts.selectionUnit = 'cell'; }
+    else{ opts.selectionUnit = 'row'; }
+    spreadView.invalidate();
     document.querySelector('#divFee').focus();
 }
+
+