zhangweicheng 6 years ago
parent
commit
bf3db9e8b2

+ 1 - 1
modules/pm/facade/pm_facade.js

@@ -764,7 +764,7 @@ async function getSummaryInfo(projectIDs){
     if(tenders.length > 0){
     if(tenders.length > 0){
         for(let tender of tenders){
         for(let tender of tenders){
             tenderIDs.push(tender.ID);
             tenderIDs.push(tender.ID);
-            IDMapping[tender.ID] = {totalCost: 0, changeMark:tender.changeMark};//property:tender.property
+            IDMapping[tender.ID] = {totalCost: 0, changeMark:tender.changeMark,property:tender.property};//property:tender.property
         }
         }
         //需要获取的清单固定类别综合合价:总造价
         //需要获取的清单固定类别综合合价:总造价
         let needFlags = [billsFlags.TOTAL_COST];
         let needFlags = [billsFlags.TOTAL_COST];

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

@@ -28,7 +28,8 @@ import {
     projectFeature,
     projectFeature,
     displaySetting,
     displaySetting,
     calcOptions,
     calcOptions,
-    tenderSetting
+    tenderSetting,
+    bookmarkSetting
 } from './project_property_template';
 } from './project_property_template';
 import optionSetting from '../../options/models/optionTypes';
 import optionSetting from '../../options/models/optionTypes';
 import fixedFlag from '../../common/const/bills_fixed';
 import fixedFlag from '../../common/const/bills_fixed';
@@ -203,6 +204,8 @@ ProjectsDAO.prototype.updateUserProjects = async function (userId, compilationId
                     data.updateData.property.lockBills = false;
                     data.updateData.property.lockBills = false;
                     //工料机单价调整系数
                     //工料机单价调整系数
                     data.updateData.property.tenderSetting = tenderSetting;
                     data.updateData.property.tenderSetting = tenderSetting;
+                    //书签和批注
+                    data.updateData.property.bookmarkSetting =  bookmarkSetting;
                 }
                 }
 
 
                 newProject = new Projects(data.updateData);
                 newProject = new Projects(data.updateData);

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

@@ -139,4 +139,17 @@ const projectFeature = [
     {dispName: '门窗材料及装饰', key: 'doorsWindowsMaterial', value: ''}
     {dispName: '门窗材料及装饰', key: 'doorsWindowsMaterial', value: ''}
 ];
 ];
 
 
-export {defaultDecimal, billsQuantityDecimal, basicInformation, projectFeature,displaySetting,calcOptions,tenderSetting};
+const bookmarkSetting = {
+    settingList :[
+        {background:"E2F2C5",describe:""},
+        {background:"F9E2CF",describe:""},
+        {background:"F2EFD9",describe:""},
+        {background:"F5D1DA",describe:""},
+        {background:"E3E3E3",describe:""},
+        {background:"B6F3F2",describe:""},
+        {background:"ECE0F5",describe:""}
+    ],
+    selected:"E2F2C5"
+};
+
+export {defaultDecimal, billsQuantityDecimal, basicInformation, projectFeature,displaySetting,calcOptions,tenderSetting,bookmarkSetting};

+ 4 - 1
public/web/gljUtil.js

