Browse Source

Merge branch 'master' of http://192.168.1.12:3000/SmartCost/ConstructionCost

TonyKang 7 years ago
parent
commit
210f2f5f5e
35 changed files with 164 additions and 171 deletions
  1. 2 1
      lib/spreadjs/sheets/css/gc.spread.sheets.sc.css
  2. 2 1
      modules/all_models/projects.js
  3. 1 1
      modules/complementary_glj_lib/models/gljModel.js
  4. 17 11
      modules/main/controllers/bills_controller.js
  5. 1 0
      modules/main/routes/bills_route.js
  6. 4 0
      modules/pm/models/project_model.js
  7. BIN
      public/static/uploadExample.xlsx
  8. 8 0
      public/web/id_tree.js
  9. 4 83
      web/building_saas/complementary_glj_lib/html/tools-gongliaoji.html
  10. 2 2
      web/building_saas/complementary_ration_lib/html/anzhuang.html
  11. 4 4
      web/building_saas/complementary_ration_lib/html/dinge.html
  12. 1 1
      web/building_saas/complementary_ration_lib/html/fuzhu.html
  13. 3 3
      web/building_saas/complementary_ration_lib/html/gongliao.html
  14. 1 1
      web/building_saas/complementary_ration_lib/js/coe.js
  15. 2 0
      web/building_saas/complementary_ration_lib/js/installation.js
  16. 4 4
      web/building_saas/complementary_ration_lib/js/repository_glj.js
  17. 5 0
      web/building_saas/css/custom.css
  18. 5 5
      web/building_saas/glj/html/project_glj.html
  19. 1 1
      web/building_saas/glj/js/project_glj_spread.js
  20. 1 0
      web/building_saas/js/global.js
  21. 13 12
      web/building_saas/main/html/main.html
  22. 12 3
      web/building_saas/main/js/controllers/block_controller.js
  23. 1 1
      web/building_saas/main/js/models/project_glj.js
  24. 2 2
      web/building_saas/main/js/models/ration.js
  25. 0 12
      web/building_saas/main/js/models/ration_glj.js
  26. 1 2
      web/building_saas/main/js/views/glj_view.js
  27. 6 6
      web/building_saas/main/js/views/glj_view_contextMenu.js
  28. 13 3
      web/building_saas/main/js/views/project_glj_view.js
  29. 6 4
      web/building_saas/main/js/views/project_view.js
  30. 34 5
      web/building_saas/main/js/views/std_bills_lib.js
  31. 2 1
      web/building_saas/main/js/views/std_ration_lib.js
  32. 1 1
      web/building_saas/pm/html/project-management-Recycle.html
  33. 2 0
      web/building_saas/pm/js/pm_gc.js
  34. 2 0
      web/building_saas/pm/js/pm_newMain.js
  35. 1 1
      web/common/html/header.html

+ 2 - 1
lib/spreadjs/sheets/css/gc.spread.sheets.sc.css

@@ -153,7 +153,8 @@
 /*选择框*/
 .gc-selection {
     background-color: rgba(20, 20, 20, 0.2);
-    border-color: #ababab;
+    /*border-color: #ababab;*/
+    border-color: #675f5e;
     color: rgba(240,240,240,0.7);
 }
 .gc-drag-indicator {

+ 2 - 1
modules/all_models/projects.js

@@ -30,7 +30,8 @@ const ProjectSchema = new Schema({
         chargeFee: String
     },
     "changeMark":String,//更新标记  feeRate:费率文件发生了改变,unitFile 单件文件发生了改变
-    "remark":String //备注
+    "remark":String, //备注
+    "fileVer": String
 });
 
 mongoose.model(collectionName, ProjectSchema, collectionName);

+ 1 - 1
modules/complementary_glj_lib/models/gljModel.js

@@ -15,7 +15,7 @@ class GljDao {
             if(data.length) {
                 callback(0,data);
             }
-            else  if(err) callback("获取工料机类型错误!",false);
+            else  if(err) callback("获取人材机类型错误!",false);
         })
     }
 

+ 17 - 11
modules/main/controllers/bills_controller.js

@@ -181,7 +181,23 @@ module.exports = {
         }
         res.json(result);
     },
