Browse Source

new tender, record valuation & engineering, copy bills template

MaiXinRong 8 years ago
parent
commit
7303824b01

+ 2 - 2
modules/pm/controllers/new_proj_controller.js

@@ -9,12 +9,12 @@ let async = require('async');
 import BillsTemplateModel from "../models/templates/bills_template_model";
 
 module.exports = {
-    copyTemplateData: async function (valuationId, newProjID, callback) {
+    copyTemplateData: async function (property, newProjID, callback) {
         async.parallel([
             async function (cb) {
                 // 获取清单模板数据
                 let billsTemplateModel = new BillsTemplateModel();
-                let templateData = JSON.stringify(await billsTemplateModel.getTemplateDataForNewProj(valuationId));
+                let templateData = JSON.stringify(await billsTemplateModel.getTemplateDataForNewProj(property.valuation, property.engineering));
                 let billsDatas = JSON.parse(templateData);
                 billsDatas.forEach(function (template) {
                     template.projectID = newProjID;

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

@@ -37,7 +37,7 @@ ProjectsDAO.prototype.getUserProject = function (userId, ProjId, callback) {
 }
 
 ProjectsDAO.prototype.updateUserProjects = function(userId, datas, callback){
-    let data, project, updateLength = 0, hasError = false, deleteInfo = null, valuationId = "599256ba700b1b340c03805e", i, newProject;
+    let data, project, updateLength = 0, hasError = false, deleteInfo = null, i, newProject;
     let updateAll = function (err) {
             if (!err){
                 updateLength += 1;
@@ -61,7 +61,7 @@ ProjectsDAO.prototype.updateUserProjects = function(userId, datas, callback){
                 newProject = new Projects(data.updateData);
                 newProject.save(function (err, result) {
                     if (!err && result._doc.projType === projectType.tender) {
-                        newProjController.copyTemplateData(valuationId, newProject.ID, updateAll);
+                        newProjController.copyTemplateData(data.updateData.property, newProject.ID, updateAll);
                     } else {
                         updateAll(err);
                     }

+ 6 - 4
modules/pm/models/templates/bills_template_model.js

@@ -20,12 +20,13 @@ class BillsTemplateModel extends BaseModel {
     /**
      * 获取计价类别对应的清单模板
      * @param valuationId
+     * @param engineering
      * @returns {*}
      */
-    async getTemplateData (valuationId) {
+    async getTemplateData (valuationId, engineering) {
         // 筛选字段
         let field = {_id: 1, valuationId: 1, ID: 1, ParentID: 1, NextSiblingID: 1, code: 1, name: 1, unit: 1, flags: 1};
-        let data = await this.findDataByCondition({valuationId: valuationId}, field, false);
+        let data = await this.findDataByCondition({valuationId: valuationId, engineering: engineering}, field, false);
 
         return data === null ? [] : data;
     }
@@ -33,12 +34,13 @@ class BillsTemplateModel extends BaseModel {
     /**
      * 新建项目时,获取计价类别对应的清单模板
      * @param valuationId
+     * @param engineering
      * @returns {*}
      */
-    async getTemplateDataForNewProj (valuationId) {
+    async getTemplateDataForNewProj (valuationId, engineering) {
         // 筛选字段
         let field = {_id: 0, ID: 1, ParentID: 1, NextSiblingID: 1, code: 1, name: 1, unit: 1, flags: 1};
-        let data = await this.findDataByCondition({valuationId: valuationId}, field, false);
+        let data = await this.findDataByCondition({valuationId: valuationId, engineering: engineering}, field, false);
 
         return data === null ? [] : data;
     }

+ 3 - 1
modules/pm/models/templates/schemas/bills_template.js

@@ -28,7 +28,9 @@ let BillsTemplateSchema = {
         default: []
     },
     // 所属计价ID
-    valuationId: String
+    valuationId: String,
+    // 工程专业
+    engineering: Number
 };
 
 let model = mongoose.model(collectionName, new Schema(BillsTemplateSchema, {versionKey: false, collection: collectionName}));

+ 40 - 22
web/building_saas/pm/js/pm_main.js

@@ -402,7 +402,7 @@ $(document).ready(function() {
                 updateType: 'update',
                 projectType: null
             };
-            updateData = GetUpdateData(parent, next, '', Tree.selected().id(), typeInfo);
+            updateData = GetUpdateData(parent, next, '', null, Tree.selected().id(), typeInfo);
             UpdateProjectData(updateData, function (data) {
                 dialog.modal('hide');
                 Tree.move(Tree.selected(), parent, next);
@@ -466,7 +466,7 @@ $(document).ready(function() {
                     updateType: 'copy',
                     projType: cur.data.projectType
                 };
-                let updateData = GetUpdateData(parent, next, cur.data.name, IDs.lowID, typeInfo);
+                let updateData = GetUpdateData(parent, next, cur.data.name, cur.data.property, IDs.lowID, typeInfo);
                 updateData['srcProjectId'] = cur.id();
                 pre = GetNeedUpdatePreNode(parent, next);
                 if (pre) {
@@ -540,24 +540,25 @@ function AddProject() {
             break;
         }
     }
+    let projectInfo = {
+        valuation: valuation,
+        valuationType: valuationType,
+        valuationName: valuationName,
+        engineeringList: engineeringList
+    };
 
     let callback = function() {
         $("#add-project-dialog").modal("hide");
         // 记录选择后的信息
-        let projectInfo = {
-            valuation: valuation,
-            valuationType: valuationType,
-            valuationName: valuationName,
-            engineeringList: engineeringList,
-        };
         localStorage.setItem(name, JSON.stringify(projectInfo));
     };
     let selectedItem = Tree.selected();
+
     // 如果选择的是建设项目则新增同级数据
     if (selectedItem !== null && selectedItem.data.projType === projectType.project) {
-        AddSiblingsItem(name, projectType.project, callback);
+        AddSiblingsItem(name, projectInfo, projectType.project, callback);
     } else {
-        AddChildrenItem(name, projectType.project, callback);
+        AddChildrenItem(name, projectInfo, projectType.project, callback);
     }
 }
 
@@ -569,7 +570,7 @@ function AddProject() {
  * @param {function} callback
  * @return {void}
  */
-function AddChildrenItem(name, type, callback) {
+function AddChildrenItem(name, property, type, callback) {
     let parent = Tree.selected() ? Tree.selected() : Tree._root;
     let next = Tree.selected() ? Tree.selected().firstChild() : Tree.firstNode();
     GetNewProjectId(function(IDs) {
@@ -577,7 +578,7 @@ function AddChildrenItem(name, type, callback) {
             updateType: 'new',
             projectType: type
         };
-        let updateData = GetUpdateData(parent, next, name, IDs.lowID, typeInfo);
+        let updateData = GetUpdateData(parent, next, name, property, IDs.lowID, typeInfo);
         Tree.maxNodeId(IDs.lowID - 1);
         UpdateProjectData(updateData, function(datas){
             datas.forEach(function (data) {
@@ -598,7 +599,7 @@ function AddChildrenItem(name, type, callback) {
  * @param {function} callback
  * @return {void}
  */
-function AddSiblingsItem(name, type, callback) {
+function AddSiblingsItem(name, property, type, callback) {
     let selected = Tree.selected();
     let parent = selected ? selected.parent : Tree._root;
     let next = selected ? selected.nextSibling : Tree.firstNode();
@@ -607,7 +608,7 @@ function AddSiblingsItem(name, type, callback) {
             updateType: 'new',
             projectType: type
         };
-        let updateData = GetUpdateData(parent, next, name, IDs.lowID, typeInfo);
+        let updateData = GetUpdateData(parent, next, name, property, IDs.lowID, typeInfo);
         Tree.maxNodeId(IDs.lowID - 1);
         UpdateProjectData(updateData, function(datas){
             datas.forEach(function (data) {
@@ -637,9 +638,9 @@ function AddEngineering() {
     let selectedItem = Tree.selected();
     // 如果选择的是单项工程则新增同级数据
     if (selectedItem !== null && selectedItem.data.projType === projectType.engineering) {
-        AddSiblingsItem(name, projectType.engineering, callback);
+        AddSiblingsItem(name, null, projectType.engineering, callback);
     } else {
-        AddChildrenItem(name, projectType.engineering, callback);
+        AddChildrenItem(name, null, projectType.engineering, callback);
     }
 }
 
@@ -654,15 +655,29 @@ function AddTender() {
         alert('请填写单位工程名称');
         return false;
     }
+
+    let valuation = $("#tender-valuation").val();
+    let valuationName = $("#tender-valuation").children("option:selected").text();
+    let valuationType = $("input[name='tender_valuation_type']:checked").val();
+    let engineering = $("#tender-engineering").val();
+    let enginerringName = $('#tender-engineering').children("option:selected").text();
+
     let callback = function() {
         $("#add-tender-dialog").modal("hide");
     };
     let selectedItem = Tree.selected();
+    let tenderInfo = {
+        valuation: valuation,
+        valuationType: valuationType,
+        valuationName: valuationName,
+        engineering: engineering,
+        engineeringName: enginerringName
+    };
     // 如果选择的是单项工程则新增同级数据
     if (selectedItem !== null && selectedItem.data.projType === projectType.tender) {
-        AddSiblingsItem(name, projectType.tender, callback);
+        AddSiblingsItem(name, tenderInfo, projectType.tender, callback);
     } else {
-        AddChildrenItem(name, projectType.tender, callback);
+        AddChildrenItem(name, tenderInfo, projectType.tender, callback);
     }
 }
 
@@ -686,11 +701,11 @@ function AddFolder() {
             alert("文件夹不能超过3层");
             return false;
         }
-        AddChildrenItem(name, projectType.folder, function() {
+        AddChildrenItem(name, null, projectType.folder, function() {
             $("#add-folder-dialog").modal("hide");
         });
     } else {
-        AddSiblingsItem(name, projectType.folder, function() {
+        AddSiblingsItem(name, null, projectType.folder, function() {
             $("#add-folder-dialog").modal("hide");
         });
     }
@@ -705,7 +720,7 @@ function AddFolder() {
  * @param {Object} type
  * @return {Object}
  */
-function GetUpdateData(parent, next, name, newId, type) {
+function GetUpdateData(parent, next, name, property, newId, type) {
     let data = [];
     let updateData = {};
     updateData['updateType'] = type.updateType === undefined ? 'new' : type.updateType;
@@ -718,6 +733,9 @@ function GetUpdateData(parent, next, name, newId, type) {
     if (name !== '') {
         updateData['updateData']['name'] = name;
     }
+    if (property !== undefined) {
+        updateData['updateData']['property'] = property;
+    }
     if (type !== null && type.projectType !== null) {
         updateData['updateData']['projType'] = type.projectType !== undefined ? type.projectType : 'Tender';
     }
@@ -907,7 +925,7 @@ function getEngineeringHtml(engineeringList) {
 
     for(let tmp of engineeringList) {
         if (engineeringObject[tmp.engineering] !== undefined) {
-            result += '<option value="'+ tmp.engineering_id +'">'+ engineeringObject[tmp.engineering] +'</option>';
+            result += '<option value="'+ tmp.engineering +'">'+ engineeringObject[tmp.engineering] +'</option>';
         }
     }