Browse Source

界面调整

zhongzewei 6 years ago
parent
commit
474b4f3c98

+ 0 - 2
modules/common/base/base_controller.js

@@ -60,8 +60,6 @@ class BaseController {
         // 获取当前用户消息数量
         let userMessageModel = new UserMessageModel();
         // 消息处理
-        console.log(`sessionUser`);
-        console.log(sessionUser);
         await userMessageModel.initMessage(sessionUser.id);
         // 获取未读数据
         let messageUnreadCount = await userMessageModel.count({user_id: sessionUser.id, is_read: 0, is_delete: 0});

+ 0 - 34
modules/options/models/optionsModel.js

@@ -28,38 +28,4 @@ class OptionsDao {
     }
 }
 
-
-
-
-/*class OptionsDao {
-    async getOptions(user_id, compilation_id){
-        let rst = await optionsModel.find({user_id: user_id, compilation_id: compilation_id});
-        rst = rst.length > 0 && typeof rst[0].options !== 'undefined' ? rst[0].options : null;
-        return rst;
-    }
-
-    async getOptionsByType(user_id, compilation_id, optsType){
-        let rst = await optionsModel.find({user_id: user_id, compilation_id: compilation_id});
-        if(rst.length > 0){
-            let opts = rst[0].options;
-            for(let i = 0, len = opts.length; i < len; i++){
-                if(opts[i].type === optsType){
-                    return opts[i];
-                }
-            }
-        }
-        return null;
-    }
-
-    async saveOptions(user_id, compilation_id, opsType, opts){
-        let optionsData = await optionsModel.find({user_id: user_id, compilation_id: compilation_id});
-        if(optionsData.length === 0){
-            await optionsModel.create({user_id: user_id, compilation_id: compilation_id, options: [{type: opsType, opts: opts}]});
-        }
-        await optionsModel.update({user_id: user_id, compilation_id: compilation_id, 'options.type': opsType}, {$set: {'options.$.opts': opts}});
-        let rst = await optionsModel.find({user_id: user_id, compilation_id: compilation_id});
-        return rst;
-    }
-}*/
-
 export default OptionsDao;

+ 6 - 0
modules/pm/controllers/pm_controller.js

@@ -21,6 +21,7 @@ let asyncTool = require('async');
 let pm_facade = require('../facade/pm_facade');
 const userModel = mongoose.model('user');
 let config = require("../../../config/config.js");
