Преглед изворни кода

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

TonyKang пре 8 година
родитељ
комит
0056a169bf

+ 11 - 1
modules/templates/controllers/bills_template_controller.js

@@ -27,6 +27,16 @@ module.exports = {
             } else {
                 callback(req, res, err, message, null);
             }
-        })
+        });
+    },
+    getNewBillsTemplateID: function (req, res) {
+        var data = JSON.parse(req.body.data);
+        BillsTemplateData.getNewBillsTemplateID(data.count, function (err, message, data) {
+            if (err === 0) {
+                callback(req, res, err, message, data);
+            } else {
+                callback(req, res, err, message, null);
+            }
+        });
     }
 }

+ 12 - 0
modules/templates/models/bills_template.js

@@ -2,6 +2,8 @@
  * Created by Mai on 2017/4/14.
  * 清单模板,新建项目使用
  */
+var counter = require("../../../public/counter/counter.js");
+
 var mongoose = require('mongoose');
 var dbm = require("../../../config/db/db_manager");
 var templatesDB = dbm.getCfgConnection("templates");
@@ -64,6 +66,16 @@ BillsTemplateDAO.prototype.updateTemplate = function (userID, tempType, datas, c
             }
         }
     }
+};
+BillsTemplateDAO.prototype.getNewBillsTemplateID = function (count, callback) {
+    counter.counterDAO.getIDAfterCount(counter.moduleName.template_bills, count, function (err, result) {
+        var highID = result.value.sequence_value;
+        if (!err) {
+            callback(0, '', {lowID: highID - count + 1, highID: highID});
+        } else {
+            callback(1, '获取主键失败', null);
+        }
+    });
 }
 
 module.exports = new BillsTemplateDAO();

+ 1 - 0
modules/templates/routes/bills_template_router.js

