浏览代码

新增建筑项目时编办数据的读取以及所选数据的记录

caiaolin 7 年之前
父节点
当前提交
28ffbf52e4

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

@@ -11,10 +11,17 @@ module.exports = function (app) {
     app.get('/pm', function(req, res){
         // 获取编办信息
         let sessionCompilation = req.session.sessionCompilation;
+        // 清单计价
+        let billValuation = sessionCompilation.bill_valuation !== undefined ? sessionCompilation.bill_valuation : [];
+
+        // 定额计价
+        let rationValuation = sessionCompilation.ration_valuation !== undefined ? sessionCompilation.ration_valuation : [];
         let renderData = {
             userAccount: req.session.userAccount,
             userID: req.session.sessionUser.ssoId,
             compilationData: sessionCompilation,
+            billValuation: JSON.stringify(billValuation),
+            rationValuation: JSON.stringify(rationValuation),
         };
         res.render('building_saas/pm/html/project-management.html', renderData);
     });

+ 25 - 2
modules/users/models/compilation_model.js

@@ -40,9 +40,32 @@ class CompilationModel extends BaseModel {
      * @param {String} id
      * @return {Promise}
      */
-    getCompilationById(id) {
+    async getCompilationById(id) {
         let condition = {_id: id, is_release: true};
-        return this.findDataByCondition(condition);
+        let compilationData = await this.findDataByCondition(condition);
+        if (compilationData.bill_valuation === undefined) {
+            return compilationData;
+        }
+
+        if (compilationData.bill_valuation.length > 0) {
+            for (let index in compilationData.bill_valuation) {
+                if (compilationData.bill_valuation[index].enable) {
+                    continue;
+                }
+                delete compilationData.bill_valuation[index];
+            }
+        }
+
+        if (compilationData.ration_valuation.length > 0) {
+            for (let index in compilationData.ration_valuation) {
+                if (compilationData.ration_valuation[index].enable) {
+                    continue;
+                }
+                delete compilationData.ration_valuation[index];
+            }
+        }
+
+        return compilationData;
     }
 
 }

+ 10 - 6
web/building_saas/pm/html/project-management.html

@@ -263,12 +263,12 @@
                         <label>计价方式</label>
                         <div>
                             <label class="custom-control custom-radio">
-                                <input id="radio1" name="radio" type="radio" class="custom-control-input">
+                                <input name="valuation_type" type="radio" class="custom-control-input" value="bill">
                                 <span class="custom-control-indicator"></span>
                                 <span class="custom-control-description">清单计价</span>
                             </label>
                             <label class="custom-control custom-radio">
-                                <input id="radio2" name="radio" type="radio" class="custom-control-input">
+                                <input name="valuation_type" type="radio" class="custom-control-input" value="ration">
                                 <span class="custom-control-indicator"></span>
                                 <span class="custom-control-description">定额计价</span>
                             </label>
@@ -276,7 +276,7 @@
                     </div>
                     <div class="form-group">
                         <label>计价规则</label>
-                        <select class="form-control"><option>重庆[2008]调整人工单价</option></select>
+                        <select class="form-control" id="valuation"><option value="">请选择计划规则</option></select>
                     </div>
                 </form>
             </div>
@@ -342,12 +342,12 @@
                         <label>计价方式</label>
                         <div>
                             <label class="custom-control custom-radio">
-                                <input id="radio1" name="radio" type="radio" class="custom-control-input" checked>
+                                <input name="tender_valuation_type" type="radio" class="custom-control-input" value="bill" checked="checked">
                                 <span class="custom-control-indicator"></span>
                                 <span class="custom-control-description">清单计价</span>
                             </label>
                             <label class="custom-control custom-radio">
-                                <input id="radio2" name="radio" type="radio" class="custom-control-input" disabled>
+                                <input name="tender_valuation_type" type="radio" class="custom-control-input" value="ration" disabled="disabled">
                                 <span class="custom-control-indicator"></span>
                                 <span class="custom-control-description">定额计价</span>
                             </label>
@@ -355,7 +355,7 @@
                     </div>
                     <div class="form-group">
                         <label>计价规则</label>
-                        <select class="form-control " disabled><option>重庆[2008]调整人工单价</option></select>
+                        <select class="form-control" id="tender-valuation" disabled><option>重庆[2008]调整人工单价</option></select>
                     </div>
                     <div class="form-group">
                         <label>工程专业</label>
@@ -611,4 +611,8 @@
 <script type="text/javascript">
     autoFlashHeight();
 </script>
+<script type="text/javascript">
+    let billValuation = '<%- billValuation %>';
+    let rationValuation = '<%- rationValuation %>';
+</script>
 </html>

+ 48 - 0
web/building_saas/pm/js/pm_main.js

@@ -157,6 +157,21 @@ $(document).ready(function() {
         AddProject();
     });
 
+    // 选择计价方式
+    $("input[name='valuation_type']").click(function() {
+        let type = $(this).val();
+        let targetData = type === 'bill' ? JSON.parse(billValuation) : JSON.parse(rationValuation);
+        let html = '<option value="">请选择计划规则</option>';
+
+        for(let valuation of targetData) {
+            if (valuation === null) {
+                continue;
+            }
+            html += '<option value="'+ valuation._id +'">'+ valuation.name +'</option>';
+        }
+        $("#valuation").html(html);
+    });
+
     // 新增单项项目点击
     $("#add-engineering-btn").click(function() {
         let selectedItem = Tree.selected();
@@ -196,6 +211,25 @@ $(document).ready(function() {
         }
     });
 
+    // 新增单位工程弹层改变
+    $('#add-tender-dialog').on('show.bs.modal', function() {
+        // 当前选中的建设项目
+        let selectedItem = Tree.selected();
+        let projectInfo = selectedItem !== null && selectedItem.parent !== undefined ? selectedItem.parent : null;
+        if (projectInfo !== null) {
+            let savedProjectData = localStorage.getItem(projectInfo.data.name);
+            savedProjectData = JSON.parse(savedProjectData);
+            let valuationHtml = '<option value="'+ savedProjectData.valuation +'">'+ savedProjectData.valuationName +'</option>'
+            $("#tender-valuation").html(valuationHtml);
+
+            console.log(savedProjectData);
+            $("input[name='tender_valuation_type']").attr('disabled', 'disabled').removeAttr('checked', 'checked');
+            $("input[name='tender_valuation_type'][value='"+ savedProjectData.valuationType +"']")
+                .attr("checked", "checked").removeAttr('disabled', 'disabled');
+        }
+
+    });
+
     // 新增单位工程
     $("#add-tender-confirm").click(function() {
         AddTender();
@@ -464,8 +498,22 @@ function AddProject() {
         alert('请填写工程');
         return false;
     }
+    let valuation = $("#valuation").val();
+    if (valuation === '') {
+        alert("请选择计价规则");
+        return false;
+    }
+    let valuationName = $("#valuation").children("option:selected").text();
+    let valuationType = $("input[name='valuation_type']:checked").val();
     AddChildrenItem(name, projectType.project, function() {
         $("#add-project-dialog").modal("hide");
+        // 记录选择后的信息
+        let projectInfo = {
+            valuation: valuation,
+            valuationType: valuationType,
+            valuationName: valuationName
+        };
+        localStorage.setItem(name, JSON.stringify(projectInfo));
     });
 }