소스 검색

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

zhongzewei 7 년 전
부모
커밋
fae2d7a68e

+ 21 - 12
modules/pm/controllers/pm_controller.js

@@ -3,14 +3,15 @@
  */
 import UnitPriceFileModel from "../../glj/models/unit_price_file_model";
 let ProjectsData = require('../models/project_model').project;
-let projectM = require('../../main/models/project');
-let projectSchema = require("../models/project_schema");
 let labourCoe = require('../../main/facade/labour_coe_facade');
 let projType = require('../models/project_model').projType;
 let fileType = require('../models/project_model').fileType;
 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 billsModel = require('../../main/models/bills').model;
+let rationsModel = require('../../main/models/ration').model;
+let projectModel = require("../models/project_schema");
 
 //统一回调函数
 let callback = function(req, res, err, message, data){
@@ -61,33 +62,41 @@ module.exports = {
             }
         });
     },
-    // 该方法主要用于项目属性位置提交保存混合型数据,这些数据来自不同的表,包括projects.property、ration、bills、labour_coes.
+    // CSL, 2017-12-14 该方法用于项目属性:提交保存混合型数据,这些数据来自不同的表,包括projects.property、ration、bills、labour_coes.
     updateMixDatas: function(req, res){
         let callBackInner = function (err, message, data) {
             if (err === 0) {
-                callback(req, res, err, message, data);
+                res.json({error: err, message: message, data: data});
             } else {
-                callback(req, res, err, message, null);
+                res.json({error: err, message: message, data: null});
             }
         };
 
         let datas = JSON.parse(req.body.data).mixDataArr;
 
+        // 项目属性
+        if (Object.keys(datas.properties).length > 0){
+            projectModel.update({ID: datas.projectID}, datas.properties, callBackInner);
+        };
+
+        // 人工系数
         if (datas.labourCoes.updateData){
             datas.labourCoes.updateData.projectID = datas.projectID;
             labourCoe.save(datas.labourCoes.updateData, callBackInner);
         };
 
-        if (datas.rations.length > 0){
-            // projectM.save(data, callBackInner);
-        };
-
+        // 清单:每文档doc只存储一条清单,每条清单都必须定位一次文档,无法合并处理
         if (datas.bills.length > 0){
-
+            for (let bill of datas.bills){
+                billsModel.update({projectID: datas.projectID, ID: bill.ID, deleteInfo: null}, bill, callBackInner);
+            };
         };
 
-        if (Object.keys(datas.properties).length > 0){
-            projectSchema.update({ID: datas.projectID}, datas.properties, callBackInner);
+        // 定额:每文档doc只存储一条定额,每条定额都必须定位一次文档,无法合并处理
+        if (datas.rations.length > 0){
+            for (let ration of datas.rations){
+                rationsModel.update({projectID: datas.projectID, ID: ration.ID, deleteInfo: null}, ration, callBackInner);
+            };
         };
     },
     updateFiles: async function(req, res){

+ 2 - 2
web/building_saas/main/html/main.html

@@ -124,7 +124,7 @@
                                           </div>
                                           <div class="main-data-bottom ovf-hidden" style="width: 33%; float: left;" id="itemSpread">
                                           </div>
-                                          <div id="add-rule" style="width: 33%;float: left;background: #EFEFEF; height: 100%;display: none;">
+                                          <div id="add-rule" style="width: 33%;float: left;background: #EFEFEF; height: 100%;display: none; padding-left: 8px;">
                                               <p style="text-align: center">添加规则</p>
                                               <p>
                                                   <label class="title">添加位置:</label>
@@ -170,7 +170,7 @@
                                               </p>
                                               <p>
                                                   <label class="title">序号格式:</label>
-                                                  <select id="serial-type" disabled="disabled">
+                                                  <select id="serial-type">
                                                       <option value="">无</option>
                                                       <option value="1" selected="selected">1.</option>
                                                       <option value="2">a.</option>

+ 70 - 18
web/building_saas/main/js/views/character_content_view.js

@@ -780,10 +780,10 @@ let pageCCOprObj = {
         }
         // 保存的条件数据
         const findSet = { ID: node.data.ID, projectID: node.data.projectID };
-
+        const baseData = { findSet, itemJob, itemCharacter };
         let characterArray = [];
         for (const tmp of itemCharacter) {
-            if (tmp.eigenvalue === undefined || tmp.eigenvalue.length <= 0) {
+            if (tmp.eigenvalue === undefined || tmp.eigenvalue.length <= 0 || !tmp.isChecked) {
                 continue;
             }
             // 获取选中的特征值
@@ -804,7 +804,7 @@ let pageCCOprObj = {
                     break;
                 case '2':
                     // 特征:特征值
-                    characterString = serialNo + tmp.character + ':' + selectedEigen;
+                    characterString = serialNo + tmp.character + ': ' + selectedEigen;
                     break;
             }
             characterArray.push(characterString);
@@ -813,6 +813,9 @@ let pageCCOprObj = {
         // 内容部分
         let jobArray = [];
         for (const tmp of itemJob) {
+            if (!tmp.isChecked) {
+                continue;
+            }
             // 匹配设置的序号格式
             const serialNo = this.formatSerialNumber(setting.serialType, tmp.serialNo);
             jobArray.push(serialNo + tmp.content)
@@ -820,7 +823,16 @@ let pageCCOprObj = {
 
         // 组合数据
         let content = '';
-        let defaultContentInfo = {};
+        const jobContent = jobArray.join("\r\n");
+        const characterContent = characterArray.join("\r\n");
+        let nodeNameList = node.data.name.split("\n");
+        const nameContent = nodeNameList[0] !== undefined ? nodeNameList[0] : '';
+        // 存入对象,生成数据时用
+        let defaultContentInfo = {
+            jobContent,
+            characterContent,
+            nameContent
+        };
         switch (setting.addContent) {
             case "1":
                 // 项目特征+工作内容
@@ -851,16 +863,6 @@ let pageCCOprObj = {
                 break;
             case "":
                 // 无
-                const jobContent = jobArray.join("\r\n");
-                const characterContent = characterArray.join("\r\n");
-                let nodeNameList = node.data.name.split("\n");
-                const nameContent = nodeNameList[0] !== undefined ? nodeNameList[0] : '';
-                // 存入对象,生成数据时用
-                defaultContentInfo = {
-                    jobContent,
-                    characterContent,
-                    nameContent
-                };
                 break;
         }
         // 显示格式
@@ -878,10 +880,13 @@ let pageCCOprObj = {
                 content = '(' + contentArray.join(',') + ')';
                 break;
         }
+        // 还原数据
+        this.restoreData(node, setting.position, baseData, defaultContentInfo);
         // 添加到对应位置
         let saveObj = {};
         switch (setting.position) {
             case "1":
+                // 添加到项目特征列
                 saveObj = {field: 'itemCharacterText', text: content};
                 // 更新到数据库
                 pageCCOprObj.updateCharacterContent(findSet, {field: 'itemCharacter', updateArr: itemCharacter},
@@ -937,15 +942,15 @@ let pageCCOprObj = {
         switch (type) {
             case '1':
                 // 数字
-                serialNo = serialNo + '.';
+                serialNo = serialNo + '. ';
                 break;
             case '2':
                 // 英文字母(小写)
-                serialNo = letter[serialNo - 1] !== undefined ? letter[serialNo - 1] + '.' : '';
+                serialNo = letter[serialNo - 1] !== undefined ? letter[serialNo - 1] + '. ' : '';
                 break;
             case '3':
                 // 英文字母(大写)
-                serialNo = letter[serialNo - 1] !== undefined ? letter[serialNo - 1].toUpperCase() + '.' : '';
+                serialNo = letter[serialNo - 1] !== undefined ? letter[serialNo - 1].toUpperCase() + '. ' : '';
                 break;
         }
         return serialNo;
@@ -969,10 +974,57 @@ let pageCCOprObj = {
                 continue;
             }
             const serialNo = this.formatSerialNumber(setting.serialType, count.toString());
-            result.push(serialNo + tmp.data.code + ':' + tmp.data.name);
+            result.push(serialNo +  tmp.data.code + ':' + tmp.data.name);
             count++;
         }
 
         return result;
     },
+
+    /**
+     * 还原数据
+     *
+     * @param {Object} node - 节点数据
+     * @param {String} setType - 当前设置的项
+     * @param {Object} baseData - 需要用到的基础数据
+     * @param {Object} defaultContentInfo - 默认数据
+     * @return {void}
+     */
+    restoreData: function(node, setType, baseData, defaultContentInfo) {
+        if (baseData.findSet === undefined ||
+        baseData.itemJob === undefined || baseData.itemCharacter === undefined) {
+            return;
+        }
+
+        switch (setType) {
+            case "1":
+                // 添加到项目特征列
+                // 把其他字段还原回原来数据
+                // 还原名称
+                projectObj.project.Bills.updateField(node.source, 'name', defaultContentInfo.nameContent, true);
+                projectObj.mainController.refreshTreeNode([node], false);
+                // 还原工作内容
+                pageCCOprObj.updateCharacterContent(baseData.findSet, {field: 'jobContent', updateArr: baseData.itemJob},
+                    {field: 'jobContentText', text: defaultContentInfo.jobContent}, node);
+                break;
+            case "2":
+                // 添加到清单名称
+                // 还原特征
+                pageCCOprObj.updateCharacterContent(baseData.findSet, {field: 'itemCharacter', updateArr: baseData.itemCharacter},
+                    {field: 'itemCharacterText', text: defaultContentInfo.characterContent}, node);
+                // 还原工作内容
+                pageCCOprObj.updateCharacterContent(baseData.findSet, {field: 'jobContent', updateArr: baseData.itemJob},
+                    {field: 'jobContentText', text: defaultContentInfo.jobContent}, node);
+                break;
+            case "3":
+                // 添加到工作内容列
+                // 还原名称
+                projectObj.project.Bills.updateField(node.source, 'name', defaultContentInfo.nameContent, true);
+                projectObj.mainController.refreshTreeNode([node], false);
+                // 还原特征
+                pageCCOprObj.updateCharacterContent(baseData.findSet, {field: 'itemCharacter', updateArr: baseData.itemCharacter},
+                    {field: 'jobContentText', text: defaultContentInfo.characterContent}, node);
+                break;
+        }
+    },
 }

+ 0 - 1
web/building_saas/main/js/views/project_property_display_view.js

@@ -29,7 +29,6 @@ let projDisplayView = {
             this.datas.disPlayMainMaterial=disPlayMainMaterial;
             // let updateData = {sourceType: 'properties', updateType: 'update', updateData: {ID: projectID, 'property.displaySetting':this.datas}};
             properties['property.displaySetting'] = this.datas;
-            // mixDatas.properties = properties;
         }
     }
 };

+ 6 - 4
web/building_saas/main/js/views/project_view.js

@@ -433,8 +433,10 @@ var projectObj = {
                         col.data.field === 'jobContentText' || col.data.field === 'adjustState') {
                         if (!autoHeight) {
                             col.showHint = true;
+                            col.data.wordWrap = false;
                         } else {
                             col.showHint = false;
+                            col.data.wordWrap = true;
                         }
                     }
 
@@ -782,7 +784,7 @@ $('#property_ok').click(function () {
     if (changedNodes.length > 0) {
         for (let node of changedNodes){
             let data = {
-                projectID: projectID,
+                // projectID: projectID,
                 ID: node.data.ID,
                 quantity: node.data.quantity,
                 calcBase: node.data.calcBase,
@@ -810,11 +812,11 @@ $('#property_ok').click(function () {
 
     if(hasMixData){
         CommonAjax.post('/pm/api/updateMixDatas', {user_id: userID, mixDataArr: mixDatas}, function (rstData) {
-            if (changedNodes.length > 0) {
+/*            if (changedNodes.length > 0) {
                 for (let node of changedNodes){delete node.changed};
             };
-            if (mixDatas.labourCoes.updateData) labourCoeView.refresh(mixDatas.labourCoes.updateData);
-            window.location.href = '/main?project=' + projectID;
+            if (mixDatas.labourCoes.updateData) labourCoeView.refresh(mixDatas.labourCoes.updateData);*/
+            // window.location.href = '/main?project=' + projectID;
         });
     }
 });

+ 9 - 6
web/building_saas/main/js/views/sub_view.js

@@ -177,21 +177,24 @@ $("#add-content").change(function() {
     const selected = $(this).children(":selected").val();
     const characterFormatEle = $("#character-format");
     const childDisplayFormatEle = $("#child-display-format");
+    const serialTypeEle = $("#serial-type");
 
     switch (selected) {
-        case '4':
-            // 当“添加内容”是“定额子目”或“工作内容”,则“特征生成方式”灰显,不需选择;否则有效可选。
-            characterFormatEle.attr('disabled', 'disabled');
-            characterFormatEle.val(2);
-            break;
         case '5':
             // 当“添加内容”是“定额子目”或“工作内容”,则“特征生成方式”灰显,不需选择;否则有效可选。
             characterFormatEle.attr('disabled', 'disabled');
             characterFormatEle.val(2);
             // 当“添加内容”是“定额子目”,则“子目生成方式”有效可选;否则灰显,不需选择。
             childDisplayFormatEle.removeAttr('disabled');
+            serialTypeEle.val('');
+            serialTypeEle.attr('disabled', 'disabled');
             break;
+        case '4':
+            // 当“添加内容”是“定额子目”或“工作内容”,则“特征生成方式”灰显,不需选择;否则有效可选。
+            characterFormatEle.attr('disabled', 'disabled');
+            characterFormatEle.val(2);
         default:
+            serialTypeEle.removeAttr('disabled');
             childDisplayFormatEle.attr('disabled', 'disabled');
             break;
     }
@@ -204,7 +207,7 @@ $("#child-display-format").change(function() {
     // 如果是编号+定额名称则序号格式不能选择
     if (selected === '1') {
         // 默认选中数字显示模式
-        serialTypeEle.val(1);
+        serialTypeEle.val("");
         serialTypeEle.attr('disabled', 'disabled');
     } else {
         serialTypeEle.removeAttr('disabled');