Browse Source

新建单位工程下一步

zhongzewei 7 years atrás
parent
commit
858fe518a1

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

@@ -31,7 +31,7 @@
         </div>
         <div class="main-content col p-0" id="project-glj-main" style="overflow: hidden;">
             <div class="top-content" id="projectGljTop" style="overflow: hidden">
-                <div class="main-data-top" style="width: 100% " id="project_glj_sheet">
+                <div class="main-data-top" style="width: 100%; overflow: hidden" id="project_glj_sheet">
                 </div>
             </div>
             <div class="resize-y" id="projectGljResize"></div>

+ 0 - 1
web/building_saas/main/js/controllers/project_controller.js

@@ -179,7 +179,6 @@ ProjectController = {
     },
 
     addRation: function (project, sheetController, rationType, std) {
-        debugger;
         if (!project || !sheetController) { return; }
 
         let selected = project.mainTree.selected, newSource = null, newNode = null;

+ 45 - 23
web/building_saas/main/js/models/calc_base.js

@@ -1385,27 +1385,10 @@ let cbAnalyzer = {
                             billsIDs.push(bills.ID);
                         }
                     }
-                }
-              /*  if(figure.value === '税前工程造价'){
-                    //税前工程造价算法在措施项目已排除自身,税前工程造价与措施项目无会造成循环的引用关系
-                    let subEngineering = cbTools.findBill(calcBase.fixedFlag.SUB_ENGINERRING),
-                        other = cbTools.findBill(calcBase.fixedFlag.OTHER),
-                        charge = cbTools.findBill(calcBase.fixedFlag.CHARGE);
-                    if(subEngineering){
-                        billsIDs.push(subEngineering.ID);
-                    }
-                    if(other){
-                        billsIDs.push(other.ID);
-                    }
-                    if(charge){
-                        billsIDs.push(charge.ID);
-                    }
-                }*/
-                else {
+                } else {
                     billsIDs = cbTools.isDef(baseFigures[figure.value]['fixedBill']) ? [baseFigures[figure.value]['fixedBill']['bill']['ID']] : [];
                 }
-            }
-            else if(figure.type === 'id'){
+            } else if(figure.type === 'id'){
                 let node = cbTools.getNodeByID(figure.value);
                 billsIDs = cbTools.isDef(node) ? [node.data.ID] : [];
             }
