瀏覽代碼

Merge branch '1.0.0_online' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost into 1.0.0_online

zhongzewei 6 年之前
父節點
當前提交
00a46047ad

+ 9 - 8
modules/all_models/tpl_tree_node.js

@@ -28,14 +28,15 @@ let TplNodeSchema = new Schema({
 });
 
 let RptTplTreeSchema = new Schema({
-    compilationId: String,  //编办的ObjectId
-    // engineerId: Number,     //工程专业Id(参考 /modules/common/const/engineering.js)
-    userId: String,        //用户名的object_id串
-    properties: [],         //这是一个预留的属性,假定未来还会有不同的划分细节(如:招标/投标/清单 ... etc)
-    name: String,           //显示名称
-    released: Boolean,      //是否已发布
-    isDeleted: Boolean,     //删除标记
-    items: []               //TplNodeSchema entity
+    compilationId: String,      //编办的ObjectId
+    // engineerId: Number,         //工程专业Id(参考 /modules/common/const/engineering.js)
+    userId: String,             //用户名的object_id串
+    properties: [],             //这是一个预留的属性,假定未来还会有不同的划分细节(如:招标/投标/清单 ... etc)
+    name: String,               //显示名称
+    released: Boolean,          //是否已发布
+    isDeleted: Boolean,         //删除标记
+    flags: Schema.Types.Mixed,  //额外标记集合(这些标记可能会影响到前端显示,如‘计税方式’等)
+    items: []                   //TplNodeSchema entity
 });
 RptTplTreeSchema.statics.findAndModify = function (query, sort, doc, options, callback) {
     return this.collection.findAndModify(query, sort, doc, options, callback);

+ 1 - 1
modules/reports/util/rpt_construct_data_util.js

@@ -1281,7 +1281,7 @@ function ext_getPropety(propKey) {
                     if (pi === propKey.length - 1) rst.push('');
                 }
             } else {
-                if (doc.hasOwnProperty("property")) {
+                if (doc.hasOwnProperty("property") && doc["property"].hasOwnProperty(propKey)) {
                     rst.push(doc["property"][propKey]);
                 } else if (doc.hasOwnProperty(propKey)) {
                     rst.push(doc[propKey]);

+ 12 - 3
public/web/sheet/sheet_common.js

@@ -204,8 +204,16 @@ var sheetCommonObj = {
             sheet.setValue(row, col, val, ch);
         }
         this.setRowStyle(row,sheet,data[row].bgColour);
-        if(setting.autoFit==true){
-            sheet.getRange(row, -1, 1, -1, GC.Spread.Sheets.SheetArea.viewport).wordWrap(true);
+        if(setting.autoFit==true){//设置自动行高
+            if(setting.fitRow && setting.fitRow.length > 0){//如果有设置特定的某些列才需要自动行高就按设置的来,没有设置就默认所有列
+                for(let dataCode of setting.fitRow){
+                  let col =  _.findIndex(setting.header,{dataCode:dataCode})
+                  sheet.getCell(row,col).wordWrap(true);
+                }
+            }else {
+                sheet.getRange(row, -1, 1, -1, GC.Spread.Sheets.SheetArea.viewport).wordWrap(true);
+            }
+
             sheet.autoFitRow(row);
         }
     },
@@ -306,7 +314,8 @@ var sheetCommonObj = {
                 $editor = $(editorContext);
                 $editor.css("position", "fixed");
                 $editor.css("background", "white");
-                $editor.css("width", cellRect.width);
+                //$editor.css("width", cellRect.width); 2018-11-15 改成固定列宽
+                $editor.css("width", 140);
                 $editor.attr("gcUIElement", "gcEditingInput");
                 if(htmlGenerator) htmlGenerator(context,cellRect,$editor);
             }

+ 5 - 1
public/web/tree_sheet/tree_sheet_helper.js

@@ -270,9 +270,13 @@ var TREE_SHEET_HELPER = {
                 else if(tag !== undefined && tag) {
                     text = tag;
                 }
+                //这里要改成延时显示
+                TREE_SHEET_HELPER.delayShowTips(hitinfo,setting,text);
+            }else {//非造价书页面还是实时显示
+                TREE_SHEET_HELPER.showTipsDiv(text,setting,hitinfo);
             }
 
-            TREE_SHEET_HELPER.showTipsDiv(text,setting,hitinfo);
+
         };
         TipCellType.prototype.processMouseLeave = function (hitinfo) {
             TREE_SHEET_HELPER.hideTipsDiv();

+ 8 - 6
test/unit/reports/test_rpt_test_template.js

@@ -32,10 +32,12 @@ let demoPrjId = - 1;
 // let demoRptId = 361; //封1
 // let demoRptId = 279; //表04
 // let demoRptId = 261; //封3
-let demoRptId = 458; //09
+// let demoRptId = 458; //09
+// let demoRptId = 551; //05
+// let demoRptId = 626; //06
 // let demoRptId = 451; //09-1
 // let demoRptId = 452; //04
-// let demoRptId = 612; //09-3
+let demoRptId = 612; //09-3
 // let demoRptId = 530; //封2
 // let demoRptId = 386; //04
 // let demoRptId = 389; //10
@@ -53,7 +55,7 @@ let userId_HaiZhu = "5b5a66c4a3c23e000dccdd77"; //海珠user id
 // demoPrjId = 720; //QA: DW3
 //demoPrjId = 1626; //QA:
 // demoPrjId = 2260; //QA:
-demoPrjId = 4568; //QA:
+demoPrjId = 4563; //QA:
 //*/
 let userId_Dft = userId_HaiZhu;
 // let userId_Dft = "5a025c4c15074d134c2b9689";
@@ -84,10 +86,10 @@ test('测试 - 测试模板啦: ', function (t) {
         rptTplDataFacade.prepareProjectData(userId_Dft, demoPrjId, filter, function (err, msg, rawDataObj) {
             if (!err) {
                 try {
-                    // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataObject_测试模板.jsp");
+                    fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataObject_测试模板.jsp");
                     let tplData = rptDataUtil.assembleData(rawDataObj);
-                    // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataAfterCacl_测试模板.jsp");
-                    // fsUtil.writeObjToFile(tplData, "D:/GitHome/ConstructionCost/tmp/rptTplAssembledData_测试模板.jsp");
+                    fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataAfterCacl_测试模板.jsp");
+                    fsUtil.writeObjToFile(tplData, "D:/GitHome/ConstructionCost/tmp/rptTplAssembledData_测试模板.jsp");
                     //it's time to build the report!!!
                     let printCom = JpcEx.createNew();
                     rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pagesize;

+ 12 - 7
test/unit/reports/test_tpl_05.js

@@ -26,12 +26,15 @@ cfgCacheUtil.setupDftCache();
 let fsUtil = require("../../../public/fsUtil");
 
 let demoPrjId = - 1;
-let demoRptId = 384, pagesize = "A4";
+// let demoRptId = 551; //05
+let demoRptId = 626; //06
+let pagesize = "A4";
 
 // demoPrjId = 720; //QA: DW3
-demoPrjId = 3417; //QA:
+demoPrjId = 4563; //QA:
 //*/
-let userId_Leng = "59cdf14a0034a1000ba52b97"; //小冷User Id 换成_id了
+// let userId_Leng = "59cdf14a0034a1000ba52b97"; //小冷User Id 换成_id了
+let userId_Leng = "5b5a66c4a3c23e000dccdd77"; //海珠的 _id
 let userId_Dft = userId_Leng;
 /*/
  let userId_Dft = "595328da1934dc327cad08eb";
@@ -108,21 +111,23 @@ test('测试 - 模板05汇总表: ', function (t) {
 
 function buildPageData(t, rawDataObj, rptDataUtil, rptTpl) {
     try {
-        // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataObject.jsp");
+        // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataObject_汇总表.jsp");
         let tplData = rptDataUtil.assembleData(rawDataObj);
+        fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataAfterCacl_汇总表.jsp");
+        fsUtil.writeObjToFile(tplData, "D:/GitHome/ConstructionCost/tmp/rptTplAssembledData_汇总表.jsp");
         //it's time to build the report!!!
         let printCom = JpcEx.createNew();
         rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pagesize;
         let defProperties = rpt_cfg;
         let dftOption = JV.PAGING_OPTION_NORMAL;
         printCom.initialize(rptTpl);
-        // fsUtil.writeObjToFile(tplData, "D:/GitHome/ConstructionCost/tmp/rptAssembledData.jsp");
-        // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptRawDataAfterAssembled.jsp");
+        // fsUtil.writeObjToFile(tplData, "D:/GitHome/ConstructionCost/tmp/rptAssembledData_汇总表.jsp");
+        // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptRawDataAfterAssembled_汇总表.jsp");
         printCom.analyzeData(rptTpl, tplData, defProperties, dftOption);
         let maxPages = printCom.totalPages;
         let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
         if (pageRst) {
-            fsUtil.writeObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/rptPageResult_05.jsp");
+            // fsUtil.writeObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/rptPageResult_汇总表.jsp");
         } else {
             console.log("oh! no pages were created!");
         }

+ 4 - 1
web/building_saas/css/custom.css

@@ -262,4 +262,7 @@ legend.legend{
     width: 29.8%;
     float: left;
     background: #F1F1F1
-}
+}
+input.text-right{
+    text-align: right;
+}

+ 11 - 6
web/building_saas/main/html/main.html

@@ -39,6 +39,8 @@
         let userAccount = '<%- userAccount %>';
         let userID = '<%- userID %>';
         let projectReadOnly = JSON.parse('<%- projectReadOnly %>');
+//        const G_SHOW_BLOCK_LIB = true;
+        const G_SHOW_BLOCK_LIB = false;
     </script>
 </head>
 
@@ -89,7 +91,7 @@
                         </div>
                     </span>
                     <a href="javascript:void(0)" class="btn btn-light btn-sm" id="insertRation" data-toggle="tooltip" data-placement="bottom" data-original-title="插入定额"><i class="fa fa-sign-in" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" class="btn btn-light btn-sm" id="delete" data-toggle="tooltip" data-placement="bottom" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
+                    <!--2018-11-15 隐藏删除按钮   <a href="javascript:void(0)" class="btn btn-light btn-sm" id="delete" data-toggle="tooltip" data-placement="bottom" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>-->
                     <a href="javascript:void(0)" class="btn btn-light btn-sm" id="upLevel" data-toggle="tooltip" data-placement="bottom" data-original-title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
                     <a href="javascript:void(0)"  class="btn btn-light btn-sm" id="downLevel" data-toggle="tooltip" data-placement="bottom" data-original-title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
                       <a href="javascript:void(0)" class="btn btn-light btn-sm" id="upMove" data-toggle="tooltip" data-placement="bottom" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
@@ -123,12 +125,15 @@
                          <!-- <li class="nav-item">
                               <a class="nav-link px-3" href="javascript:void(0)" id = 'stdBillsTab' relaPanel="#qd">清单规则</a>
                           </li>-->
-                          <li class="nav-item">
+                          <li class="nav-item" id = "li_stdRationTab">
                               <a class="nav-link px-3" href="javascript:void(0)" id="stdRationTab" relaPanel="#de">定额库</a>
                           </li>
-<!--                          <li class="nav-item">
-                              <a class="nav-link px-3" href="javascript:void(0)" id="blockLibTab" relaPanel="#kmbk">块模板库</a>
-                          </li>-->
+                          <script>
+                              if (G_SHOW_BLOCK_LIB){
+                                  $("#li_stdRationTab").after('<li class="nav-item"> <a class="nav-link px-3" href="javascript:void(0)" ' +
+                                      'id="blockLibTab" relaPanel="#kmbk">块模板库2</a></li>');
+                              }
+                          </script>
                       </ul>
                   </div>
               </div>
@@ -455,7 +460,7 @@
                                       <div class="p-1 row">
                                           <button id="btn_block_collapse" class="btn btn-primary btn-sm" type="button">展开/折叠</button>
                                           <button id="btn_block_newFolder" class="btn btn-primary btn-sm" type="button">新建分类</button>
-                                          <button id="btn_block_newSubFolder" class="btn btn-warning btn-sm" type="button">新建子类</button>
+                                          <button id="btn_block_newSubFolder" class="btn btn-warning btn-sm" type="button">新建</button>
                                       </div>
                                   </div>
                                   <div class="top-content" style="overflow: hidden">

+ 3 - 9
web/building_saas/main/js/models/project.js

@@ -409,22 +409,16 @@ var PROJECT = {
 
         project.prototype.updateEvalproject = function (evalProject,data,callback){
             let programID = null;
-            if(evalProject ==1){
+            if(evalProject ==1){//当打勾估价项目选项后,该定额取费专业读取计算程序名称为“估价项目”的计算程序,且为只读状态
                 programID =  this.calcProgram.compiledTemplateMaps["估价项目"];
-                callback(programID)
+                if(callback) callback(programID);
             }else {//如果evalProject==0,则是去掉勾选估价项目选项,需要获取定额默认的取费专业。
                 let libID = data.from == 'cpt'?"compleRationLib":data.libID;
                 let query = {code:data.code,projectID:data.projectID,libID:libID};
                 CommonAjax.post("/ration/getDefaultProgramID",query,function (result) {
-                    if(callback){
-                        callback(result);
-                    }
+                    if(callback) callback(result);
                 })
-
-
-
             }
-
         };
 
         //判断项目是否安装工程

+ 11 - 4
web/building_saas/main/js/models/ration.js

@@ -108,13 +108,13 @@ var Ration = {
             });
             controller.sheet.getCell(selected[0].row,col).value(data[fieldName]);
         };
-        ration.prototype.getTempRationData = function (id, billsID, serialNo, rType) {
+        ration.prototype.getTempRationData = function (id, billsID, serialNo, rType,priceType) {
             let newData = {'ID': id, 'serialNo': serialNo, projectID: this.project.ID()};
             let pEngineer = projectInfoObj.projectInfo.property.projectEngineering;//量价默认使用后台设置的单位工程取费专业
             newData[project.masterField.ration] = billsID;
             newData['type'] = rType;
             if (rType == rationType.volumePrice){
-                newData['subType'] = gljType.GENERAL_MATERIAL;   // 默认的量价类型为材料
+                newData['subType'] =  priceType?priceType:gljType.GENERAL_MATERIAL;   // 如果priceType 没传,默认的量价类型为材料
             };
             if(rType == rationType.ration){//空定额暂时不输入取费专业
                // newData['programID'] = projectInfoObj.projectInfo.property.engineering;
@@ -548,7 +548,14 @@ var Ration = {
                 })
             }
         };
-        ration.prototype.addNewRation = function (itemQuery,rationType,callback=null,isEmpty=false) {
+        ration.prototype.insertVolumePrice = function(type){
+            this.addNewRation(null,rationType.volumePrice,function (newNode) {//插入人工不需要自动定位到编号列
+                projectObj.selectColAndFocus(newNode,null);
+            },true,type);
+        };
+
+
+        ration.prototype.addNewRation = function (itemQuery,rationType,callback=null,isEmpty=false,priceType) {//priceType 是量价类型
             let me = this;
             let project = projectObj.project, sheetController = projectObj.mainController;
             let engineering = projectInfoObj.projectInfo.property.engineering;
@@ -579,7 +586,7 @@ var Ration = {
             };
             if(billItemID){
                 let newID = me.getNewRationID();
-                let newData =  me.getTempRationData(newID, billItemID, serialNo, rationType);
+                let newData =  me.getTempRationData(newID, billItemID, serialNo, rationType,priceType);
                 let calQuantity =  isEmpty===true?false:optionsOprObj.getOption(optionsOprObj.optionsTypes.GENERALOPTS, 'rationQuanACToBillsQuan');
                 let brUpdate = [];
                 //更新兄弟节点的序列号

+ 39 - 23
web/building_saas/main/js/views/block_lib.js

@@ -38,14 +38,13 @@ var blockLibObj = {
         $.bootstrapLoading.start();
         let me = this;
         me.mainDatas = [
-            {ID: 1, ParentID: -1, NextSiblingID: 8, name: '我的块模板库1', type: 0},
-            {ID: 2, ParentID: 1, NextSiblingID: 3, name: '分类1', type: 1},
-            {ID: 3, ParentID: 1, NextSiblingID: -1, name: '分类2', type: 1},
-            {ID: 4, ParentID: 2, NextSiblingID: 5, name: '子类A', type: 1},
-            {ID: 5, ParentID: 2, NextSiblingID: -1, name: '子类B', type: 1},
-            {ID: 6, ParentID: 4, NextSiblingID: 7, name: '块1', type: 2},
-            {ID: 7, ParentID: 4, NextSiblingID: -1, name: '块2', type: 2},
-            {ID: 8, ParentID: -1, NextSiblingID: -1, name: '我的块模板库2', type: 0}
+            {ID: 2, ParentID: -1, NextSiblingID: 3, name: '分类2', type: 1},
+            {ID: 3, ParentID: -1, NextSiblingID: -1, name: '分类3', type: 1},
+            {ID: 6, ParentID: 2, NextSiblingID: 7, name: '块1', type: 2},
+            {ID: 7, ParentID: 2, NextSiblingID: -1, name: '块2', type: 2},
+            {ID: 52, ParentID: -1, NextSiblingID: 53, name: '分类52', type: 1},
+            {ID: 55, ParentID: -1, NextSiblingID: -1, name: '分类55', type: 1},
+            {ID: 88, ParentID: 52, NextSiblingID: -1, name: '块88', type: 2}
         ];
 
         if (me.mainSpread) {
@@ -53,6 +52,7 @@ var blockLibObj = {
             me.mainSpread = null;
         };
         me.mainSpread = SheetDataHelper.createNewSpread($('#div_block_tree')[0]);
+        // me.mainSpread = TREE_SHEET_HELPER.createNewSpread($('#div_block_tree')[0]);
         me.mainSheet = me.mainSpread.getSheet(0);
         me.mainSheet.name('blockLibSheet');
         sheetCommonObj.spreadDefaultStyle(me.mainSpread);
@@ -284,22 +284,40 @@ var blockLibObj = {
         };
         return new TreeCell();
     },
-    insert: function (insertType){    // 1 后兄弟; 2 孩子。
+    newNode: function (nodeType){     // 1 分类  2 块文件
         let tree = blockLibObj.mainTree;
+        let pID = -1, nID = -1;
         let select = tree.selected;
-        if (!select) select = tree.items[0];
-        let pID = (insertType == 1) ? select.getParentID() : select.getID();
-        let nID = (insertType == 1) ? select.getNextSiblingID() : -1;
-        let newNode = tree.insert(pID, nID);
-
-        if (!newNode.parent){
-            newNode.data.type = 0;
-            newNode.data.name = '我的块模板库';
-        }
-        else{
+        let newNode = null;
+        if (nodeType == 1){
+            if (!select) {
+                nID = -1;
+            }
+            else if (select.data.type == 1){
+                nID = select.getNextSiblingID();
+            }
+            else if (select.data.type == 2){
+                nID = select.parent.getNextSiblingID();
+            };
+            newNode = tree.insert(pID, nID);
             newNode.data.type = 1;
             newNode.data.name = '分类';
         }
+        else if (nodeType == 2) {
+            if (!select) {
+                pID = tree.items[0].getID();
+            }
+            else if (select.data.type == 1){
+                pID = select.getID();
+            }
+            else if (select.data.type == 2){
+                pID = select.getParentID();
+                nID = select.getNextSiblingID();
+            };
+            newNode = tree.insert(pID, nID);
+            newNode.data.type = 2;
+            newNode.data.name = '块文件';
+        }
 
         tree.selected = newNode;
 
@@ -327,11 +345,9 @@ $(document).ready(function(){
         }
     });
     $('#btn_block_newFolder').on('click', function (){
-        blockLibObj.insert(1);
+        blockLibObj.newNode(1);
     });
-
     $('#btn_block_newSubFolder').on('click', function (){
-        blockLibObj.insert(2);
+        blockLibObj.newNode(2);
     });
-
 });

+ 14 - 1
web/building_saas/main/js/views/main_tree_col.js

@@ -105,6 +105,19 @@ let MainTreeCol = {
             return node.data.subType != 201 && node.data.subType != 4 && node.data.subType != 5
         },
         commonUnitFee: function (node) {
+            // 2018-11-15 zhang
+            let Bills =projectObj.project.Bills;
+            if(node.sourceType == ModuleNames.bills){//针对清单、分项部分
+                // 当前属于分部分项、施工技术措施项目,综合单价只读。
+                if(Bills.isFBFX(node)||Bills.isTechMeasure(node)) return true;
+                // 不属于分部分项、施工技术措施项目的部分,如果不是叶子清单,或有基数计算/定额/量价/人材机 只读
+                if(!calcTools.isLeafBill(node)||calcTools.isCalcBaseBill(node)||node.children.length > 0)return true;
+            }
+            //当前是定额,综合单价只读。 2018-11-15
+            if(MainTreeCol.readOnly.ration(node)) return true;
+            return false;
+        },
+        commonTotalFee: function (node) {
             // 09-29 zhang
             let Bills =projectObj.project.Bills;
             // 当前属于分部分项、施工技术措施项目,综合单价只读。
@@ -116,8 +129,8 @@ let MainTreeCol = {
                 return true;
             }
             return false;
-            //return !(calcTools.isLeafBill(node) && !calcTools.isBill_DXFY(node) && !calcTools.isCalcBaseBill(node) && !calcTools.isInheritFrom(node, [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE]));
         },
+
         //根据节点、父节点类型判断是否可用计算基数
         calcBaseType: function (node) {
             function isDef(v) {

+ 49 - 11
web/building_saas/main/js/views/project_view.js

@@ -467,7 +467,13 @@ var projectObj = {
                         return
                     }
                     if (value) {
-                        if(fieldName === 'feesIndex.common.unitFee')  value = parseFloat(value).toDecimal(decimalObj.decimal("unitPrice", node));
+                        if(fieldName === 'feesIndex.common.unitFee') {
+                            value = parseFloat(value).toDecimal(decimalObj.decimal("unitPrice", node));
+                            //当前是量价/人材机,综合单价可输入,输入的值读取到市场单价,重算综合单价。
+                            if(node.sourceType == ModuleNames.ration && node.data.type != rationType.ration){
+                                fieldName = 'marketUnitFee';
+                            }
+                        }
                         if(fieldName === 'feesIndex.common.totalFee'){//修改了综合合价后,反算综合单价,然后再由计算程序算个综合合价出来
                             let unitfee = 0;
                             if(node.data.quantity){//如果工程量为0或空,综合合单直接填到综合单价
@@ -1284,7 +1290,7 @@ var projectObj = {
                     }*/
                 },
                 "insertLJ": {
-                    name: "插入量价",
+                    name: "插入量价",//插入量价不需要自动定位到编号列
                     icon: 'fa-sign-in',
                     disabled: function () {
                         // var selected = project.mainTree.selected;
@@ -1292,22 +1298,48 @@ var projectObj = {
                         return !project.Ration.canAdd(project.mainTree.selected);
                     },
                     callback: function (key, opt) {
-                        project.Ration.addNewRation(null,rationType.volumePrice,function (newNode) {//插入量价不需要自动定位到编号列
+                       /* project.Ration.addNewRation(null,rationType.volumePrice,function (newNode) {
                             projectObj.selectColAndFocus(newNode,null);
-                        },true);
-
-                       // ProjectController.addRation(project, controller, rationType.volumePrice);
+                        },true);*/
                     },
-                  /*  items:{
-                        firstCommand:{
-                            name: "插入量价",
+                    items:{
+                        insertLabour:{
+                            name: "人工",
                             icon: 'fa-sign-in',
                             callback:function(key){
-
+                                project.Ration.insertVolumePrice(gljType.LABOUR);
+                            }
+                        },
+                        insertMaterial:{
+                           name:"材料" ,
+                            icon: 'fa-sign-in',
+                            callback:function(key){
+                                project.Ration.insertVolumePrice(gljType.GENERAL_MATERIAL);
+                            }
+                        },
+                        insertMachine:{
+                            name:"机械" ,
+                            icon: 'fa-sign-in',
+                            callback:function(key){
+                                project.Ration.insertVolumePrice(gljType.GENERAL_MACHINE);
+                            }
+                        },
+                        insertMainMaterial:{
+                            name:"主材" ,
+                            icon: 'fa-sign-in',
+                            callback:function(key){
+                                project.Ration.insertVolumePrice(gljType.MAIN_MATERIAL);
+                            }
+                        },
+                        insertEquipment:{
+                            name:"设备" ,
+                            icon: 'fa-sign-in',
+                            callback:function(key){
+                                project.Ration.insertVolumePrice(gljType.EQUIPMENT);
                             }
                         }
 
-                    }*/
+                    }
                 },
                 "insertGLJ": {
                     name: "插入人材机",
@@ -1367,6 +1399,9 @@ var projectObj = {
                     icon: 'fa-calculator',
                     callback: function () {
                         project.calcProgram.calcAllNodesAndSave();
+                    },
+                    visible:function(key, opt){//2018-11-15 新需求隐藏右键“造价计算”。
+                        return false;
                     }
                 },
                 "spr4":'--------',
@@ -1458,6 +1493,9 @@ var projectObj = {
                     },
                     callback:function(){
                         MaterialController.replaceMaterial([project.mainTree.selected]);
+                    },
+                    visible: function(key, opt){//2018-11-15 暂时隐藏
+                        return false
                     }
                 }
             }

+ 16 - 0
web/building_saas/main/js/views/quantity_edit_view.js

@@ -290,4 +290,20 @@ function setCursor(elem, index) {
         range.move("character", index); //光标放到index位置
         range.select();
     }
+}
+
+
+function setSelection(elem, leftIndex, rightIndex) {
+    if (elem.selectionStart !== undefined) { //IE 9 ,10,其他浏览器
+        elem.selectionStart = leftIndex;
+        elem.selectionEnd = rightIndex;
+    } else { //IE 6,7,8
+        var range = elem.createTextRange();
+        range.move("character", -elem.value.length); //光标移到0位置。
+        //这里一定是先moveEnd再moveStart
+        //因为如果设置了左边界大于了右边界,那么浏览器会自动让右边界等于左边界。
+        range.moveEnd("character", rightIndex);
+        range.moveStart("character", leftIndex);
+        range.select();
+    }
 }

+ 8 - 10
web/building_saas/main/js/views/zmhs_view.js

@@ -15,7 +15,9 @@ let zmhs_obj = {
         view: {
             lockColumns:[0,1,2],
             rowHeaderWidth:25
-        }
+        },
+        autoFit:true,
+        fitRow:['name']
     },
     assSpread:null,
     assSheet:null,
@@ -149,12 +151,6 @@ let zmhs_obj = {
                     for(let c of coe.coes){
                         $('#'+c.coeType).val(newValue)
                     }
-                    /*$('#coe_ration').val(newValue);
-                    $('#manual').val(newValue);
-                    $('#material').val(newValue);
-                    $('#manchine').val(newValue);
-                    $('#mainM').val(newValue);
-                    $('#equipment').val(newValue);*/
                 } else {
                     $('#' + id).val(newValue);
                 }
@@ -162,7 +158,9 @@ let zmhs_obj = {
                 $('#' + id).val(coe.coes[name].amount);
             }
         }
-
+    },
+    onInputClick(ele){//点中系数单元格,则默认选中系数值
+        setSelection(ele,0,$(ele).val().length)
     },
     checkIfNeedUpdate(){
         let data = _.find(zmhs_obj.coeSheetData, function (c) {
@@ -236,8 +234,8 @@ let zmhs_obj = {
     },
     getOneRow: function (text, name, id,inputHeight) {
         var rowstr = "<tr ><td style='width: 50%'>" + text
-            + ":</td><td style='width: 50%' align='right'><input type='text' value='1' name=" + name
-            + " style='width:40px;border:0;height:"+ inputHeight+"px;' align='right' id=" + id + " onchange='zmhs_obj.onInputChange(this.id,this.name)' autocomplete='off'></td></tr>";
+            + ":</td><td style='width: 50%' align='right'><input class='text-right' type='text' value='1' name=" + name
+            + " style='width:100%;border:0;height:"+ inputHeight+"px;' align='right' id=" + id + " onchange='zmhs_obj.onInputChange(this.id,this.name)' onclick='zmhs_obj.onInputClick(this)' autocomplete='off'></td></tr>";
         return rowstr;
 
     },

+ 3 - 0
web/building_saas/report/js/rpt_main.js

@@ -62,12 +62,15 @@ let zTreeOprObj = {
     getReportTemplateTree: function() {
         let me = zTreeOprObj, params = {};
         params.engineerId = projectInfoObj.projectInfo.property.engineering;
+        // projectInfoObj.projectInfo.property.taxType === 1 //1: 一般计税 2: 简易计税
         CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
             let private_remove_hide_item = function (items) {
                 if (items && items.length > 0) {
                     for (let i = items.length - 1; i >= 0; i--) {
                         if (!(items[i].released) && items[i].nodeType === 2) {
                             items.splice(i, 1);
+                        } else if(items[i].hasOwnProperty('flags') && items[i].flags['taxType'] == projectInfoObj.projectInfo.property.taxType ) {
+                            items.splice(i, 1);
                         } else {
                             if (items[i].items && items[i].items.length > 0) {
                                 private_remove_hide_item(items[i].items);