+const optionModel = mongoose.model('options');
 
 //统一回调函数
 let callback = function(req, res, err, message, data){
@@ -116,6 +117,11 @@ module.exports = {
             functions.push(updateFunc(projectModel, {ID: datas.projectID}, datas.properties));
         };
 
+        //选项
+        if(datas.options && datas.options.updateData){
+            functions.push(updateFunc(optionModel, {user_id: req.session.sessionUser.id, compilation_id: req.session.sessionCompilation._id}, {'options.GENERALOPTS': datas.options.updateData}));
+        }
+
         // 人工系数
         if (datas.labourCoes&&datas.labourCoes.updateData){
             functions.push(updateLC());

+ 0 - 1
web/building_saas/complementary_ration_lib/js/main.js

@@ -14,7 +14,6 @@ let compleRationMain = {
                         "<tr id='tempId'>" +
                         "<td><a href='javascript:void(0);'>"+libName+"</a></td></tr>"
                     );
-                    var newHref = "/complementaryRation/ration?repository="+id;
                     $("#tempId td:first a").click(function () {
                         $('#comple-ration').modal('hide');
                         setTimeout(function () {

+ 10 - 3
web/building_saas/css/main.css

@@ -1,3 +1,4 @@
+
 /*building SAAS 0.1*/
 /*bootstrap 初始化*/
 body {
@@ -13,6 +14,12 @@ body {
 .btn-link:focus, .btn-link:hover{
     text-decoration: none
 }
+.dropdown-menu {
+    padding:.2rem 0;
+}
+.dropdown-item:focus, .dropdown-item:hover{
+    background-color: #f7f7f9
+}
 /*自定义css*/
 .header {
     border-bottom: 1px solid #ccc
@@ -23,7 +30,7 @@ body {
     margin-right: 1rem;
     font-size: 1rem;
     height:38px;
-    background:url("/web/building_saas/css/logo.png") no-repeat 0 0;
+    background:url(logo.png) no-repeat 0 0;
     padding-left:40px;
 }
 .header-logo div.v-title{
@@ -50,7 +57,7 @@ body {
     position: absolute;
     text-align: center;
     z-index: 999;
-    padding: 30px 0 0 2px
+    padding: 2px 0 0 2px
 }
 .main-nav .nav a {
     display: block;
@@ -97,7 +104,7 @@ body {
     left:0
 }
 .pm-content{
-    padding-left:45px
+    padding-left:58px
 }
 .content {
     border-left: 1px solid #ccc;

+ 51 - 23
web/building_saas/main/html/main.html

@@ -38,7 +38,7 @@
                 <button type="button" class="close" aria-label="Close" onclick="$('#notify').hide();">
                   <span aria-hidden="true">&times;</span>
                 </button>
-                <strong id="message"></strong>
+                <strong id="message"></strong>-
             </div>
         </div>
         <%include ../../../common/html/header.html %>
@@ -63,32 +63,40 @@
                     <!--<a href="javascript:void(0)" class="btn btn-sm" title="复制" ><i class="fa fa-files-o" aria-hidden="true"></i></a>
                     <a href="javascript:void(0)" class="btn btn-sm" title="剪切"><i class="fa fa-scissors" aria-hidden="true"></i></a>
                     <a href="javascript:void(0)" class="btn btn-sm" title="粘贴"><i class="fa fa-clipboard" aria-hidden="true"></i></a>-->
-                    <a href="javascript:void(0)" class="btn btn-sm" id="insertRation" title="插入定额"><i class="fa fa-sign-in" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" class="btn btn-sm" id="delete" title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" class="btn btn-sm" id="upLevel" title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
-                    <a href="javascript:void(0)" class="btn btn-sm" id="downLevel" title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
-                      <a href="javascript:void(0)" class="btn btn-sm" id="upMove" title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
-                      <a href="javascript:void(0)" class="btn btn-sm" id="downMove" title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
-                    <span>
-                      <a href="" data-toggle="dropdown"><span data-toggle="tooltip" data-placement="bottom" title="">显示至...</span></a>
+                    <a class="btn btn-sm" href="javascript:void(0);" aria-expanded="false" data-toggle="modal" data-target="#poj-set"><i class="fa fa-cog" data-toggle="tooltip" title="项目属性" data-placement="bottom"></i></a>
+                    <span class="btn btn-sm">
+                        <a class="dropdown-toggle" href="#" data-toggle="dropdown"><i class="fa  fa-cloud-upload" data-toggle="tooltip" data-placement="bottom" title="导入"></i></a>
+                        <div class="dropdown-menu">
+                            <a id="uploadLj" class="dropdown-item" href="#import" data-toggle="modal" data-target="#import">导入09表Excel清单</a>
+                            <a id="uploadGld" class="dropdown-item" href="#import" data-toggle="modal" data-target="#import">导入广联达算量Excel清单</a>
+                        </div>
+                    </span>
+                    <a href="javascript:void(0)" data-toggle="tooltip" class="btn btn-sm" id="insertRation" title="插入定额"><i class="fa fa-sign-in" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" data-toggle="tooltip" class="btn btn-sm" id="delete" title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" data-toggle="tooltip" class="btn btn-sm" id="upLevel" title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
+                    <a href="javascript:void(0)" data-toggle="tooltip" class="btn btn-sm" id="downLevel" title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
+                      <a href="javascript:void(0)" data-toggle="tooltip" class="btn btn-sm" id="upMove" title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+                      <a href="javascript:void(0)" data-toggle="tooltip" class="btn btn-sm" id="downMove" title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
+                    <span class="btn btn-sm">
+                      <a href="" data-toggle="dropdown"><span data-toggle="tooltip"  data-placement="bottom" title="显示至..."><i class="fa fa-list-ol"></i></span></a>
                       <div class="dropdown-menu dropdown-menu-left" style="min-width: 6.5rem">
-                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayDXFY">大项费用</a>
-                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayFB1">一级分部</a>
-                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayFB2">二级分部</a>
-                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayFB3">三级分部</a>
-                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayFB4">四级分部</a>
-                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayFX">分项</a>
-                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayZM">子目</a>
-                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 1.5rem" id="displayZD">最底层</a>
+                      <a class="dropdown-item" href="javascript:void(0);" id="displayDXFY">大项费用</a>
+                      <a class="dropdown-item" href="javascript:void(0);"  id="displayFB1">一级分部</a>
+                      <a class="dropdown-item" href="javascript:void(0);" id="displayFB2">二级分部</a>
+                      <a class="dropdown-item" href="javascript:void(0);" id="displayFB3">三级分部</a>
+                      <a class="dropdown-item" href="javascript:void(0);"  id="displayFB4">四级分部</a>
+                      <a class="dropdown-item" href="javascript:void(0);"  id="displayFX">分项</a>
+                      <a class="dropdown-item" href="javascript:void(0);" id="displayZM">子目</a>
+                      <a class="dropdown-item" href="javascript:void(0);"  id="displayZD">最底层</a>
                     </div>
                     </span>
-                      <a href="javascript:void(0)" class="btn btn-sm" id = 'ZLFB_btn'><i class="fa fa-sign-in " aria-hidden="true"></i><span data-toggle="tooltip" data-placement="bottom" title=""> 整理分部</span></a>
+                      <a href="javascript:void(0);" data-toggle="tooltip" id="ZLFB_btn" class="btn btn-sm" data-placement="bottom" title="整理分部"><i class="fa fa-retweet" aria-hidden="true"></i></a>
                       <% if (projectData.property.lockBills == true) { %>
-                      <a href="javascript:void(0)" class="btn btn-sm" name="lockBills"  title=""> <i class="fa fa-unlock-alt" aria-hidden="true"></i> 解锁清单</a>
+                      <a href="javascript:void(0)" data-toggle="tooltip"  class="btn btn-sm" name="lockBills" data-original-title="解锁清单"> <i class="fa fa-unlock-alt" aria-hidden="true"></i></a>
                       <% } else { %>
-                      <a href="javascript:void(0)" class="btn btn-sm" name="lockBills"  title=""> <i class="fa fa-lock" aria-hidden="true"></i> 锁定清单</a>
+                      <a href="javascript:void(0)" data-toggle="tooltip" class="btn btn-sm" name="lockBills" data-original-title="锁定清单"> <i class="fa fa-lock" aria-hidden="true"></i></a>
                       <% } %>
-                      <a id="switchTznr" href="javascript:void(0);" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom"><i class="fa fa-eye" aria-hidden="true"></i> 显示特征</a>
+                      <a id="switchTznr" data-toggle="tooltip" href="javascript:void(0);" class="btn btn-sm"  data-placement="bottom" data-original-title="显示特征"><i class="fa fa-eye" aria-hidden="true"></i></a>
                   </div>
                   <div class="side-tabs">
                       <ul class="nav nav-tabs" role="tablist">
@@ -487,6 +495,7 @@
                                 <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>
+                                <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#system-setting" role="tab" id="tab_system_setting">系统选项</a></li>
                             </ul>
                         </div>
                         <div class="col-9">
@@ -711,6 +720,25 @@
                                         <div><a style="margin-left: 5px;" class="btn btn-sm" id="recColSetting" href="javascript:void(0);">恢复默认列设置</a></div>
                                     </div>
                                 </div>
+                                <!--系统选项-->
+                                <div class="tab-pane fade" id="system-setting" role="tabpanel">
+                                    <div class="modal-auto-height">
+                                        <fieldset class="form-group">
+                                            <div class="form-check">
+                                                <label class="form-check-label">
+                                                    <input class="form-check-input" name="opts-general-radios" id="generalOpts1" value="opt1" type="checkbox">
+                                                    自动根据清单工程量填写定额工程量
+                                                </label>
+                                            </div>
+                                            <div class="form-check">
+                                                <label class="form-check-label">
+                                                    <input class="form-check-input" name="opts-general-radios" id="generalOpts2" value="opt2"  type="checkbox">
+                                                    自动根据定额单位转换定额工程量
+                                                </label>
+                                            </div>
+                                        </fieldset>
+                                    </div>
+                                </div>
                             </div>
                         </div>
                     </div>
@@ -742,7 +770,7 @@
                         <div class="col-9">
                             <div class="tab-content">
                                 <!--常规选项-->
-                                <div class="tab-pane fade show active" id="opts-general" role="tabpanel">
+                                <!--<div class="tab-pane fade show active" id="opts-general" role="tabpanel">
                                     <div class="modal-auto-height">
                                         <fieldset class="form-group">
                                             <div class="form-check">
@@ -759,7 +787,7 @@
                                             </div>
                                         </fieldset>
                                     </div>
-                                </div>
+                                </div>-->
                             </div>
                         </div>
                     </div>

+ 4 - 7
web/building_saas/main/js/views/main_tree_col.js

@@ -516,14 +516,12 @@ function switchTznrHtml(show) {
         return;
     }
     if(show){
-        let newHmtl = $('#switchTznr').html().replace('隐藏', '显示');
-        $('#switchTznr').html(newHmtl);
+        $('#switchTznr').attr('data-original-title', '显示特征');
         $('#switchTznr').find('i').removeClass('fa-eye-slash');
         $('#switchTznr').find('i').addClass('fa-eye');
     }
     else {
-        let newHmtl = $('#switchTznr').html().replace('显示', '隐藏');
-        $('#switchTznr').html(newHmtl);
+        $('#switchTznr').attr('data-original-title', '隐藏特征');
         $('#switchTznr').find('i').removeClass('fa-eye');
         $('#switchTznr').find('i').addClass('fa-eye-slash');
     }
@@ -531,17 +529,16 @@ function switchTznrHtml(show) {
 
 $('#switchTznr').click(function () {
     let me = colSettingObj;
-    let cur = $(this).text();
+    let cur = $(this).attr('data-original-title');
+    $("[data-toggle='tooltip']").tooltip('hide');
     if(cur.includes('显示特征')){
         switchTznrHtml(false);
         me.setVisible('itemCharacterText', true);
-        //me.setVisible('jobContentText', true);
         me.updateColSetting(true);
     }
     else {
         switchTznrHtml(true);
         me.setVisible('itemCharacterText', false);
-        //me.setVisible('jobContentText', false);
         me.updateColSetting(true);
     }
 });

+ 18 - 63
web/building_saas/main/js/views/options_view.js

@@ -13,7 +13,7 @@ let optionsOprObj = {
             let gOpts = me.options[me.optionsTypes.GENERALOPTS];
             if(isDef(gOpts)){
                 for(let attr in gOpts){
-                    me[attr][0].checked = gOpts[attr];
+                    me[attr].prop('checked', gOpts[attr]);
                 }
             }
         });
@@ -44,78 +44,33 @@ let optionsOprObj = {
                     ? true
                 : null;
         }
+    },
+    needToSaveGeneralOpts: function () {
+        let v1 = this.rationQuanACToBillsQuan.prop('checked');
+        let v2 = this.rationQuanACToRationUnit.prop('checked');
+        let orgV1 = this.getOption(this.optionsTypes.GENERALOPTS, 'rationQuanACToBillsQuan');
+        let orgV2 = this.getOption(this.optionsTypes.GENERALOPTS, 'rationQuanACToRationUnit');
+        return v1 !== orgV1 || v2 !== orgV2;
     }
 };
 
 optionsOprObj.getOptions();
-optionsOprObj.rationQuanACToBillsQuan.click(function () {
-    let value = this.checked;
-    optionsOprObj.updateOptions(optionsOprObj.options, {type: optionsOprObj.optionsTypes.GENERALOPTS, opt: 'rationQuanACToBillsQuan', value: value});
-    optionsOprObj.saveOptions(optionsOprObj.optionsTypes.GENERALOPTS, optionsOprObj.getOptsByType(optionsOprObj.options, optionsOprObj.optionsTypes.GENERALOPTS));
-});
-optionsOprObj.rationQuanACToRationUnit.click(function () {
-    let value = this.checked;
-    optionsOprObj.updateOptions(optionsOprObj.options, {type: optionsOprObj.optionsTypes.GENERALOPTS, opt: 'rationQuanACToRationUnit', value: value});
-    optionsOprObj.saveOptions(optionsOprObj.optionsTypes.GENERALOPTS, optionsOprObj.getOptsByType(optionsOprObj.options, optionsOprObj.optionsTypes.GENERALOPTS));
-});
-
 
+$('#poj-set').on('shown.bs.modal', function () {
+    let orgV1 = optionsOprObj.getOption(optionsOprObj.optionsTypes.GENERALOPTS, 'rationQuanACToBillsQuan');
+    let orgV2 = optionsOprObj.getOption(optionsOprObj.optionsTypes.GENERALOPTS, 'rationQuanACToRationUnit');
+    optionsOprObj.rationQuanACToBillsQuan.prop('checked', orgV1);
+    optionsOprObj.rationQuanACToRationUnit.prop('checked', orgV2);
 
-/*let optionsOprObj = {
-    options: null,
-    optionsTypes: {GENERALOPTS: 'GENERALOPTS'},
-    rationQuanACToBillsQuan: $('#generalOpts1'),
-    rationQuanACToRationUnit: $('#generalOpts2'),
-    getOptions: function () {
-        let me = this;
-        CommonAjax.post('/options/getOptions', [], function (rstData) {
-            me.options = rstData;
-            for(let i = 0, len = me.options.length; i < len; i++){
-                let optsType = me.options[i].type,
-                    opts = me.options[i].opts;
-                if(optsType === me.optionsTypes.GENERALOPTS){
-                    for(let attr in opts){
-                        me[attr][0].checked = opts[attr];
-                    }
-                }
-            }
-        });
-    },
-    saveOptions: function (optsType, opts) {
-        CommonAjax.post('/options/saveOptions', {optsType: optsType, opts: opts});
-    },
-    //更新optionsOprObj对象options数据
-    updateOptions: function (options, updateObj) {
-        for(let i = 0, len = options.length; i < len; i++){
-            if(options[i].type === updateObj.type){
-                options[i].opts[updateObj.opt] = updateObj.value;
-                break;
-            }
-        }
-    },
-    getOptsByType: function (options, type) {
-        let rst = null;
-        for(let i = 0, len = options.length; i < len; i++){
-            if(options[i].type === type){
-                rst = options[i].opts;
-            }
-        }
-        return rst;
-    },
-    getOption: function (type, optionName) {
-        let opts = this.getOptsByType(this.options, type);
-        return opts[optionName];
-    }
-};
-
-optionsOprObj.getOptions();
-optionsOprObj.rationQuanACToBillsQuan.click(function () {
-    let value = this.checked;
+});
+//选项移到了项目属性的系统选项中
+/*optionsOprObj.rationQuanACToBillsQuan.click(function () {
+    let value = optionsOprObj.rationQuanACToBillsQuan.checked;
     optionsOprObj.updateOptions(optionsOprObj.options, {type: optionsOprObj.optionsTypes.GENERALOPTS, opt: 'rationQuanACToBillsQuan', value: value});
     optionsOprObj.saveOptions(optionsOprObj.optionsTypes.GENERALOPTS, optionsOprObj.getOptsByType(optionsOprObj.options, optionsOprObj.optionsTypes.GENERALOPTS));
 });
 optionsOprObj.rationQuanACToRationUnit.click(function () {
-    let value = this.checked;
+    let value = optionsOprObj.rationQuanACToRationUnit.checked;
     optionsOprObj.updateOptions(optionsOprObj.options, {type: optionsOprObj.optionsTypes.GENERALOPTS, opt: 'rationQuanACToRationUnit', value: value});
     optionsOprObj.saveOptions(optionsOprObj.optionsTypes.GENERALOPTS, optionsOprObj.getOptsByType(optionsOprObj.options, optionsOprObj.optionsTypes.GENERALOPTS));
 });*/

+ 4 - 3
web/building_saas/main/js/views/project_info.js

@@ -21,7 +21,9 @@ var projectInfoObj = {
                 }
             }
              */
-            fullPath.push('<span class="text-truncate" data-toggle="tooltip" data-placement="bottom" title="' + proj.name + '"><i class="fa fa-sticky-note-o"></i> ' + proj.name + '</span>');
+            let newHtml = `<span><i class="fa fa-sticky-note-o"></i></span>
+                <span class="" data-toggle="tooltip" data-placement="bottom" title="t1"> <span class="text-truncate float-right">&nbsp;t1</span></span>`
+            fullPath.push(newHtml);
 
         }
         return fullPath.join('');
@@ -39,10 +41,9 @@ var projectInfoObj = {
                 setDecimal(decimalObj, data.property.decimal);
                 billsQuanDecimal.datas = data.property.billsQuantityDecimal || [billsDecimalView.angleDecimal];
                 basicInfoView.orgDatas = data.property.basicInformation ? basicInfoView.toViewDatas(data.property.basicInformation) : [];
-                console.log(data.property.basicInformation);
-                console.log(basicInfoView.orgDatas);
                 projFeatureView.orgDatas = data.property.projectFeature ? projFeatureView.toViewDatas(data.property.projectFeature) : [];
                 $('#fullpath').html(that.getFullPathHtml(that.projectInfo));
+                $("[data-toggle='tooltip']").tooltip();
             }
         });
     }

+ 26 - 17
web/building_saas/main/js/views/project_view.js

@@ -637,10 +637,10 @@ var projectObj = {
             let mTime = +new Date();
             console.log(`get data时间——${mTime - startTime}`);
             //快速列设置
-            if(!colSettingObj.getVisible('itemCharacterText') && !colSettingObj.getVisible('jobContentText')){
+            if(!colSettingObj.getVisible('itemCharacterText')){
                 switchTznrHtml(true);
             }
-            if(colSettingObj.getVisible('itemCharacterText') && colSettingObj.getVisible('jobContentText')){
+            if(colSettingObj.getVisible('itemCharacterText')){
                 switchTznrHtml(false);
             }
             if (!err) {
@@ -1590,11 +1590,11 @@ var projectObj = {
     },
     loadLockBillsButton:function () {
         if(projectInfoObj.projectInfo.property.lockBills == true){
-            $("a[name='lockBills']").prop("title","解锁清单");
-            $("a[name='lockBills']").html('<i class="fa fa-unlock-alt" aria-hidden="true"></i> 解锁清单');
+            $("a[name='lockBills']").attr("data-original-title","解锁清单");
+            $("a[name='lockBills']").html('<i class="fa fa-unlock-alt" aria-hidden="true"></i>');
         }else {
-            $("a[name='lockBills']").prop("title","锁定清单");
-            $("a[name='lockBills']").html('<i class="fa fa-lock" aria-hidden="true"></i> 锁定清单');
+            $("a[name='lockBills']").attr("data-original-title","锁定清单");
+            $("a[name='lockBills']").html('<i class="fa fa-lock" aria-hidden="true"></i>');
         }
     },
     editContent:function (node,fieldID) {//右键编辑工程内容、服务内容、签证及索赔依据
@@ -1712,7 +1712,7 @@ $('#downMove').click(function () {
         };
     }
 });
-$("a[name='lockBills']").click(function () {//
+$("a[name='lockBills']").click(function () {//点击锁定/解锁清单
     let lockBills = projectInfoObj.projectInfo.property.lockBills;
     lockBills = !lockBills;
     projectObj.project.updateLockBills(lockBills,function () {
@@ -1725,21 +1725,13 @@ $("a[name='lockBills']").click(function () {//
         if(!projectReadOnly){
             pageCCOprObj.refreshRuleTools(lockBills);
         }
+        $("[data-toggle='tooltip']").tooltip('hide');
     });
 });
 $('#ZLFB_btn').click(function () {
     zlfb_object.getSectionInfo();
 });
 
-//工料机库
-$('#compleGljLib').click(function () {
-    let newTab = window.open('about:blank');
-    let newHref = '/complementaryGlj';
-    CommonAjax.get(newHref, [], function () {
-        newTab.location.href = newHref;
-    });
-});
-
 //显示至..
 let displayLevel = function(nodes, depth, type){
     let refreshNodes = [];
@@ -1878,6 +1870,7 @@ $('#property_ok').click(function () {
         projectID = project.ID(),
 
         properties = {},
+        options = {},
         labourCoes = {},
         rations = [],
         bills = [],
@@ -1886,6 +1879,7 @@ $('#property_ok').click(function () {
             projectID: projectID,
             updateType: 'update',
             properties: properties,
+            options: options,
             labourCoes: labourCoes,
             rations: rations,
             bills: bills
@@ -1945,6 +1939,15 @@ $('#property_ok').click(function () {
     if(colSettingObj.dataChanged()){
         colSettingObj.updateColSetting();
     }
+    //系统选项
+    if(optionsOprObj.needToSaveGeneralOpts()){
+        let v1 = optionsOprObj.rationQuanACToBillsQuan.prop('checked'),
+            v2 = optionsOprObj.rationQuanACToRationUnit.prop('checked');
+        options.updateData = {
+            rationQuanACToBillsQuan: v1,
+            rationQuanACToRationUnit: v2
+        };
+    }
 
     if(calcOptions.updateChecking(properties)){
         reCalcRations = true;
@@ -1979,7 +1982,7 @@ $('#property_ok').click(function () {
 /*    console.log(mixDatas);
     return; */
     function hasMixData() {
-        return Object.keys(mixDatas.properties).length > 0 ||
+        return Object.keys(mixDatas.properties).length > 0 || mixDatas.options.updateData ||
             mixDatas.labourCoes.updateData || mixDatas.rations.length > 0 || mixDatas.bills.length > 0;
     }
 
@@ -2013,6 +2016,12 @@ $('#property_ok').click(function () {
                 if(mixDatas.properties.hasOwnProperty('property.projectFeature')){
                     projFeatureView.orgDatas = projFeatureView.toViewDatas(mixDatas.properties['property.projectFeature']);
                 }
+                if(mixDatas.options && mixDatas.options.updateData){
+                    let v1 = mixDatas.options.updateData['rationQuanACToBillsQuan'],
+                        v2 = mixDatas.options.updateData['rationQuanACToRationUnit'];
+                    optionsOprObj.updateOptions(optionsOprObj.options, {type: optionsOprObj.optionsTypes.GENERALOPTS, opt: 'rationQuanACToBillsQuan', value: v1});
+                    optionsOprObj.updateOptions(optionsOprObj.options, {type: optionsOprObj.optionsTypes.GENERALOPTS, opt: 'rationQuanACToRationUnit', value: v2});
+                }
             }
         });
     }

+ 8 - 9
web/building_saas/pm/html/project-management.html

@@ -62,24 +62,23 @@
                             </div>
                         </div>
                     </div>
-                    <ul class="nav nav-pills flex-column">
-                        <li class="nav-item" title="全部">
-                            <a class="nav-link active" href="#pm_all" role="tab" id="tab_pm_all" data-toggle="tab" title="全部"><i class="fa fa-bars"></i></a>
+                    <ul class="nav nav-pills flex-column" id="sideTab">
+                        <li class="nav-item" data-original-title="全部" data-placement="right" data-toggle="tooltip">
+                            <a class="nav-link active" href="#pm_all" role="tab" id="tab_pm_all" data-toggle="tab"><i class="fa fa-bars"></i></a>
                         </li>
-                        <li class="nav-item" title="最近使用">
-                            <!-- data-toggle="tooltip" data-placement="right" data-original-title="最近使用"-->
+                        <li class="nav-item" data-original-title="最近使用" data-placement="right" data-toggle="tooltip">
                             <a class="nav-link" href="javascript:void(0);"><i class="fa fa-bookmark"></i></a>
                         </li>
-                        <li class="nav-item" title="分享">
+                        <li class="nav-item" data-original-title="分享" data-placement="right" data-toggle="tooltip">
                             <a class="nav-link" href="#pm_share" id="tab_pm_share" data-toggle="tab"><i class="fa fa-share-alt"></i></a>
                         </li>
-                        <li class="nav-item" title="协同工作">
+                        <li class="nav-item" data-original-title="协同工作" data-placement="right" data-toggle="tooltip">
                             <a class="nav-link" href="javascript:void(0);"><i class="fa fa-users"></i></a>
                         </li>
-                        <li class="nav-item" title="归档">
+                        <li class="nav-item" data-original-title="归档" data-placement="right" data-toggle="tooltip">
                             <a class="nav-link" href="javascript:void(0);"><i class="fa fa-book"></i></a>
                         </li>
-                        <li class="nav-item" title="回收站">
+                        <li class="nav-item" data-original-title="回收站" data-placement="right" data-toggle="tooltip">
                             <a class="nav-link" href="#pm_gc" id="tab_pm_gc" data-toggle="tab"><i class="fa fa-trash"></i></a>
                         </li>
                     </ul>

+ 4 - 0
web/building_saas/pm/js/pm_newMain.js

@@ -1061,6 +1061,10 @@ const projTreeObj = {
 };
 
 $(document).ready(function() {
+    $('#sideTab').find('li').click(function () {
+       //消除tooltip
+        $('[data-toggle="tooltip"]').tooltip('hide');
+    });
     //列宽随着屏幕改变
     $(window).resize(function () {
         //autoPmWdith(projTreeObj.workBook, projTreeObj.setting.header);

+ 62 - 42
web/common/html/header.html

@@ -3,10 +3,10 @@
         <div class="v-title">纵横云计价</div>
         <div class="p-title"><%= versionName %></div>
     </a>
-    <ul class="nav navbar-nav px-1" id="header-menu" style="display: none;">
-        <li class="nav-item">
-            <a class="nav-link" href="#" aria-expanded="false" data-toggle="modal" data-target="#poj-set"><i class="fa fa-cube"></i> 项目属性</a>
-        </li>
+    <div  class="navbar-text navbar-crumb px-1" id="fullpath">
+
+    </div>
+<!--    <ul class="nav navbar-nav">
         <li class="nav-item dropdown">
             <a class="nav-link dropdown-toggle" href="javascript:void(0);" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa  fa-cloud-upload"></i> 导入</a>
             <div class="dropdown-menu">
@@ -14,49 +14,69 @@
                 <a id="uploadGld" class="dropdown-item" href="#import" data-toggle="modal" data-target="#import">导入广联达算量Excel清单</a>
             </div>
         </li>
-        <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-wrench"></i> 工具</a>
-            <div class="dropdown-menu">
-                <!--<a class="dropdown-item" href="/complementaryRation/main">定额库编辑器</a>-->
-                <a class="dropdown-item" href="javascript:void(0);" aria-expanded="false" data-toggle="modal" data-target="#opts-set"><i class="fa fa-sliders"></i> 选项</a>
-                <a id="compleRationLib" class="dropdown-item" href="javascript:void(0);" data-toggle="modal" data-target="#comple-ration">定额库编辑器</a>
-                <a id="compleGljLib" class="dropdown-item" href="javascript:void(0);">人材机库编辑器</a>
-            </div>
-        </li>
-        <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-question-circle-o"></i> 帮助</a>
-            <div class="dropdown-menu">
-                <a class="dropdown-item" href="#">帮助</a>
-                <a class="dropdown-item" href="#">升级说明</a>
-                <a class="dropdown-item" href="#">重庆市2008定额说明</a>
-                <a class="dropdown-item" href="#">纵横官网</a>
-                <a class="dropdown-item" href="#">动画教程</a>
-                <a class="dropdown-item" href="#">联系客服</a>
-                <a class="dropdown-item" href="#">关于</a>
-            </div>
-        </li>
-    </ul>
-    <div class="navbar-text navbar-crumb p-0" id="fullpath">
-        <% if (action !== 'index' || controller !== 'pm') {%>
-        <!--<span class="text-truncate"><a href="/pm">项目管理</a></span>-->
-        <% } %>
-    </div>
+    </ul>-->
     <div id="testDisplay" style="color:#ff7e0e;">&nbsp;&nbsp;</div>
     <div class="ml-auto navbar-text p-0">
-        <div class="dropdown d-inline-block navbar-nav">
-            <button class="btn btn-link btn-sm dropdown-toggle" type="button" data-toggle="dropdown"><%= sessionUser.real_name === '' ? sessionUser.mobile : sessionUser.real_name %></button>
-            <div class="dropdown-menu dropdown-menu-right">
-                <a class="dropdown-item" href="/user/info" target="_blank">账号资料</a>
-                <a class="dropdown-item" href="user-buy.html" target="_blank">产品购买</a>
-                <a class="dropdown-item" href="/user/preferences" target="_blank">登录设置</a>
+        <ul class="nav navbar-nav">
+            <li class="nav-item dropdown">
+                <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown"><%= sessionUser.real_name === '' ? sessionUser.mobile : sessionUser.real_name %></a>
+                <div class="dropdown-menu dropdown-menu-right">
+                    <a class="dropdown-item" href="/user/info" target="_blank">账号资料</a>
+                    <a class="dropdown-item" href="user-buy.html" target="_blank">产品购买</a>
+                    <a class="dropdown-item" href="/user/preferences" target="_blank">登录设置</a>
+                    <div class="dropdown-divider"></div>
+                    <a class="dropdown-item" href="/logout">退出登录</a>
+                </div>
+            </li>
+            <% if (action === 'index' && controller === 'main') {%>
+            <li class="nav-item dropdown">
+                <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-wrench"></i> 工具</a>
+                <div class="dropdown-menu dropdown-menu-right">
+                    <a id="compleRationLib" class="dropdown-item" href="javascript:void(0);" data-toggle="modal" data-target="#comple-ration">定额库编辑器</a>
+                    <a id="compleGljLib" class="dropdown-item" href="/complementaryGlj" target="_">人材机库编辑器</a>
+                </div>
+            </li>
+            <% } %>
+            <li class="nav-item dropdown">
+                <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-question-circle-o"></i> 帮助</a>
+                <div class="dropdown-menu dropdown-menu-right">
+                    <a class="dropdown-item" href="#">帮助</a>
+                    <a class="dropdown-item" href="#">升级说明</a>
+                    <a class="dropdown-item" href="#">重庆市2008定额说明</a>
+                    <a class="dropdown-item" href="#">纵横官网</a>
+                    <a class="dropdown-item" href="#">动画教程</a>
+                    <a class="dropdown-item" href="#">联系客服</a>
+                    <a class="dropdown-item" href="#">关于</a>
+                </div>
+            </li>
+            <li class="nav-item">
+                <a class="nav-link <% if (unreadCount > 0) { %>new-msg<% } %>" id="notify-info" data-toggle="modal" data-target="#msg" href="javacript:void(0);">
+                    <i class="fa fa-envelope-o" aria-hidden="true"></i>&nbsp;<span id="unread-num"><%= unreadCount %></span>
+                </a>
+            </li>
+        </ul>
+    </div>
+</nav>
+<!--弹出补充定额库-->
+<div class="modal fade" id="comple-ration" data-backdrop="static">
+    <div class="modal-dialog modal-lg" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">定额库</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-auto-height">
+                <table class="table table-hover table-bordered">
+                    <thead><tr><th>定额库名称</th></tr></thead>
+                    <tbody id="comple_ration_table">
+                    </tbody>
+                </table>
             </div>
         </div>
-        <a class="btn btn-link btn-sm <% if (unreadCount > 0) { %>new-msg<% } %>" id="notify-info" data-toggle="modal" data-target="#msg" href="javacript:void(0);">
-            <i class="fa fa-envelope-o" aria-hidden="true"></i>&nbsp;<span id="unread-num"><%= unreadCount %></span>
-        </a>
-        <a class="btn btn-link btn-sm" href="/logout">注销</a>
     </div>
-</nav>
+</div>
 <!--弹出消息-->
 <div class="modal fade" id="msg" data-backdrop="static">
     <div class="modal-dialog modal-lg" role="document">