+    //下载导入清单示例
+    downloadExample: async function(request, response) {
+        try {
+            const filePath = './public/static/uploadExample.xlsx';
+            const stats = fs.statSync(filePath);
+            // 下载相关header
+            response.set({
+                'Content-Type': 'application/octet-stream',
+                'Content-Disposition': 'attachment; filename=uploadExample.xlsx',
+                'Content-Length': stats.size
+            });
+            fs.createReadStream(filePath).pipe(response);
+        } catch (error) {
+            response.end(error);
+        }
 
+    },
 
     upload: async function(req, res){
         let responseData = {
@@ -327,8 +343,6 @@ function rowExistData(rowData){
 }
 //提取excel表数据中的有效数据(去表头表尾,提取其中的excel数据)(根据fixedBill获取栏头占行数)
 function getValidImportData(sheetData, fixedBill){
-    console.log(`sheetData`);
-    console.log(sheetData);
     let withingD = false;
     let validData = [];
     for(let r = 0; r < sheetData.length; r++){
@@ -349,23 +363,17 @@ function getValidImportData(sheetData, fixedBill){
                 withingD = false;
             }
         }
-        /*console.log(`rData`);
-        console.log(rData);
-        console.log(withingD);
-        console.log(rowExistData(rData));*/
         if(withingD && rowExistData(rData)){
             validData.push(rData);
         }
     }
-    /*console.log(`validData`);
-    console.log(validData);*/
     return validData;
 }
 
 function getImportFlag(sheetName){
     const fixedItem = {'分部分项': fixedFlag.SUB_ENGINERRING, '施工技术措施项目': fixedFlag.CONSTRUCTION_TECH, '施工组织措施项目': fixedFlag.CONSTRUCTION_ORGANIZATION};
     for(let flag in fixedItem){
-        if(sheetName.indexOf(flag) > 0){
+        if(sheetName.includes(flag)){
             return fixedItem[flag];
         }
     }
@@ -506,8 +514,6 @@ function parseToBillData(validData, colMapping, fixedBill, projectID, stdData){
     for(let i in billIdx){
         rst.push(billIdx[i]);
     }
-    console.log('rst');
-    console.log(rst);
     return rst;
 }
 

+ 1 - 0
modules/main/routes/bills_route.js

@@ -19,6 +19,7 @@ module.exports = function (app) {
     billsRouter.post('/reorganizeFBFX', billsController.reorganizeFBFX);
     billsRouter.post('/pasteBlock', billsController.pasteBlock);
     billsRouter.post('/upload', billsController.upload);
+    billsRouter.get('/downloadExamp', billsController.downloadExample);
     app.use('/bills', billsRouter);
 };
 

+ 4 - 0
modules/pm/models/project_model.js

@@ -41,6 +41,8 @@ let fileType = {
 let ProjectsDAO = function () {
 };
 
+let G_FILE_VER = '1.0.1';
+
 ProjectsDAO.prototype.getUserProjects = async function (userId, compilation, callback) {
     try {
         let projects = await Projects.find({
@@ -105,6 +107,7 @@ ProjectsDAO.prototype.updateUserProjects = async function (userId, compilationId
                 data.updateData['userID'] = userId;
                 data.updateData['compilation'] = compilationId;
                 data.updateData['createDateTime'] = new Date();
+                data.updateData['fileVer'] = G_FILE_VER;
                 // 如果没有选中单价文件则新增单价文件
                 if (data.updateData.projType === projectType.tender && data.updateData.property !== null &&
                     Object.keys(data.updateData.property.unitPriceFile).length > 0 &&
@@ -313,6 +316,7 @@ ProjectsDAO.prototype.copyUserProjects = function (userId, compilationId, datas,
                 data.updateData['userID'] = userId;
                 data.updateData['compilation'] = compilationId;
                 data.updateData['createDateTime'] = new Date();
+                data.updateData['fileVer'] = G_FILE_VER;
                 let newProject = new Projects(data.updateData);
                 newProject['srcProjectId'] = data.srcProjectId;
                 newProject.save(function (err, result) {

BIN
public/static/uploadExample.xlsx


+ 8 - 0
public/web/id_tree.js

@@ -229,6 +229,14 @@ var idTree = {
             this.expanded = expanded;
             setNodesVisible(this.children, expanded);
         };
+
+        Node.prototype.setExpandedNoRecur = function (expanded) {
+            this.expanded = expanded;
+            this.visible = expanded && this.visible;
+            for(let node of this.children){
+                node.visible = expanded && node.visible;
+            }
+        };
         /*Node.prototype.vis = function () {
             return this.parent ? this.parent.vis() && this.parent.expanded() : true;
         };*/

+ 4 - 83
web/building_saas/complementary_glj_lib/html/tools-gongliaoji.html

@@ -5,7 +5,7 @@
     <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>
+    <title>人材机库编辑-Smartcost</title>
     <!--inject:css-->
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css" type="text/css">
     <link rel="stylesheet" href="/web/building_saas/css/main.css" type="text/css">
@@ -22,46 +22,8 @@
 <body>
     <div class="header">
         <%include ../../../common/html/header.html %>
-    <!--    <nav class="navbar navbar-expand-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-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="/complementaryGlj">工料机库编辑器</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 href="javacript:void(0);" data-toggle="modal" data-target="#history" class="nav-link"><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="#">定额库编辑器</a></li>
-              <li><a href="/complementaryGlj" class="active">工料机库编辑器</a></li>
-            </ul>
-        </div>-->
         <div class="content" style="margin-left: 0px;">
             <div class="container-fluid">
                 <div class="row">
@@ -83,47 +45,6 @@
       </div>
       <!--弹出组成物-->
     <button id="componentBtn" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#component" style="display: none"></button>
-      <!--<div class="modal fade" id="component" data-backdrop="static">
-          <div class="modal-dialog modal-lg" role="document" id="modalCon">
-              <div class="modal-content" >
-                  <div class="modal-header">
-                    <h5 class="modal-title">选择组成物</h5>
-                      <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                        <span aria-hidden="true">&times;</span>
-                      </button>
-                  </div>
-                  <div class="modal-body">
-                    <div class="row">
-                      <div class="col-4">
-                        <div  class="modal-auto-height" id="componentTreeDiv" style="overflow: hidden">
-                            &lt;!&ndash;<div class="print-list">&ndash;&gt;
-                                <div style="width: 100%; height: 100%; overflow: auto">
-                                    <ul id="componentTree" class="ztree"></ul>
-                                </div>
-                            &lt;!&ndash;</div>&ndash;&gt;
-                        </div>
-                      </div>
-                      <div class="col-8">
-                          <div class="row">
-                              <div class="col-12" id="gljRadios">
-                                  <input type="radio" class="glj-radio" name="glj" value="allGljs">所有工料机&nbsp;&nbsp;
-                                  <input type="radio" class="glj-radio" name="glj" value="stdGljs">标准工料机&nbsp;&nbsp;
-                                  <input type="radio" class="glj-radio" name="glj" value="complementaryGljs">补充工料机&nbsp;&nbsp;
-                                 &lt;!&ndash; <div class="form-group"><input id="searchGlj" type="text" class="form-control-sm" placeholder="查询工料机"></div>&ndash;&gt;
-                              </div>
-                              <div class="modal-auto-height col-12" style="overflow: hidden" id="componentSheet">
-                              </div>
-                          </div>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="modal-footer">
-                      <button type="button" id="componentsCacnel" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                      <a href="javascript:void(0);" id="componentsConf" class="btn btn-primary">确定</a>
-                  </div>
-              </div>
-          </div>
-      </div>-->
     <div class="modal fade" id="component" data-backdrop="static">
         <div class="modal-dialog modal-lg" role="document" id="modalCon">
             <div class="modal-content" >
@@ -148,9 +69,9 @@
                                 <div class="col-12" id="gljRadios">
                                     <div class="row">
                                         <div class="col-7" style="margin-top: 5px;">
-                                            <input type="radio" class="glj-radio" name="glj" value="allGljs">所有工料机&nbsp;&nbsp;
-                                            <input type="radio" class="glj-radio" name="glj" value="stdGljs">标准工料机&nbsp;&nbsp;
-                                            <input type="radio" class="glj-radio" name="glj" value="complementaryGljs">补充工料机&nbsp;&nbsp;
+                                            <input type="radio" class="glj-radio" name="glj" value="allGljs">所有人材机&nbsp;&nbsp;
+                                            <input type="radio" class="glj-radio" name="glj" value="stdGljs">标准人材机&nbsp;&nbsp;
+                                            <input type="radio" class="glj-radio" name="glj" value="complementaryGljs">补充人材机&nbsp;&nbsp;
                                         </div>
                                         <div class="input-group col-5" style="margin-bottom: 5px;">
                                             <input type="text" class="form-control form-control-sm" placeholder="请输入筛选编码或名称" value="" id="gljSearchKeyword">

+ 2 - 2
web/building_saas/complementary_ration_lib/html/anzhuang.html

@@ -36,7 +36,7 @@
                       <a class="nav-link px-3" id="dinge" href="dinge.html">定额</a>
                   </li>
                   <li class="nav-item">
-                      <a class="nav-link px-3" id="gongliao" href="gongliao.html">工料机</a>
+                      <a class="nav-link px-3" id="gongliao" href="gongliao.html">人材机</a>
                   </li>
                   <li class="nav-item">
                       <a class="nav-link px-3" id="fuzhu" href="fuzhu.html">附注条件</a>
@@ -72,7 +72,7 @@
                           </div>
                       </div>
                     </div>
-                    <div class="bottom-content" id="instFeeRuleSpread">
+                    <div class="bottom-content" id="instFeeRuleSpread" style="height: 370px;">
                         <!--<table class="table table-sm table-bordered">
                           <thead><tr><th></th><th>编码</th><th>费用规则</th><th>基数</th><th>费率(%)</th><th>其中人工(%)</th><th>其中材料(%)</th><th>其中机械(%)</th></tr></thead>
                           <tbody>

+ 4 - 4
web/building_saas/complementary_ration_lib/html/dinge.html

@@ -35,10 +35,10 @@
                 <a class="nav-link active px-3" id ="dinge" >定额</a>
             </li>
             <li class="nav-item">
-                <a class="nav-link px-3" id="gongliao" href="#">工料机</a>
+                <a class="nav-link px-3" id="gongliao" href="#">人材机</a>
             </li>
             <li class="nav-item">
-                <a class="nav-link px-3" id="fuzhu" href="#">附注条件</a>
+                <a class="nav-link px-3" id="fuzhu" href="#">子目换算</a>
             </li>
             <li class="nav-item">
                 <a class="nav-link px-3" id="anzhuang" href="#">安装增加费</a>
@@ -92,13 +92,13 @@
                                 <!-- 标签 -->
                                 <ul class="nav nav-tabs" role="tablist">
                                     <li class="nav-item">
-                                        <a class="nav-link active" id="linkGLJ" data-toggle="tab" href="#rDetail" role="tab">工料机</a>
+                                        <a class="nav-link active" id="linkGLJ" data-toggle="tab" href="#rDetail" role="tab">人材机</a>
                                     </li>
                                     <li class="nav-item">
                                         <a class="nav-link" id="linkFZDE" data-toggle="tab" href="#rDetail" role="tab">辅助定额调整</a>
                                     </li>
                                     <li class="nav-item">
-                                        <a class="nav-link" id="linkFZTJ" data-toggle="tab" href="#rDetail" role="tab">附注条件调整</a>
+                                        <a class="nav-link" id="linkFZTJ" data-toggle="tab" href="#rDetail" role="tab">子目换算调整</a>
                                     </li>
                                     <li class="nav-item">
                                         <a class="nav-link px-3" id="linkAZZJ" data-toggle="tab" href="#rDetail" role="tab">安装增加费</a>

+ 1 - 1
web/building_saas/complementary_ration_lib/html/fuzhu.html

@@ -35,7 +35,7 @@
                       <a class="nav-link px-3" id="drirect-dinge" href="javascript:void(0);">定额</a>
                   </li>
                   <li class="nav-item">
-                      <a class="nav-link px-3" id="gongliao" href="javascript:void(0);">工料机</a>
+                      <a class="nav-link px-3" id="gongliao" href="javascript:void(0);">人材机</a>
                   </li>
                   <li class="nav-item">
                       <a class="nav-link active px-3">附注条件</a>

+ 3 - 3
web/building_saas/complementary_ration_lib/html/gongliao.html

@@ -38,7 +38,7 @@
                       <a class="nav-link px-3" id="drirect-dinge" href="/complementaryRation/ration">定额</a>
                   </li>
                   <li class="nav-item">
-                      <a class="nav-link active px-3">工料机</a>
+                      <a class="nav-link active px-3">人材机</a>
                   </li>
                   <li class="nav-item">
                       <a class="nav-link px-3" id="fuzhu" href="javascript:void(0);">附注条件</a>
@@ -69,7 +69,7 @@
         <div class="modal-dialog" role="document">
             <div class="modal-content">
                 <div class="modal-header">
-                  <h5 class="modal-title">添加工料机</h5>
+                  <h5 class="modal-title">添加人材机</h5>
                   <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                     <span aria-hidden="true">×</span>
                   </button>
@@ -115,7 +115,7 @@
         <div class="modal-dialog" role="document">
             <div class="modal-content">
                 <div class="modal-header">
-                  <h5 class="modal-title">编辑工料机</h5>
+                  <h5 class="modal-title">编辑人材机</h5>
                   <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                     <span aria-hidden="true">×</span>
                   </button>

+ 1 - 1
web/building_saas/complementary_ration_lib/js/coe.js

@@ -151,7 +151,7 @@ let gljAdjOprObj = {
     setting: {
         header: [
             {headerName:"调整类型", headerWidth:100, dataCode:"coeType", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false},
-            {headerName:"工料机编码", headerWidth:100, dataCode:"gljCode", dataType: "String", formatter: '@', hAlign: "center", vAlign: "center", readOnly: false},
+            {headerName:"人材机编码", headerWidth:100, dataCode:"gljCode", dataType: "String", formatter: '@', hAlign: "center", vAlign: "center", readOnly: false},
             {headerName:"名称", headerWidth:100, dataCode:"gljName", dataType: "String", hAlign: "center", vAlign: "center", readOnly: true},
             {headerName:"操作符", headerWidth:60, dataCode:"operator", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false},
             {headerName:"数量", headerWidth:80, dataCode:"amount", dataType: "String", hAlign: "center", vAlign: "center" , readOnly: false},

+ 2 - 0
web/building_saas/complementary_ration_lib/js/installation.js

@@ -257,6 +257,8 @@ let feeRuleObj = {
     buildSheet: function () {
         if(!this.isDef(this.workBook)){
             this.workBook = sheetCommonObj.buildSheet($('#instFeeRuleSpread')[0], this.setting, 10);
+            console.log(`this.workBook`);
+            console.log(this.workBook);
             this.sheet = this.workBook.getActiveSheet();
             this.setOptions(this.workBook, this.setting.options);
             this.bindEvents(this.sheet);

+ 4 - 4
web/building_saas/complementary_ration_lib/js/repository_glj.js

@@ -248,15 +248,15 @@ repositoryGljObj = {
                 let focusToCol;
                 function getFocusToCol (me){
                     if(!me.addGljObj[me.setting.header[0].dataCode]){
-                        $('#alertGljTxt').text('编号不能为空,是否取消增加工料机?');
+                        $('#alertGljTxt').text('编号不能为空,是否取消增加人材机?');
                         return 0;
                     }
                     else if(!me.addGljObj[me.setting.header[1].dataCode]){
-                        $('#alertGljTxt').text('名称不能为空,是否取消增加工料机?');
+                        $('#alertGljTxt').text('名称不能为空,是否取消增加人材机?');
                         return 1;
                     }
                     else if(!me.addGljObj[me.setting.header[5].dataCode]){
-                        $('#alertGljTxt').text('类型不能为空,是否取消增加工料机?');
+                        $('#alertGljTxt').text('类型不能为空,是否取消增加人材机?');
                         return 5;
                     }
                     else {
@@ -455,7 +455,7 @@ repositoryGljObj = {
                 if(refGljCodes.length > 0){
                     let alertText;
                     if(refGljCodes.length > 3){
-                        alertText = "编号: " + refGljCodes[0]+" 、" + refGljCodes[1] + " 、" + refGljCodes[2] + "...等工料机已有定额引用,删除失败!";
+                        alertText = "编号: " + refGljCodes[0]+" 、" + refGljCodes[1] + " 、" + refGljCodes[2] + "...等人材机已有定额引用,删除失败!";
                     }
                     else {
                         let alertCode = " ";

+ 5 - 0
web/building_saas/css/custom.css

@@ -32,4 +32,9 @@ legend.legend{
 
 .li_sub {
     margin-left: 14px;
+}
+
+.filterType{
+    padding-left: .75rem;
+    padding-right:0px;
 }

+ 5 - 5
web/building_saas/glj/html/project_glj.html

@@ -12,16 +12,16 @@
 </div>
 <div class="container-fluid">
     <div class="row">
-        <div class="gl-side col-lg-1" id='filterType'>
-            <ul class="list-unstyled ml-3 mt-2 mb-2">
-                <li><a href="javascript:void(0)" id="ALL">所有工料机</a></li>
+        <div class="gl-side col-lg-1 filterType" id='filterType'>
+            <ul class="list-unstyled mt-2 mb-2">
+                <li><a href="javascript:void(0)" id="ALL">所有人材机</a></li>
                 <li class="mb-2 li_sub"><a href="javascript:void(0)" id="LABOUR">人工</a></li>
                 <li class="mb-2 li_sub"><a href="javascript:void(0)" id="GENERAL_MATERIAL">材料</a></li>
                 <li class="mb-2 li_sub"><a href="javascript:void(0)" id="GENERAL_MACHINE">机械</a></li>
                 <li class="mb-2 li_sub"><a href="javascript:void(0)" id="MAIN_MATERIAL">主材</a></li>
                 <li class="mb-2 li_sub"><a href="javascript:void(0)" id="EQUIPMENT">设备</a></li>
-                <li class="mb-2"><a href="javascript:void(0)" id="FBFX">分部分项工料机</a></li>
-                <li class="mb-2"><a href="javascript:void(0)" id="TECH">措施分项工料机</a></li>
+                <li class="mb-2"><a href="javascript:void(0)" id="FBFX">分部分项人材机</a></li>
+                <li class="mb-2"><a href="javascript:void(0)" id="TECH">措施分项人材机</a></li>
                 <li class="mb-2"><a href="javascript:void(0)" id="JGCL">甲供材料</a></li>
                 <li class="mb-2"><a href="javascript:void(0)" id="ZGCL">暂估材料</a></li>
                 <li class="mb-2"><a href="javascript:void(0)" id="SCHZ">三材汇总</a></li>

+ 1 - 1
web/building_saas/glj/js/project_glj_spread.js

@@ -154,7 +154,7 @@ ProjectGLJSpread.prototype.init = function () {
         // 如果类型为混凝土、砂浆、配合比、机械,则提示
         if (field === 'unit_price.market_price' && canNotChangeTypeId.indexOf(type) >= 0) {
             if(ratioData&&ratioData.length>0){
-                alert('当前工料机的市场单价由组成物计算得出,不可直接修改');
+                alert('当前人材机的市场单价由组成物计算得出,不可直接修改');
             }
         }
     });

+ 1 - 0
web/building_saas/js/global.js

@@ -24,6 +24,7 @@ function autoFlashHeight(){
     $(".main-data-side-search").height($(window).height()-headerHeight-toolsbarHeight-64);
     $(".side-content").height($(window).height()-headerHeight );
     $(".poj-list").height($(window).height()-headerHeight-toolsbarHeight);
+    $(".gc-list").height($(window).height()-headerHeight-toolsbarHeight-40);
     $(".form-view").height($(window).height()-headerHeight-ftoolsbarHeight);
     $(".form-list").height($(window).height()-headerHeight-50 );
 

+ 13 - 12
web/building_saas/main/html/main.html

@@ -44,7 +44,7 @@
         <div class="main-nav">
             <ul class="nav nav-tabs flex-column" role="tablist">
                 <li class="nav-item"><a class="active" data-toggle="tab" href="#zaojiashu" id="tab_zaojiashu" role="tab">造价书</a></li>
-                <li class="nav-item"><a data-toggle="tab" href="#project_glj" id="tab_project_glj" data-name="tab_project_glj" role="tab">工料机</a></li>
+                <li class="nav-item"><a data-toggle="tab" href="#project_glj" id="tab_project_glj" data-name="tab_project_glj" role="tab">人材机</a></li>
                 <li class="nav-item"><a data-toggle="tab" href="#fee_rates" id="tab_fee_rate" role="tab" >费率</a></li>
                 <li class="nav-item"><a data-toggle="tab" href="#calc_program_manage" id="tab_calc_program_manage" role="tab">计算程序</a></li>
                 <li class="nav-item"><a data-toggle="tab" href="#reports" role="tab" id="tab_report" onclick="rptTplObj.iniPage();">报表</a></li>
@@ -56,9 +56,9 @@
               <!--造价书-->
               <div class="toolsbar px-1 d-flex justify-content-between">
                   <div class="tools-btn btn-group align-top">
-                    <a href="javascript:void(0)" class="btn btn-sm" title="复制" ><i class="fa fa-files-o" aria-hidden="true"></i></a>
+                    <!--<a href="javascript:void(0)" class="btn btn-sm" title="复制" ><i class="fa fa-files-o" aria-hidden="true"></i></a>
                     <a href="javascript:void(0)" class="btn btn-sm" title="剪切"><i class="fa fa-scissors" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" class="btn btn-sm" title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" class="btn btn-sm" title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>-->
                  <!--   <a href="javascript:void(0)" class="btn btn-sm" id="insert" title="插入"><i class="fa fa-sign-in" aria-hidden="true"></i></a>-->
                     <a href="javascript:void(0)" class="btn btn-sm" id="delete" title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
                     <a href="javascript:void(0)" class="btn btn-sm" id="upLevel" title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
@@ -109,10 +109,10 @@
                           <div class="bottom-content">
                               <ul class="nav nav-tabs" role="tablist">
                                   <li class="nav-item">
-                                      <a class="nav-link active" id="linkGLJ" data-toggle="tab" href="#subSpread" role="tab">工料机</a>
+                                      <a class="nav-link active" id="linkGLJ" data-toggle="tab" href="#subSpread" role="tab">人材机</a>
                                   </li>
                                   <li class="nav-item">
-                                      <a class="nav-link" id="linkFZTJ" data-toggle="tab" href="#subSpread" role="tab">附注条件</a>
+                                      <a class="nav-link" id="linkFZTJ" data-toggle="tab" href="#subSpread" role="tab">子目换算</a>
                                   </li>
                                   <li class="nav-item">
                                       <a class="nav-link" id="linkFZDE" data-toggle="tab" href="#subSpread" role="tab">辅助定额</a>
@@ -272,7 +272,7 @@
                                       </div>
                                       <div class="row" id="stdBillsRemarkTab">
                                           <div class="col-lg-12 p-0">
-                                              <textarea class="form-control" id="stdBillsRemark" rows="8" readonly="true"></textarea>
+                                              <textarea class="form-control" id="stdBillsRemark" style="width: 100%; height: 100%" readonly="true"></textarea>
                                           </div>
                                       </div>
                                   </div>
@@ -423,7 +423,7 @@
                                             <div class="form-check">
                                                 <label class="form-check-label">
                                                     <input class="form-check-input" type="checkbox" id="calc_add">
-                                                    新增工料机计取价差
+                                                    新增人材机计取价差
                                                 </label>
                                             </div>
                                             <div class="form-check">
@@ -480,7 +480,7 @@
                                                     </div>
                                                 </div>
                                             </div>
-                                            <h5 class="mt-3">工料机</h5>
+                                            <h5 class="mt-3">人材机</h5>
                                             <div class="row m-0">
                                                 <div class="col-sm-3">
                                                     <div class="input-group input-group-sm mb-2">
@@ -643,7 +643,7 @@
         <div class="modal-dialog modal-lg" role="document" id="modalCon">
             <div class="modal-content" style="width: 1020px; left:50%; transform: translate(-50%,0%);">
                 <div class="modal-header">
-                    <h5 class="modal-title">请选择工料机</h5>
+                    <h5 class="modal-title">请选择人材机</h5>
                     <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                         <span aria-hidden="true">&times;</span>
                     </button>
@@ -664,9 +664,9 @@
                                 <div class="col-12" id="gljRadios">
                                     <div class="row">
                                         <div class="col-7" style="margin-top: 5px;">
-                                            <input type="radio" class="glj-radio" name="glj" value="allGljs" checked>所有工料机&nbsp;&nbsp;
-                                            <input type="radio" class="glj-radio" name="glj" value="stdGLJ">标准工料机&nbsp;&nbsp;
-                                            <input type="radio" class="glj-radio" name="glj" value="complementaryGLJs">补充工料机&nbsp;&nbsp;
+                                            <input type="radio" class="glj-radio" name="glj" value="allGljs" checked>所有人材机&nbsp;&nbsp;
+                                            <input type="radio" class="glj-radio" name="glj" value="stdGLJ">标准人材机&nbsp;&nbsp;
+                                            <input type="radio" class="glj-radio" name="glj" value="complementaryGLJs">补充人材机&nbsp;&nbsp;
                                         </div>
                                         <div class="input-group col-5" style="margin-bottom: 5px;">
                                             <input type="text" class="form-control form-control-sm" placeholder="请输入筛选编码或名称" value="" id="gljSearchKeyword">
@@ -1071,6 +1071,7 @@
                     <div class="alert alert-success mt-3" id="uploadAlert" role="alert" style="display: none;">
                         广东XXXX项目清单.xlsx 准备导入上传
                     </div>
+                    <button type="button" class="btn btn-primary" id="uploadExample">示例</button>
                 </div>
                 <div class="modal-footer">
                     <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>

+ 12 - 3
web/building_saas/main/js/controllers/block_controller.js

@@ -34,12 +34,21 @@ let BlockController = {
             if(MainTreeCol.readOnly.billsParent(selected)){
                 return true;
             }
+            if(this.haveCalcBase(selected)){//有使用基数计算,disable
+                return true;
+            }
         }
         if(blockData.firstNodeType != blockType.RATION && selected.sourceType == ModuleNames.ration){
             return true;
         }
         return false;
     },
+    haveCalcBase : function (node) {
+        if(node.data.calcBase ==null||node.data.calcBase ==undefined|| node.data.calcBase == ""){
+            return false;
+        }
+        return true;
+    },
     isDXFYorMainEq:function (node) {//焦点行是大项费用或定额下的主材设备
         if(node.sourceType == ModuleNames.bills && node.data.type == billType.DXFY){//焦点行是大项费用则无效;
             return true;
@@ -121,7 +130,7 @@ let BlockController = {
                 return "next";
             }
             if(isFXorBX(selected)||(selected.sourceType === Bills.getSourceType()&& selected.source.children.length == 0)){//焦点行是分项/叶子清单,且无基数计算,则粘贴到分项/叶子清单下
-                if(selected.data.calcBase ==null||selected.data.calcBase ==undefined|| selected.data.calcBase == ""){//无基数计算
+                if(!this.haveCalcBase(selected)){//无基数计算
                     return "sub";
                 }
             }
@@ -150,7 +159,7 @@ let BlockController = {
         }else {//焦点行不属于“分部分项工程”
             if(blockData.firstNodeType == blockType.BILL &&selected.sourceType == Bills.getSourceType()){//如果剪切板中是从“分部分项工程”以外复制的清单块
                 if(selected.children.length==0 || selected.children[0].sourceType == Bills.getSourceType()){//焦点行没有子项,或者子项是清单,判断是否有基数计算
-                    if(selected.data.calcBase && selected.data.calcBase!=""){//如果焦点行有基数计算,则子项灰显不可选。
+                    if(this.haveCalcBase(selected)){//如果焦点行有基数计算,则子项灰显不可选。
                         setRadioProp('sub_node',{checked:false,disabled:true});
                     }else{//如果焦点行没有基数计算,则子项可选。
                         setRadioProp('sub_node',{checked:false,disabled:false});
@@ -179,7 +188,7 @@ let BlockController = {
             return false;
        }
        function blockIsFXorBX(type) {
-           return type == blockType.FX||blockType.BX;
+           return type == blockType.FX||type == blockType.BX;
        }
 
     },

+ 1 - 1
web/building_saas/main/js/models/project_glj.js

@@ -38,7 +38,7 @@ ProjectGLJ.prototype.loadData = function (callback = null) {
         success: function (response) {
             self.isLoading = false;
             if (response.err === 1) {
-                let msg = response.msg !== undefined && response.msg !== '' ? response.msg : '读取工料机数据失败!';
+                let msg = response.msg !== undefined && response.msg !== '' ? response.msg : '读取人材机数据失败!';
                 alert(msg);
                 return false;
             }

+ 2 - 2
web/building_saas/main/js/models/ration.js

@@ -400,7 +400,7 @@ var Ration = {
                 if(engineering==engineeringType.BUILD_IN) {//如果是安装工程,要看需不需要生成安装增加费
                     needInstall = project.Bills.isFBFX(r.node);
                 }
-                r.value = r.value.replace(/[\s\r\n]/g, "");//去掉空格回车换行等字符
+                r.value===null||r.value===undefined?"":r.value = r.value.replace(/[\s\r\n]/g, "");//去掉空格回车换行等字符
                 nodeInfo.push({ID:r.node.data.ID,billsItemID:r.node.data.billsItemID,newCode:r.value,needInstall:needInstall});
                 refershNodes.push(r.node);
             }
@@ -432,7 +432,7 @@ var Ration = {
                     $.bootstrapLoading.end();
                 });
 
-                if(data.length<recodes.length){//说明有部分定额编号没找到记录
+                if(data.length<recodes.length&&recodes[data.length].value!=null){//说明有部分定额编号没找到记录
                     alert('当前库中找不到定额"' + recodes[data.length].value + '"');
                 }
             })

+ 0 - 12
web/building_saas/main/js/models/ration_glj.js

@@ -570,18 +570,6 @@ var ration_glj = {
                         }
                     }
                 }
-              /*  let newNode=null;
-                for (let r_glj of data) {
-                    r_glj.marketUnitFee = r_glj.marketPrice;
-                    r_glj.quantity = r_glj.quantity + "";
-                    project.Ration.datas.push(r_glj);
-                    newNode = project.mainTree.insert(parentNodeID, nextNodeID, r_glj.ID);
-                    newNode.source = r_glj;
-                    newNode.sourceType = project.Ration.getSourceType();
-                    newNode.data = r_glj;
-                    ProjectController.syncDisplayNewNode(projectObj.mainController, newNode);
-                }*/
-                //this.nodes[this.prefix + parentID];
                 callback(parentNodeID,nextNodeID,data);
             }, function () {
                 $.bootstrapLoading.end();

+ 1 - 2
web/building_saas/main/js/views/glj_view.js

@@ -275,8 +275,7 @@ var gljOprObj = {
         sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
             if (args.row>=me.sheetData.length){
                 args.cancel = true;
-            }
-            if (me.sheetData[args.row].isMixRatio) {
+            }else if (me.sheetData[args.row].isMixRatio) {
                 args.cancel = true;
             }
         });

+ 6 - 6
web/building_saas/main/js/views/glj_view_contextMenu.js

@@ -12,7 +12,7 @@ var gljContextMenu = {
             build: this.onbuild,
             items: {
                 "delete_glj": {
-                    name: '删除工料机',
+                    name: '删除人材机',
                     icon: 'fa-remove',
                     disabled: function () {
                         var sheetData = gljOprObj.sheetData;
@@ -36,7 +36,7 @@ var gljContextMenu = {
                     }
                 },
                 "add_glj": {
-                    name: '添加工料机',
+                    name: '添加人材机',
                     icon: 'fa-sign-in',
                     disabled: function () {
                         var selected = projectObj.project.mainTree.selected;
@@ -63,7 +63,7 @@ var gljContextMenu = {
                     }
                 },
                 "replace_glj": {
-                    name: '替换工料机',
+                    name: '替换人材机',
                     icon: 'fa-sign-in',
                     disabled: function () {
                         var sheetData = gljOprObj.sheetData;
@@ -85,7 +85,7 @@ var gljContextMenu = {
                     }
                 },
                 "m_replace_glj": {
-                    name: '批量替换工料机',
+                    name: '批量替换人材机',
                     icon: 'fa-sign-in',
                     disabled: function () {
                         var sheetData = gljOprObj.sheetData;
@@ -108,7 +108,7 @@ var gljContextMenu = {
                     }
                 },
                 "add_to_lib": {
-                    name: '保存到我的工料机库',
+                    name: '保存到我的人材机库',
                     icon: 'fa-sign-in',
                     disabled: function () {
                         var sheetData = gljOprObj.sheetData;
@@ -354,7 +354,7 @@ function getGLJData(actionType) {
 function showGLJClassTree(record) {
     CommonAjax.post('/rationGlj/getGLJClass',record, function (data) {
         if(data.exist==true){
-            alert("当前工料机已存在。");
+            alert("当前人材机已存在。");
         }else {
             gljOprObj.selectedGLJClass = record;
             $("#glj_class_div").modal({show:true});

+ 13 - 3
web/building_saas/main/js/views/project_glj_view.js

@@ -23,7 +23,7 @@ projectGljObject={
             {headerName: "供货方式", headerWidth: 80, dataCode: "supply", hAlign: "center", dataType: "String",cellType:'comboBox',editorValueType:true,options:supplyComboMap},
             {headerName: "甲供数量", headerWidth: 100, dataCode: "supply_quantity", hAlign: "right", dataType: "Number",validator:"number"},
             {headerName: "三材类别", headerWidth: 80, dataCode: "materialType", hAlign: "center", dataType: "String",cellType:'comboBox',editorValueType:true,options:materialComboMap},
-            {headerName: "三材系数", headerWidth: 100, dataCode: "materialCoe", hAlign: "right", dataType: "Number",decimalField:'material',validator:"number"},
+            {headerName: "三材系数", headerWidth: 100, dataCode: "materialCoe", hAlign: "right", dataType: "Number",validator:"number"},//,decimalField:'material'
             {headerName: "交货方式", headerWidth: 90, dataCode: "delivery", hAlign: "left", dataType: "String"},
             {headerName: "送达地点", headerWidth: 100, dataCode: "delivery_address", hAlign: "left", dataType: "String"},
             {headerName: "不调价", headerWidth: 55, dataCode: "is_adjust_price", dataType: "String",cellType: "checkBox"}
@@ -68,7 +68,7 @@ projectGljObject={
             {headerName: "定额价", headerWidth: 70, dataCode: "basePrice", hAlign: "right", dataType: "Number",decimalField:'glj.unitPrice',validator:"number"},
             {headerName: "市场价", headerWidth: 70, dataCode: "marketPrice", hAlign: "right", dataType: "Number",decimalField:"glj.unitPrice",validator:"number"},
             {headerName: "总消耗量", headerWidth: 100, dataCode: "quantity", hAlign: "right", dataType: "Number",decimalField:'glj.quantity'},
-            {headerName: "三材系数", headerWidth: 100, dataCode: "materialCoe", hAlign: "right", dataType: "Number",decimalField:'material',validator:"number"},
+            {headerName: "三材系数", headerWidth: 100, dataCode: "materialCoe", hAlign: "right", dataType: "Number",validator:"number"},//,decimalField:'material'
             {headerName: "三材量", headerWidth: 100, dataCode: "materialQuantity", hAlign: "right", dataType: "Number",decimalField:'glj.quantity'},
             {headerName: "三材类别", headerWidth: 80, dataCode: "materialType", hAlign: "center", dataType: "String",cellType:'comboBox',editorValueType:true,options:materialComboMap}
         ],
@@ -464,7 +464,8 @@ projectGljObject={
             bgColour:'white'
         };
         if(glj.materialCoe){
-            data.materialCoe = scMathUtil.roundToString(glj.materialCoe,m_decimal);
+            data.materialCoe = scMathUtil.roundForObj(glj.materialCoe,m_decimal);
+            //data.materialCoe = scMathUtil.roundToString(glj.materialCoe,m_decimal);
             data.materialQuantity = scMathUtil.roundForObj(glj.materialCoe * glj.quantity,q_decimal);//还要做汇总,汇总完再转成string
         }
         gljOprObj.setGLJPrice(data,glj);
@@ -537,6 +538,9 @@ projectGljObject={
         if (materialIdList.indexOf(glj.type) >= 0) {
             data.is_evaluate = glj.is_evaluate;
         }
+        if(glj.materialCoe !== null && glj.materialCoe !==undefined){
+            data.materialCoe =  scMathUtil.roundForObj(glj.materialCoe,getDecimal("material"));
+        }
         //bgColour
         if(data.basePrice == data.marketPrice){//如果定额价等于市场价时,改底色。 优先度低于有组成物时的底色
             data.bgColour = "#C4CAFB";
@@ -739,6 +743,12 @@ projectGljObject={
                     value = 0;
                 }
             }
+            if(dataCode === 'materialType' && value == null){//删除三材类别时,清空三材系数
+                extend.materialCoe = null;
+            }
+            if(dataCode == 'materialCoe'){
+                value = scMathUtil.roundForObj(value,getDecimal("material"));
+            }
             extend = Object.keys(extend).length > 0 ?  JSON.stringify(extend) : '';
             let updateData = {id: recode.id, field: dataCode, value: value, extend: extend};
             projectGLJ.pGljUpdate(updateData,callback);

+ 6 - 4
web/building_saas/main/js/views/project_view.js

@@ -520,7 +520,7 @@ var projectObj = {
         let fieldName = projectObj.mainController.setting.cols[info.col].data.field;
         if(fieldName == 'marketUnitFee'){
             if(gljOprObj.hasComposition(node.data,true)){
-                alert("当前工料机的市场价由组成物计算得出,不可直接修改。");
+                alert("当前人材机的市场价由组成物计算得出,不可直接修改。");
                 return;
             }
         }
@@ -863,7 +863,7 @@ var projectObj = {
                     }
                 },
                 "insertGLJ": {
-                    name: "插入工料机",
+                    name: "插入人材机",
                     icon: 'fa-sign-in',
                     disabled: function () {
                         var selected = project.mainTree.selected;
@@ -1262,7 +1262,6 @@ var projectObj = {
             for(let node of nodes){
                 if(node && node.serialNo()!= -1){
                     sheet.getRange(node.serialNo(), -1, 1, -1).backColor(me.getNodeColorStyle(sheet, node).backColor);
-                    //sheet.setStyle(node.serialNo(), -1, me.getNodeColorStyle(sheet, node));
                 }
             }
         });
@@ -1945,7 +1944,10 @@ function doAfterImport(resData){
         });
     }
 }
-
+//下载导入清单示例文件
+$('#uploadExample').click(function () {
+    window.location.href = '/bills/downloadExamp'
+});
 
 $(function () {
     //清空导入清单选择文件

+ 34 - 5
web/building_saas/main/js/views/std_bills_lib.js

@@ -44,7 +44,8 @@ var billsLibObj = {
         if (spread) {
             let sheet = spread.getActiveSheet();
             sheet.suspendPaint();
-            sheet.getRange(0, -1, sheet.getRowCount(), -1, GC.Spread.Sheets.SheetArea.viewport).backColor(undefined);
+            let orgColor = optionsOprObj.getOption('COLOROPTS', 'DEFAULT').backColor;
+            sheet.getRange(0, -1, sheet.getRowCount(), -1, GC.Spread.Sheets.SheetArea.viewport).backColor(orgColor);
             sheet.resumePaint();
         }
     },
@@ -186,7 +187,7 @@ var billsLibObj = {
             stdBillsTreeController.showTreeData();
             billsLibObj.setTagForHint(datas);
             showBillsRela(that.stdBillsTree.firstNode());
-
+            console.log(that.stdBillsTree.items);
             stdBillsTreeController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, showBillsRela);
             that.stdBillsSpread.unbind(GC.Spread.Sheets.Events.CellDoubleClick);
             that.stdBillsSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick, function (sender, args) {
@@ -237,9 +238,12 @@ var billsLibObj = {
         });
 
         $('#stdBillsSearch>span>button').click(function () {
+            billsLibObj.clearHighLight(billsLibObj.stdBillsSpread);
             var keyword = $('#stdBillsSearch>input').val();
-
-            if (!keyword || keyword === '') {return}
+            if (!keyword || keyword === '') {
+                $('#stdBillsSearchResult').hide();
+                return;
+            }
 
             var result = that.stdBillsTree.items.filter(function (item) {
                 var codeIs = item.data.code ? item.data.code.indexOf(keyword) !== -1 : false;
@@ -250,6 +254,11 @@ var billsLibObj = {
                 return x.serialNo() - y.serialNo();
             });
             if (result.length !== 0) {
+                //展开搜索出来的节点
+                billsLibObj.expandSearchNodes(result);
+                //设置记住展开
+                sessionStorage.setItem('stdBillsLibExpState', that.stdBillsTree.getExpState(that.stdBillsTree.items));
+
                 var sel = billsLibObj.stdBillsSpread.getActiveSheet().getSelections();
                 stdBillsTreeController.setTreeSelected(result[0]);
                 billsLibObj.stdBillsSpread.getActiveSheet().setSelection(result[0].serialNo(), sel[0].col, 1, 1);
@@ -259,7 +268,8 @@ var billsLibObj = {
                 }
 
                 $('#nextStdBills').show();
-                $('#nextStdBills').click(function () {
+                $('#nextStdBills').unbind('click');
+                $('#nextStdBills').bind('click', function () {
                     var cur = that.stdBillsTree.selected, resultIndex = result.indexOf(cur), sel = billsLibObj.stdBillsSpread.getActiveSheet().getSelections();
                     if (resultIndex === result.length - 1) {
                         stdBillsTreeController.setTreeSelected(result[0]);
@@ -277,6 +287,23 @@ var billsLibObj = {
             $('#stdBillsSearchResult').show();
         });
     },
+    expandSearchNodes: function(nodes){
+        let that = this;
+        TREE_SHEET_HELPER.massOperationSheet(billsLibObj.stdBillsSpread.getActiveSheet(), function () {
+            function expParentNode(node){
+                if(node.parent && !node.parent.expanded){
+                    node.parent.setExpanded(true);
+                    expParentNode(node.parent);
+                }
+            }
+            for(let node of nodes){
+
+                expParentNode(node);
+            }
+            TREE_SHEET_HELPER.refreshTreeNodeData(that.stdBillsTreeSetting, that.stdBillsSpread.getActiveSheet(), that.stdBillsTree.roots, true);
+            TREE_SHEET_HELPER.refreshNodesVisible(that.stdBillsTree.roots, that.stdBillsSpread.getActiveSheet(), true);
+        });
+    },
     stdBillsTreeSetting: {
         "treeCol": 0,
         "emptyRows":0,
@@ -454,4 +481,6 @@ $('#closeSearchStdBills').click(function () {
     $('#stdBillsSearchResult').hide();
     $(".main-data-side-q").height($(window).height() - $(".header").height() - $(".toolsbar").height() -  $(".tools-bar-height-q").height() - 202);
     billsLibObj.clearHighLight(billsLibObj.stdBillsSpread);
+    billsLibObj.refreshBillsSpread();
+    billsLibObj.refreshBillsRelaSpread();
 });

+ 2 - 1
web/building_saas/main/js/views/std_ration_lib.js

@@ -366,9 +366,10 @@ $('#rationSearch').click(function () {
         resultObj.append(getResultHtml(result));
         $('a', resultObj).click(function () {
             resultObj.hide();
+            $(".main-data-side-search", resultObj).height(0);
+            autoFlashHeight();
             //$(".main-data-side-d").height($(window).height() - $(".header").height() - $(".toolsbar").height() -  $(".tools-bar-height-d").height() - 202);
             rationLibObj.refreshSpread();
-            $(".main-data-side-search", resultObj).height(0);
         });
         resultObj.show();
         $(".main-data-side-search", resultObj).height($(window).height() - $(".header").height() - $(".toolsbar").height() - 64);

+ 1 - 1
web/building_saas/pm/html/project-management-Recycle.html

@@ -6,7 +6,7 @@
         <p style="text-align: center; margin-top: 30px;">正在加载数据...</p>
     </div>-->
 </div>
-<div class="poj-list" id="gcSpread">
+<div class="gc-list" id="gcSpread">
 
 </div>
 <!--弹出恢复项目-->

+ 2 - 0
web/building_saas/pm/js/pm_gc.js

@@ -584,6 +584,8 @@ function gc_init(){
         //初始选择
         let initSel = gcTreeObj.workBook.getSheet(0).getSelections()[0] ? gcTreeObj.workBook.getSheet(0).getSelections()[0] : {row: 0, rowCount: 1};
         gcTreeObj.initSelection(initSel);
+        autoFlashHeight();
+        gcTreeObj.workBook.refresh();
         $.bootstrapLoading.end();
     });
 }

+ 2 - 0
web/building_saas/pm/js/pm_newMain.js

@@ -1257,6 +1257,8 @@ function init() {
             let initSel = projTreeObj.workBook.getSheet(0).getSelections()[0] ? projTreeObj.workBook.getSheet(0).getSelections()[0] : {row: 0, rowCount: 1};
             projTreeObj.initSelection(initSel,null,projTreeObj.workBook.getActiveSheet());
             $.bootstrapLoading.end();
+            autoFlashHeight();
+            projTreeObj.workBook.refresh();
         });
     });
     engineering = engineeringList !== null && engineeringList !== undefined ? JSON.parse(engineeringList) : [];

+ 1 - 1
web/common/html/header.html

@@ -13,7 +13,7 @@
                 <!--<a class="dropdown-item" href="/complementaryRation/main">定额库编辑器</a>-->
                 <a class="dropdown-item" href="javascript:void(0);" aria-expanded="false" data-toggle="modal" data-target="#opts-set"><i class="fa fa-sliders"></i> 选项</a>
                 <a class="dropdown-item" href="javascript:void(0);" data-toggle="modal" data-target="#comple-ration">定额库编辑器</a>
-                <a class="dropdown-item" href="/complementaryGlj">工料机库编辑器</a>
+                <a class="dropdown-item" href="/complementaryGlj">人材机库编辑器</a>
             </div>
         </li>
         <li class="nav-item dropdown">