Browse Source

费率标准和项目费率分开。

Chenshilong 8 years ago
parent
commit
77f155e048

+ 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;

+ 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();
 }
+
+