Parcourir la source

1、标准费率库。
2、项目的费率文件,第1阶段:树展示,切换树等。

Chenshilong il y a 8 ans
Parent
commit
516d414338

Fichier diff supprimé car celui-ci est trop grand
+ 4 - 0
lib/spreadjs/gc.spread.common.10.0.0.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 24 - 0
lib/spreadjs/gc.spread.views.dataview.10.0.0.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 13 - 0
lib/spreadjs/locale/gc.spread.views.dataView.locale.zh-CN.10.0.0.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 20 - 0
lib/spreadjs/plugins/gc.spread.views.gridlayout.10.0.0.min.js


+ 0 - 24
modules/feeLibs/controllers/feeLibs_controler.js

@@ -1,24 +0,0 @@
-var stdFeeLib = require('./feeLibs_db');
-
-function feeLibsFiles(region){
-    stdFeeLib.files(region, function (doc) {
-        console.log(doc);
-        return doc;
-    });
-};
-
-function feeLibsFees(fileID){
-    stdFeeLib.fees(fileID, function (doc) {
-        console.log(doc);
-        return doc;
-    });
-};
-
-// 调用示例:
-// feeLibsFiles('重庆');
-// feeLibsFees(1);
-
-
-
-
-

+ 4 - 0
modules/feeLibs/models/feeLibs_db.js

@@ -1,3 +1,7 @@
+/**
+ * Created by CSL on 2017-03-22.
+ */
+
 var mg = require('mongoose');
 mg.connect('mongodb://localhost/feeLibs');
 

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

@@ -0,0 +1,27 @@
+/**
+ * Created by CSL on 2017-03-23.
+ */
+
+var stdFeeLib = require('../../feeLibs/models/feeLibs_db');
+
+module.exports = {
+    feeLibFiles: function (req, res) {
+        var region = req.body.region;
+        stdFeeLib.files(region, function (doc) {
+            res.json({data: doc});
+        });
+    },
+
+    feeLibFees: function (req, res) {
+        var fileID = req.body.fileID;
+        stdFeeLib.fees(fileID, function (doc) {
+            res.json({data: doc});
+        })
+    }
+}
+
+
+
+
+
+

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

@@ -0,0 +1,16 @@
+/**
+ * Created by CSL on 2017-03-22.
+ */
+
+var express = require('express');
+var feesRouter = express.Router();
+var feesController = require('../controllers/fees_controller');
+
+feesRouter.get('/', function(req, res) {
+    res.render('fees/feeRate', {});
+});
+
+feesRouter.post('/getLibFiles', feesController.feeLibFiles);
+feesRouter.post('/getLibFees', feesController.feeLibFees);
+
+module.exports = feesRouter;

+ 2 - 2
server.js

@@ -34,8 +34,8 @@ app.use(session({
     //*/
 }));
 