@@ -357,12 +357,15 @@ let gljUtil = {
     },
     },
     //是否从混凝土改成商品混凝土,并且混凝土的定额消耗量不为空,则原混凝土的自定义消耗改成0,插入一条新的商品混凝土自定义消耗量为原自定义或定额消耗
     //是否从混凝土改成商品混凝土,并且混凝土的定额消耗量不为空,则原混凝土的自定义消耗改成0,插入一条新的商品混凝土自定义消耗量为原自定义或定额消耗
     isAddCommercialForReplace:function (oldType,newType,rationItemQuantity) {
     isAddCommercialForReplace:function (oldType,newType,rationItemQuantity) {
-        return gljUtil.isConcreteType(oldType)&&gljUtil.isCommercialConcreteType(newType)&&rationItemQuantity&&rationItemQuantity!='0';
+        return gljUtil.isConcreteToCommercialConcrete(oldType,newType)&&rationItemQuantity&&rationItemQuantity!='0';
     },
     },
     isMaterialType:function (type) {
     isMaterialType:function (type) {
        let materialType = [gljType.GENERAL_MATERIAL,gljType.GREEN_SEEDLING,gljType.PURCHASE_COMPONENT,gljType.COMMERCIAL_CONCRETE,gljType.COMMERCIAL_MORTAR];//可以添加材料计算的类型普通材料”、“绿化苗木”、“外购砼构件”、“商品混凝土”、“商品砂浆”
        let materialType = [gljType.GENERAL_MATERIAL,gljType.GREEN_SEEDLING,gljType.PURCHASE_COMPONENT,gljType.COMMERCIAL_CONCRETE,gljType.COMMERCIAL_MORTAR];//可以添加材料计算的类型普通材料”、“绿化苗木”、“外购砼构件”、“商品混凝土”、“商品砂浆”
         return materialType.indexOf(type)!= -1
         return materialType.indexOf(type)!= -1
     },
     },