@@ -8,5 +8,6 @@ var billsTemplateController = require('./../controllers/bills_template_controlle
 
 billsTemplateRouter.post('/getBillsTemplate', billsTemplateController.getBillsTemplate);
 billsTemplateRouter.post('/updateBillsTemplate', billsTemplateController.updateBillsTemplate);
+billsTemplateRouter.post('/getNewBillsTemplateID', billsTemplateController.getNewBillsTemplateID);
 
 module.exports = billsTemplateRouter;

+ 21 - 3
public/counter/counter.js

@@ -15,11 +15,26 @@ counterSchema.statics.findAndModify = function (query, sort, doc, options, callb
 };
 var counterModel = projectdb.model("counters", counterSchema);
 
-const PROJECT_COUNTER = 'projects', USER_COUNTER = 'users', BILL_COUNTER = 'bills', RATION_COUNTER = 'rations',
-    REPORT_COUNTER = 'rptTemplates', FEE_COUNTER = 'fees'
+// All counter Must predefine in DB
+const COUNTER_MODULE_NAME = {
+    project: 'projects',
+    user: 'users',
+    bills: 'bills',
+    ration: 'rations',
+    report: 'rptTemplates',
+    fee: 'fees',
+    template_bills: 'temp_bills'
+}
+/*const PROJECT_COUNTER = 'projects', USER_COUNTER = 'users', BILL_COUNTER = 'bills', RATION_COUNTER = 'rations',
+    REPORT_COUNTER = 'rptTemplates', FEE_COUNTER = 'fees'*/
 
 var counterDAO = function(){};
 
+/*
+ * callback = function (err, result) {
+ *     result.value.sequence_value ΪÐ޸ĺóµÄid
+ * }
+ */
 counterDAO.prototype.getIDAfterCount = function(moduleName, stepCount, callback) {
     var sc = stepCount;
     if (isNaN(stepCount) || (stepCount < 0)) {
@@ -46,4 +61,7 @@ counterDAO.prototype.getCurrentID = function(moduleName, callback) {
     }
 }
 
-module.exports = new counterDAO();
+module.exports = {
+    counterDAO: new counterDAO(),
+    moduleName: COUNTER_MODULE_NAME
+};

+ 1 - 1
public/web/idTree.js

@@ -411,7 +411,7 @@ var idTree = {
             if (this.rangeNodeID() === -1) {
                 return this.maxNodeID() + 1;
             } else {
-                if (this.maxNodeID() >= this.rangeNodeID()) {
+                if (this.maxNodeID() < this.rangeNodeID()) {
                     return this.maxNodeID() + 1;
                 } else {
                     return -1;

+ 11 - 0
public/web/urlUtil.js

@@ -0,0 +1,11 @@
+/**
+ * Created by Mai on 2017/4/18.
+ */
+var scUrlUtil = {
+    GetQueryString: function (name) {
+        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
+        var r = window.location.search.substr(1).match(reg);
+        if (r != null) return unescape(r[2]);
+        return null;
+    }
+};

+ 14 - 15
server.js

@@ -36,30 +36,29 @@ app.use(session({
     //*/
 }));
 
+app.use(function (req, res, next) {
+    var url = req.originalUrl;
+    if (!/^\/login/.test(req.originalUrl) && !req.session.userAccount) {
+        return res.redirect("/login" + '?referer=' + req.originalUrl);
+    }
+    next();
+});
+
 app.use('/', require('./modules/users/routes/users_route'));
 app.use('/fees', require('./modules/fees/routes/fees_router'));
 
 app.get('/template/bills', function (req, res) {
-    if (!req.session.userAccount) {
-        res.redirect('/login');
-    } else {
-        res.render('templates/html/bills.html',
-            {userAccount: req.session.userAccount,
-                userID: req.session.userID});
-    }
+    res.render('templates/html/bills.html',
+        {userAccount: req.session.userAccount,
+            userID: req.session.userID});
 });
 var billsTemplateRouter = require('./modules/templates/routes/bills_template_router');
 app.use('/template/bills', billsTemplateRouter);
 
 app.get('/pm', function(req, res){
-    if(!req.session.userAccount){
-        res.redirect('/login');
-    }
-    else{
-        res.render('pm/html/project-management.html',
-            {userAccount: req.session.userAccount,
-                userID: req.session.userID});
-    }
+    res.render('pm/html/project-management.html',
+        {userAccount: req.session.userAccount,
+            userID: req.session.userID});
 });
 
 var pmRouter = require('./modules/pm/routes/pm_route');

+ 3 - 3
test/unit/counter/testCounter.js

@@ -6,7 +6,7 @@ var counter = require('../../../public/counter/counter');
 var mongoose = require('mongoose');
 
 test('test counter\'s usage 0:', function(t) {
-    var promise = counter.getCurrentID("rptTemplates",function(result, err) {
+    var promise = counter.counterDAO.getCurrentID(counter.moduleName.report,function(result, err) {
         console.log('callback result 0: ' + result.sequence_value);
     });
     if (promise) {
@@ -19,7 +19,7 @@ test('test counter\'s usage 0:', function(t) {
 })
 
 test('test counter\'s usage 1:', function(t) {
-    var promise = counter.getCurrentID("rptTemplates", null);
+    var promise = counter.counterDAO.getCurrentID(counter.moduleName.report, null);
     if (promise) {
         promise.then(function(rst){
             console.log('promise result 1: ' + rst.sequence_value);
@@ -30,7 +30,7 @@ test('test counter\'s usage 1:', function(t) {
 })
 
 test('test counter\'s usage 2:', function(t) {
-    counter.getIDAfterCount("rptTemplates",1, function(err, result){
+    counter.counterDAO.getIDAfterCount(counter.moduleName.report, 1, function(err, result){
         console.log('result 2: ' + result.value.sequence_value);
         t.equal(result.value.sequence_value, 1);
         t.end();

+ 18 - 11
web/templates/js/bills.js

@@ -84,7 +84,6 @@ $(document).ready(function () {
             controller.refreshTreeNode([node], false);
         });
     });
-
     billsSpread.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (e, info) {
         var node, iRow, iCol, curRow, curCol, datas = [], data, fieldName, updateData;
         for (iRow = 0; iRow < info.cellRange.rowCount; iRow ++) {
@@ -119,16 +118,24 @@ $(document).ready(function () {
     });
 
     $('#insert').click(function () {
-        var selected = controller.tree.selected, updateData;
-        if (selected) {
-            updateData = FormatUpdateData(controller.tree.getInsertData(selected.getParentID(), selected.getNextSiblingID()));
-        } else {
-            updateData = FormatUpdateData(controller.tree.getInsertData());
-        }
-        PostData('/template/bills/updateBillsTemplate', updateData, function (data) {
-            controller.insert();
-            RefreshBillsData(data);
-            controller.showTreeData();
+        PostData('/template/bills/getNewBillsTemplateID', {count: 1}, function (data) {
+            var selected = controller.tree.selected, updateData;
+            controller.tree.maxNodeID(data.lowID - 1);
+            controller.tree.rangeNodeID(data.highID);
+            if (selected) {
+                updateData = FormatUpdateData(controller.tree.getInsertData(selected.getParentID(), selected.getNextSiblingID()));
+            } else {
+                updateData = FormatUpdateData(controller.tree.getInsertData());
+            }
+            if (updateData.updateData.length > 0) {
+                PostData('/template/bills/updateBillsTemplate', updateData, function (data) {
+                    controller.insert();
+                    RefreshBillsData(data);
+                    controller.showTreeData();
+                });
+            } else {
+                alert('新增节点失败, 请重试.');
+            }
         });
     });
     $('#delete').click(function () {

+ 8 - 1
web/users/login.html

@@ -9,6 +9,7 @@
     <link rel="stylesheet" href="/web/css/main.css">
     <link rel="stylesheet" href="/web/css/font-awesome/font-awesome.min.css">
     <script src="/lib/jquery/jquery.min.js"></script>
+    <script src="/public/web/urlUtil.js"></script>
 </head>
 <body>
     <div class="container">
@@ -36,6 +37,8 @@
 
         <script>
             $(document).ready(function () {
+                var referer = scUrlUtil.GetQueryString('referer');
+
                 $("#login").click(function () {
                     var account = $("#inputEmail").val();
                     var pw = $("#inputPassword").val();
@@ -47,7 +50,11 @@
                         success: function (result) {
                             if (result.data) {
 //                                $('#ver').modal('show');
-                                location.href = '/';
+                                if (referer) {
+                                    location.href = referer;
+                                } else {
+                                    location.href = '/';
+                                }
                             }
                             else {
                                 $('#hint').html(result.error);