瀏覽代碼

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

TonyKang 6 年之前
父節點
當前提交
adbabddb0f

+ 6 - 0
modules/bills_lib/controllers/bills_lib_controllers.js

@@ -150,6 +150,12 @@ module.exports = {
             callback(req, res, err, message, null);
         });
     },
+    isUsed: function(req, res){
+        let data = JSON.parse(req.body.data);
+        billsLibDao.isUsed(data, function (err, message, datas) {
+            callback(req, res, err, message, datas);
+        });
+    },
     getJobContent: function(req, res){
         let data = JSON.parse(req.body.data);
         billsLibDao.getJobContent(data, function(err, message, jobs){

+ 3 - 0
modules/bills_lib/controllers/bills_permissionController.js

@@ -56,6 +56,9 @@ class billsPermContr extends baseController{
     deleteBills(req, res){
         billsController.deleteBills(req, res);
     }
+    isUsed(req, res){
+        billsController.isUsed(req, res);
+    }
 
 }
 

+ 33 - 10
modules/bills_lib/models/bills_lib_interfaces.js

@@ -878,23 +878,23 @@ billsLibDao.prototype.removeTotal = function (data, callback) {
         delItems: function () {
             return function (cb) {
                 async.each(delIds, function (delItemId, ecb) {
-                    ItemCharacter.remove({billsLibId: billsLibId, id: delItemId}, function (err) {
+                    ItemCharacter.remove({billsLibId: billsLibId, id: delItemId}, function (err, result) {
                         if(err){
                             ecb(err);
                         }
-                        else{
+                        else {
                             ecb(null);
                         }
-                    }, function (err) {
-                        if(err){
-                            cb(err);
-                        }
-                        else{
-                            cb(null);
-                        }
                     });
+                }, function (err) {
+                    if(err){
+                        cb(err);
+                    }
+                    else{
+                        cb(null);
+                    }
                 });
-            }
+            };
         },
         delItemsArr: function () {
             return function (cb) {
@@ -1824,6 +1824,29 @@ billsLibDao.prototype.deleteBills = function(delData, callback){
     }
 }
 
+billsLibDao.prototype.isUsed = function (data, callback) {
+    if(data.field === 'jobs'){
+        Bills.findOne({$or: [{deleted: null}, {deleted: false}], 'jobs.id': {$in: data.delIds}}, function (err, result) {
+            if(err){
+                callback(1, 'error', null);
+            }
+            else {
+                callback(0, '', {isUsed: result ? true : false});
+            }
+        });
+    }
+    else {
+        Bills.findOne({$or: [{deleted: null}, {deleted: false}], 'items.id': {$in: data.delIds}}, function (err, result) {
+            if(err){
+                callback(1, 'error', null);
+            }
+            else {
+                callback(0, '', {isUsed: result ? true : false});
+            }
+        });
+    }
+};
+
 //--------------JobContent------------------
 
 billsLibDao.prototype.getJobContent = function(gJobData, callback){

+ 1 - 0
modules/bills_lib/routes/bills_lib_routes.js

@@ -47,6 +47,7 @@ module.exports =function (app) {
      billsRouter.post('/updateRecharge', billsContr.auth, billsContr.init, billsContr.updateRecharge);
      billsRouter.post('/pasteRel', billsContr.auth, billsContr.init, billsContr.pasteRel);
      billsRouter.post("/deleteBills", billsContr.auth, billsContr.init, billsContr.deleteBills);
+     billsRouter.post("/isUsed", billsContr.auth, billsContr.init, billsContr.isUsed);
 
      billsRouter.post("/getJobContent", jobsContr.auth, jobsContr.init, jobsContr.getJobContent);
      billsRouter.post("/createJobContent", jobsContr.auth, jobsContr.init, jobsContr.createJobContent);

+ 9 - 5
modules/std_glj_lib/controllers/gljController.js

@@ -172,13 +172,17 @@ class GljController extends BaseController{
             let gljIds = data.gljIds;
             let stdRation = await stdRationModel.findOne({isDeleted: false, 'rationGljList.gljId': {$in: gljIds}});
             if(stdRation){
-                res.json({error: 1, message: error, data: {isUsed: true}});
+                res.json({error: 0, message: 'success', data: {isUsed: true}});
             }
-            let cplRation = await cplRationModel.findOne({$or: [{deleteInfo: null}, {'deleteInfo.deleted': false}], 'rationGljList.gljId': {$in: gljIds}});
-            if(cplRation){
-                res.json({error: 1, message: error, data: {isUsed: true}});
+            else {
+                let cplRation = await cplRationModel.findOne({$or: [{deleteInfo: null}, {'deleteInfo.deleted': false}], 'rationGljList.gljId': {$in: gljIds}});
+                if(cplRation){
+                    res.json({error: 0, message: 'success', data: {isUsed: true}});
+                }
+                else {
+                    res.json({error: 0, message: 'success', data: {isUsed: false}});
+                }
             }
-            res.json({error: 1, message: error, data: {isUsed: false}});
         }
         catch (error){
             res.json({error: 1, message: error, data: null});

+ 40 - 0
public/web/id_tree.js

@@ -607,6 +607,46 @@ var idTree = {
             success = true;
             return success;
         };
+        Tree.prototype.m_downLevel = function (nodes) {
+            let pre = nodes[0].preSibling ; //第一个节点的前一节点,即会成为新的父节点
+            let next ;//最后一个节点的后一节点,会成为pre 的下一个节点
+            let last ;//选中的最后一个节点,nextSibling要设置为0
+            for( let n of nodes){
+                next = n.nextSibling;
+                last = n;
+                let  children = n.parent?n.parent.children:this.roots;
+                children.splice(n.siblingIndex(), 1);
+                pre.addChild(n);
+            }
+            if (!pre.expanded) {
+                pre.setExpanded(true);
+            }
+            pre.setNextSibling(next);
+            last.nextSibling = null;
+            tools.sortTreeItems(this);
+            return true;
+        };
+
+        Tree.prototype.getDownLevelDatas = function (nodes) {
+            let dataMap = {},updateDatas=[],nextID,last;//注释同m_downLevel 方法
+            let newParent = nodes[0].preSibling;//{"type":"update","data":{"ID":3,"ParentID":-1,"NextSiblingID":5}}
+            for(let n of nodes){
+                nextID = n.getNextSiblingID();
+                last = n;
+                dataMap[n.getID()] = {"ID":n.getID(),"ParentID":newParent.getID()}//修改父ID;
+            }
+            dataMap[newParent.getID()] = {"ID":newParent.getID(),"NextSiblingID":nextID}//设置新的父节点的下一个节点ID;
+            if(dataMap[last.getID()]!==undefined){//把最后一个节点的下一个节点ID变成-1
+                dataMap[last.getID()].NextSiblingID = -1
+            }else {
+                dataMap[last.getID()] = {"ID":last.getID(),"NextSiblingID":-1};
+            }
+            for(let key in dataMap){
+                updateDatas.push({type: 'update', data:dataMap[key]});
+            }
+            return updateDatas;
+
+        };
 
         Tree.prototype.getDeleteData = function (node) {
             var data = [];

+ 13 - 0
public/web/tree_sheet/tree_sheet_controller.js

@@ -157,6 +157,19 @@ var TREE_SHEET_CONTROLLER = {
                 }
             }
         };
+        controller.prototype.m_downLevel = function (nodes) { //多选降级
+            var that = this;
+            if (this.tree.m_downLevel(nodes)) {
+                TREE_SHEET_HELPER.massOperationSheet(that.sheet, function () {
+                    TREE_SHEET_HELPER.refreshNodesVisible([nodes[0].parent], that.sheet, true);
+                    //that.sheet.showRow(that.tree.selected.serialNo(), GC.Spread.Sheets.VerticalPosition.center);
+                    if (that.event.refreshBaseActn) {
+                        that.event.refreshBaseActn(that.tree);
+                    }
+                });
+            }
+
+        };
         controller.prototype.upMove = function () {
             var that = this, sels = this.sheet.getSelections();
             if (this.tree.selected) {

+ 55 - 38
web/maintain/bill_template_lib/js/bills_template_edit.js

@@ -223,6 +223,7 @@ $(document).ready(function () {
         setButtonValid(tree.selected && tree.selected.canUpMove(), $('#upMove'));
         setButtonValid(tree.selected && tree.selected.canDownMove(), $('#downMove'));
         setButtonValid(tree.selected ? true : false, $('#delete'));
+        
     };
     let RefreshBillsData = function (datas) {
         datas.forEach(function (data) {
@@ -326,8 +327,6 @@ $(document).ready(function () {
     let controller = TREE_SHEET_CONTROLLER.createNew(tree, billsSpread.getActiveSheet(), TEMPLATE_BILLS_SETTING);
     let fixedFlagMap = getNameToValueMap(billsFixedFlagList);
     let typeMap = getNameToValueMap(billsTypeFlagList);
-    console.log(fixedFlagMap);
-    console.log(typeMap);
     //format code
     //billsSpread.getSheet(0).setFormatter(-1, 1, '@');
     controller.bind('refreshBaseActn', RefreshBaseActn);
@@ -433,44 +432,15 @@ $(document).ready(function () {
     $('#delete').click(function () {
         let me = this;
         $(me).addClass('disabled');
-        let selection = controller.sheet.getSelections()[0], updateData,deleteMap={},deleteNodes=[];
-        for(let i=0;i < selection.rowCount;i++){
-            let tem_node = controller.tree.items[selection.row+i];
-            if(i == 0){//第一个直接添加;
-                deleteMap[tem_node.getID()] = tem_node;
-                deleteNodes.push(tem_node);
-            }else {
-                setNodeToMapAndArray(tem_node,deleteMap,deleteNodes);
-            }
-        }
-
+        let [deleteMap,deleteNodes] = getNodesAndMapFromSheet(controller);
         if (deleteNodes.length > 0) {
-            updateData = controller.tree.getDeleteDatas(deleteMap,deleteNodes);
+            let updateData = controller.tree.getDeleteDatas(deleteMap,deleteNodes);
             CommonAjax.post(updateUrl, updateData, function (data) {
                 controller.m_delete(deleteNodes);
                 controller.showTreeData();
                 $(me).removeClass('disabled');
             });
         }
-        function setNodeToMapAndArray(node,map,array) {
-            let nodeID = node.getID();
-            if(map[nodeID]==undefined||map[nodeID]==null){
-                newMap(node,node.parent,map,array)
-            }
-            function newMap(node,parent,map,array) {
-                let nodeID =node.getID();
-                if(parent==null){//说明已经是最顶层了
-                    map[nodeID]=node;
-                    array.push(node);
-                }else {
-                    let parentID = parent.getID();
-                    if(map[parentID]==undefined||map[parentID]==null){
-                        newMap(node,parent.parent,map,array);
-                    }
-                }
-            }
-        }
-
     });
     $('#upLevel').click(function () {
         let me = this;
@@ -488,11 +458,21 @@ $(document).ready(function () {
     $('#downLevel').click(function () {
         let me = this;
         $(me).addClass('disabled');
-        var selected = controller.tree.selected, updateData;
-        if (selected) {
-            updateData = selected.getDownLevelData();
-            CommonAjax.post(updateUrl, updateData, function (data) {
-                controller.downLevel();
+        let [dMap,dNodes] = getNodesAndMapFromSheet(controller);
+        let newNodes = [dNodes[0]];
+        if(dNodes.length > 1){//如果是多选,则去掉与第一个节点不同级的节点
+            for(let i = 1;i<dNodes.length;i++){
+                if(dNodes[i].parent == dNodes[0].parent) newNodes.push(dNodes[i])
+            }
+        }
+        let updateDatas = controller.tree.getDownLevelDatas(newNodes);
+        if(updateDatas.length > 0){
+            CommonAjax.post(updateUrl, updateDatas, function (data) {
+                controller.m_downLevel(newNodes);
+                for(let u of updateDatas){
+                    let node = controller.tree.findNode(u.data.ID);
+                    refreshNodeData(node,u.data);
+                }
                 controller.showTreeData();
                 $(me).removeClass('disabled');
             });
@@ -524,4 +504,41 @@ $(document).ready(function () {
             });
         }
     });
+    function getNodesAndMapFromSheet(controller) {//表格中选中的节点整理,只留下父节点
+        let selection = controller.sheet.getSelections()[0],map={},nodes=[];
+        for(let i=0;i < selection.rowCount;i++){
+            let tem_node = controller.tree.items[selection.row+i];
+            if(i == 0){//第一个直接添加;
+                map[tem_node.getID()] = tem_node;
+                nodes.push(tem_node);
+            }else {
+                setNodeToMapAndArray(tem_node,map,nodes);
+            }
+        }
+        return [map,nodes];
+    }
+    function setNodeToMapAndArray(node,map,array) {
+        let nodeID = node.getID();
+        if(map[nodeID]==undefined||map[nodeID]==null){
+            newMap(node,node.parent,map,array)
+        }
+        function newMap(node,parent,map,array) {
+            let nodeID =node.getID();
+            if(parent==null){//说明已经是最顶层了
+                map[nodeID]=node;
+                array.push(node);
+            }else {
+                let parentID = parent.getID();
+                if(map[parentID]==undefined||map[parentID]==null){
+                    newMap(node,parent.parent,map,array);
+                }
+            }
+        }
+    }
+    function refreshNodeData(node,data) {
+        for(let key in data){
+            if(key == 'ID') continue;
+            node.data[key] = data[key];
+        }
+    }
 });

+ 2 - 0
web/maintain/bills_lib/html/neirong.html

@@ -213,6 +213,8 @@
     <script src="/lib/tether/tether.min.js"></script>
     <script src="/lib/bootstrap/bootstrap.min.js"></script>
     <script src="/web/maintain/bills_lib/scripts/global.js"></script>
+    <script src="/public/web/PerfectLoad.js"></script>
+    <script src="/public/web/common_ajax.js"></script>
     <script src="/public/web/sheet/sheet_common.js"></script>
     <script src="/web/maintain/bills_lib/scripts/set_sheets.js"></script>
     <script src="/web/maintain/bills_lib/scripts/bills_lib_ajax.js"></script>

+ 2 - 1
web/maintain/bills_lib/html/tezheng.html

@@ -214,7 +214,8 @@
     <script src="/lib/tether/tether.min.js"></script>
     <script src="/lib/bootstrap/bootstrap.min.js"></script>
     <script src="/web/maintain/bills_lib/scripts/global.js"></script>
-    <!--<script src="lib/global.js"></script>-->
+    <script src="/public/web/PerfectLoad.js"></script>
+    <script src="/public/web/common_ajax.js"></script>
     <script src="/public/web/sheet/sheet_common.js"></script>
     <script src="/web/maintain/bills_lib/scripts/set_sheets.js"></script>
     <script src="/web/maintain/bills_lib/scripts/bills_lib_ajax.js"></script>

+ 94 - 23
web/maintain/bills_lib/scripts/set_sheets.js

@@ -164,29 +164,50 @@ var myKey = {
         }
 
         function bindTotalJobDel(spread, billsIds, totalJobs, setting){
-            $('#delConfirm').click(function () {
-                spread.suspendEvent();
-                var ids = tools.delIds(sheet);
-                if(ids.length > 0){
-                    ids.forEach(function(id){
-                        var job = totalJobs.findJob(id);
-                        totalJobs.jobsArr.splice(totalJobs.jobsArr.indexOf(job), 1);
-                    });
-                    function myCompareCode(a, b){
-                        let valA = a.data.code,
-                            valB = b.data.code;
-                        return valB- valA;
-                    }
-                    totalJobs.jobsArr.sort(myCompareCode);
-                    maxJobsNumber = totalJobs.jobsArr.length > 0 ? totalJobs.jobsArr[0].data.code : 0;
-                    tools.reshowData(sheet, totalJobs.jobsArr, setting, true);
-                    billsAjax.removeTotal(userAccount, billsLibId, billsIds, ids, 'jobs');
-                }
-                spread.resumeEvent();
-                $('#delAlert').modal('hide');
-            });
             var sheet = spread.getActiveSheet();
             spread.commandManager().register('myJobDelete', function(){
+                let ids = tools.delIds(sheet);
+                if(ids.length === 0){
+                    return;
+                }
+                $.bootstrapLoading.start();
+                CommonAjax.post('/stdBillsEditor/isUsed', {field: 'jobs', delIds: ids}, function (rstData) {
+                    //被引用了
+                    if(rstData.isUsed){
+                        $('#delText').text('当前工作内容已被引用,不允许删除。');
+                        $('#delConfirm').unbind('click');
+                        $('#delConfirm').bind('click', function () {
+                            $('#delAlert').modal('hide');
+                            spread.focus(true);
+                        });
+                    }
+                    else {
+                        $('#delText').text('是否删除当前行?');
+                        $('#delConfirm').unbind('click');
+                        $('#delConfirm').bind('click', function () {
+                            spread.suspendEvent();
+                            ids.forEach(function(id){
+                                var job = totalJobs.findJob(id);
+                                totalJobs.jobsArr.splice(totalJobs.jobsArr.indexOf(job), 1);
+                            });
+                            function myCompareCode(a, b){
+                                let valA = a.data.code,
+                                    valB = b.data.code;
+                                return valB- valA;
+                            }
+                            totalJobs.jobsArr.sort(myCompareCode);
+                            maxJobsNumber = totalJobs.jobsArr.length > 0 ? totalJobs.jobsArr[0].data.code : 0;
+                            tools.reshowData(sheet, totalJobs.jobsArr, setting, true);
+                            billsAjax.removeTotal(userAccount, billsLibId, billsIds, ids, 'jobs');
+                            spread.resumeEvent();
+                            $('#delAlert').modal('hide');
+                            spread.focus(true);
+                        });
+                    }
+                    $.bootstrapLoading.end();
+                }, function () {
+                    $.bootstrapLoading.end();
+                });
                 $('#delAlert').modal('show');
             });
             spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
@@ -195,7 +216,7 @@ var myKey = {
 
         function bindTotalItemDel(spread, valSheet, billsIds, totalItems, setting){
             var sheet = spread.getActiveSheet();
-            $('#delConfirm').click(function () {
+            /*$('#delConfirm').click(function () {
                 spread.suspendEvent();
                 var ids = tools.delIds(sheet);
                 if(ids.length > 0){
@@ -223,8 +244,58 @@ var myKey = {
                 }
                 spread.resumeEvent();
                 $('#delAlert').modal('hide');
-            });
+            });*/
             spread.commandManager().register('myItemDelete', function(){
+                let ids = tools.delIds(sheet);
+                if(ids.length === 0){
+                    return;
+                }
+                $.bootstrapLoading.start();
+                CommonAjax.post('/stdBillsEditor/isUsed', {field: 'items', delIds: ids}, function (rstData) {
+                    //被引用了
+                    if(rstData.isUsed){
+                        $('#delText').text('当前项目特征已被引用,不允许删除。');
+                        $('#delConfirm').unbind('click');
+                        $('#delConfirm').bind('click', function () {
+                            $('#delAlert').modal('hide');
+                            spread.focus(true);
+                        });
+                    }
+                    else {
+                        $('#delText').text('是否删除当前行?');
+                        $('#delConfirm').unbind('click');
+                        $('#delConfirm').bind('click', function () {
+                            spread.suspendEvent();
+                            ids.forEach(function(id){
+                                var item = totalItems.findItem(id);
+                                totalItems.itemsArr.splice(totalItems.itemsArr.indexOf(item), 1);
+                            });
+                            function myCompareCode(a, b){
+                                let valA = a.data.code,
+                                    valB = b.data.code;
+                                return valB- valA;
+                            }
+                            totalItems.itemsArr.sort(myCompareCode);
+                            maxItemsNumber = totalItems.itemsArr.length > 0 ? totalItems.itemsArr[0].data.code : 0;
+                            tools.reshowData(sheet, totalItems.itemsArr, setting, true);
+                            billsAjax.removeTotal(userAccount, billsLibId, billsIds, ids, 'items');
+                            //reshowVal
+                            if(totalItems.itemsArr.length > 0){
+                                selectedId = totalItems.itemsArr[0].data.id;
+                                tools.reshowValue(valSheet, totalItems.itemsArr[0].data.itemValue, eigenValueSetting, true);
+                            }
+                            else {
+                                tools.clearData(valSheet);
+                            }
+                            spread.resumeEvent();
+                            $('#delAlert').modal('hide');
+                            spread.focus(true);
+                        });
+                    }
+                    $.bootstrapLoading.end();
+                }, function () {
+                    $.bootstrapLoading.end();
+                });
                 $('#delAlert').modal('show');
             });
             spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);

+ 20 - 0
web/maintain/std_glj_lib/html/gongliao.html

@@ -161,6 +161,26 @@
             </div>
         </div>
     </div>
+    <div class="modal fade" id="typeAlert" data-backdrop="static" style="display: none;" aria-hidden="true">
+        <input type="hidden"  value="123">
+        <div class="modal-dialog" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">警告</h5>
+                    <button type="button"  class="close typeClose" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">×</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <h5 class="text-danger">确定要修改当前人材机的类型吗?</h5>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-danger" id="typeConfirm">确认</button>
+                    <button type="button" class="btn btn-secondary typeClose" data-dismiss="modal">取消</button>
+                </div>
+            </div>
+        </div>
+    </div>
     <!-- JS. -->
     <script src="/lib/jquery/jquery.min.js"></script>
     <script src="/lib/jquery-contextmenu/jquery.contextMenu.min.js"></script>

+ 156 - 51
web/maintain/std_glj_lib/js/glj.js

@@ -517,6 +517,7 @@ let repositoryGljObj = {
             else {
                 rObj.ID = me.currentGlj.ID;
                 rObj.gljClass = me.currentGlj.gljClass;
+
             }
         }
         else {
@@ -524,6 +525,7 @@ let repositoryGljObj = {
         }
     },
     onCellEditEnd: function(sender, args) {
+        console.log(args);
         let me = repositoryGljObj, that = gljComponentOprObj,
             rObj = sheetsOprObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row, me),
             updateArr = [], addArr = [], updateBasePrcArr = [];
@@ -533,16 +535,53 @@ let repositoryGljObj = {
         if (me.currentEditingGlj["ID"] && me.currentGlj) {
             rObj["ID"] = me.currentEditingGlj["ID"];
             rObj.gljClass = me.currentEditingGlj.gljClass;
-                if(me.currentEditingGlj[me.setting.header[args.col].dataCode] !== rObj[me.setting.header[args.col].dataCode]){
-                    if(rObj[me.setting.header[0].dataCode] && rObj[me.setting.header[1].dataCode] && rObj[me.setting.header[5].dataCode] &&
-                        rObj[me.setting.header[0].dataCode].toString().trim().length !== 0 && rObj[me.setting.header[1].dataCode].toString().trim().length !== 0 && rObj[me.setting.header[5].dataCode].toString().trim().length !== 0){
-                        if(rObj.gljType !== me.currentEditingGlj.gljType){//修改了工料机类型
+            if(me.currentEditingGlj[me.setting.header[args.col].dataCode] !== rObj[me.setting.header[args.col].dataCode]){
+                if(rObj[me.setting.header[0].dataCode] && rObj[me.setting.header[1].dataCode] && rObj[me.setting.header[5].dataCode] &&
+                    rObj[me.setting.header[0].dataCode].toString().trim().length !== 0 && rObj[me.setting.header[1].dataCode].toString().trim().length !== 0 && rObj[me.setting.header[5].dataCode].toString().trim().length !== 0){
+                   /* if(rObj.gljType !== me.currentEditingGlj.gljType){//修改了工料机类型
+                        if(me.currentGlj){
+                            me.currentGlj.component = [];
+                        }
+                        /!*if(me.allowComponent.indexOf(rObj.gljType) !== -1){//更改成可添加组成物的类型,则将定额价设成零
+                         rObj.basePrice = 0;
+                         }*!/
+                        //调整系数,工料机类型为人工和机上人工时,可输入整数
+                        if((me.currentEditingGlj.gljType === 1 || me.currentEditingGlj.gljType === 303) && !(rObj.gljType === 1 || rObj.gljType === 303)){
+                            rObj.adjCoe = null;
+                        }
+                        //工料机类型不为机械台班时,清空机型
+                        if(me.currentEditingGlj.gljType === 301 && rObj.gljType !== 301 && me.currentEditingGlj.model){
+                            rObj.model = null;
+                        }
+                        if(componentType.includes(me.currentEditingGlj.gljType)&&
+                            !(machineComponent.includes(me.currentEditingGlj.gljType) && machineComponent.includes(rObj.gljType)) &&
+                            !(materialComponent.includes(me.currentEditingGlj.gljType) && materialComponent.includes(rObj.gljType))){//修改了原本是组成物的工料机
+                            //寻找所有引用了此组成物的工料机,并从组成物中删去此工料机,并重算单价
+                            let updateGljs = me.getUpdateGljs(rObj, true);
+                            if(updateGljs.updateArr.length > 0 || updateGljs.updateBasePrcArr.length > 0){
+                                for(let i = 0; i < updateGljs.updateArr.length; i++){
+                                    updateArr.push(updateGljs.updateArr[i]);
+                                }
+                                for(let i = 0; i < updateGljs.updateBasePrcArr.length; i++){
+                                    updateArr.push(updateGljs.updateBasePrcArr[i]);
+                                }
+                            }
+                        }
+                        sheetCommonObj.cleanData(that.workBook.getSheet(0), that.setting, 5);
+                    }*/
+                    if(rObj.gljType !== me.currentEditingGlj.gljType){//修改了工料机类型
+                        if(!$('#typeAlert').is(':visible')){
+                            $('#typeAlert').modal('show');
+                        }
+                        $('#typeConfirm').unbind('click');
+                        $('#typeConfirm').bind('click', function () {
+                            $('#typeAlert').modal('hide');
                             if(me.currentGlj){
                                 me.currentGlj.component = [];
                             }
                             /*if(me.allowComponent.indexOf(rObj.gljType) !== -1){//更改成可添加组成物的类型,则将定额价设成零
-                                rObj.basePrice = 0;
-                            }*/
+                             rObj.basePrice = 0;
+                             }*/
                             //调整系数,工料机类型为人工和机上人工时,可输入整数
                             if((me.currentEditingGlj.gljType === 1 || me.currentEditingGlj.gljType === 303) && !(rObj.gljType === 1 || rObj.gljType === 303)){
                                 rObj.adjCoe = null;
@@ -554,7 +593,7 @@ let repositoryGljObj = {
                             if(componentType.includes(me.currentEditingGlj.gljType)&&
                                 !(machineComponent.includes(me.currentEditingGlj.gljType) && machineComponent.includes(rObj.gljType)) &&
                                 !(materialComponent.includes(me.currentEditingGlj.gljType) && materialComponent.includes(rObj.gljType))){//修改了原本是组成物的工料机
-                               //寻找所有引用了此组成物的工料机,并从组成物中删去此工料机,并重算单价
+                                //寻找所有引用了此组成物的工料机,并从组成物中删去此工料机,并重算单价
                                 let updateGljs = me.getUpdateGljs(rObj, true);
                                 if(updateGljs.updateArr.length > 0 || updateGljs.updateBasePrcArr.length > 0){
                                     for(let i = 0; i < updateGljs.updateArr.length; i++){
@@ -566,54 +605,68 @@ let repositoryGljObj = {
                                 }
                             }
                             sheetCommonObj.cleanData(that.workBook.getSheet(0), that.setting, 5);
-                        }
-                        else if(rObj.adjCoe !== me.currentEditingGlj.adjCoe){//修改调整系数,整数控制
-                            if(isNaN(rObj.adjCoe) || rObj.adjCoe % 1 !== 0){
-                                args.sheet.setValue(args.row, args.col, me.currentEditingGlj.adjCoe ? me.currentEditingGlj.adjCoe : '');
-                                alert('调整系数只能输入整数!');
-                                return;
+                            rObj.component = me.currentGlj.component;
+                            updateArr.push(rObj);
+                            me.mixUpdateRequest(updateArr, [], []);
+                            let gljTypeObj = {gljId: me.currentEditingGlj.ID, gljType: rObj.gljType, basePrice: rObj.basePrice};
+                            updateBasePrcArr.push(gljTypeObj);
+                            if(me.rationLibs.length > 0){
+                                me.updateRationBasePrcRq(updateBasePrcArr);
                             }
+                        });
+                        $('.typeClose').unbind('click');
+                        $('.typeClose').bind('click', function () {
+                            args.sheet.setValue(args.row, args.col, _.find(me.distTypeTree.comboDatas, {value: me.currentGlj.gljType}).text);
+                        });
+                        return;
+                    }
+                    else if(rObj.adjCoe !== me.currentEditingGlj.adjCoe){//修改调整系数,整数控制
+                        if(isNaN(rObj.adjCoe) || rObj.adjCoe % 1 !== 0){
+                            args.sheet.setValue(args.row, args.col, me.currentEditingGlj.adjCoe ? me.currentEditingGlj.adjCoe : '');
+                            alert('调整系数只能输入整数!');
+                            return;
+                        }
 
+                    }
+                    else if(rObj.materialCoe !== me.currentEditingGlj.materialCoe){
+                        if(isNaN(rObj.materialCoe)){
+                            args.sheet.setValue(args.row, args.col, me.currentEditingGlj.materialCoe ? me.currentEditingGlj.materialCoe : '');
+                            alert('三材系数只能输入数值!');
+                            return;
                         }
-                        else if(rObj.materialCoe !== me.currentEditingGlj.materialCoe){
-                            if(isNaN(rObj.materialCoe)){
-                                args.sheet.setValue(args.row, args.col, me.currentEditingGlj.materialCoe ? me.currentEditingGlj.materialCoe : '');
-                                alert('三材系数只能输入数值!');
-                                return;
-                            }
-                            rObj.materialCoe = scMathUtil.roundTo(parseFloat(rObj.materialCoe), -5);
+                        rObj.materialCoe = scMathUtil.roundTo(parseFloat(rObj.materialCoe), -5);
+                    }
+                    else if(rObj.basePrice !== me.currentEditingGlj.basePrice){//修改了单价,可修改单价的必为可成为组成物的
+                        //寻找所有引用了此组成物的工料机,并从组成物中删去此工料机,并重算单价
+                        if(isNaN(parseFloat(rObj.basePrice))){
+                            alert('单价只能输入数值!');
+                            args.sheet.setValue(args.row, args.col, me.currentEditingGlj.basePrice ? me.currentEditingGlj.basePrice : 0);
+                            return;
                         }
-                        else if(rObj.basePrice !== me.currentEditingGlj.basePrice){//修改了单价,可修改单价的必为可成为组成物的
-                            //寻找所有引用了此组成物的工料机,并从组成物中删去此工料机,并重算单价
-                            if(isNaN(parseFloat(rObj.basePrice))){
-                                alert('单价只能输入数值!');
-                                args.sheet.setValue(args.row, args.col, me.currentEditingGlj.basePrice ? me.currentEditingGlj.basePrice : 0);
-                                return;
+                        rObj.basePrice = !isNaN(parseFloat(rObj.basePrice))? scMathUtil.roundTo(parseFloat(rObj.basePrice), -2) : me.currentEditingGlj.basePrice;
+                        let updateGljs = me.getUpdateGljs(rObj);
+                        if(updateGljs.updateArr.length > 0 || updateGljs.updateBasePrcArr.length > 0){
+                            for(let i = 0; i < updateGljs.updateArr.length; i++){
+                                updateArr.push(updateGljs.updateArr[i]);
                             }
-                            rObj.basePrice = !isNaN(parseFloat(rObj.basePrice))? scMathUtil.roundTo(parseFloat(rObj.basePrice), -2) : me.currentEditingGlj.basePrice;
-                            let updateGljs = me.getUpdateGljs(rObj);
-                            if(updateGljs.updateArr.length > 0 || updateGljs.updateBasePrcArr.length > 0){
-                                for(let i = 0; i < updateGljs.updateArr.length; i++){
-                                    updateArr.push(updateGljs.updateArr[i]);
-                                }
-                                for(let i = 0; i < updateGljs.updateBasePrcArr.length; i++){
-                                    updateArr.push(updateGljs.updateBasePrcArr[i]);
-                                }
+                            for(let i = 0; i < updateGljs.updateBasePrcArr.length; i++){
+                                updateArr.push(updateGljs.updateBasePrcArr[i]);
                             }
                         }
-                        rObj.component = me.currentGlj.component;
-                        updateArr.push(rObj);
+                    }
+                    rObj.component = me.currentGlj.component;
+                    updateArr.push(rObj);
+                }
+                else{
+                    if(me.setting.header[args.col].dataCode === 'gljType'){
+                        let distTypeVal =  me.distTypeTree.distTypes[me.distTypeTree.prefix + me.currentEditingGlj[me.setting.header[args.col].dataCode]].data.fullName;
+                        args.sheet.setValue(args.row, args.col, distTypeVal);
                     }
                     else{
-                        if(me.setting.header[args.col].dataCode === 'gljType'){
-                            let distTypeVal =  me.distTypeTree.distTypes[me.distTypeTree.prefix + me.currentEditingGlj[me.setting.header[args.col].dataCode]].data.fullName;
-                            args.sheet.setValue(args.row, args.col, distTypeVal);
-                        }
-                        else{
-                            args.sheet.setValue(args.row, args.col, me.currentEditingGlj[me.setting.header[args.col].dataCode]);
-                        }
+                        args.sheet.setValue(args.row, args.col, me.currentEditingGlj[me.setting.header[args.col].dataCode]);
                     }
                 }
+            }
             if(me.currentEditingGlj.basePrice !== rObj.basePrice){
                 //update basePrice of ration when editting basePrice of glj
                 let gljType = -1;
@@ -633,14 +686,14 @@ let repositoryGljObj = {
                 }
             }
             //update basePrice of ration when editting gljType of glj
-            if(me.currentEditingGlj.gljType !== rObj.gljType){
+         /*   if(me.currentEditingGlj.gljType !== rObj.gljType){
 
                 let gljTypeObj = {gljId: me.currentEditingGlj.ID, gljType: rObj.gljType, basePrice: rObj.basePrice};
                 updateBasePrcArr.push(gljTypeObj);
                 if(me.rationLibs.length > 0){
                     me.updateRationBasePrcRq(updateBasePrcArr);
                 }
-            }
+            }*/
         }
         //新增
         else {
@@ -655,8 +708,8 @@ let repositoryGljObj = {
                     rObj.component = [];
                     //如果类型为混凝土、砂浆、配合比、机械台班时,添加时填写的单价清空
                     /*if(me.allowComponent.indexOf(rObj.gljType) !== -1){
-                        rObj.basePrice = 0;
-                    }*/
+                     rObj.basePrice = 0;
+                     }*/
                     rObj.basePrice = !isNaN(parseFloat(rObj.basePrice)) && (rObj.basePrice && typeof rObj.basePrice !== 'undefined') ? scMathUtil.roundTo(parseFloat(rObj.basePrice), -2) : 0;
                     addArr.push(rObj);
                 }
@@ -676,8 +729,7 @@ let repositoryGljObj = {
         me.workBook.commandManager().register('repositoryGljDel', function () {
             let sheet = me.workBook.getSheet(0),
                 updateArr = [], removeArr = [],
-                tempRemoveArr= [],
-                refGljCodes = [], //已被引用的工料机
+                removeNames = [],
                 updateBasePrcArr = [],//删除基价单位后重新计算
                 sels = sheet.getSelections(),
                 canUpdate = false,
@@ -698,6 +750,7 @@ let repositoryGljObj = {
                                     }
                                 }
                                 removeArr.push(cacheSection[sels[i].row + j].ID);
+                                removeNames.push(cacheSection[sels[i].row + j].name);
                                 //tempRemoveArr.push({ID: cacheSection[sels[i].row + j].ID, code: cacheSection[sels[i].row + j].code});
                                 //删除后重新计算引用了此工料机的定额单价
                                 updateBasePrcArr.push({gljId: cacheSection[sels[i].row + j].ID, gljType: cacheSection[sels[i].row + j].gljType, basePrice: 0, delete: 1});
@@ -743,7 +796,7 @@ let repositoryGljObj = {
                         }
                     }
                 }
-                if(removeArr.length > 0 || updateArr.length > 0){
+             /*   if(removeArr.length > 0 || updateArr.length > 0){
                     //删除警告
                     let upAlertText = removeArr.length > 0 ? '可能已有定额引用了当前人材机,导致定额查找不到此人材机。确定要删除吗?' : '确认删除选中字段?';
                     $('#alertGljTxt').text(upAlertText);
@@ -756,6 +809,58 @@ let repositoryGljObj = {
                         }
                         $('#aleConfBtn').unbind('click');
                     });
+                }*/
+                if(updateArr.length > 0){
+                    //删除警告
+                    let upAlertText = '确认删除选中字段?';
+                    $('#alertGljTxt').text(upAlertText);
+                    $('#gljAlert').modal('show');
+                    //确认
+                    $('#aleConfBtn').bind('click', function () {
+                        me.mixUpdateRequest(updateArr, [], []);
+                        if(updateBasePrcArr.length > 0 && me.rationLibs.length > 0){
+                            me.updateRationBasePrcRq(updateBasePrcArr);
+                        }
+                        $('#aleConfBtn').unbind('click');
+                    });
+                }
+                if(removeArr.length > 0){
+                    $.bootstrapLoading.start();
+                    CommonAjax.post('/stdGljRepository/api/isUsed', {gljIds: removeArr}, function (rstData) {
+                        $.bootstrapLoading.end();
+                        //存在被引用的人材机(标准/补充定额库)
+                        if(rstData.isUsed){
+                            $('#gljAlert').find('.modal-body h5').text('已有定额引用了当前人材机,不可删除。');
+                            $('#gljAlert').modal('show');
+                            $('#aleConfBtn').unbind('click');
+                            $('#aleConfBtn').bind('click', function () {
+                                $('#gljAlert').modal('hide');
+                                me.workBook.focus(true)
+                            });
+                        }
+                        else {
+                            $('#gljAlert').find('.modal-body h5').text(`确定要删除人材机 “${removeNames.join(',')}” 吗? `);
+                            $('#gljAlert').modal('show');
+                            //确认
+                            $('#aleConfBtn').unbind('click');
+                            $('#aleConfBtn').bind('click', function () {
+                                me.mixUpdateRequest([], [], removeArr);
+                                if(updateBasePrcArr.length > 0 && me.rationLibs.length > 0){
+                                    me.updateRationBasePrcRq(updateBasePrcArr);
+                                    me.workBook.focus(true);
+                                }
+                            });
+                        }
+                    }, function () {
+                        $.bootstrapLoading.end();
+                        $('#gljAlert').find('.modal-body h5').text('查询引用错误,不可删除。');
+                        $('#gljAlert').modal('show');
+                        $('#aleConfBtn').bind('click', function () {
+                            $('#gljAlert').modal('hide');
+                            $('#aleConfBtn').unbind('click');
+                            me.workBook.focus(true);
+                        });
+                    });
                 }
             }
         });