zhangweicheng пре 7 година
родитељ
комит
3770b49a94

+ 1 - 0
config/gulpConfig.js

@@ -95,6 +95,7 @@ module.exports = {
         'web/building_saas/main/js/views/project_property_decimal_view.js',
         'web/building_saas/main/js/views/project_property_basicInfo.js',
         'web/building_saas/main/js/views/project_property_projFeature.js',
+        'web/building_saas/main/js/views/project_property_display_view.js',
         'web/building_saas/main/js/main_ajax.js',
         'web/building_saas/main/js/main.js',
         'web/building_saas/main/js/controllers/project_controller.js',

+ 71 - 49
modules/glj/controllers/glj_controller.js

@@ -12,6 +12,7 @@ import UnitPriceModel from "../models/unit_price_model";
 import MixRatioModel from "../models/mix_ratio_model";
 import UnitPriceFileModel from "../models/unit_price_file_model";
 let logger = require("../../../logs/log_helper").logger;
+let consts = require('../../main/models/project_consts');
 
 const ProjectModel = require('../../pm/models/project_model').project;
 class GLJController extends BaseController {
@@ -37,59 +38,23 @@ class GLJController extends BaseController {
         // 标段id
         let projectId = request.body.project_id;
         projectId = parseInt(projectId);
-        let responseData = {
-            err: 0,
-            msg: '',
-            data: {}
-        };
-        try {
-            if (isNaN(projectId) || projectId <= 0) {
-                throw '标段id有误';
-            }
-
-            // 获取标段对应的单价文件id
-            let unitPriceFileId = await ProjectModel.getUnitPriceFileId(projectId);
-            if (unitPriceFileId <= 0) {
-                throw '没有对应的单价文件';
-            }
-
-            // 获取使用该单价文件的项目数据
-            let tenderData = await ProjectModel.getTenderByUnitPriceFileId(unitPriceFileId);
-            let usedTenderList = [];
-            let usedUnitPriceInfo = {};
-            if (tenderData !== null) {
-                for (let tmp of tenderData) {
-                    usedTenderList.push(tmp.name);
-                    usedUnitPriceInfo.name = tmp.property.unitPriceFile.name;
-                    usedUnitPriceInfo.id = tmp.property.unitPriceFile.id;
-                }
-            }
-
-            // 先获取对应标段的项目工料机数据
-            let gljListModel = new GLJListModel();
-            let [gljList, mixRatioConnectData,mixRationMap] = await gljListModel.getListByProjectId(projectId, unitPriceFileId);
-
-            responseData.data.gljList = gljList;
-            responseData.data.mixRatioConnectData = mixRatioConnectData;
-            responseData.data.mixRatioMap = mixRationMap;
-            responseData.data.usedTenderList = usedTenderList;
-            responseData.data.constData = {
-                materialIdList: gljListModel.materialIdList,
-                ownCompositionTypes: gljListModel.ownCompositionTypes,
-                hostname: request.hostname,
-                roomId: unitPriceFileId,
-                GLJTypeConst: JSON.stringify(GLJTypeConst),
-                usedUnitPriceInfo: usedUnitPriceInfo
-            };
-        } catch (error) {
-            responseData.err = 1;
-            responseData.msg = error;
-        }
-
+        let responseData = await getGLJListByProjectID(projectId);
+        responseData.hostname = request.hostname;
         response.json(responseData);
     }
 
     /**
+     * project getData 接口
+     * @param projectID
+     * @param callback
+     */
+    getData(projectID, callback){
+        getGLJListByProjectID(projectID).then(function(result){
+            callback(result.err,consts.projectConst.PROJECTGLJ,result.data);
+        })
+    }
+
+    /**
      * 更新数据
      *
      * @param {object} request
@@ -588,4 +553,61 @@ class GLJController extends BaseController {
 
 }
 
+/**
+ * 取项目工料机列表
+ * @param projectId
+ * @returns {Promise.<void>}
+ */
+async function getGLJListByProjectID(projectId){
+    let responseData = {
+        err: 0,
+        msg: '',
+        data: {}
+    };
+    try {
+        if (isNaN(projectId) || projectId <= 0) {
+            throw '标段id有误';
+        }
+
+        // 获取标段对应的单价文件id
+        let unitPriceFileId = await ProjectModel.getUnitPriceFileId(projectId);
+        if (unitPriceFileId <= 0) {
+            throw '没有对应的单价文件';
+        }
+
+        // 获取使用该单价文件的项目数据
+        let tenderData = await ProjectModel.getTenderByUnitPriceFileId(unitPriceFileId);
+        let usedTenderList = [];
+        let usedUnitPriceInfo = {};
+        if (tenderData !== null) {
+            for (let tmp of tenderData) {
+                usedTenderList.push(tmp.name);
+                usedUnitPriceInfo.name = tmp.property.unitPriceFile.name;
+                usedUnitPriceInfo.id = tmp.property.unitPriceFile.id;
+            }
+        }
+
+        // 先获取对应标段的项目工料机数据
+        let gljListModel = new GLJListModel();
+        let [gljList, mixRatioConnectData,mixRationMap] = await gljListModel.getListByProjectId(projectId, unitPriceFileId);
+
+        responseData.data.gljList = gljList;
+        responseData.data.mixRatioConnectData = mixRatioConnectData;
+        responseData.data.mixRatioMap = mixRationMap;
+        responseData.data.usedTenderList = usedTenderList;
+        responseData.data.constData = {
+            materialIdList: gljListModel.materialIdList,
+            ownCompositionTypes: gljListModel.ownCompositionTypes,
+            roomId: unitPriceFileId,
+            GLJTypeConst: JSON.stringify(GLJTypeConst),
+            usedUnitPriceInfo: usedUnitPriceInfo
+        };
+    } catch (error) {
+        console.log(error);
+        responseData.err = 1;
+        responseData.msg = error;
+    }
+    return responseData;
+}
+
 export default GLJController;

+ 3 - 0
modules/main/models/project.js

@@ -14,6 +14,8 @@ let projSetting = require('./proj_setting_model');
 // let volumePriceData = require('../../volume_price/models/volume_price_model');
 var labour_coe_facade = require('../facade/labour_coe_facade');
 var calc_program_facade = require('../facade/calc_program_facade');
+import GLJController from "../../glj/controllers/glj_controller";
+
 
 const ProjectModel = require('../../pm/models/project_model').project;
 import GLJListModel from "../../glj/models/glj_list_model";
@@ -37,6 +39,7 @@ moduleMap[projSetting.collectionName] = projSetting;
 moduleMap[projectConsts.FEERATE] = fee_rate_data;
 moduleMap[projectConsts.LABOUR_COE] = labour_coe_facade;
 moduleMap[projectConsts.CALC_PROGRAM] = calc_program_facade;
+moduleMap[projectConsts.PROJECTGLJ] = new GLJController();
 
 var Project = function (){};
 

+ 3 - 1
modules/pm/models/project_model.js

@@ -5,7 +5,7 @@ import mongoose from 'mongoose';
 import async_c from 'async';
 import UnitPriceFileModel from "../../glj/models/unit_price_file_model";
 import UnitPriceFiles from '../../glj/models/schemas/unit_price_file';
-import {defaultDecimal, billsQuantityDecimal, basicInformation, projectFeature} from './project_property_template';
+import {defaultDecimal, billsQuantityDecimal, basicInformation, projectFeature,displaySetting} from './project_property_template';
 let FeeRateFiles = mongoose.model('fee_rate_file');
 let counter = require("../../../public/counter/counter.js");
 
@@ -104,6 +104,8 @@ ProjectsDAO.prototype.updateUserProjects = async function(userId, datas, callbac
                     data.updateData.property.basicInformation = basicInformation;
                     //工程特征
                     data.updateData.property.projectFeature = projectFeature;
+                    //呈现选项
+                    data.updateData.property.displaySetting = displaySetting;
                 }
                 newProject = new Projects(data.updateData);
                 // 查找同级是否存在同名数据

+ 5 - 1
modules/pm/models/project_property_template.js

@@ -11,6 +11,10 @@ const defaultDecimal = {
     quantity_detail: 4,
     process: 6
 };
+const displaySetting = {
+    autoHeight:true,
+    disPlayMainMateria:true
+}
 
 /*
 * 单位工程清单工程量精度模板
@@ -119,4 +123,4 @@ const projectFeature = [
     {dispName: '门窗材料及装饰', key: 'doorsWindowsMaterial', value: ''}
 ];
 
-export {defaultDecimal, billsQuantityDecimal, basicInformation, projectFeature};
+export {defaultDecimal, billsQuantityDecimal, basicInformation, projectFeature,displaySetting};

+ 1 - 1
web/building_saas/css/main.css

@@ -316,4 +316,4 @@ body {
 }
 .dropdown-item.disabled, .dropdown-item:disabled{
   pointer-events:none
-}
+}

+ 20 - 0
web/building_saas/main/html/main.html

@@ -235,6 +235,7 @@
                                 <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#poj-settings-billsQuanDecimal" id="tab_poj-settings-bqDecimal" role="tab">清单工程量精度</a></li>
                                 <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#poj-settings-decimal" role="tab" id="tab_poj-settings-decimal">小数位数</a></li>
                                 <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#poj-settings-6" role="tab" id="tab_poj-settings-6">人工单价调整</a></li>
+                                <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#display_setting" role="tab" id="tab_display_setting">呈现选项</a></li>
                             </ul>
                         </div>
                         <div class="col-9">
@@ -383,6 +384,24 @@
                                     <div style="height:8px;"></div>
                                     <div class="modal-auto-height" id="labourCoeSpread"></div>
                                 </div>
+                                <!--人工单价调整-->
+                                <div class="tab-pane fade" id="display_setting" role="tabpanel">
+                                    <fieldset class="form-group">
+                                        <div class="row px-3">
+                                            <div class="checkbox">
+                                                <label class="form-check-label">
+                                                    <input type="checkbox" id="autoHeight" class="form-check-input">造价书表格自动调整行高
+                                                </label>
+                                            </div>
+                                        </div>
+                                        <div style="height:8px;"></div>
+                                        <div class="checkbox">
+                                            <label class="form-check-label">
+                                                <input type="checkbox" id="disPlayMainMateria" class="form-check-input">定额下显示主村、设备
+                                            </label>
+                                        </div>
+                                    </fieldset>
+                                </div>
                             </div>
                         </div>
                     </div>
@@ -701,6 +720,7 @@
         <script type="text/javascript" src="/web/building_saas/main/js/views/project_property_decimal_view.js"></script>
         <script type="text/javascript" src="/web/building_saas/main/js/views/project_property_basicInfo.js"></script>
         <script type="text/javascript" src="/web/building_saas/main/js/views/project_property_projFeature.js"></script>
+        <script type="text/javascript" src="/web/building_saas/main/js/views/project_property_display_view.js"></script>
         <script type="text/javascript" src="/web/building_saas/main/js/main_ajax.js"></script>
         <script type="text/javascript" src="/web/building_saas/main/js/main.js"></script>
         <script type="text/javascript" src="/web/building_saas/main/js/controllers/project_controller.js"></script>

+ 0 - 1
web/building_saas/main/js/models/main_consts.js

@@ -12,7 +12,6 @@ const ModuleNames = {
     ration_ass:'ration_ass',
     quantity_detail:'quantity_detail',
     // volume_price: 'volume_price',
-    projectGLJ: 'project_glj',
     labour_coe: 'labour_coe',
     calc_program: 'calc_program'
 };

+ 3 - 8
web/building_saas/main/js/models/project.js

@@ -39,6 +39,8 @@ var PROJECT = {
                 } else if (item.moduleName === me.projSetting) {
                     me._project.projSetting = item.data;
                     me._project.projSetting.moduleName = me.projSetting;
+                }else if(item.moduleName === ModuleNames.projectGLJ){
+                    me._project.projectGLJ.loadToCache(item.data);
                 }
             });
             for (module in counter) {
@@ -79,16 +81,9 @@ var PROJECT = {
             this.FeeRate = FeeRate.createNew(this);
             // this.VolumePrice = VolumePrice.createNew(this);
             this.projectGLJ = new ProjectGLJ();
-            this.projectGLJ.loadData();
+           // this.projectGLJ.loadData();
             this.composition = new Composition();
             this.composition.loadData();
-            this.Decimal = {
-                common: {
-                    quantity: 4,
-                    unitFee: 2,
-                    totalFee: 2
-                }
-            };
             this.labourCoe = new LabourCoe(this);
             this.calcProgram = new CalcProgram(this);
 

+ 6 - 0
web/building_saas/main/js/models/project_glj.js

@@ -51,6 +51,12 @@ ProjectGLJ.prototype.loadData = function (callback = null) {
     });
 };
 
+ProjectGLJ.prototype.loadToCache = function (data) {
+    this.datas = data;
+    projectObj.project.projectGLJ=this;
+}
+
+
 /**
  * 获取对应工料机数据
  *

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

@@ -0,0 +1,20 @@
+/**
+ * Created by Zhong on 2017/11/24.
+ */
+let projDisplayView = {
+
+    datas: {},//just for view
+
+    init:function () {
+        this.datas = projectInfoObj.projectInfo.property.displaySetting;
+        $("#autoHeight").attr("checked",this.datas.autoHeight);
+        $("#disPlayMainMateria").attr("checked",this.datas.disPlayMainMateria);
+        //$('#disPlayMainMateria').prop('checked')
+    }
+};
+
+$(document).ready(function () {
+    $('#tab_display_setting').on('shown.bs.tab', function () {
+        projDisplayView.init();
+    });
+});

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

@@ -359,6 +359,7 @@ var projectObj = {
         var that = this;
         this.project = PROJECT.createNew(scUrlUtil.GetQueryString('project'), userID);
         this.project.loadDatas(function (err) {
+            console.log(projectInfoObj);
             if (!err) {
                 that.project.calcProgram.compileAllTemps();
                 that.project.calcFields = JSON.parse(JSON.stringify(feeType));