浏览代码

Sync 2017-03-02

TonyKang 8 年之前
父节点
当前提交
cc233491fe
共有 7 个文件被更改,包括 276 次插入108 次删除
  1. 1 1
      package.json
  2. 83 13
      protect/models/bills.js
  3. 4 0
      server.js
  4. 4 5
      src/css/bootstrap/bootstrap.min.css
  5. 179 83
      src/css/main.css
  6. 4 4
      src/js/bootstrap/bootstrap.min.js
  7. 1 2
      src/js/global.js

+ 1 - 1
package.json

@@ -5,7 +5,7 @@
   "devDependencies": {
     "body-parser": "^1.13.2",
     "express": "^4.13.1",
-    "mongoose": "^4.1.0",
+    "mongoose": "^4.8.5",
     "async": "^2.1.5"
   }
 }

+ 83 - 13
protect/models/bills.js

@@ -3,6 +3,7 @@
  */
 var mongoose = require('mongoose');
 var demodb = require('../db/demodb');
+var cfgdb = require('../db/cfgdb');
 //var Schema = demodb.mongoose.Schema;
 var Schema = mongoose.Schema;
 var BillsSchema = new Schema({
@@ -23,26 +24,66 @@ var BillsSchema = new Schema({
     "Memostr": String
 });
 
+var BillTagsSchema = new Schema({
+    isForSingleProj: Boolean,
+    isConfirmed: Boolean, //是否固定ID //公路造价的设计概念,用于报表读取数据,在建筑需要换一种方式记录
+    confirmType: String,  //与上配套
+    isTempEst: Boolean,      //是否暂估
+    tmpEstType: String      //专项指定类型(如:材料、工程设备、专业工程等)
+});
+
+var CostSchema = new Schema({
+    "DirectPrj": Number, //直接工程费
+    "Labour": Number, //定额人工费
+    "LabourAdj": Number, //调整人工费
+    "Material": Number, //材料费
+    "Machine": Number, //定额机械费
+    "Machine_LabourAdj": Number, //调整机上人工费 //机上人工 = 公路的机械工,重庆特有,有单独的调整
+    "MainMaterial": Number, //主材费
+    "Equipment": Number,    //设备费
+    "Management": Number,   //企业管理费
+    "Profit": Number,       //利润
+    "Risk": Number,         //风险费
+    "Diff_Labour": Number,  //人工价差
+    "Diff_Material": Number,//材料价差
+    "Diff_Machine": Number  //机械价差
+});
+
 var ConstructBillsSchema = new Schema({
-    "SerialNo": Number,
-    "ChapterID": Number,
+    "ProjectID": Number,    //
     "ID": Number,
     "ParentID": Number,
     "NextSiblingID": Number,
-    "Code": String,
-    "FullCode": String,
-    "Name": String,
-    "Units": String,
-    "Quantity": Number,
-    "DesignQuantity": Number,
-    "DesignQuantity2": Number,
-    "DesignPrice": Number,
-    "TotalPrice": Number,
-    "Memostr": String
+    "SerialNo": String, //序号
+    "Code": String,     //项目编码
+    "Type": String, //类别:定额与非定额区分
+    "Name": String, //项目名称
+    "Units": String,//单位
+    "Feature": String,  //项目特征
+    "Content": String,  //工作内容
+    "PrjClass": String, //工程专业
+    "FeeClass": String, //取费专业
+    "MeaCalRule": String,  //工程量计算规则
+    "RationAdjStatus": String,  //定额调整状态
+    "Quantity": Number, //工程量
+    "UnitPrice": Number, //单价
+    "TotalPrice": Number,//合价
+    "CalFoundation": String, //计算基础
+    "FeeRate": Number, //费率
+    "MixedUnitPrice": Number, //综合单价
+    "MixedGrandTotal": Number,//综合合价
+
+    "UnitCost": CostSchema,
+    "TotalCost": CostSchema,
+    "Tags": BillTagsSchema,
+    //"": Number,
+    "Memo": String  //备注
 });
 
 //var BillsData = demodb.mongoose.model("bills", BillsSchema);
 var BillsData = demodb.mongoose.model("gd_bills", BillsSchema);
+var dbConnection = null;
+var ConstructBillData = null;
 
 var BillDataDAO = function(){};
 
@@ -58,7 +99,36 @@ BillDataDAO.prototype.get = function(id, callback){
 }
 
 BillDataDAO.prototype.getAll = function(userid, callback){
-    BillsData.find({}, function(err, templates){
+    var me = this;
+    me.iniDb('localhost', null, 'Demo', "gd_bills", BillsSchema)
+    //BillsData.find({}, function(err, templates){
+    ConstructBillData.find({}, function(err, templates){
+        if(templates.length){
+            callback(false, templates);
+        }
+        else{
+            callback('No result found!');
+        }
+        me.deIniDb();
+    })
+}
+
+BillDataDAO.prototype.iniDb = function(server, port, dbName, collectionName, schema) {
+    dbConnection = cfgdb.mongoose.getConnection(server, port, dbName);
+    ConstructBillData = dbConnection.model(collectionName, schema);;
+}
+
+BillDataDAO.prototype.deIniDb = function() {
+    if (dbConnection) {
+        dbConnection.close();
+    }
+}
+
+BillDataDAO.prototype.getAll_Construct = function(userid, prjid, callback){
+    var me = this;
+    me.iniDb('localhost', null, 'Demo', "construct_bills", ConstructBillsSchema)
+    ConstructBillData.find({}, function(err, templates){
+        me.deIniDb();
         if(templates.length){
             callback(false, templates);
         }

+ 4 - 0
server.js

@@ -48,6 +48,10 @@ app.get('/zaojiashutest', function(req, res){
 	res.sendFile(_rootDir+'/src/ZaoJiaShuTest.html');
 });
 
+app.get('/zaojiashu', function(req, res){
+	res.sendFile(_rootDir+'/src/zaojiashu.html');
+});
+
 app.post('/report/', function(req, res, next){
 	console.log(req.body['tpl_id']);
 	res.setHeader("Access-Control-Allow-Origin", "*");

文件差异内容过多而无法显示
+ 4 - 5
src/css/bootstrap/bootstrap.min.css


+ 179 - 83
src/css/main.css

@@ -1,18 +1,18 @@
 /*building SAAS 0.1*/
 /*bootstrap 初始化*/
-body{
-    font-size:0.9rem
+body {
+    font-size: 0.9rem
 }
 .dropdown-menu {
-    font-size:0.9rem
+    font-size: 0.9rem
 }
 /*自定义css*/
 .header {
-    background:#e1e1e1
+    background: #e1e1e1
 }
 .header .header-logo {
-    background:#ff6501;
-    color:#fff;
+    background: #ff6501;
+    color: #fff;
     float: left;
     padding-top: .25rem;
     padding-bottom: .25rem;
@@ -20,89 +20,107 @@ body{
     font-size: 1.25rem;
     line-height: inherit
 }
+.top-msg{
+  position: fixed;
+  top:0;
+  width:100%;
+  z-index: 999
+}
+.in-1{padding-left:0rem!important}
+.in-2{padding-left:1rem!important}
+.in-3{padding-left:1.5rem!important}
+.in-4{padding-left:2rem!important}
+.in-5{padding-left:2.5rem!important}
+.in-6{padding-left:3rem!important}
 .main {
     position: relative;
     background: #f7f7f9;
 }
 .main-nav {
-    position:absolute;
+    position: absolute;
     text-align: center;
     z-index: 999;
-    padding:2px 0 0 2px
+    padding: 2px 0 0 2px
 }
-.main-nav .nav a{
+.main-nav .nav a {
     display: block;
-    width:28px;
+    width: 28px;
     text-align: center;
     line-height: 18px;
-    color:#999;
-    padding:10px 0;
-    border-right:1px solid #ccc;
+    color: #999;
+    padding: 10px 0;
+    border-right: 1px solid #ccc;
 }
-.main-nav .nav a:hover{
+.main-nav .nav a:hover {
     background: #fff;
-    color:#333;
+    color: #333;
     text-decoration: none;
 }
-.main-nav .nav a.active{
-    border:1px solid #ccc;
-    border-right:1px solid #fff;
+.main-nav .nav a.active {
+    border: 1px solid #ccc;
+    border-right: 1px solid #fff;
     background: #fff;
-    color:#333
+    color: #333
 }
 .content {
-    border-left:1px solid #ccc;
-    margin-left:29px;
+    border-left: 1px solid #ccc;
+    margin-left: 29px;
     background: #fff
 }
-.toolsbar {
+.tools-btn {
     height: 30px;
     line-height: 30px;
 }
-.toolsbar tools-btn.btn:hover {
+.toolsbar .tools-btn.btn:hover {
     background: #f7f7f9;
 }
 .main-side {
-    border-top:1px solid #ccc;
-    border-left:1px solid #ccc;
+    border-top: 1px solid #ccc;
+    border-left: 1px solid #ccc;
+    overflow-y: auto;
 }
-.top-content,.fluid-content{
+.top-content, .fluid-content {
     overflow: auto;
     border-bottom: 1px solid #ccc;
 }
-.bottom-content {
-}
 .warp-p2 {
-    padding:2px
+    padding: 2px
 }
-.bottom-content .nav{
+.bottom-content .nav {
     background: #f7f7f9;
+    padding:0 0 0 2px
 }
-.bottom-content .nav-tabs .nav-link,.side-tabs .nav-tabs .nav-link{
+.bottom-content .nav-tabs .nav-link, .side-tabs .nav-tabs .nav-link {
     border-radius: 0;
-    padding:0.2em 0.5em
+    padding: 0.2em 0.5em
+}
+.side-tabs .nav-tabs .nav-item {
+  z-index: 999
 }
 .side-tabs .nav-tabs {
     border-bottom: none;
+    margin-bottom: -1px
 }
-.side-tabs .nav-tabs .nav-link{
+.side-tabs .nav-tabs .nav-link {
     border-radius: 0;
-    padding:0em 0.5em
+    padding: 0em 0.5em;
+    line-height: 30px;
+    z-index: 999
 }
 .bottom-content .nav-tabs .nav-link.active {
-    border-top:1px solid #f7f7f9
+    border-top: 1px solid #f7f7f9
 }
 .side-tabs .nav-tabs .nav-link.active {
-    border-top:none;
-    background:#ccc
+    border-top: none;
+    border-bottom:1px solid #fff
 }
-.side-tabs a.active,.sub-nav a.active {
-    background:#ccc
+.side-tabs a.active, .sub-nav a.active {
+    background: #ccc
 }
 .poj-manage {
-    background:#fff
+    background: #fff
 }
-.slide-sidebar{
+.slide-sidebar {
     border-left: 1px solid #E1E1E1;
     box-shadow: 0px 15px 15px rgba(0, 0, 0, 0.1);
     background: none repeat scroll 0% 0% #ffffff;
@@ -110,54 +128,132 @@ body{
     position: absolute;
     right: 0px;
     top: 0;
-    z-index:999;
+    z-index: 999;
     width: 0px;
 }
-
-.new-msg{
-    -webkit-animation:tada 1s infinite .2s ease both;
-    -moz-animation:tada 1s infinite .2s ease both;}
-@-webkit-keyframes tada{
-    0%{-webkit-transform:scale(1)}
-    10%,20%{-webkit-transform:scale(0.9) rotate(-3deg)}
-    30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg)}
-    40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg)}
-    100%{-webkit-transform:scale(1) rotate(0)}
-}
-@-moz-keyframes tada{
-    0%{-moz-transform:scale(1)}
-    10%,20%{-moz-transform:scale(0.9) rotate(-3deg)}
-    30%,50%,70%,90%{-moz-transform:scale(1.1) rotate(3deg)}
-    40%,60%,80%{-moz-transform:scale(1.1) rotate(-3deg)}
-    100%{-moz-transform:scale(1) rotate(0)}
-}
-.has-danger{
-    -webkit-animation:shake 1s .2s ease both;
-    -moz-animation:shake 1s .2s ease both;
-    animation:shake 1s .2s ease both;}
-@-webkit-keyframes shake{
-    0%,100%{-webkit-transform:translateX(0);}
-    10%,30%,50%,70%, 90%{-webkit-transform:translateX(-10px);}
-    20%,40%,60%,80%{-webkit-transform:translateX(10px);}
-}
-@-moz-keyframes shake{
-    0%,100%{-moz-transform:translateX(0);}
-    10%,30%,50%,70%, 90%{-moz-transform:translateX(-10px);}
-    20%,40%,60%,80%{-moz-transform:translateX(10px);}
-}
-@keyframes shake{
-    0%,100%{transform:translateX(0);}
-    10%,30%,50%,70%, 90%{transform:translateX(-10px);}
-    20%,40%,60%,80%{transform:translateX(10px);}
-}
-.tab-content {
-    max-height:200px;
+.new-msg {
+    -webkit-animation: tada 1s infinite .2s ease both;
+    -moz-animation: tada 1s infinite .2s ease both;
+}
+@-webkit-keyframes tada {
+    0% {
+        -webkit-transform: scale(1)
+    }
+    10%, 20% {
+        -webkit-transform: scale(0.9) rotate(-3deg)
+    }
+    30%, 50%, 70%, 90% {
+        -webkit-transform: scale(1.1) rotate(3deg)
+    }
+    40%, 60%, 80% {
+        -webkit-transform: scale(1.1) rotate(-3deg)
+    }
+    100% {
+        -webkit-transform: scale(1) rotate(0)
+    }
+}
+@-moz-keyframes tada {
+    0% {
+        -moz-transform: scale(1)
+    }
+    10%, 20% {
+        -moz-transform: scale(0.9) rotate(-3deg)
+    }
+    30%, 50%, 70%, 90% {
+        -moz-transform: scale(1.1) rotate(3deg)
+    }
+    40%, 60%, 80% {
+        -moz-transform: scale(1.1) rotate(-3deg)
+    }
+    100% {
+        -moz-transform: scale(1) rotate(0)
+    }
+}
+.has-danger {
+    -webkit-animation: shake 1s .2s ease both;
+    -moz-animation: shake 1s .2s ease both;
+    animation: shake 1s .2s ease both;
+}
+@-webkit-keyframes shake {
+    0%, 100% {
+        -webkit-transform: translateX(0);
+    }
+    10%, 30%, 50%, 70%, 90% {
+        -webkit-transform: translateX(-10px);
+    }
+    20%, 40%, 60%, 80% {
+        -webkit-transform: translateX(10px);
+    }
+}
+@-moz-keyframes shake {
+    0%, 100% {
+        -moz-transform: translateX(0);
+    }
+    10%, 30%, 50%, 70%, 90% {
+        -moz-transform: translateX(-10px);
+    }
+    20%, 40%, 60%, 80% {
+        -moz-transform: translateX(10px);
+    }
+}
+@keyframes shake {
+    0%, 100% {
+        transform: translateX(0);
+    }
+    10%, 30%, 50%, 70%, 90% {
+        transform: translateX(-10px);
+    }
+    20%, 40%, 60%, 80% {
+        transform: translateX(10px);
+    }
+}
+.bottom-content .tab-content {
+    max-height: 200px;
     overflow: auto;
 }
 .form-signin {
     max-width: 500px;
     margin: 150px auto;
 }
-.poj-list,.side-content{
+.poj-list, .side-content {
     overflow: auto;
-}
+}
+.poj-list span.poj-icon {
+  padding-right:10px;
+  color:#ccc
+}
+.print-toolsbar{
+  padding:5px
+}
+.print-toolsbar .panel {
+  display:inline-block;
+  vertical-align:top;
+  background:#f7f7f9
+}
+.print-toolsbar .panel .panel-foot{
+  text-align: center;
+  font-size: 12px
+}
+.print-list {
+  border-right:1px solid #ccc
+}
+.print-list .form-list {
+  overflow: auto
+}
+.print-list .list-tools{
+  height:50px;
+  padding:10px 0;
+  border-bottom:1px solid #f2f2f2
+}
+.pageContainer {
+  background: #ededed;
+  text-align: center
+}
+.pageContainer .page{
+  border:9px solid transparent;
+  display: inline-block;
+}
+.pageContainer .page img{
+  width:inherit;
+  height: inherit;
+}

文件差异内容过多而无法显示
+ 4 - 4
src/js/bootstrap/bootstrap.min.js


+ 1 - 2
src/js/global.js

@@ -9,6 +9,7 @@ function autoFlashHeight(){
     $(".fluid-content").height($(window).height()-headerHeight-toolsbarHeight-1);
     $(".side-content").height($(window).height()-headerHeight );
     $(".poj-list").height($(window).height()-headerHeight-toolsbarHeight);
+    $(".form-list").height($(window).height()-headerHeight-50 );
 };
 $(window).resize(autoFlashHeight);
 /*全局自适应高度结束*/
@@ -38,5 +39,3 @@ $('*[data-toggle=tooltip]').mouseover(function() {
   });
 /*工具提示*/
 });
-
-