Browse Source

add glj to lib

zhangweicheng 7 years ago
parent
commit
02c3afe6a1

+ 20 - 2
modules/ration_glj/controllers/ration_glj_controller.js

@@ -13,7 +13,8 @@ module.exports={
     addGLJ:addGLJ,
     replaceGLJ:replaceGLJ,
     mReplaceGLJ:mReplaceGLJ,
-    updateRationGLJByEdit:updateRationGLJByEdit
+    updateRationGLJByEdit:updateRationGLJByEdit,
+    getGLJClass:getGLJClass
 }
 function createRationGLJ() {
     let gls = mongoose.model('ration_glj');
@@ -128,5 +129,22 @@ async  function updateRationGLJByEdit(req, res) {
         result.message = err.message;
     }
     res.json(result);
-    
+}
+
+async  function getGLJClass(req, res) {
+    let result={
+        error:0
+    }
+    try {
+        let data = req.body.data;
+        data = JSON.parse(data);
+        let info = await ration_glj_facade.getLibInfo(req);
+        let tresult= await ration_glj_facade.getGLJClass(info,data);
+        result.data=tresult;
+    }catch (err){
+        logger.err(err);
+        result.error=1;
+        result.message = err.message;
+    }
+    res.json(result);
 }

+ 33 - 3
modules/ration_glj/facade/ration_glj_facade.js

@@ -21,6 +21,7 @@ let logger = require("../../../logs/log_helper").logger;
 import stdgljutil  from "../../../public/cache/std_glj_type_util";
 import EngineeringLibModel from "../../users/models/engineering_lib_model";
 import GljDao from "../../complementary_glj_lib/models/gljModel";