+    isConcreteToCommercialConcrete:function (oldType,newType) {
+        return gljUtil.isConcreteType(oldType)&&gljUtil.isCommercialConcreteType(newType)
+    },
     hasComposition:function (ration_glj,isRationType) {//判断是否有组成物,有则返回true   现在主材类型的工料机也有可能有组成物。
     hasComposition:function (ration_glj,isRationType) {//判断是否有组成物,有则返回true   现在主材类型的工料机也有可能有组成物。
         let type = isRationType==true? ration_glj.subType:ration_glj.type;
         let type = isRationType==true? ration_glj.subType:ration_glj.type;
         if(gljUtil.notEditType.indexOf(type)!=-1||type==gljType.MAIN_MATERIAL){
         if(gljUtil.notEditType.indexOf(type)!=-1||type==gljType.MAIN_MATERIAL){

+ 0 - 1
public/web/slideResize.js

@@ -118,7 +118,6 @@ const SlideResize = (function() {
             let cache = getLocalCache(`${module}${ele.attr('id')}Width`);
             let cache = getLocalCache(`${module}${ele.attr('id')}Width`);
             if (cache) {
             if (cache) {
                 ele.css('width', cache);
                 ele.css('width', cache);
-                console.log(ele)
             }
             }
         }
         }
         for (let resize of resizes) {
         for (let resize of resizes) {

+ 82 - 26
web/building_saas/main/html/main.html

@@ -160,7 +160,7 @@
                           </li>
                           </li>
 
 
                           <li class="nav-item dropdown">
                           <li class="nav-item dropdown">
-                              <a class="nav-link dropdown-toggle more" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false" style="display: none;">更多</a>
+                              <a class="nav-link dropdown-toggle more" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false" >更多</a>
                               <div class="dropdown-menu" id="div_more_dropdown_right">
                               <div class="dropdown-menu" id="div_more_dropdown_right">
                                   <a class="dropdown-item  right-nav-link"  href="javascript:void(0)" id = 'locateTab' relaPanel="#locate">查找定位</a>
                                   <a class="dropdown-item  right-nav-link"  href="javascript:void(0)" id = 'locateTab' relaPanel="#locate">查找定位</a>
                                   <!--<a class="dropdown-item" data-toggle="tab" href="#sqpz" role="tab">书签批注</a>-->
                                   <!--<a class="dropdown-item" data-toggle="tab" href="#sqpz" role="tab">书签批注</a>-->
@@ -352,9 +352,9 @@
                                                   <input class="form-check-input" type="radio" name="content_type" id="raion_glj" value="ration_glj">
                                                   <input class="form-check-input" type="radio" name="content_type" id="raion_glj" value="ration_glj">
                                                   <label class="form-check-label" for="raion_glj">工料机</label>
                                                   <label class="form-check-label" for="raion_glj">工料机</label>
                                               </div>
                                               </div>
-                                              <!--<div class="form-check form-check-inline">
-                                                  <input class="form-check-input" type="radio" name="inlineRadioOptions" id="bookmark" value="option4">
-                                                  <label class="form-check-label" for="bookmark">书签注</label>
+                                          <!--    <div class="form-check form-check-inline">
+                                                  <input class="form-check-input" type="radio" name="content_type" id="bookmark" value="bookmark">
+                                                  <label class="form-check-label" for="bookmark">书签注</label>
                                               </div>-->
                                               </div>-->
                                           </div>
                                           </div>
                                           <!--搜索分项/清单 出现-->
                                           <!--搜索分项/清单 出现-->
@@ -366,32 +366,88 @@
                                           </div>
                                           </div>
                                       </div>
                                       </div>
                                   </div>
                                   </div>
-                                  <!--上下结构-->
-                                  <div class="top-content" id="locateTopDiv" style="overflow: hidden">
-                                      <div class="" id="locate_result" >
+                                  <div id="aboutLocateDiv">
+                                      <!--上下结构-->
+                                      <div class="top-content" id="locateTopDiv" style="overflow: hidden">
+                                          <div class="" id="locate_result" >
+                                          </div>
+                                      </div>
+                                      <div class="resize-y" id="locate_resize"></div>
+                                      <div class="bottom-content" id="locateBottomDiv">
+                                          <div class="" id="locate_sub"></div>
                                       </div>
                                       </div>
                                   </div>
                                   </div>
-                                  <div class="resize-y" id="locate_resize"></div>
-                                  <div class="bottom-content" id="locateBottomDiv">
-                                      <div class="" id="locate_sub"></div>
-                                  </div>
-                                <!--  <div class="main-data-side-y">
-                                      <table class="table table-sm table-bordered">
-                                          <tr><th>编码</th><th>项目名称</th><th>工程量</th><th>单位</th><th>综合单价</th><th>综合合价</th></tr>
-                                      </table>
-                                  </div>
-                                  <div class="sidebar-bottom container-fluid">
-                                      <div class="row">
-                                          <div class="col-lg-12">
-                                              <table class="table table-sm table-bordered">
-                                                  <tr><th>定额编号</th><th>定额名称</th></tr>
-                                                  <tr><td>AA0047</td><td>人工沟槽 较硬岩 槽深4m以内</td></tr>
-                                                  <tr><td>AA0005</td><td>人工挖沟槽土方 槽深4m以内</td></tr>
-                                              </table>
+                                  <div id="aboutBookmarkDiv" style="display: none">
+                                      <!--上下结构-->
+                                      <div id="bookmarkTopDiv">
+                                          <div class="sidebar-tools-bar container-fluid tools-bar-height-q">
+                                              <div class="p-1 row" style="padding-top:0px!important">
+                                                  <div class="dropdown" id="bookmarkSettingDropdown">
+                                                      <button class="btn btn-sm btn-primary dropdown-toggle" type="button" data-toggle="dropdown">
+                                                          书签设置
+                                                      </button>
+                                                      <form class="dropdown-menu p-2" id = "bookmarkSettingForm" onsubmit="return false;">
+                                                          <input type="hidden" id="bookmarkSelected">
+                                                          <div id="bookmarkSettingList">
+                                                              <div class="input-group input-group-sm mb-2" style="width:200px">
+                                                                  <div class="input-group-prepend">
+                                                                      <span class="input-group-text annotate-color-1">&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                                                                  </div>
+                                                                  <input type="text" class="form-control" placeholder="描述">
+                                                             </div>
+                                                              <div class="input-group input-group-sm mb-2">
+                                                                  <div class="input-group-prepend">
+                                                                      <span class="input-group-text annotate-color-2">&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                                                                  </div>
+                                                                  <input type="text" class="form-control" id="E2F2C5" placeholder="描述">
+                                                              </div>
+                                                              <div class="input-group input-group-sm mb-2">
+                                                                  <div class="input-group-prepend">
+                                                                      <span class="input-group-text annotate-color-3">&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                                                                  </div>
+                                                                  <input type="text" class="form-control" placeholder="描述">
+                                                              </div>
+                                                              <div class="input-group input-group-sm mb-2">
+                                                                  <div class="input-group-prepend">
+                                                                      <span class="input-group-text annotate-color-4">&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                                                                  </div>
+                                                                  <input type="text" class="form-control" placeholder="描述">
+                                                              </div>
+                                                              <div class="input-group input-group-sm mb-2">
+                                                                  <div class="input-group-prepend">
+                                                                      <span class="input-group-text annotate-color-5">&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                                                                  </div>
+                                                                  <input type="text" class="form-control" placeholder="描述">
+                                                              </div>
+                                                              <div class="input-group input-group-sm mb-2">
+                                                                  <div class="input-group-prepend">
+                                                                      <span class="input-group-text annotate-color-6">&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                                                                  </div>
+                                                                  <input type="text" class="form-control" placeholder="描述">
+                                                              </div>
+                                                              <div class="input-group input-group-sm mb-2">
+                                                                  <div class="input-group-prepend">
+                                                                      <span class="input-group-text annotate-color-7">&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                                                                  </div>
+                                                                  <input type="text" class="form-control" placeholder="描述">
+                                                              </div>
+                                                          </div>
+                                                          <button  class="btn btn-sm btn-primary">确定</button>
+                                                      </form>
+                                                  </div>
+                                              </div>
                                           </div>
                                           </div>
+                                          <div class="" id = "bookmarkSpread" style="overflow: hidden"></div>
                                       </div>
                                       </div>
-                                  </div>-->
-
+                                      <div class="resize-y" id="bookmark_resize"></div>
+                                      <div class=" container-fluid" id="annotationDiv">
+                                          <div class="row">
+                                              <div class="col-lg-12" style="padding: 0px" >
+                                                  <textarea class="form-control" id="annotationTextarea"  placeholder = "批注内容"></textarea>
+                                              </div>
+                                          </div>
+                                      </div>
+                                  </div>
                               </div>
                               </div>
 
 
                               <!--清单指引-->
                               <!--清单指引-->

+ 0 - 3
web/building_saas/main/js/models/ration_coe.js

@@ -229,9 +229,6 @@ var ration_coe = {
             }
             }
         };
         };
 
 
-
-
-
         ration_coe.prototype.updateCustomerCoe = function (data) {
         ration_coe.prototype.updateCustomerCoe = function (data) {
             var updateData = this.getUpdateData('ut_update',data.query,data.doc,'updateCustomerCoe');
             var updateData = this.getUpdateData('ut_update',data.query,data.doc,'updateCustomerCoe');
             project.pushNow('updateCustomerCoe',[this.getSourceType()],updateData);
             project.pushNow('updateCustomerCoe',[this.getSourceType()],updateData);

+ 33 - 8
web/building_saas/main/js/views/glj_view.js

@@ -1148,12 +1148,37 @@ var gljOprObj = {
             });//doc.rationID=selected.data.ID;
             });//doc.rationID=selected.data.ID;
         }
         }
     },
     },
