Browse Source

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost

MaiXinRong 7 years ago
parent
commit
a1fda034d0

+ 44 - 30
modules/fee_rates/facade/fee_rates_facade.js

@@ -25,7 +25,8 @@ module.exports={
     getChangeInfo:getChangeInfo,
     changeFeeRateFileFromCurrent:changeFeeRateFileFromCurrent,
     changeFeeRateFileFromOthers:changeFeeRateFileFromOthers,
-    newFeeRateFile:newFeeRateFile
+    newFeeRateFile:newFeeRateFile,
+    getFeeRatesByProject:getFeeRatesByProject
 };
 let operationMap={
     'ut_create':create_fee_rate,
@@ -265,27 +266,37 @@ async function newFeeRateFile(updateData){
     if(updateData.property !== null){
         let property = updateData.property;
         logger.info("Create new feeRate file for project :"+updateData.ID);
-        let libID = property.feeFile;
+        let feeFile = property.feeFile;
         let rootProjectID = property.rootProjectID;
         let name = updateData.name;
-        let doc={
-            rootProjectID:rootProjectID,
-            name:name
-        };
-        if(libID!== ''){
-            let template = await std_fee_rate_lib_model.findOne({"ID":libID});
-            let newFeeRate = {};
-            newFeeRate.ID =uuidV1();
-            newFeeRate.rates=template.rates;
-            await feeRateModel.create(newFeeRate);
-            doc.libID = libID;
-            doc.libName = template.libName;
-            doc.feeRateID =  newFeeRate.ID;
+        if(feeFile.indexOf("newFeeRate")!=-1){
+            let temFee = await feeRateFileModel.findOne({rootProjectID:rootProjectID,name:name,deleteInfo:null});
+            if(temFee){
+                return temFee.ID;
+            }
+            let temA = feeFile.split("-");
+            let libID = temA[1];
+            let doc={
+                rootProjectID:rootProjectID,
+                name:name
+            };
+            if(libID!== ''){
+                let template = await std_fee_rate_lib_model.findOne({"ID":libID});
+                let newFeeRate = {};
+                newFeeRate.ID =uuidV1();
+                newFeeRate.rates=template.rates;
+                await feeRateModel.create(newFeeRate);
+                doc.libID = libID;
+                doc.libName = template.libName;
+                doc.feeRateID =  newFeeRate.ID;
+            }
+            doc.ID = uuidV1();
+            await feeRateFileModel.create(doc);
+            return doc.ID;
+        }else {
+            return feeFile
         }
 
-        doc.ID = uuidV1();
-        await feeRateFileModel.create(doc);
-        return doc.ID;
     }
     return null;
 }
@@ -303,25 +314,28 @@ async function checkFeeRateName(jdata) {
 
 async function getChangeInfo(jdata){
     let data = JSON.parse(jdata);
-    //{ projectID: 99, user_id: '76075' }
+    //{ rootProjectID: 99, user_id: '76075' }
     let result={};
-    let currentProject = {projectID:99,name:'建设项目1'};//dummy 数据
-    currentProject.currentOptions=await feeRateFileModel.find({rootProjectID:data.projectID,deleteInfo:null},['ID','name']);
+    let currentProject = await projectsModel.findOne({'ID':data.rootProjectID},['ID','name']); //{projectID:99,name:'建设项目1'};//dummy 数据
+    currentProject._doc.currentOptions=await getFeeRatesByProject(data.rootProjectID);
     //根据用户ID 找除了当前项目的其它建设项目;
-    let others = [
-        {projectID:100,name:'建设项目2',optionList:[
-            {ID:'590cf860-7d99-11e7-90b0-e3a3dfdb2116',name:'2-test另存'},
-            {ID:'c55718d0-7d98-11e7-b3b4-cfc9038d29b0',name:'2-费率B'},
-            {ID:'da059df1-7c18-11e7-9e2f-1390b52643b4',name:'2-费率A'}
-        ] },
-        {projectID:101,name:'建设项目3',optionList:currentProject.currentOptions },
-        {projectID:102,name:'建设项目4',optionList:currentProject.currentOptions },
-    ]
+    let others =await projectsModel.find({'$and': [
+            {'$or':[{'userID': data.user_id,'projType':'Project', 'deleteInfo': null}, {'userID': data.user_id,'projType':'Project', 'deleteInfo.deleted': {'$in': [null, false]}}]},
+            { 'ID':{'$nin':[data.rootProjectID]}}
+        ]},['ID','name']);
+    for(let o of others){
+        o._doc.optionList = await getFeeRatesByProject(o.ID);
+    }
     result.currentProject=currentProject;
     result.others = others;
     return result;
 }
 
+async function getFeeRatesByProject(rootProjectID) {
+       let feeRates = await feeRateFileModel.find({rootProjectID:rootProjectID,deleteInfo:null},['ID','name']);
+       return feeRates;
+}
+
 async function changeFeeRateFileFromCurrent(jdata){
     let data = JSON.parse(jdata);
     let result = await  project_feerate_temp.findOneAndUpdate({projectID:data.projectID},{feeRateFileID:data.newFeeRateFileID});

+ 18 - 0
modules/pm/controllers/pm_controller.js

@@ -6,6 +6,7 @@ let ProjectsData = require('../models/project_model').project;
 let projType = require('../models/project_model').projType;
 const engineering = require("../../common/const/engineering");
 let EngineeringLibModel = require("../../users/models/engineering_lib_model");
+let fee_rate_facade = require("../../fee_rates/facade/fee_rates_facade");
 
 //统一回调函数
 let callback = function(req, res, err, message, data){
@@ -170,5 +171,22 @@ module.exports = {
             let responseData = error.err === 1 ? null : [];
             callback(request, response, error.err, error.msg, responseData);
         }
+    },
+    getFeeRateFileList:async function(request, response) {
+        let data = request.body.data;
+        try {
+            data = JSON.parse(data);
+            let projectId = data.parentID !== undefined ? data.parentID : 0;
+            if (isNaN(projectId) && projectId <= 0) {
+                throw {msg: 'id数据有误!', err: 1};
+            }
+            // 获取对应建设项目下所有的单位工程id
+            let feeRateFileList = await fee_rate_facade.getFeeRatesByProject(projectId);
+            callback(request, response, 0, '',feeRateFileList );
+        } catch (error) {
+            console.log(error);
+            let responseData = error.err === 1 ? null : [];
+            callback(request, response, error.err, error.msg, responseData);
+        }
     }
 };

+ 4 - 2
modules/pm/models/project_model.js

@@ -72,8 +72,10 @@ ProjectsDAO.prototype.updateUserProjects = async function(userId, datas, callbac
                     callback(1, '同级目录已存在相同名称数据.', null);
                     return;
                 }
-                let  feeRateFileID = await feeRateFacade.newFeeRateFile(data.updateData);
-                newProject.property.feeFile = feeRateFileID?feeRateFileID:-1;
+                if(data.updateData.projType==='Tender'){
+                    let  feeRateFileID = await feeRateFacade.newFeeRateFile(data.updateData);
+                    newProject.property.feeFile = feeRateFileID?feeRateFileID:-1;
+                }
                 newProject.save(async function (err, result) {
                     if (!err && result._doc.projType === projectType.tender) {
                         newProjController.copyTemplateData(data.updateData.property, newProject.ID, updateAll);

+ 1 - 0
modules/pm/routes/pm_route.js

@@ -41,6 +41,7 @@ module.exports = function (app) {
     pmRouter.post('/getProject', pmController.getProject);
     pmRouter.post('/getNewProjectID', pmController.getNewProjectID);
     pmRouter.post('/getUnitFile', pmController.getUnitFileList);
+    pmRouter.post('/getFeeRateFile', pmController.getFeeRateFileList);
 
     app.use('/pm/api', pmRouter);
 };

+ 2 - 2
web/building_saas/fee_rates/fee_rate.html

@@ -25,9 +25,9 @@
                 </div>
                 <div class=" grid  main-data-full-fl" id="divFee"></div>
             </div>
-            <div class="col-lg-4 p-0">
+            <div class="col-lg-4 py-1">
                 <div class="py-1"><input type="checkbox" id="cascadeSet" checked >统一设置相同参数</div>
-                <div class="grid  py-1" id="subRate"></div>
+                <div class="grid  main-data-full-fl" id="subRate"></div>
             </div>
         </div>
 </div>

+ 4 - 3
web/building_saas/main/js/models/fee_rate.js

@@ -198,10 +198,11 @@ var FeeRate = {
             return  this.datas;
         };
         FeeRate.prototype.getChangeInfo = function (callback) {
-            var projectID = projectInfoObj.projectInfo.ID; //这里暂时用的是当前项目的ID,以后要改成顶层的建设项目ID
+           // var projectID = projectInfoObj.projectInfo.ID;
+            var feeRate = this.getActivateFeeRate();
             var data={
-                "projectID": projectID,
-                "user_id":userID
+                "user_id":userID,
+                "rootProjectID":feeRate.rootProjectID,
             };
             CommonAjax.post('/feeRates/getChangeInfo', data, function (data) {
                 callback(data);

+ 2 - 1
web/building_saas/main/js/views/fee_rate_view.js

@@ -247,6 +247,7 @@ var feeRateObject={
             feeRateObject.createSpreadView();
             feeRateObject.loadPageContent();
             projectObj.project.FeeRate.synchronizeFeeRate();
+            subRateObject.destorySpreadView();
         };
         projectObj.project.FeeRate.changeFeeRateStandard(newVal,callback);
     },
@@ -291,7 +292,7 @@ var feeRateObject={
         $('#currentOptions').val(projectObj.project.FeeRate.getActivateFeeRateID());
         $('#otherProject').empty();
         _.forEach(data.others,function (p) {
-            var option =  $("<option>").val(p.projectID).text(p.name);
+            var option =  $("<option>").val(p.ID).text(p.name);
             $('#otherProject').append(option);
         });
         $('#otherFeeRateOption').empty();

+ 1 - 1
web/building_saas/pm/html/project-management.html

@@ -366,7 +366,7 @@
                     </div>
                     <div class="form-group hidden-area">
                         <label>费率文件</label>
-                        <select class="form-control" id="tender-fee-rate"><option value="">请选择费率文件</option></select>
+                        <select class="form-control" id="tender-fee-rate"><option value="">新建费率文件</option></select>
                     </div>
                     <div class="form-group">
                         <label>计价方式</label>

+ 54 - 10
web/building_saas/pm/js/pm_main.js

@@ -249,7 +249,8 @@ $(document).ready(function() {
 
         // 获取单价文件数据
         getUnitFile(projectInfo.data.ID);
-
+        // 获取费率文件数据
+        getFeeRateFile(projectInfo.data.ID);
     });
 
     // 新增单位工程
@@ -536,14 +537,9 @@ $(document).ready(function() {
             return false;
         }
         // 输出数据到页面
-        let feeHtml = '<option>请选择费率文件</option>';
         if (currentLib.fee_lib !== undefined && currentLib.fee_lib.length > 0) {
-            for (let fee of currentLib.fee_lib) {
-                feeHtml += '<option value="'+ fee.id +'">'+ fee.name +'</option>';
-            }
+            $("#tender-fee-rate").children("option").first().val("newFeeRate-"+currentLib.fee_lib[0].id);
         }
-        $("#tender-fee-rate").html(feeHtml);
-
         $(this).parent().siblings('.hidden-area').slideDown('fast');
     });
 });
@@ -823,9 +819,13 @@ function AddFolder() {
 function GetUpdateData(parent, next, name, property, newId, type) {
     let data = [];
     let updateData = {};
-    let rootProject = parent ? parent.parent : Tree._root;
-    let rootProjectID = rootProject ? rootProject.id() : -1;
-    property.rootProjectID=rootProjectID;
+    if(type.projectType== projectType.tender){
+        let rootProject = parent ? parent.parent : Tree._root;
+        let rootProjectID = rootProject ? rootProject.id() : -1;
+        if(property){
+            property.rootProjectID=rootProjectID;
+        }
+    }
     updateData['updateType'] = type.updateType === undefined ? 'new' : type.updateType;
     updateData['updateData'] = {};
     if (newId !== '') {
@@ -1103,6 +1103,50 @@ function getUnitFile(parentID) {
 }
 
 /**
+ * 获取费率文件
+ *
+ * @param {Number} parentID
+ * @return {void}
+ */
+function getFeeRateFile(parentID) {
+    parentID = parseInt(parentID);
+    if (isNaN(parentID) && parentID <= 0) {
+        return;
+    }
+
+    $.ajax({
+        url: '/pm/api/getFeeRateFile',
+        type: 'post',
+        data: {'data': JSON.stringify({"user_id": userID, "parentID": parentID})},
+        dataType: 'json',
+        error: function() {
+            alert('数据传输错误!');
+        },
+        beforeSend: function() {
+
+        },
+        success: function(response) {
+            if (response.error === 1) {
+                alert('获取失败!');
+            } else {
+                if (response.data.length <= 0) {
+                    return false;
+                }
+                var first = $("#tender-fee-rate").children("option").first();
+                $("#tender-fee-rate").empty();
+                $("#tender-fee-rate").append(first);
+                for(let tmp of response.data) {
+                    var option =  $("<option>").val(tmp.ID).text(tmp.name);
+                    $("#tender-fee-rate").append(option);
+                }
+            }
+        }
+    });
+
+}
+
+
+/**
  * 加载数据到侧边栏
  *
  * @return {void}