Browse Source

new tender, change to new bills template

MaiXinRong 8 years ago
parent
commit
e97275775a

+ 1 - 0
modules/main/models/proj_counter.js

@@ -2,6 +2,7 @@
  * Created by Mai on 2017/6/13.
  */
 
+let mongoose = require('mongoose');
 let baseModel = require('./base_model');
 
 class projCounter extends baseModel {

+ 11 - 10
modules/pm/controllers/new_proj_controller.js

@@ -2,23 +2,24 @@
  * Created by Mai on 2017/4/24.
  */
 
-let BillsTemplateData = require('../../templates/models/bills_template');
 let billsData = require('../../main/models/bills');
 let projCounter = require('../../main/models/proj_counter');
 let async = require('async');
 
+import BillsTemplateModel from "../models/templates/bills_template_model";
+
 module.exports = {
-    copyTemplateData: function (tempType, newProjID, callback) {
+    copyTemplateData: async function (valuationId, newProjID, callback) {
         async.parallel([
-            function (cb) {
-                BillsTemplateData.getTemplate(tempType).then(function (templates) {
-                    let datas = [];
-                    templates.forEach(function (template) {
-                        template._doc.projectID = newProjID;
-                        datas.push(template._doc);
-                    })
-                    return billsData.insertData(datas, cb);
+            async function (cb) {
+                // 获取清单模板数据
+                let billsTemplateModel = new BillsTemplateModel();
+                let templateData = JSON.stringify(await billsTemplateModel.getTemplateDataForNewProj(valuationId));
+                let billsDatas = JSON.parse(templateData);
+                billsDatas.forEach(function (template) {
+                    template.projectID = newProjID;
                 });
+                billsData.insertData(billsDatas, callback);
             },
             function (cb) {
                 projCounter.insertData({"projectID": newProjID}, cb);

+ 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, tempType = 1, i, newProject;
+    let data, project, updateLength = 0, hasError = false, deleteInfo = null, valuationId = "599256ba700b1b340c03805e", 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(tempType, newProject.ID, updateAll);
+                        newProjController.copyTemplateData(valuationId, newProject.ID, updateAll);
                     } else {
                         updateAll(err);
                     }

+ 75 - 0
modules/pm/models/templates/bills_template_model.js

@@ -0,0 +1,75 @@
+/**
+ * Created by Mai on 2017/4/14.
+ * 清单模板,新建项目使用
+ */
+import BaseModel from "../../../common/base/base_model";
+import BillsTemplateSchema from "./schemas/bills_template";
+
+class BillsTemplateModel extends BaseModel {
+    /**
+     * 构造函数
+     *
+     * @return {void}
+     */
+    constructor() {
+        let parent = super();
+        parent.model = BillsTemplateSchema;
+        parent.init();
+    }
+
+    /**
+     * 获取计价类别对应的清单模板
+     * @param valuationId
+     * @returns {*}
+     */
+    async getTemplateData (valuationId) {
+        // 筛选字段
+        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);
+
+        return data === null ? [] : data;
+    }
+
+    /**
+     * 新建项目时,获取计价类别对应的清单模板
+     * @param valuationId
+     * @returns {*}
+     */
+    async getTemplateDataForNewProj (valuationId) {
+        // 筛选字段
+        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);
+
+        return data === null ? [] : data;
+    }
+
+    async updateTemplate (valuationId, datas) {
+        try {
+            for (let data of datas) {
+                data.data.valuationId = valuationId;
+                let condition = {valuationId: valuationId, ID: data.data.ID}, result;
+                if (data.type === 'update') {
+                    result = await this.db.update(condition, data.data);
+                    if (result === undefined || result.ok ===undefined || !result.ok) {
+                        throw '更新数据错误';
+                    }
+                } else if (data.type === 'new') {
+                    result = await this.db.create(data.data);
+                    if (!result) {
+                        throw '新增数据错误';
+                    }
+                } else if (data.type === 'delete') {
+                    result = await this.db.delete(condition);
+                    if (result === undefined || result.ok ===undefined || !result.ok) {
+                        throw '删除数据错误';
+                    }
+                }
+            }
+            return true;
+        } catch (error) {
+            console.log(error);
+        }
+    }
+};
+
+export default BillsTemplateModel;

+ 35 - 0
modules/pm/models/templates/schemas/bills_template.js

@@ -0,0 +1,35 @@
+/**
+ * Created by Mai on 2017/8/17.
+ */
+import mongoose from "mongoose";
+let Schema = mongoose.Schema;
+
+let collectionName = 'temp_bills';
+
+// 标记字段
+let flagsSchema = new Schema({
+    fieldName: String,
+    flag: Number
+});
+let BillsTemplateSchema = {
+    // 树结构所需ID
+    ID: Number,
+    ParentID: Number,
+    NextSiblingID: Number,
+    // 编号
+    code: String,
+    // 名称
+    name: String,
+    // 单位
+    unit: String,
+    // 标记
+    flags:{
+        type: [flagsSchema],
+        default: []
+    },
+    // 所属计价ID
+    valuationId: String
+};
+
+let model = mongoose.model(collectionName, new Schema(BillsTemplateSchema, {versionKey: false, collection: collectionName}));
+export {model as default, collectionName as collectionName};

+ 10 - 0
public/web/tree_sheet/tree_sheet_helper.js

@@ -3,6 +3,16 @@
  */
 
 var TREE_SHEET_HELPER = {
+    createNewSpread: function (obj) {
+        var spread = new GC.Spread.Sheets.Workbook(obj, {sheetCount: 1});
+        spread.options.tabStripVisible = false;
+        spread.options.scrollbarMaxAlign = true;
+        spread.options.cutCopyIndicatorVisible = false;
+        spread.options.allowCopyPasteExcelStyle = false;
+        spread.options.allowUserDragDrop = false;
+        spread.getActiveSheet().setRowCount(3);
+        return spread;
+    },
     getSheetCellStyle: function (setting) {
         var style = new GC.Spread.Sheets.Style();
         //style.locked = setting.readOnly ? true : false;

+ 1 - 1
web/building_saas/main/js/views/main_tree_col.js

@@ -77,4 +77,4 @@ let MainTreeCol = {
                 return '0.##';
         }
     }
-}
+};

+ 12 - 1
web/building_saas/main/js/views/project_view.js

@@ -132,11 +132,22 @@ var projectObj = {
                             return false;
                         }
                     };
+                    let canDelete = function (node) {
+                        if (selected) {
+                            if (selected.sourceType === that.project.Bills.getSourceType()) {
+                                return !(selected.data.flagsIndex && selected.data.flagsIndex.fixed && selected.data.flagsIndex.fixed.flag > 0);
+                            } else {
+                                return true;
+                            }
+                        } else {
+                            return false;
+                        }
+                    };
                     setButtonValid(canUpLevel(selected), $('#upLevel'));
                     setButtonValid(canDownLevel(selected), $('#downLevel'));
                     setButtonValid(selected && (selected.depth() > 0) && selected.canUpMove(), $('#upMove'));
                     setButtonValid(selected && (selected.depth() > 0) && selected.canDownMove(), $('#downMove'));
-                    setButtonValid(selected, $('#delete'));
+                    setButtonValid(canDelete(selected), $('#delete'));
                 });
 
               /*  if(!projectObj.gljSpreed){