+import {complementaryGljModel, stdGljModel, gljClassModel} from "../../complementary_glj_lib/models/schemas";
 
 
 module.exports={
@@ -33,7 +34,8 @@ module.exports={
     addGLJ:addGLJ,
     replaceGLJ:replaceGLJ,
     mReplaceGLJ:mReplaceGLJ,
-    updateRationGLJByEdit:updateRationGLJByEdit
+    updateRationGLJByEdit:updateRationGLJByEdit,
+    getGLJClass:getGLJClass
 }
 
 let operationMap={
@@ -201,7 +203,9 @@ async function getInfoFromProjectGLJ(ration_glj) {
              marketPrice:pg.unit_price.market_price,
              adjustPrice:pg.adjust_price,
              isEstimate:pg.is_evaluate,
-             isMixRatio:true
+             isMixRatio:true,
+             isAdd:pg.unit_price.is_add,
+             GLJID:pg.glj_id
          }
          temRationGLJs.push(tem);
      }
@@ -665,7 +669,33 @@ async function doRationGLJUpdate(data){
     return resutl;
 }
 
-
+async function getGLJClass(info,data) {
+    let result={
+        exist:false
+    }
+    //检查补充工料机中是否已经存在一样的记录了
+    let condition = {
+        userId:info.userID,
+        compilationId:info.compilationId,
+        code:data.code,
+        name:data.name,
+        unit:data.unit,
+        gljType:data.type,
+        basePrice:data.basePrice
+    }
+    if(data.specs!=null&&data.specs!=undefined&&data.specs!=''){
+        condition['specs']=data.specs;
+    }
+    let glj = await complementaryGljModel.find(condition);
+    if(glj.length>0){ //如果已存在就直接返回,不用再新增了
+        result.exist = true;
+        return result
+    }
+    //查找工料机类型树
+   let items = await gljClassModel.find({"repositoryId": info.gljLibId, "$or": [{"isDeleted": null}, {"isDeleted": false} ]});
+    result.items = items;
+   return result;
+}
 
 async function changAdjustState(data,rationList) {
     let stateList=[];

+ 1 - 0
modules/ration_glj/routes/ration_glj_route.js

@@ -13,6 +13,7 @@ module.exports = function (app) {
     rgRouter.post('/replaceGLJ',rgController.replaceGLJ);
     rgRouter.post('/mReplaceGLJ',rgController.mReplaceGLJ);
     rgRouter.post('/updateRationGLJByEdit',rgController.updateRationGLJByEdit);
+    rgRouter.post('/getGLJClass', rgController.getGLJClass);
     app.use('/rationGlj',rgRouter);
 }
 

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

@@ -553,6 +553,37 @@
             </div>
         </div>
     </div>
+    <!--工料机类型选择-->
+    <div class="modal fade" id="glj_class_div" data-backdrop="static">
+        <div class="modal-dialog modal-m" role="document" id="class_con">
+            <div class="modal-content" >
+                <div class="modal-header">
+                    <h5 class="modal-title">请选择分类</h5>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">&times;</span>
+                    </button>
+                    <input type="hidden" name="" id="selected_class">
+                </div>
+                <div class="modal-body">
+                    <div class="row">
+                        <div class="col-12">
+                            <div  class="modal-auto-height" id="classTreeDiv" style="overflow: hidden">
+                                <!--<div class="print-list">-->
+                                <div style="width: 100%; height: 100%; overflow: auto">
+                                    <ul id="classTree" class="ztree"></ul>
+                                </div>
+                                <!--</div>-->
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" id="classCacnel" class="btn btn-secondary" data-dismiss="modal">取消</button>
+                    <button type="button" href="javascript:void(0);" id="class_selected_conf" class="btn btn-primary" disabled >确定</button>
+                </div>
+            </div>
+        </div>
+    </div>
     <!--费率选择窗口-->
     <div class="modal fade" id="fee_rate_tree" data-backdrop="static">
         <div class="modal-dialog modal-feeRate" role="document" id="fee_rate_dialog">
@@ -566,17 +597,16 @@
                 <div class="modal-body">
                     <input type="hidden" id="edit_from">
                     <div class="row">
-                        <div class="modal-auto-height col-12" style="overflow: hidden" id="fee_rate_sheet">
+                        <div class="modal-auto-height col-12" style="overflow: hidden" id="fee_rate_sheet"></div>
+                    </div>
+                    <div class="modal-footer">
+                        <button type="button" id="frCacnel" class="btn btn-secondary" data-dismiss="modal">取消</button>
+                        <a href="javascript:void(0);" id="fee_selected_conf" class="btn btn-primary">确定</a>
                     </div>
-                </div>
-                <div class="modal-footer">
-                    <button type="button" id="frCacnel" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                    <a href="javascript:void(0);" id="fee_selected_conf" class="btn btn-primary">确定</a>
                 </div>
             </div>
         </div>
     </div>
-
         <!-- JS. -->
         <script type="text/javascript" src="/lib/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js"></script>
 

+ 10 - 1
web/building_saas/main/js/models/ration_glj.js

@@ -274,6 +274,7 @@ var ration_glj = {
             var me=this;
             $.bootstrapLoading.start();
             var callback=function (data) {
+                let initShow = false;//是否需要表格初始化显示
                 if(updateField=='customQuantity'){
                     me.refreshAfterQuantityUpdate(data);
                 }else {
@@ -284,9 +285,17 @@ var ration_glj = {
                     if(data.hasOwnProperty('adjustState')){//更新定额调整状态
                         me.updateRationAdjustState(data.adjustState);
                     }
+                    if(recode.subList&&recode.subList.length>0){
+                        initShow = true;
+                    }
+                }
+                if(initShow==false){//不需要初始化,只需耍新当前显示就可以了
+                    gljOprObj.showRationGLJSheetData();
                 }
-                gljOprObj.showRationGLJSheetData();
                 projectObj.project.projectGLJ.loadData(function () {//等项目工料机加载完成后再给用户编辑
+                    if(initShow==true){
+                        gljOprObj.refreshView();
+                    }
                     $.bootstrapLoading.end();
                 });
             }

+ 79 - 6
web/building_saas/main/js/views/glj_view.js

@@ -15,6 +15,7 @@ var gljOprObj = {
     detailSheet:null,
     detailData:[],
     GLJSelection:[],
+    selectedGLJClass:null,
     parentNodeIds:{},
     activeTab:'#linkGLJ',
     decimalSetting:{
@@ -107,12 +108,23 @@ var gljOprObj = {
         },
         callback:{
             onClick: function(event,treeId,treeNode) {
-                let me = gljOprObj, gljTypeId = treeNode.ID;
-                if(me.gljCurTypeId !== treeNode.ID){
-                    me.gljCurTypeId = treeNode.ID;
-                    me.filterLibGLJSheetData();
-                    me.showLibGLJSheetData();
+                if(treeId=='gljTree'){
+                    let me = gljOprObj, gljTypeId = treeNode.ID;
+                    if(me.gljCurTypeId !== treeNode.ID){
+                        me.gljCurTypeId = treeNode.ID;
+                        me.filterLibGLJSheetData();
+                        me.showLibGLJSheetData();
+                    }
+                }else {
+                    if(treeNode.isParent){
+                        $('#class_selected_conf').attr("disabled","disabled");
+                        $('#selected_class').val("");
+                    }else {
+                        $('#class_selected_conf').removeAttr("disabled");
+                        $('#selected_class').val(treeNode.ID);
+                    }
                 }
+
             }
         }
     },
@@ -626,7 +638,8 @@ var gljOprObj = {
                 adjustPrice:pg.adjust_price,
                 isEstimate:pg.is_evaluate,
                 isMixRatio:true,
-                isAdd:pg.unit_price.is_add
+                isAdd:pg.unit_price.is_add,
+                GLJID:pg.glj_id
             }
             temRationGLJs.push(tem);
         }
@@ -1119,6 +1132,66 @@ $(function(){
             gljOprObj.doMReplaceGLJ();
         }
     })
+
+    $('#class_selected_conf').click(function () {
+        var gljClass =  $('#selected_class').val();
+        var glj = gljOprObj.selectedGLJClass;
+        if(glj&&gljClass&&gljClass!=""){
+            //保存到我的工料机库
+            /*1 检查是否有组成物
+            * 2 如果有,则检查组成物中是否有新增的记录,如果有,查看是否已经保存了,没有的话,要先添加组成物到补充工料机库
+            * 3 保存
+
+            * */
+            var newItem={
+                code:glj.code,
+                name:glj.name,
+                specs:glj.specs,
+                unit:glj.unit,
+                basePrice:glj.basePrice,
+                gljType:glj.type,
+                shortName:glj.shortName,
+                component:[],
+                gljClass:gljClass
+            };
+            if(glj.hasOwnProperty("subList")&&glj.subList.length>0){//有组成物,检查组成物信息,目前组成物不允许修改,所以暂时不用考虑组成物是新增的情况
+                for(var i=0;i<glj.subList.length;i++ ){
+                    let tem={
+                        ID:glj.subList[i].GLJID,
+                        consumeAmt:glj.rationItemQuantity,
+                        isStd:true
+                    }
+                    newItem.component.push(tem);
+                }
+            }
+            var data = getcmpUpdateData([newItem]);
+            $.bootstrapLoading.start();
+            var callback = function (data) {
+                $("#glj_class_div").modal('hide');
+                $.bootstrapLoading.end();
+            }
+            CommonAjax.post("complementartGlj/api/mixUpdateGljItems", data, callback, function () {
+                $.bootstrapLoading.end();
+            });
+        }
+    })
+
+    $('#glj_class_div').on('hidden.bs.modal', function (e){
+        gljOprObj.selectedGLJClass=null;
+        $('#class_selected_conf').attr("disabled","disabled");
+        $('#selected_class').val("");
+    })
+
+    function getcmpUpdateData(items) {
+        var data ={
+            "updateItems": [],
+            "removeIds": []
+        }
+        data.addItems = items;
+        return data;
+    }
+
+
 })
 
 

+ 15 - 1
web/building_saas/main/js/views/glj_view_contextMenu.js

@@ -90,7 +90,9 @@ var gljContextMenu = {
                         return disable;
                     },
                     callback: function () {
-                        getGLJData('m_replace');
+                        var sheetData = gljOprObj.sheetData;
+                        var recode = sheetData[gljContextMenu.selectedRow];
+                        showGLJClassTree(recode);
                     }
                 }
             }
@@ -205,4 +207,16 @@ function getGLJData(actionType) {
         $("input[name='glj']").get(0).checked=true;
         $("#glj_tree_div").modal({show:true});
     })
+}
+
+function showGLJClassTree(record) {
+    CommonAjax.post('/rationGlj/getGLJClass',record, function (data) {
+        if(data.exist==true){
+            alert("当前工料机已存在。");
+        }else {
+            gljOprObj.selectedGLJClass = record;
+            $("#glj_class_div").modal({show:true});
+            zTreeHelper.createTree(data.items, gljOprObj.gljTreeSetting, "classTree", gljOprObj);
+        }
+    })
 }