zhongzewei 6 years ago
parent
commit
78fa7d1c27

+ 1 - 1
modules/complementary_ration_lib/models/compleRationModel.js

@@ -172,7 +172,7 @@ class CompleRatoinDao {
                          glj = await complementaryGljModel.findOne({uesrId: userId, ID: rationGlj.gljId});
                     }
                     if(isDef(glj)){
-                        hintsArr.push(` ${glj.code} ${glj.name} ${glj.unit} ${rationGlj.consumeAmt}`);
+                        hintsArr.push(` ${glj.code} ${glj.name}${glj.specs ? ' ' + glj.specs : ''} ${glj.unit} ${rationGlj.consumeAmt}`);
                     }
                 }
                 hintsArr.push(`基价 元 ${ration.basePrice}`);

+ 6 - 0
public/web/sheet/sheet_data_helper.js

@@ -168,6 +168,7 @@ var SheetDataHelper = {
                     }
                     this._fixedTipElement = div;
                 }
+                $(this._fixedTipElement).width('');
                 $(this._fixedTipElement).html(text);
                 if (!this._toolTipElement) {
                     let div = $('#autoTip')[0];
@@ -184,6 +185,7 @@ var SheetDataHelper = {
                         document.body.insertBefore(div, null);
                     }
                     this._toolTipElement = div;
+                    $(this._toolTipElement).width('');
                     //实时读取位置信息
                     if(hitinfo.sheet && hitinfo.sheet.getParent().qo){
                         setting.pos = SheetDataHelper.getObjPos(hitinfo.sheet.getParent().qo);
@@ -193,6 +195,10 @@ var SheetDataHelper = {
                     if($(hitinfo.sheet.getParent().qo).attr('id') === 'stdSectionRations'){
                         let divWidth = $(this._fixedTipElement).width(),
                             divHeight = $(this._fixedTipElement).height();
+                        if(divWidth > 600){
+                            divWidth = 590;
+                           $(this._toolTipElement).width(divWidth);
+                        }
                         $(this._toolTipElement).css("top", setting.pos.y  + hitinfo.y - divHeight).css("left", setting.pos.x - divWidth);
                     }
                     else{

+ 41 - 19
web/building_saas/css/main.css

@@ -175,9 +175,10 @@ a{
 .bottom-tools {
     height: 30px;
     line-height: 30px;
-    background:#F1F1F1;
-    bottom:30px;
-    left:2px;
+    background:#fff;
+    bottom:20px;
+    left:22px;
+    z-index: 999
 }
 .side-tabs .nav-tabs .nav-item {
     z-index: 999
@@ -369,7 +370,10 @@ a{
     border-bottom:1px solid #ddd
 }
 .navbar-crumb span{
-    width: 200px
+    float:left;
+}
+.navbar-crumb span.text-truncate{
+    max-width: 200px;
 }
 .dropdown-item{
     color:#007bff
@@ -395,22 +399,34 @@ a{
 .custom-file-input:lang(zh) ~ .custom-file-label::after {
     content: "浏览";
 }
-/*.popover{position:absolute;
-    top:0;left:0;
-    z-index:1060;
-    display:block;
-    max-width:276px;
-    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;
-    background-color:black;
-    background-clip:padding-box;
-    border:1px solid black;
-    border-radius:.3rem}*/
 
-/*
-.arrow{
-    background-color:black;
+.message-box {
+    position:absolute;
+    background:#000;
+    padding:8px 10px;
+    line-height: 18px;
+    border-radius:4px;
+    text-align:center;
+    box-shadow:2px 2px 6px #ccc;
+    color:#fff;
+}
+.triangle-border {
+    position:absolute;
+    left:10px;
+    overflow:hidden;
+    width:0;
+    height:0;
+    border-width:6px;
+    border-style:solid dashed dashed dashed;
+}
+.tb-border {
+    bottom:-12px;
+    border-color:#000 transparent transparent transparent;
+}
+.tb-background {
+    bottom:-11px;
+    border-color:#000 transparent transparent transparent;
 }
-*/
 /*快捷切换单位工程*/
 .navbar-crumb{
     position: relative;
@@ -438,10 +454,16 @@ a{
     color: #16181b;
     background-color: #f7f7f9;
 }
-
 .navbar-crumb .f-nav li .s-nav{
     display: none
 }
 .navbar-crumb .f-nav li.focus .s-nav{
     display: block
+}
+.bottom-tools {
+    height: 30px;
+    line-height: 30px;
+    background:#F1F1F1;
+    bottom:30px;
+    left:2px;
 }

+ 3 - 3
web/building_saas/main/html/main.html

@@ -420,9 +420,9 @@
                                   </div>
                                   <div class="resize" id="qdResize" style="background: #F1F1F1"></div>
                                   <div class="bottom-content">
-                                      <div class="row" id="stdBillsJobTab">
-                                          <div class="col-lg-6 p-0" id="stdBillsJobs"></div>
-                                          <div class="col-lg-6 p-0" id="stdBillsFeatures"></div>
+                                      <div class="p-0" id="stdBillsJobTab">
+                                          <div class="p-0" style="width: 50%; float: left" id="stdBillsJobs"></div>
+                                          <div class="p-0" style="width: 50%; float: left" id="stdBillsFeatures"></div>
                                       </div>
                                       <div class="row" id="stdBillsRemarkTab">
                                           <div class="col-lg-12 p-0">

+ 4 - 0
web/building_saas/main/js/models/calc_base.js

@@ -335,8 +335,12 @@ let cbTools = {
                 //基数是跟清单直接关联的
                 if(bases[i]['type'] === 'base' && cbTools.isDef(calcBase.baseFigures[bases[i]['value']])){
                     let figureMultiRef= calcBase.baseFigures[bases[i]['value']]['multiRef'];
+                    let cycleCalcRef = calcBase.baseFigures[bases[i]['value']]['cycleCalcRef'];
                     //重构后:
                     if(cbTools.isDef(figureMultiRef)){
+                        if(cbTools.isDef(cycleCalcRef)){
+                            figureMultiRef = cycleCalcRef;
+                        }
                         for(let flag of figureMultiRef){
                             let bills = cbTools.findBill(flag);
                             if(cbTools.isDef(bills)){

+ 1 - 0
web/building_saas/main/js/views/importBills.js

@@ -389,6 +389,7 @@ const importBills = (function(){
                     programID: null,
                     unit: rData[colMapping.unit] && rData[colMapping.unit]['value'] ? _deESC(rData[colMapping.unit]['value']) : '',
                     quantity: rData[colMapping.quantity] && rData[colMapping.quantity]['value'] ? _deESC(rData[colMapping.quantity]['value']) : '',
+                    quantityEXP: rData[colMapping.quantity] && rData[colMapping.quantity]['value'] ? _deESC(rData[colMapping.quantity]['value']) : '',
                     //安全文明
                     flags: flag === fixedFlag.CONSTRUCTION_ORGANIZATION && (rData[colMapping.name] && (rData[colMapping.name]['value'] === '安全文明施工专项费用' || rData[colMapping.name]['value'] === '安全文明施工费')) ?
                         [{fieldName: 'fixed', flag: fixedFlag.SAFETY_CONSTRUCTION}] : [],

+ 2 - 0
web/building_saas/main/js/views/std_bills_lib.js

@@ -437,6 +437,7 @@ var billsLibObj = {
     jobsSetting: {
         "emptyRows":0,
         "headRows":1,
+        "rowHeaderWidth": 15,
         "headRowHeight":[25],
         "defaultRowHeight": 21,
         "cols":[{
@@ -461,6 +462,7 @@ var billsLibObj = {
     featuresSetting: {
         "emptyRows":0,
         "headRows":1,
+        "rowHeaderWidth": 15,
         "headRowHeight":[25],
         "defaultRowHeight": 21,
         "cols":[{

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

@@ -9,6 +9,7 @@ var rationLibObj = {
     doAfterLoadGetRations: null, //获取章节树下定额后回调
     rationChapterSpread: null,
     sectionRationsSpread: null,
+    resultSpread: null,
     rationChapterTreeController: null,
     refreshSettingForHint: function () {
         TREE_SHEET_HELPER.initSetting($('#stdSectionRations')[0], rationLibObj.sectionRationsSetting);
@@ -35,6 +36,9 @@ var rationLibObj = {
         if (this.sectionRationsSpread) {
             this.sectionRationsSpread.refresh();
         }
+        if(this.resultSpread){
+            this.resultSpread.refresh();
+        }
     },
     loadStdRationLibs: function () {
         let select = $('#stdRationLibSelect');
@@ -450,8 +454,9 @@ $('#rationSearch').click(function () {
         return html.join('');
     };
     var showResult = function (result) {
-        var resultSpread = SheetDataHelper.createNewSpread($('.main-data-side-search')[0]);
-
+        let resultSpread = SheetDataHelper.createNewSpread($('.main-data-side-search')[0]);
+        rationLibObj.resultSpread = resultSpread;
+        rationLibObj.setTagForHint(datas);
         SheetDataHelper.loadSheetHeader(rationLibObj.sectionRationsSetting, resultSpread.getActiveSheet());
         SheetDataHelper.loadSheetData(rationLibObj.sectionRationsSetting, resultSpread.getActiveSheet(), result);
 

+ 133 - 5
web/building_saas/pm/html/project-management.html

@@ -250,7 +250,7 @@
     </div>
 </div>
 <!--弹出新建单位工程-->
-<div class="modal fade" id="add-tender-dialog" data-backdrop="static">
+<!--<div class="modal fade" id="add-tender-dialog" data-backdrop="static">
     <div class="modal-dialog" role="document">
         <div class="modal-content">
             <div class="modal-header">
@@ -310,10 +310,10 @@
                                 <input name="valuation_type" checked id="radioBill" value="bill" type="radio" class="custom-control-input">
                                 <label class="custom-control-label" for="radioBill">清单计价</label>
                             </label>
-                          <!--  <label class="custom-control custom-radio" style="margin-left: 5px;">
+                          &lt;!&ndash;  <label class="custom-control custom-radio" style="margin-left: 5px;">
                                 <input name="valuation_type" id="radioRation" value="ration" type="radio" class="custom-control-input">
                                 <label class="custom-control-label" for="radioRation">定额计价</label>
-                            </label>-->
+                            </label>&ndash;&gt;
                         </div>
                     </div>
                     <div style="margin-top: 15px;" class="input-group">
@@ -334,8 +334,8 @@
                     <div style="margin-top: 15px;" class="input-group" id="taxType_div">
                         <label style="margin-top: 8px;">计税方式</label>
                         <select style="margin-left: 5px; border-radius: .25rem;" class="form-control" id="taxType">
-                            <!--<option value="1">一般计税</option>
-                            <option value="2">简易计税</option>-->
+                            &lt;!&ndash;<option value="1">一般计税</option>
+                            <option value="2">简易计税</option>&ndash;&gt;
                         </select>
                     </div>
                     <div style="margin-top: 15px;" class="input-group">
@@ -352,6 +352,134 @@
             </div>
         </div>
     </div>
+</div>-->
+<div class="modal fade" id="add-tender-dialog" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">新建 <i class="fa fa-sticky-note-o"></i> 单位工程</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <form>
+                    <div class="form-group row">
+                        <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">建设项目</label>
+                        <div class="col">
+                            <div class="input-group input-group-sm">
+                                <input type="text" class="form-control" aria-label="Text input with dropdown button" id="poj-name" autocomplete="off">
+                                <div class="input-group-append">
+                                    <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button>
+                                    <div class="dropdown-menu dropdown-menu-right w-100" id="poj-name-list">
+                                        <a class="dropdown-item" href="#">Action</a>
+                                        <a class="dropdown-item" href="#">Another action</a>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <span class="form-text text-info" id="poj-name-info" style="display: none;">新建 “汽车生产车间5”</span>
+                    <div class="form-group row">
+                        <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">单项工程</label>
+                        <div class="col">
+                            <div class="input-group input-group-sm">
+                                <input type="text" class="form-control" aria-label="Text input with dropdown button" id="eng-name" autocomplete="off">
+                                <div class="input-group-append">
+                                    <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button>
+                                    <div class="dropdown-menu dropdown-menu-right w-100" id="eng-name-list">
+                                        <a class="dropdown-item" href="#">Action</a>
+                                        <a class="dropdown-item" href="#">Another action</a>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <span class="form-text text-info" id="eng-name-info" style="display: none;">新建 “左2号生产车间2”</span>
+                    <div class="form-group row">
+                        <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">单位工程</label>
+                        <div class="col">
+                            <input type="text" class="form-control form-control-sm" placeholder="输入单位工程名称" id="tender-name" autocomplete="off">
+                        </div>
+                    </div>
+                    <span class="form-text text-danger" id="tender-name-info" style="display: none;">已存在 “建筑工程1”</span>
+                    <div class="form-group row">
+                        <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">单价文件</label>
+                        <div class="col">
+                            <select class="custom-select  custom-select-sm" id="unit-price">
+                                <option value="">新建单价文件</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">费率文件</label>
+                        <div class="col">
+                            <select class="custom-select  custom-select-sm" id="tender-fee-rate">
+                                <option value="">新建费率文件</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">计价方式</label>
+                        <div class="col">
+                            <div class="custom-control custom-radio custom-control-inline">
+                                <input type="radio" value="bill" checked id="radioBill" name="valuation_type" class="custom-control-input">
+                                <label class="custom-control-label" for="radioBill">清单计价</label>
+                            </div>
+                           <!-- <div class="custom-control custom-radio custom-control-inline">
+                                <input type="radio" value="ration" id="radioRation" name="valuation_type" class="custom-control-input">
+                                <label class="custom-control-label" for="radioRation">定额计价</label>
+                            </div>-->
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">计价规则</label>
+                        <div class="col">
+                            <select class="custom-select custom-select-sm" id="valuation">
+                            </select>
+                        </div>
+                    </div>
+                    <span class="form-text text-danger" id="valuation-info" style="display: none;">请选择计价规则</span>
+                    <div class="form-group row">
+                        <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">工程专业</label>
+                        <div class="col">
+                            <select class="custom-select custom-select-sm" id="tender-engineering">
+                            </select>
+                        </div>
+                    </div>
+                    <span class="form-text text-danger" id="engineering-info" style="display: none;">请选择工程专业</span>
+                    <div class="form-group row">
+                        <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">费用标准</label>
+                        <div class="col">
+                            <select class="custom-select custom-sm" id="tender-feeStandard"></select>
+                        </div>
+                    </div>
+                    <span class="form-text text-danger" id="feeStandard-info" style="display: none;">请选择费用标准</span>
+                    <div class="form-group row" id="taxType_div">
+                        <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">计税方式</label>
+                        <div class="col">
+                            <select class="custom-select  custom-select-sm" id="taxType">
+                                &lt;!&ndash;<option value="1">一般计税</option>
+                                <option value="2">简易计税</option>&ndash;&gt;
+                            </select>
+                        </div>
+                    </div>
+                    <div class="form-group row">
+                        <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">计算程序</label>
+                        <div class="col">
+                            <select class="custom-select  custom-select-sm" id="tender-calcProgram">
+                            </select>
+                        </div>
+                    </div>
+                    <span class="form-text text-danger" id="calcProgram-info" style="display: none;">请选择计算程序</span>
+                </form>
+            </div>
+            <div class="modal-footer">
+                <a href="javascript:void(0);" class="btn btn-primary" id="add-tender-confirm">确定</a>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+            </div>
+        </div>
+    </div>
 </div>
 <!--弹出新建文件夹-->
 <div class="modal fade" id="add-folder-dialog" data-backdrop="static">

+ 29 - 5
web/building_saas/pm/js/pm_newMain.js

@@ -1247,7 +1247,7 @@ $(document).ready(function() {
                 }
                 return null;
             }
-            let matchOpt = getProjOpt($('#poj-name-list').find('button'));
+            let matchOpt = getProjOpt($('#poj-name-list').find('a'));
             if(matchOpt){
                 matchOpt.click();
             }
@@ -2164,7 +2164,16 @@ function setProjOptions(projs, selected){
         setFileOptions(firstProj.data.ID);
         setEngOptions(firstProj.data.ID);
         for(let i = 0, len = projs.length; i < len; i++){
-            let proj = $("<button>").val(projs[i].data.ID).text(projs[i].data.name);
+            let $proj = $("<a>").val(projs[i].data.ID).text(projs[i].data.name);
+            $proj.addClass("dropdown-item");
+            $proj.attr("href", "javascript:void(0);");
+            $proj.click(function () {
+                $("#poj-name").val(projs[i].data.name);
+                setFileOptions(projs[i].data.ID);
+                setEngOptions(projs[i].data.ID);
+                $('#poj-name-info').hide();
+            });
+            /*let proj = $("<button>").val(projs[i].data.ID).text(projs[i].data.name);
             proj.addClass("dropdown-item");
             proj.attr("type", "button");
             proj.click(function () {
@@ -2172,8 +2181,8 @@ function setProjOptions(projs, selected){
                 setFileOptions(projs[i].data.ID);
                 setEngOptions(projs[i].data.ID);
                 $('#poj-name-info').hide();
-            });
-            $("#poj-name-list").append(proj);
+            });*/
+            $("#poj-name-list").append($proj);
         }
     }
     else {
@@ -2209,6 +2218,21 @@ function setEngOptions(projID){
         if(engineerings.length > 0){
             $("#eng-name").val(engineerings[0].data.name);
             for(let i = 0, len = engineerings.length; i < len; i++){
+                //let eng = $("<button>").val(engineerings[i].data.ID).text(engineerings[i].data.name);
+                let $eng = $('<a>').val(engineerings[i].data.ID).text(engineerings[i].data.name);
+                $eng.prop('href', 'javascript:void(0);');
+                $eng.addClass("dropdown-item");
+                //eng.attr("type", "button");
+                $eng.click(function () {
+                    $("#eng-name").val(engineerings[i].data.name);
+                    $('#eng-name-info').hide();
+                });
+                $("#eng-name-list").append($eng);
+            }
+        }
+        /*if(engineerings.length > 0){
+            $("#eng-name").val(engineerings[0].data.name);
+            for(let i = 0, len = engineerings.length; i < len; i++){
                 let eng = $("<button>").val(engineerings[i].data.ID).text(engineerings[i].data.name);
                 eng.addClass("dropdown-item");
                 eng.attr("type", "button");
@@ -2218,7 +2242,7 @@ function setEngOptions(projID){
                 });
                 $("#eng-name-list").append(eng);
             }
-        }
+        }*/
     }
 }