-    doReplaceGLJ: function () {
+    concreteTypeReplaceChecking:function (selectCode, oldData,selected) {//selected为空,表示批量替换   混凝土替换前的检查,是否给出确认提示
+        let allGLJ = gljOprObj.AllRecode;
+        let glj = _.find(allGLJ, function (item) {
+            let i_key = gljOprObj.getIndex(item, gljLibKeyArray);
+            return i_key == selectCode;
+        });
+        if(! glj) return false;
+        if(gljUtil.isConcreteToCommercialConcrete(oldData.type,glj.gljType)){//被替换的是混凝土,替换成商品砼或商品砂浆
+            if(selected){ //如果有选中的,说明是替换,还要判断是否有辅助定额, 批量替换不用判断
+                return selected.data.rationAssList && selected.data.rationAssList.length > 0 ? true:false;
+            }
+            return true;
+        }
+        return false;
+    },
+    replaceGLJConfirm:function(mreplace = false){
         let me = this;
         let me = this;
         let oldData = me.sheetData[gljContextMenu.selectedRow];
         let oldData = me.sheetData[gljContextMenu.selectedRow];
-        let project = projectObj.project;
         let selectCode = gljOprObj.GLJSelection[0];
         let selectCode = gljOprObj.GLJSelection[0];
-        let selected = projectObj.project.mainTree.selected;
+        let selected = mreplace == true?null:projectObj.project.mainTree.selected;
+        if(me.concreteTypeReplaceChecking(selectCode, oldData,selected)){
+            hintBox.infoBox('操作确认', '请先调整厚度,再替换商品砼。确定要继续吗?', 2, function () {
+                mreplace == true ? $("#mreplace_next_div").modal('show'):me.doReplaceGLJ(selectCode, oldData,selected);
+            }, null,['确定','取消'],false)
+        }else {
+            mreplace == true ? $("#mreplace_next_div").modal('show'):me.doReplaceGLJ(selectCode, oldData,selected);
+        }
+    },
+    doReplaceGLJ: function (selectCode, oldData,selected) {
+        let me = this;
+        let project = projectObj.project;
         project.ration_glj.replaceGLJ(selectCode, oldData, function (result) {
         project.ration_glj.replaceGLJ(selectCode, oldData, function (result) {
             if (result) {
             if (result) {
                 //result.adjustState;
                 //result.adjustState;
@@ -1185,9 +1210,9 @@ var gljOprObj = {
     },
     },
     doMReplaceGLJ: function () {
     doMReplaceGLJ: function () {
         let me = this;
         let me = this;
-        let oldData = me.sheetData[gljContextMenu.selectedRow];
         let project = projectObj.project;
         let project = projectObj.project;
-        let selectCode = me.GLJSelection[0];
+        let oldData = me.sheetData[gljContextMenu.selectedRow];
+        let selectCode = gljOprObj.GLJSelection[0];
         project.ration_glj.mReplaceGLJ(selectCode, oldData, function (result,updateMap) {
         project.ration_glj.mReplaceGLJ(selectCode, oldData, function (result,updateMap) {
             if(result == null){
             if(result == null){
                 return;
                 return;
@@ -1605,9 +1630,9 @@ $(function () {
         } else if ($('#actionType').val() == 'add') { //添加工料机
         } else if ($('#actionType').val() == 'add') { //添加工料机
             gljOprObj.doAddGLJ();
             gljOprObj.doAddGLJ();
         } else if ($('#actionType').val() == 'replace') {//替换工料机
         } else if ($('#actionType').val() == 'replace') {//替换工料机
-            gljOprObj.doReplaceGLJ();
+            gljOprObj.replaceGLJConfirm(false);
         } else if ($('#actionType').val() == 'm_replace') {//批量替换工料机
         } else if ($('#actionType').val() == 'm_replace') {//批量替换工料机
-            gljOprObj.doMReplaceGLJ();
+            gljOprObj.replaceGLJConfirm(true);
         }else if($('#actionType').val() == 'addMix'){
         }else if($('#actionType').val() == 'addMix'){
             projectGljObject.addMixRatio();
             projectGljObject.addMixRatio();
         }
         }
@@ -1619,7 +1644,7 @@ $(function () {
     });
     });
     $('#replace_next_btn').click(function () {
     $('#replace_next_btn').click(function () {
         $("#glj_tree_div").modal('hide');
         $("#glj_tree_div").modal('hide');
-        $("#mreplace_next_div").modal('show');
+        gljOprObj.replaceGLJConfirm(true);
     });
     });
     $('#class_selected_conf').click(function () {
     $('#class_selected_conf').click(function () {
         var gljClass = $('#selected_class').val();
         var gljClass = $('#selected_class').val();

+ 97 - 16
web/building_saas/main/js/views/locate_view.js

@@ -42,6 +42,29 @@ let locateObject={
         }
         }
     },
     },
     datas:[],
     datas:[],
+    bookMarkSetting:{
+        header:[
+            {headerName: "编码", headerWidth: 120, dataCode: "code", dataType: "String"},
+            {headerName: "书签名称", headerWidth: 200, dataCode: "name", dataType: "String"},
+        ],
+        view: {
+            lockColumns: [0,1],
+            colHeaderHeight:30
+        }
+    },
+    //为了兼容旧项目,这里给个默认值
+    bookmarkPropertySetting:{
+        settingList :[
+            {background:"E2F2C5",describe:""},
+            {background:"F9E2CF",describe:""},
+            {background:"F2EFD9",describe:"hehe"},
+            {background:"F5D1DA",describe:""},
+            {background:"E3E3E3",describe:""},
+            {background:"B6F3F2",describe:""},
+            {background:"ECE0F5",describe:""}
+        ],
+        selected:"E2F2C5"
+    },
     initMainSpread:function(){
     initMainSpread:function(){
         if(!this.mainSpread){
         if(!this.mainSpread){
             this.mainSpread = SheetDataHelper.createNewSpread($("#locate_result")[0],3);
             this.mainSpread = SheetDataHelper.createNewSpread($("#locate_result")[0],3);
@@ -74,26 +97,54 @@ let locateObject={
             this.subSpread.refresh();
             this.subSpread.refresh();
         }
         }
     },
     },
-    refreshWorkBook: function () {
-        if (this.mainSpread) {
-            this.mainSpread.refresh();
-        }
-        if (this.subSpread) {
-            this.subSpread.refresh();
+    initBookmarkSpread:function(){
+        if(!this.bookmarkSpread){
+            this.bookmarkSpread = SheetDataHelper.createNewSpread($("#bookmarkSpread")[0]);
+            sheetCommonObj.spreadDefaultStyle(this.bookmarkSpread);
+            this.initBookmarkSheet();
+           // this.subSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick,this.onSheetDoubleClick);
+        }else {
+            this.bookmarkSpread.refresh();
         }
         }
     },
     },
+    refreshWorkBook: function () {
+        if (this.mainSpread) this.mainSpread.refresh();
+        if (this.subSpread) this.subSpread.refresh();
+        if (this.bookmarkSpread) this.bookmarkSpread.refresh();
+
+    },
     initSubSheet:function () {
     initSubSheet:function () {
         this.subSheet = this.subSpread .getSheet(0);
         this.subSheet = this.subSpread .getSheet(0);
         sheetCommonObj.initSheet( this.subSheet, this.ration_setting);
         sheetCommonObj.initSheet( this.subSheet, this.ration_setting);
         this.subSheet.setRowCount(0);
         this.subSheet.setRowCount(0);
         this.subSheet.name('locate_sub');
         this.subSheet.name('locate_sub');
     },
     },
+    initBookmarkSheet:function () {
+        this.bookmarkSheet = this.bookmarkSpread .getSheet(0);
+        sheetCommonObj.initSheet( this.bookmarkSheet, this.bookMarkSetting);
+        this.bookmarkSheet.setRowCount(0);
+        this.bookmarkSheet.name('bookmark');
+    },
     initOutstanding:function () {
     initOutstanding:function () {
         if(!projectObj.project.property.locateSetting) return;
         if(!projectObj.project.property.locateSetting) return;
         let outstd = projectObj.project.property.locateSetting;
         let outstd = projectObj.project.property.locateSetting;
         $("#outstanding").prop("checked",outstd.outstanding);
         $("#outstanding").prop("checked",outstd.outstanding);
         $("#outInp").val(parseFloat(outstd.outInp));
         $("#outInp").val(parseFloat(outstd.outInp));
     },
     },
+    initBookmarkSetting:function () {
+        $("#bookmarkSettingList").empty();
+        let setting = projectObj.project.property.bookmarkSetting?projectObj.project.property.bookmarkSetting:this.bookmarkPropertySetting;
+        for(let s of setting.settingList){
+            let b = `<div class="input-group input-group-sm mb-2" style="width:200px">
+                          <div class="input-group-prepend">
+                              <span class="input-group-text " style="background: #${s.background}">&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                          </div>
+                          <input type="text" class="form-control" id="${s.background}"  placeholder="描述" value="${s.describe}">
+                     </div>`;
+            $("#bookmarkSettingList").append(b);
+            $("#"+s.background).bind('focus', bookmarkSelected);
+        }
+    },
     showMainData:function (datas,setting) {
     showMainData:function (datas,setting) {
         sheetCommonObj.showData(this.mainSpread.getActiveSheet(),setting,datas);
         sheetCommonObj.showData(this.mainSpread.getActiveSheet(),setting,datas);
         this.mainSpread.getActiveSheet().setRowCount(datas.length);
         this.mainSpread.getActiveSheet().setRowCount(datas.length);
@@ -123,16 +174,26 @@ let locateObject={
         let me = this;
         let me = this;
         let mainHeight = $(window).height()-$(".header").height()-$(".toolsbar").height()-$("#searchPanel").height();
         let mainHeight = $(window).height()-$(".header").height()-$(".toolsbar").height()-$("#searchPanel").height();
         let subHeight = 0;
         let subHeight = 0;
-        $('#locateTopDiv').height(mainHeight);
-        $('#locate_result').height(mainHeight);
-        $('#locateBottomDiv').height(subHeight);
-        $('#locate_sub').height(subHeight - 7);
-        if(options == "ration_glj"){
-            let locateLibResize = getLocateLibResize();
-            SlideResize.loadVerticalHeight(locateLibResize.eleObj.module, locateLibResize.eleObj, locateLibResize.limit, function () {
+        if(options == "bookmark"){
+            let bookMarkLibResize  = getBookmarkResize();
+            loadHeight(bookMarkLibResize);
+        }else {
+            $('#locateTopDiv').height(mainHeight);
+            $('#locate_result').height(mainHeight);
+            $('#locateBottomDiv').height(subHeight);
+            $('#locate_sub').height(subHeight - 7);
+            if(options == "ration_glj"){
+                let locateLibResize = getLocateLibResize();
+                loadHeight(locateLibResize);
+            }
+        }
+
+        function loadHeight(libResize) {
+            SlideResize.loadVerticalHeight(libResize.eleObj.module, libResize.eleObj, libResize.limit, function () {
                 locateObject.refreshWorkBook();
                 locateObject.refreshWorkBook();
             });
             });
         }
         }
+
         if (refreshWorkBook) {
         if (refreshWorkBook) {
             me.refreshWorkBook();
             me.refreshWorkBook();
         }
         }
@@ -144,10 +205,20 @@ let locateObject={
             me.refreshView(options, false);
             me.refreshView(options, false);
             me.initMainSpread();
             me.initMainSpread();
             me.initSubSpread();
             me.initSubSpread();
+            me.initBookmarkSpread();
         };
         };
-        if(options == "bills") me.initOutstanding();
-        options == "bills"?$("#outstandingOptions").show(0,callback):$("#outstandingOptions").hide(0,callback);
-
+        if(options == 'bookmark'){
+            $("#aboutLocateDiv").hide();
+            $("#outstandingOptions").hide();
+            me.initBookmarkSetting();
+            $("#aboutBookmarkDiv").show(0,callback);
+        }else {
+            $("#aboutBookmarkDiv").hide();
+            $("#aboutLocateDiv").show(0,function () {
+                if(options == "bills") me.initOutstanding();
+                options == "bills"?$("#outstandingOptions").show(0,callback):$("#outstandingOptions").hide(0,callback);
+            });
+        }
     },
     },
     findRecodes:function () {
     findRecodes:function () {
         let options = $("input[name='content_type']:checked").val();
         let options = $("input[name='content_type']:checked").val();
@@ -367,3 +438,13 @@ $('#outstanding').change(function(){
     let outStd = $("#outstanding").prop("checked");
     let outStd = $("#outstanding").prop("checked");
     me.updateOutStanding(outStd,scMathUtil.roundForObj(outInp,getDecimal('process')));
     me.updateOutStanding(outStd,scMathUtil.roundForObj(outInp,getDecimal('process')));
 });
 });
+
+$('#bookmarkSettingDropdown').on('shown.bs.dropdown', function showDropdown() {
+    let setting = projectObj.project.property.bookmarkSetting?projectObj.project.property.bookmarkSetting:locateObject.bookmarkPropertySetting;
+    $("#"+setting.selected).focus();
+});
+
+function bookmarkSelected() {
+    console.log("hehe");
+    $("#bookmarkSelected").val($(this)[0].id);
+}

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

@@ -1291,7 +1291,7 @@ var projectObj = {
                         return !project.Ration.canAdd(project.mainTree.selected);
                         return !project.Ration.canAdd(project.mainTree.selected);
                     },
                     },
                     callback: function (key, opt) {
                     callback: function (key, opt) {
-                        project.Ration.addNewRation(null,rationType.ration,projectObj.selectColAndFocus,true);
+                        project.Ration.addNewRation(null,rationType.ration,projectObj.selectColAndFocus,false);
                        // ProjectController.addRation(project, controller, rationType.ration);
                        // ProjectController.addRation(project, controller, rationType.ration);
                     }/*,
                     }/*,
                     visible: function(key, opt){
                     visible: function(key, opt){
@@ -1396,6 +1396,23 @@ var projectObj = {
                         return false;
                         return false;
                     }
                     }
                 },
                 },
+                "setBookMark": {
+                    name: '设置/取消书签批注',
+                    icon: 'fa-flag',
+                    disabled: function () {
+                        if (projectReadOnly) {
+                            return true;
+                        }
+                        return false
+                    },
+                    callback: function () {
+                        $("#locateTab").click();
+                    },
+                    visible:function(){
+                        return false;
+                    }
+
+                },
                 "delete": {
                 "delete": {
                     name: '删除',
                     name: '删除',
                     icon: 'fa-remove',
                     icon: 'fa-remove',

+ 26 - 0
web/building_saas/main/js/views/side_tools.js

@@ -95,6 +95,32 @@ SlideResize.verticalSlide(locateLibResize.eleObj, locateLibResize.limit, functio
     locateObject.refreshWorkBook();
     locateObject.refreshWorkBook();
 });
 });
 
 
+
+function getBookmarkResize() {
+    let resizeObj = {};
+    resizeObj.eleObj = {
+        module: 'bookmark',
+        resize: $('#bookmark_resize'),
+        top: $('#bookmarkTopDiv'),
+        topSpread: $('#bookmarkSpread'),
+        bottom: $('#annotationDiv'),
+        bottomSpread: $('#annotationTextarea')
+    };
+    resizeObj.limit = {
+        min: 150,
+        max: `$(window).height()-$('.header').height()-$('.toolsbar').height()-$('#searchPanel').height()-100-5`,//5: resize.height()
+        notTopSpread: 35,
+        notBottomSpread: 15,
+        totalHeight: `$(window).height()-$('.header').height()-$('.toolsbar').height()-$('#searchPanel').height()-5`//5: resize.height()
+    };
+    return resizeObj;
+}
+
+let bookMarkLibResize = getBookmarkResize();
+SlideResize.verticalSlide(bookMarkLibResize.eleObj, bookMarkLibResize.limit, function () {
+    locateObject.refreshWorkBook();
+});
+
 // 块模板库上下拖动(上中)
 // 块模板库上下拖动(上中)
 let blockLibTopMid = {};
 let blockLibTopMid = {};
 blockLibTopMid.eleObj = {
 blockLibTopMid.eleObj = {

+ 2 - 2
web/building_saas/pm/js/pm_newMain.js

@@ -341,7 +341,7 @@ const projTreeObj = {
         },
         },
         exportProject: {
         exportProject: {
             name: "导出建设项目",
             name: "导出建设项目",
-            icon: 'fa-external-link',
+            icon: 'fa-cloud-download',
             disabled: function () {
             disabled: function () {
                 let selectedItem = projTreeObj.tree.selected;
                 let selectedItem = projTreeObj.tree.selected;
                 return !(selectedItem && selectedItem.data.projType === projectType.project);
                 return !(selectedItem && selectedItem.data.projType === projectType.project);
@@ -356,7 +356,7 @@ const projTreeObj = {
         },
         },
         importProject:{
         importProject:{
             name: "导入建设项目",
             name: "导入建设项目",
-            icon: 'fa-external-link',
+            icon: 'fa-upload',
             disabled: function () {
             disabled: function () {
                 let selectedItem = projTreeObj.tree.selected;
                 let selectedItem = projTreeObj.tree.selected;
                 if(selectedItem){
                 if(selectedItem){