@@ -1427,6 +1410,9 @@ let cbAnalyzer = {
         }
         function isCycle(billIDs){
             stack = Array.from(new Set(stack.concat(billIDs)));
+            /*if (checkStack(stack, sIDs)) {
+                return true;
+            }*/
             for(let i = 0, len = billIDs.length; i < len; i++){
                 let block = cbTools.getStackBlock(billIDs[i]);
                 if(block.length > 0){
@@ -1513,9 +1499,9 @@ let cbParser = {
         let fidArr = exp.match(fidRex);
         return cbTools.isDef(fidArr) ? fidArr : [];
     },
-    //获取表达式中的中文式,没有{}需求时
+    //获取表达式中的中文式
     getCN: function(expr){
-        let rst = [];
+       /* let rst = [];
         let cnRex = /[^\u4e00-\u9fa5]/;
         let temp = expr.split(cnRex);
         //暂估材料费特殊处理:CN(CN)
@@ -1535,7 +1521,11 @@ let cbParser = {
                 rst.push(temp[i]);
             }
         }
-        return rst;
+        return rst;*/
+        let cnRex = /[\u4e00-\u9fa5]{1,}\({0,}[\u4e00-\u9fa5]{0,}\){0,}[\u4e00-\u9fa5]{0,}/g;
+        return _.filter(expr.match(cnRex), function (data) {
+            return data
+        });
     },
     //获取表达式中的基数
     getFigure: function(expr){
@@ -1629,7 +1619,7 @@ let cbParser = {
     },
     //将表达式转换为可编译的表达式
     toCompileExpr: function(v){
-        if(v === ''){
+        /*if(v === ''){
             return '$CBC.base(\'NONE\')';
         }
         //基数
@@ -1670,6 +1660,38 @@ let cbParser = {
             fExps[i].compileExp = '$CBC.ref(\'' + fExps[i].orgExp + '\')';
             v = v.replace(new RegExp(fExps[i].orgExp, 'g'), fExps[i].compileExp);
         }
+        return v;*/
+        if(v === ''){
+            return '$CBC.base(\'NONE\')';
+        }
+        //基数
+        let strs = _.uniq(this.getFigure(v));
+        let exps = [];
+        for(let i = 0, len = strs.length; i < len; i++){
+            let exp = Object.create(null);
+            exp.orgExp = `{${strs[i]}}`;
+            exps.push(exp);
+        }
+        for(let i = 0, len = exps.length;i < len; i++){
+            exps[i].compileExp = '$CBC.base(\'' + exps[i].orgExp + '\')';
+            let regStr = exps[i].orgExp.replace(/\(/g, '\\\(');
+            regStr = regStr.replace(/\)/g, '\\\)');
+            v = v.replace(new RegExp(regStr, 'g'), exps[i].compileExp);
+        }
+        //去{}
+        v = v.replace(/[{, },]/g, '');
+        //行引用
+        let fidArr = this.getFIDArr(v);
+        let fExps = [];
+        for(let i = 0, len = fidArr.length; i < len; i++){
+            let fExp = Object.create(null);
+            fExp.orgExp = fidArr[i];
+            fExps.push(fExp);
+        }
+        for(let i = 0, len = fExps.length; i < len; i++){
+            fExps[i].compileExp = '$CBC.ref(\'' + fExps[i].orgExp + '\')';
+            v = v.replace(new RegExp(fExps[i].orgExp, 'g'), fExps[i].compileExp);
+        }
         return v;
     }
 };

+ 2 - 40
web/building_saas/main/js/views/calc_base_view.js

@@ -390,45 +390,6 @@ let calcBaseView = {
                 sheetArea: context.sheetArea
             };
         };
-        /*CalcBaseCellType.prototype.processMouseDown = function (hitinfo) {
-            let me=calcBaseView;
-            me.pmLeave = false;
-            if(me.editingCell==null){
-                var showSelectBtn = true;
-                if(hitinfo.sheet.name()!='calc_detail'){
-                    showSelectBtn=me.ifEdit(type, hitinfo.row);
-                }
-                if(showSelectBtn){
-                    me.editingCell={
-                        row:hitinfo.row,
-                        col:hitinfo.col
-                    }
-                    hitinfo.sheet.invalidateLayout();
-                    hitinfo.sheet.repaint();
-                }
-            }else if(hitinfo.row==me.editingCell.row){
-                var offset=hitinfo.cellRect.x+hitinfo.cellRect.width-6;
-                var imageMagin=3;
-                var imageHeight = hitinfo.cellRect.height-2*imageMagin;
-                var imageWidth = hitinfo.cellRect.width*2/7;
-                if(hitinfo.x<offset&&hitinfo.x>offset-imageWidth){
-                    if(!projectReadOnly && me.ifEdit(type, hitinfo.row)){
-                        calcBaseView.confirmBtn.attr('toggle', 'calcBase');
-                        changeCalcBaseFeeRate('calcBase');
-                        $('#tabCalcBase').tab('show');
-                        calcBaseView.initCalctor(type);
-                    }
-                }
-            }
-        };
-        CalcBaseCellType.prototype.processMouseLeave = function (hitinfo) {
-            if(!calcBaseView.pmLeave){
-                calcBaseView.editingCell=null;
-                hitinfo.sheet.invalidateLayout();
-                hitinfo.sheet.repaint();
-                calcBaseView.pmLeave = true;
-            }
-        };*/
         CalcBaseCellType.prototype.processMouseDown = function (hitinfo) {
             let me = calcBaseView;
             if(me.editingCell && hitinfo.row==me.editingCell.row){
@@ -440,7 +401,8 @@ let calcBaseView = {
                     if(!projectReadOnly && me.ifEdit(type, hitinfo.row)){
                         hitinfo.sheet.setActiveCell(hitinfo.row, hitinfo.col);
                         if(hitinfo.sheet.getParent() === projectObj.mainSpread){
-                            projectObj.project.mainTree.selected = projectObj.project.mainTree.items[hitinfo.row] ? projectObj.project.mainTree.items[hitinfo.row] : null;
+                            let node = projectObj.project.mainTree.items[hitinfo.row] ? projectObj.project.mainTree.items[hitinfo.row] : null;
+                            projectObj.mainController.setTreeSelected(node);
                         }
                         calcBaseView.confirmBtn.attr('toggle', 'calcBase');
                         changeCalcBaseFeeRate('calcBase');

+ 3 - 42
web/building_saas/main/js/views/project_view.js

@@ -1970,46 +1970,6 @@ var projectObj = {
                 sheetArea: context.sheetArea
             };
         };
-        /*CommonTotalFeeCellType.prototype.processMouseDown = function (hitinfo) {
-            let me=calcBaseView;
-            me.pmLeave = false;
-            if(me.editingCell==null){
-                var showSelectBtn = true;
-                if(hitinfo.sheet.name()!='calc_detail'){
-                    showSelectBtn=me.ifEdit(type, hitinfo.row);
-                }
-                if(showSelectBtn){
-                    me.editingCell={
-                        row:hitinfo.row,
-                        col:hitinfo.col
-                    }
-                    hitinfo.sheet.invalidateLayout();
-                    hitinfo.sheet.repaint();
-                }
-            }else if(hitinfo.row==me.editingCell.row){
-                var offset=hitinfo.cellRect.x+hitinfo.cellRect.width-6;
-                var imageMagin=3;
-                var imageHeight = hitinfo.cellRect.height-2*imageMagin;
-                var imageWidth = hitinfo.cellRect.width*2/7;
-                if(hitinfo.x<offset&&hitinfo.x>offset-imageWidth){
-                    if(!projectReadOnly && me.ifEdit(type, hitinfo.row)){
-                        calcBaseView.confirmBtn.attr('toggle', 'commonTotalFee');
-                        changeCalcBaseFeeRate('commonTotalFee');
-                        $('#tabCalcBase').tab('show');
-                        calcBaseView.initCalctor(type);
-                        feeRateObject.showSelectModal(hitinfo);
-                    }
-                }
-            }
-        };
-        CommonTotalFeeCellType.prototype.processMouseLeave = function (hitinfo) {
-            if(!calcBaseView.pmLeave){
-                calcBaseView.editingCell=null;
-                hitinfo.sheet.invalidateLayout();
-                hitinfo.sheet.repaint();
-                calcBaseView.pmLeave = true;
-            }
-        };*/
         CommonTotalFeeCellType.prototype.processMouseDown = function (hitinfo) {
             let me = calcBaseView;
             if(me.editingCell && hitinfo.row==me.editingCell.row){
@@ -2020,9 +1980,10 @@ var projectObj = {
                 if(hitinfo.x<offset&&hitinfo.x>offset-imageWidth){
                     if(!projectReadOnly && me.ifEdit(type, hitinfo.row)){
                         if(hitinfo.sheet.getParent() === projectObj.mainSpread){
-                            projectObj.project.mainTree.selected = projectObj.project.mainTree.items[hitinfo.row] ? projectObj.project.mainTree.items[hitinfo.row] : null;
+                            let node = projectObj.project.mainTree.items[hitinfo.row] ? projectObj.project.mainTree.items[hitinfo.row] : null;
+                            projectObj.mainController.setTreeSelected(node);
                         }
-                        hitinfo.sheet.setActiveCell(hitinfo.row, hitinfo.col);
+                        //hitinfo.sheet.setActiveCell(hitinfo.row, hitinfo.col);
                         calcBaseView.confirmBtn.attr('toggle', 'commonTotalFee');
                         changeCalcBaseFeeRate('commonTotalFee');
                         $('#tabCalcBase').tab('show');

+ 8 - 107
web/building_saas/pm/html/project-management.html

@@ -268,120 +268,17 @@
     </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>
-                        <div class="input-group">
-                            <label style="margin-top: 8px;">建设项目</label>
-                            <input style="margin-left: 5px; border-radius: .25rem;" type="text" class="form-control" placeholder="输入建设项目名称" id="poj-name" autocomplete="off">
-                              <span class="input-group-btn">
-                                <button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown"></button>
-                                <div class="dropdown-menu dropdown-menu-right" style="width:468px" id="poj-name-list">
-                                    <button class="dropdown-item" type="button">汽车生产车间1</button>
-                                    <button class="dropdown-item" type="button">汽车生产车间2</button>
-                                    <button class="dropdown-item" type="button">汽车生产车间3</button>
-                                </div>
-                              </span>
-                        </div>
-                    </div>
-                    <span class="form-text text-info" id="poj-name-info" style="display: none;">新建 “汽车生产车间5”</span>
-                    <div style="margin-top: 15px;">
-                        <div class="input-group">
-                            <label style="margin-top: 8px;">单项工程</label>
-                            <input style="margin-left: 5px; border-radius: .25rem;" type="text" class="form-control" placeholder="输入单项工程名称" id="eng-name" autocomplete="off">
-                              <span class="input-group-btn">
-                                <button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown"></button>
-                                <div class="dropdown-menu dropdown-menu-right" style="width:468px" id="eng-name-list">
-                                    <button class="dropdown-item" type="button">左3号生产车间</button>
-                                    <button class="dropdown-item" type="button">左4号生产车间</button>
-                                </div>                              </span>
-                        </div>
-                    </div>
-                    <span class="form-text text-info" id="eng-name-info" style="display: none;">新建 “左2号生产车间2”</span>
-
-                    <div style="margin-top: 15px;" class="input-group">
-                        <label style="margin-top: 8px;">单位工程</label>
-                        <input style="margin-left: 5px; border-radius: .25rem;" type="text" class="form-control" placeholder="输入单位工程名称" id="tender-name" autocomplete="off">
-                    </div>
-                    <span class="form-text text-danger" id="tender-name-info" style="display: none;">已存在 “建筑工程1”</span>
-                    <div style="margin-top: 15px;" class="input-group">
-                        <label style="margin-top: 8px;">单价文件</label>
-                        <select style="margin-left: 5px; border-radius: .25rem;" class="form-control" id="unit-price"><option value="">新建单价文件</option></select>
-                    </div>
-                    <div style="margin-top: 15px;" class="input-group">
-                        <label style="margin-top: 8px;">费率文件</label>
-                        <select style="margin-left: 5px; border-radius: .25rem;" class="form-control" id="tender-fee-rate"><option value="">新建费率文件</option></select>
-                    </div>
-                    <div style="margin-top: 15px;" class="input-group">
-                        <label>计价方式</label>
-                        <div style="margin-left: 5px; border-radius: .25rem;"  class="row">
-                            <label class="custom-control custom-radio" style="margin-left: 20px;">
-                                <input name="valuation_type" checked id="radioBill" value="bill" type="radio" class="custom-control-input">
-                                <label class="custom-control-label" for="radioBill">清单计价</label>
-                            </label>
-                          &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>&ndash;&gt;
-                        </div>
-                    </div>
-                    <div style="margin-top: 15px;" class="input-group">
-                        <label style="margin-top: 8px;">计价规则</label>
-                        <select style="margin-left: 5px; border-radius: .25rem;" class="form-control" id="valuation"></select>
-                    </div>
-                    <span class="form-text text-danger" id="valuation-info" style="display: none;">请选择计价规则</span>
-                    <div style="margin-top: 15px;" class="input-group">
-                        <label style="margin-top: 8px;">工程专业</label>
-                        <select style="margin-left: 5px; border-radius: .25rem;" class="form-control" id="tender-engineering"></select>
-                    </div>
-                    <span class="form-text text-danger" id="engineering-info" style="display: none;">请选择工程专业</span>
-                    <div style="margin-top: 15px;" class="input-group">
-                        <label style="margin-top: 8px;">费用标准</label>
-                        <select style="margin-left: 5px; border-radius: .25rem;" class="form-control" id="tender-feeStandard"></select>
-                    </div>
-                    <span class="form-text text-danger" id="feeStandard-info" style="display: none;">请选择费用标准</span>
-                    <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">
-                            &lt;!&ndash;<option value="1">一般计税</option>
-                            <option value="2">简易计税</option>&ndash;&gt;
-                        </select>
-                    </div>
-                    <div style="margin-top: 15px;" class="input-group">
-                        <label style="margin-top: 8px;">计算程序</label>
-                        <select style="margin-left: 5px; border-radius: .25rem;" class="form-control" id="tender-calcProgram"></select>
-                    </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-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>
+                <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>
+                <form id="firstStep">
                     <div class="form-group row">
                         <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">建设项目</label>
                         <div class="col">
@@ -437,6 +334,8 @@
                             </select>
                         </div>
                     </div>
+                </form>
+                <form id="secondStep" style="display: none">
                     <div class="form-group row">
                         <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">计价方式</label>
                         <div class="col">
@@ -500,8 +399,10 @@
                 </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>
+                <a href="javascript:void(0);" class="btn btn-primary" id="add-tender-next">下一步</a>
+                <a href="javascript:void(0);" class="btn btn-primary" id="add-tender-prev" style="display: none">上一步</a>
+                <a href="javascript:void(0);" class="btn btn-primary" style="display: none" id="add-tender-confirm">确定</a>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal" id="add-tender-cancel" style="display: none;">取消</button>
             </div>
         </div>
     </div>

+ 48 - 21
web/building_saas/pm/js/pm_newMain.js

@@ -71,6 +71,10 @@ const projTreeObj = {
         header: [
             {name: '工程列表', dataCode: 'name', width: 300, vAlign: 'center', hAlign: 'left'},
             {name: '工程造价', dataCode: 'engineeringCost', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
+            {name: '工程专业', dataCode: 'feeStandardName', width: 100, vAlign: 'center', hAlign: 'left'},
+            {name: '单价文件', dataCode: 'unitPriceFile', width: 140, vAlign: 'center', hAlign: 'left'},
+            {name: '费率文件', dataCode: 'feeRateFile', width: 140, vAlign: 'center', hAlign: 'left'},
+            {name: '创建日期', dataCode: 'createDateTime', width: 100, vAlign: 'center', hAlign: 'center'},
             {name: '分部分项合计', dataCode: 'subEngineering', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
             {name: '措施项目合计', dataCode: 'measure', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
             {name: '其他项目合计', dataCode: 'other', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
@@ -79,11 +83,7 @@ const projTreeObj = {
             {name: '税金', dataCode: 'tax', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
             {name: '占造价比例(%)', dataCode: 'rate', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
             {name: '建筑面积', dataCode: 'buildingArea', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
-            {name: '单方造价', dataCode: 'perCost', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
-            {name: '工程专业', dataCode: 'feeStandardName', width: 100, vAlign: 'center', hAlign: 'left'},
-            {name: '单价文件', dataCode: 'unitPriceFile', width: 140, vAlign: 'center', hAlign: 'left'},
-            {name: '费率文件', dataCode: 'feeRateFile', width: 140, vAlign: 'center', hAlign: 'left'},
-            {name: '创建日期', dataCode: 'createDateTime', width: 100, vAlign: 'center', hAlign: 'center'}
+            {name: '单方造价', dataCode: 'perCost', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'}
         ],
         //选中行颜色
         style: {
@@ -1772,11 +1772,53 @@ $(document).ready(function() {
             setRegionOpts(regions);
             $('#regionDiv').show();
         }
+        //恢复到第一步状态
+        if (!$('#firstStep').is(':visible')) {
+            showFirstStep();
+        }
         setTimeout(function () {
             $('#tender-name')[0].focus();
         }, 300);
     });
 
+    //新建单位工程-下一步
+    $('#add-tender-next').click(function() {
+        let projName = $("#poj-name").val().trim();
+        if(projName === ''){
+            replaceClass($('#poj-name-info'), 'text-info', 'text-danger');
+            setDangerInfo($('#poj-name-info'), '请填写建设项目名称');
+            return false;
+        }
+        let engName = $("#eng-name").val().trim();
+        if(engName === ''){
+            replaceClass($('#eng-name-info'), 'text-info', 'text-danger');
+            setDangerInfo($('#eng-name-info'), '请填写单项工程名称');
+            return false;
+        }
+
+        let tenderName = $('#tender-name').val();
+        if (tenderName === '') {
+            setDangerInfo($('#tender-name-info'), '请填写单位工程名称');
+            return false;
+        }
+        $('#firstStep').hide();
+        $('#secondStep').show();
+        $(this).hide();
+        $('#add-tender-prev').show();
+        $('#add-tender-confirm').show();
+        $('#add-tender-cancel').show();
+    });
+    function showFirstStep() {
+        $('#secondStep').hide();
+        $('#firstStep').show();
+        $('#add-tender-prev').hide();
+        $('#add-tender-next').show();
+        $('#add-tender-confirm').hide();
+        $('#add-tender-cancel').hide();
+    }
+    //新建单位工程-上一步
+    $('#add-tender-prev').click(showFirstStep);
+
     // 新增单位工程
     $("#add-tender-confirm").click(function() {
         let suc = AddTender();
@@ -1785,26 +1827,11 @@ $(document).ready(function() {
         }
     });
 
-    // 新增文件夹按钮点击
-    /*$("#add-folder-btn").click(function() {
-        $("#add-folder-dialog").modal("show");
-        setTimeout(function () {
-            $('#folder-name')[0].focus();
-        }, 300);
-    });*/
-
     // 新增文件夹操作
     $("#add-folder-confirm").click(function() {
         AddFolder();
     });
 
-    // 删除按钮点击
-   /* $('#del-btn').click(function() {
-        if (projTreeObj.tree && projTreeObj.tree.selected) {
-            $('#del').modal('show');
-        }
-    });*/
-
     // 删除时文字替换
     $('#del').on('show.bs.modal', function() {
         let hasTenderChild = function (children) {
@@ -2435,7 +2462,7 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
                     }
                 });
                 callback();
-            })
+            });
         });
     }
 }