-var users = require('./modules/users/routes/users_route');
-app.use('/', users);
+app.use('/', require('./modules/users/routes/users_route'));
+app.use('/fees', require('./modules/fees/routes/fees_router'));
 
 app.get('/pm', function(req, res){
     if(!req.session.userAccount){

Fichier diff supprimé car celui-ci est trop grand
+ 13 - 0
web/css/spreadjs/gc.spread.views.dataview.10.0.0.css


+ 129 - 0
web/fees/feeRate.html

@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+    <meta http-equiv="x-ua-compatible" content="ie=edge">
+    <title>费率-Smartcost</title>
+    <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.views.dataview.10.0.0.css">
+    <script src="/lib/spreadjs/gc.spread.common.10.0.0.min.js" type="text/javascript"></script>
+    <script src="/lib/spreadjs/gc.spread.views.dataview.10.0.0.min.js" type="text/javascript"></script>
+    <script src="/lib/spreadjs/plugins/gc.spread.views.gridlayout.10.0.0.min.js" type="text/javascript"></script>
+    <script src="/lib/spreadjs/locale/gc.spread.views.dataview.locale.zh-CN.10.0.0.min.js" type="text/javascript"></script>
+    <style>
+        .grid { height: 90%; margin: 10px; }
+        .grid .gc-cell.c1 { text-align: right; }
+    </style>
+</head>
+
+<body  style="margin:0;position:absolute;top:0;bottom:0;left:0;right:0;
+    user-select:none;-webkit-user-select: none;overflow:hidden;">
+
+    <div class="header">
+        <!-- <div class="top-msg clearfix">
+            <div class="alert alert-warning mb-0 py-0" role="alert">
+                <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+                  <span aria-hidden="true">&times;</span>
+                </button>
+                <strong>注意!</strong> 这是一条消息通知 <a href="#">链接</a>
+            </div>
+        </div> -->
+        <nav class="navbar navbar-toggleable-lg navbar-light bg-faded p-0 justify-content-between">
+            <span class="header-logo px-2">Smartcost</span>
+            <div class="navbar-text"><a href="project-management.html">项目管理</a><i class="fa fa-angle-right fa-fw"></i>文件夹<i class="fa fa-angle-right fa-fw"></i>建设项目<i class="fa fa-angle-right fa-fw"></i>单项工程<i class="fa fa-angle-right fa-fw"></i>单位工程</div>
+            <div class="float-lg-right navbar-text pt-0">
+                <div class="dropdown d-inline-block">
+                    <button class="btn btn-link btn-sm dropdown-toggle" type="button" data-toggle="dropdown">陈特</button>
+                    <div class="dropdown-menu dropdown-menu-right">
+                        <a class="dropdown-item" href="user-info.html" target="_blank">账号资料</a>
+                        <a class="dropdown-item" href="user-buy.html" target="_blank">产品购买</a>
+                        <a class="dropdown-item" href="user-set.html" target="_blank">偏好设置</a>
+                    </div>
+                </div>
+                <span class="btn btn-link btn-sm new-msg">
+                  <i class="fa fa-envelope-o" aria-hidden="true"></i>&nbsp;2
+                </span>
+                <button class="btn btn-link btn-sm">注销</button>
+            </div>
+        </nav>
+        <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="#" aria-haspopup="true" aria-expanded="false"><i class="fa fa-sliders"></i> 选项</a>
+                </li>
+                <li class="nav-item dropdown">
+                    <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-wrench"></i> 工具</a>
+                    <div class="dropdown-menu">
+                        <a class="dropdown-item" href="#">定额库编辑器</a>
+                        <a class="dropdown-item" href="#">工料机库编辑器</a>
+                    </div>
+                </li>
+                <li class="nav-item dropdown">
+                    <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-question-circle-o"></i> 帮助</a>
+                    <div class="dropdown-menu">
+                        <a class="dropdown-item" href="#">帮助</a>
+                        <a class="dropdown-item" href="#">升级说明</a>
+                        <a class="dropdown-item" href="#">重庆市2008定额说明</a>
+                        <a class="dropdown-item" href="#">纵横官网</a>
+                        <a class="dropdown-item" href="#">动画教程</a>
+                        <a class="dropdown-item" href="#">联系客服</a>
+                        <a class="dropdown-item" href="#">关于</a>
+                    </div>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="#" aria-haspopup="true" aria-expanded="false"><i class="fa fa-history"></i> 历史记录</a>
+                </li>
+            </ul>
+            <form class="form-inline">
+                <input class="form-control form-control-sm mr-1" type="text" placeholder="告诉我你想做什么">
+            </form>
+        </nav>
+    </div>
+    <div class="main">
+        <div class="main-nav">
+            <ul class="nav flex-column">
+                <li><a href="zaojiashu.html">造价书</a></li>
+                <li><a href="gongliaoji.html">工料机</a></li>
+                <li><a href="baobiao.html">报表</a></li>
+                <li><a href="feilv.html" class="active">费率</a></li>
+            </ul>
+        </div>
+        <div class="content" id ="content">
+            <div class="toolsbar px-1">
+              <div class="form-inline py-1">
+                <label class="mx-2" for="inlineFormCustomSelect">费率标准:</label>
+                <select class="form-control form-control-sm" id="inlineFormCustomSelect">
+                  <option selected>重庆渝发建发[2016]35号</option>
+                  <option value="1">One</option>
+                  <option value="2">Two</option>
+                  <option value="3">Three</option>
+                </select>
+              </div>
+            </div>
+            <div class="grid" id="divFee"></div>
+        </div>
+    </div>
+    <!-- JS. -->
+    <script src="/lib/jquery/jquery.min.js"></script>
+    <script src="/lib/tether/tether.min.js"></script>
+    <script src="/lib/bootstrap/bootstrap.min.js"></script>
+    <script src="/lib/global.js"></script>
+    <script src="/web/fees/feeRate.js"></script>
+</body>
+<script type="text/javascript">
+    autoFlashHeight();
+    loadLibFiles('重庆');
+
+    $(document).ready(function () {
+        $("#inlineFormCustomSelect").change(function () {
+            var fileID = $("#inlineFormCustomSelect").val();
+            loadLibFees(fileID);
+        });
+    });
+</script>
+
+</html>

+ 112 - 0
web/fees/feeRate.js

@@ -0,0 +1,112 @@
+/**
+ * Created by CSL on 2017-03-23.
+ */
+
+function loadLibFiles(region) {
+    $('#inlineFormCustomSelect').empty();
+
+    $.ajax({
+        type: "POST",
+        url: '/fees/getLibFiles',
+        data: {"region": region},
+        success: function (result) {
+            if (result.data) {
+                for (var i = 0; i < result.data.length; i++) {
+                    $("#inlineFormCustomSelect").append("<option value=" + result.data[i].fileID + '>' +
+                        result.data[i].fileName + "</option>");
+                }
+                $("#inlineFormCustomSelect").get(0).selectedIndex = 0;
+                var fileID = $("#inlineFormCustomSelect").val();
+                loadLibFees(fileID);
+            }
+        },
+        error: function (result) {
+            alert('内部程序错误!');
+        }
+    });
+}
+
+function loadLibFees(fileID) {
+    $.ajax({
+        type: "POST",
+        url: '/fees/getLibFees',
+        data: {"fileID": fileID},
+        success: function (result) {
+            if (result.data) {
+                createSpreadView(result.data[0].fees);
+            }
+        },
+        error: function (result) {
+            alert('内部程序错误!');
+        }
+    });
+}
+
+function createSpreadView(data) {
+    // 创建前先销毁旧树表。
+    //$('#divFee').empty();  // 清空不行,浏览器跟踪显示错误数狂飚:TypeError: G is null
+    $('#divFee').remove();
+    $('#content').append($('<div class="grid" id="divFee"></div>'));
+
+    var columns = [
+        {
+            id: 'name',
+            caption: '名称',
+            dataField: 'name',
+            width: 250
+        },
+        {
+            id: 'fee',
+            caption: '费率',
+            dataField: 'fee',
+            format: '0.000',
+            width: 80,
+            minWidth: 50
+        },
+        {
+            id: 'memo',
+            caption: '说明',
+            dataField: 'memo',
+            width: 200,
+            minWidth: 120
+        },
+        {
+            id: 'ID',
+            caption: 'ID',
+            dataField: 'ID',
+            width: 80,
+            visible: false
+        },
+        {
+            id: 'ParentID',
+            caption: '父结点ID',
+            dataField: 'ParentID',
+            width: 80,
+            visible: false
+        }
+    ];
+
+    var option = {
+        allowSorting: false,
+        showRowHeader: true,
+        colMinWidth: 80,
+        colHeaderHeight: 35,
+        rowHeight: 30,
+        allowEditing: true,
+        hierarchy: {
+            keyField: 'ID',
+            parentField: 'ParentID',
+            collapsed: false,
+            column: 'name'
+        }
+    };
+
+    var dataView = new GC.Spread.Views.DataView(document.getElementById('divFee'),
+        data, columns, new GC.Spread.Views.Plugins.GridLayout(option));
+    var opts = dataView.layoutEngine.options;
+    opts.editMode = 'inline';
+    opts.editUnit = 'cell';
+    opts.selectionUnit = 'cell';
+    dataView.invalidate();
+    document.querySelector('#divFee').focus();
+}