Browse Source

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

TonyKang 8 years ago
parent
commit
7ea2322d2b

+ 2 - 0
modules/ration_repository/controllers/coe_controller.js

@@ -21,7 +21,9 @@ module.exports ={
     },
 
     getCoeItemsByIDs: function(req,res){
+        //console.log('传入: '+JSON.stringify(JSON.parse(req.body.data)));
         coeList.getCoeItemsByIDs(JSON.parse(req.body.data), function(err,data){
+            //console.log('返回: '+JSON.stringify(data));
             callback(req, res, err, 'Get coe', data);
         });
     }

+ 15 - 1
modules/ration_repository/models/ration_item.js

@@ -12,6 +12,19 @@ var rationGljItemSchema = mongoose.Schema({
     consumeAmt: Number,
     proportion: Number //配合比,暂时无需使用,默认0
 }, { _id: false });
+
+var rationAssItemSchema = mongoose.Schema({
+    name: String,
+    assistID: Number,
+    assistCode: String,
+    stdValue: String,
+    stepValue: String,
+    decimal: Number,
+    carryBit: String,
+    minValue: String,
+    maxValue: String
+}, { _id: false });
+
 var rationItemSchema = mongoose.Schema({
     ID:Number,
     code: String,
@@ -23,7 +36,8 @@ var rationItemSchema = mongoose.Schema({
     caption: String,
     feeType: Number,
     rationGljList: [rationGljItemSchema],
-    rationCoeList: Array
+    rationCoeList: Array,
+    rationAssList: [rationAssItemSchema]
 });
 var rationItemModel = db.model("rationItems",rationItemSchema, "rationItems")
 var counter = require('../../../public/counter/counter');

+ 2 - 5
public/web/sheet_creater.js

@@ -12,22 +12,19 @@ sheetObj = {
         var me = this;
         me.spread = new GC.Spread.Sheets.Workbook(container, {sheetCount:1});
         me.spread.suspendPaint();
-
         me.spread.options.tabStripVisible = false;
         me.spread.options.showHorizontalScrollbar = false;
-
         var sheet = me.spread.getSheet(0);
         var sheetArea = GC.Spread.Sheets.SheetArea;
         sheet.setRowCount(20, sheetArea.viewport);
-        sheet.setRowHeight(0, 30, sheetArea.colHeader);
+        sheet.setRowHeight(0, 25, sheetArea.colHeader);
         sheet.autoGenerateColumns = false;
         sheet.setDataSource(datas);
         sheet.addRows(sheet.getRowCount(), 1);      // 扩展1行,用于直接输入以新增记录。
         sheet.bindColumns(colDef);
         me.setColAlign(colDef);
         me.lockCols(colDef);
-        me.setRowHeight(datas, 25);
-
+        me.setRowHeight(datas, 23);
         me.spread.resumePaint();
         return me.spread;
     },

+ 6 - 2
web/maintain/ration_repository/css/main.css

@@ -74,7 +74,7 @@ body {
 }
 .main-side {
     border-right: 1px solid #ccc;
-    overflow-y: auto;
+    overflow:hidden;
 }
 .main-side .tab-bar {
     padding:5px 10px;
@@ -271,5 +271,9 @@ body {
     overflow:auto;
 }
 .main-data-top,.main-data-bottom,.main-data{
-  overflow: auto;
+  overflow: hidden;
 }
+.modal-fixed-height {
+    height:400px;
+    overflow-y:auto;
+}

+ 24 - 74
web/maintain/ration_repository/dinge.html

@@ -34,7 +34,7 @@
                       <a class="nav-link px-3" id="fuzhu" href="#">附注条件</a>
                   </li>
                   <li class="nav-item">
-                      <a class="nav-link px-3" href="#maz">安装增加费</a>
+                      <a class="nav-link px-3" href="#">安装增加费</a>
                   </li>
               </ul>
         </nav>
@@ -77,84 +77,24 @@
                                   <!-- 标签 -->
                                   <ul class="nav nav-tabs" role="tablist">
                                       <li class="nav-item">
-                                          <a class="nav-link active" id="linkGLJ" data-toggle="tab" href="#bglj" role="tab">工料机</a>
+                                          <a class="nav-link active" id="linkGLJ" data-toggle="tab" href="#rDetail" role="tab">工料机</a>
                                       </li>
                                       <li class="nav-item">
-                                          <a class="nav-link" data-toggle="tab" href="#bfzd" role="tab">辅助定额调整</a>
+                                          <a class="nav-link" id="linkFZDE" data-toggle="tab" href="#rDetail" role="tab">辅助定额调整</a>
                                       </li>
                                       <li class="nav-item">
-                                          <a class="nav-link" id="linkFZTJ" data-toggle="tab" href="#bfzt" role="tab">附注条件调整</a>
+                                          <a class="nav-link" id="linkFZTJ" data-toggle="tab" href="#rDetail" role="tab">附注条件调整</a>
                                       </li>
                                       <li class="nav-item">
-                                          <a class="nav-link" data-toggle="tab" href="#baz" role="tab">安装增加费</a>
-                                      </li>
-                                      <li class="nav-item">
-                                          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<button id="btnGLJ">工料机</button>
-                                      </li>
-                                      <li class="nav-item">
-                                          &nbsp;<button id="btnFZTJ">附注条件</button>
+                                          <!--<a class="nav-link" id="linkAZZJ" data-toggle="tab" href="#" role="tab">安装增加费</a>-->
+                                          <a class="nav-link" href="#">安装增加费</a>
                                       </li>
                                   </ul>
                                   <!-- 内容 -->
                                   <div class="tab-content">
-                                      <!--工料机-->
-                                      <div class="tab-pane active" id="bglj" role="tabpanel">
-                                          <div id="rationGLJSheet" class="main-data-bottom"></div>
-                                      </div>
-                                      <!--辅助定额调整-->
-                                      <div class="tab-pane" id="bfzd" role="tabpanel">
-                                          <div class="main-data-bottom">
-                                              <table class="table table-sm table-bordered m-0">
-                                                  <thead><tr><th width="30"></th><th width="120">调整名称</th><th>序号</th><th>参数最大值</th><th>辅助定额号</th><th>参数名称</th><th>标准值</th><th>步距</th><th>精度</th><th>进位方式</th></tr></thead>
-                                                  <tbody>
-                                                  <tr>
-                                                      <td>1</td><td>运距m</td><td>0</td><td></td><td>AA0012</td><td>运距m</td>
-                                                      <td>20</td><td>20</td><td>0</td><td>四舍五入</td>
-                                                  </tr>
-                                                  <tr>
-                                                      <td>2</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
-                                                  </tr>
-                                                  <tr>
-                                                      <td>3</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
-                                                  </tr>
-                                                  <tr>
-                                                      <td>4</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
-                                                  </tr>
-                                                  </tbody>
-                                              </table>
-                                          </div>
-                                      </div>
-                                      <!--附注条件调整-->
-
-                                      <div class="tab-pane" id="bfzt" role="tabpanel">
-                                          <div id="rationCoeSpread" class="main-data-bottom"></div>
-                                          <!--<div class="main-data-bottom">
-                                              <table class="table table-sm table-bordered m-0">
-                                                  <thead><tr><th width="30"></th><th width="40">编号</th><th width="120">本分项全部适用</th><th>调整顺序</th><th>名称</th><th>内容</th></tr></thead>
-                                                  <tbody>
-                                                  <tr>
-                                                      <td>1</td><td>1</td><td><label class="form-check-label"><input type="checkbox" class="form-check-input" checked></label></td><td>2</td><td>挖湿土时</td><td>人工x1.18</td>
-                                                  </tr>
-                                                  <tr>
-                                                      <td>2</td><td></td><td></td><td></td><td></td><td></td>
-                                                  </tr>
-                                                  <tr>
-                                                      <td>3</td><td></td><td></td><td></td><td></td><td></td>
-                                                  </tr>
-                                                  <tr>
-                                                      <td>4</td><td></td><td></td><td></td><td></td><td></td>
-                                                  </tr>
-                                                  </tbody>
-                                              </table>
-                                          </div>-->
+                                      <div class="tab-pane active" id="rDetail" role="tabpanel">
+                                          <div id="rdSpread" class="main-data-bottom"></div>
                                       </div>
-                                      <!--安装增加费-->
-                                      <div class="tab-pane" id="baz" role="tabpanel">
-                                          <div class="main-data-bottom">
-                                              安装增加费
-                                          </div>
-                                      </div>
-
                                   </div>
                               </div>
                           </div>
@@ -515,8 +455,9 @@
         <script type="text/javascript" src="/public/web/sheet/sheet_common.js"></script>
         <script type="text/javascript" src="/web/maintain/ration_repository/js/ration.js"></script>
         <script type="text/javascript" src="/web/maintain/ration_repository/js/ration_glj.js"></script>
-        <script type="text/javascript" src="/public/web/sheet_creater.js"></script>
+        <script type="text/javascript" src="/public/web/sheet/sheet_creater.js"></script>
         <script type="text/javascript" src="/web/maintain/ration_repository/js/ration_coe.js"></script>
+        <script type="text/javascript" src="/web/maintain/ration_repository/js/ration_assist.js"></script>
         <script type="text/javascript" src="/public/web/treeDataHelper.js"></script>
         <script type="text/javascript" src="/public/web/QueryParam.js"></script>
         <script type="text/javascript" src="/public/web/storageUtil.js"></script>
@@ -565,19 +506,28 @@
                 sheetCommonObj.shieldAllCells(rationOprObj.workBook.getSheet(0), rationOprObj.setting);
 
                // tabPanel 下有多个Spread时,相互之间不能正确显示。改成一个Spread下多个Sheet。
-                var rdSpread = sheetCommonObj.createSpread($("#rationGLJSheet")[0], 3);
+                var rdSpread = sheetCommonObj.createSpread($("#rdSpread")[0], 3);
                 rationGLJOprObj.buildSheet(rdSpread.getSheet(0));
                 sheetCommonObj.shieldAllCells(rdSpread.getSheet(0), rationGLJOprObj.setting);
-                rationCoeOprObj.buildSheet(rdSpread.getSheet(1));
-                sheetCommonObj.shieldAllCells(rdSpread.getSheet(1), rationCoeOprObj.setting);
 
-                $("#btnGLJ").click(function(){
+                rationAssistOprObj.buildSheet(rdSpread.getSheet(1));
+                sheetCommonObj.shieldAllCells(rdSpread.getSheet(1), rationAssistOprObj.setting);
+
+                rationCoeOprObj.buildSheet(rdSpread.getSheet(2));
+                sheetCommonObj.shieldAllCells(rdSpread.getSheet(2), rationCoeOprObj.setting);
+
+                $("#linkGLJ").click(function(){
                     rdSpread.setActiveSheetIndex(0);
                 });
 
-                $("#btnFZTJ").click(function(){
+                $("#linkFZDE").click(function(){
                     rdSpread.setActiveSheetIndex(1);
                 });
+
+                $("#linkFZTJ").click(function(){
+                    rdSpread.setActiveSheetIndex(2);
+                });
+
             });
         </script>
     </div>

+ 8 - 136
web/maintain/ration_repository/fuzhu.html

@@ -47,138 +47,10 @@
             <div class="container-fluid">
                 <div class="row">
                   <div class="main-side col-lg-7 p-0">
-                    <div class="main-data" id="mainSpread" style="height: 600px;">
-                   <!-- <table class="table table-sm table-bordered m-0">
-                      <thead>
-                        <tr>
-                          <th></th>
-                          <th>编号</th>
-                          <th>名称</th>
-                          <th>内容</th>
-                        </tr>
-                      </thead>
-                      <tbody>
-                        <tr class="table-active">
-                          <td>1</td>
-                          <td>1</td>
-                          <td>挖湿土时</td>
-                          <td>人工×1.18</td>
-                        </tr>
-                        <tr>
-                          <td>2</td>
-                          <td>2</td>
-                          <td>深2m以内</td>
-                          <td>人工×2.63</td>
-                        </tr>
-                        <tr>
-                          <td>3</td>
-                          <td>3</td>
-                          <td>深4m以内</td>
-                          <td>人工×14.71</td>
-                        </tr>
-                        <tr>
-                          <td>4</td>
-                          <td>4</td>
-                          <td>深6m以内</td>
-                          <td>人工×26.72</td>
-                        </tr>
-                        <tr>
-                          <td>5</td>
-                          <td></td>
-                          <td></td>
-                          <td></td>
-                        </tr>
-                        <tr>
-                          <td>6</td>
-                          <td></td>
-                          <td></td>
-                          <td></td>
-                        </tr>
-                        <tr>
-                          <td>7</td>
-                          <td></td>
-                          <td></td>
-                          <td></td>
-                        </tr>
-                      </tbody>
-                    </table>-->
-                    </div>
+                    <div class="main-data" id="mainSpread"  style="height:1000px;"></div>
                   </div>
                   <div class="main-content col-lg-5 p-0">
-                      <div id="contentSpread" style="height: 400px; margin-left:4px;margin-right:4px;" />
-                    <!--<div class="m-2">
-                      <p><div class="form-check"><label class="form-check-label"><input type="radio" class="form-check-input" name="optionsRadios" id="optionsRadios1" value="option1" checked> 工料机整体调整</label>&nbsp;&nbsp;<label class="form-check-label"><input type="radio" class="form-check-input" name="optionsRadios" id="optionsRadios1" value="option1"> 单个工料机调整</label></div></p>
-                    </div>
-                    <table class="table table-sm table-bordered m-0">
-                      <thead>
-                        <tr>
-                          <th>名称</th>
-                          <th>操作符</th>
-                          <th>数量</th>
-                        </tr>
-                      </thead>
-                      <tbody>
-                        <tr>
-                          <td>人工</td>
-                          <td>*</td>
-                          <td>1.18</td>
-                        </tr>
-                        <tr>
-                          <td>材料</td>
-                          <td></td>
-                          <td></td>
-                        </tr>
-                        <tr>
-                          <td>机械</td>
-                          <td></td>
-                          <td></td>
-                        </tr>
-                      </tbody>
-                    </table>
-                    <div class="m-2">
-                      <p><div class="form-check"><label class="form-check-label"><input type="radio" class="form-check-input" name="optionsRadios1" id="optionsRadios" value="option1"> 工料机整体调整</label>&nbsp;&nbsp;<label class="form-check-label"><input type="radio" class="form-check-input" name="optionsRadios1" id="optionsRadios" value="option1" checked> 单个工料机调整</label></div></p>
-                    </div>
-                    <table class="table table-sm table-bordered m-0">
-                      <thead>
-                        <tr>
-                          <th></th>
-                          <th>编码</th>
-                          <th>名称</th>
-                          <th>操作符</th>
-                          <th>数量</th>
-                        </tr>
-                      </thead>
-                      <tbody>
-                        <tr>
-                          <td>1</td>
-                          <td>00010201</td>
-                          <td>人工</td>
-                          <td>*</td>
-                          <td>1.18</td>
-                        </tr>
-                        <tr>
-                          <td>2</td>
-                          <td></td>
-                          <td></td>
-                          <td></td>
-                          <td></td>
-                        </tr>
-                        <tr>
-                          <td>3</td>
-                          <td></td>
-                          <td></td>
-                          <td></td>
-                          <td></td>
-                        </tr>
-                        <tr>
-                          <td>4</td>
-                          <td></td>
-                          <td></td>
-                          <td></td>
-                          <td></td>
-                        </tr>
-                      </tbody>
-                    </table>-->
+                      <div class="main-data" id="contentSpread" style="height:1000px;"></div>
                   </div>
                 </div>
             </div>
@@ -198,13 +70,13 @@
     <script type="text/javascript" src="/lib/ztree/jquery.ztree.exedit.js"></script>
     <script type="text/javascript" src="/public/web/treeDataHelper.js"></script>
     <script type="text/javascript" src="/public/web/QueryParam.js"></script>
-    <script src="/public/web/sheet_creater.js"></script>
+    <script src="/public/web/sheet/sheet_creater.js"></script>
     <script src="/public/common_util.js"></script>
     <script src="/public/debug.js"></script>
     <script type="text/javascript" src="/public/web/storageUtil.js"></script>
     <script type="text/javascript" src="/web/maintain/ration_repository/js/coe.js"></script>
-    <SCRIPT type="text/javascript">
-  		<!--
+   <!-- <SCRIPT type="text/javascript">
+  		&lt;!&ndash;
   		var setting = {
   			view: {
   				showIcon: false
@@ -255,11 +127,11 @@
   		$(document).ready(function(){
   			$.fn.zTree.init($("#treeDemo"), setting, zNodes);
   		});
-  		//-->
-  	</SCRIPT>
+  		//&ndash;&gt;
+  	</SCRIPT>-->
 </body>
 <script type="text/javascript">
-//    autoFlashHeight();
+    autoFlashHeight();
 </script>
 
 </html>

+ 17 - 13
web/maintain/ration_repository/js/ration.js

@@ -46,26 +46,27 @@ var rationOprObj = {
     onCellClick: function(sender, args) {
         var me = rationOprObj,
             sheetGLJ = rationGLJOprObj.sheet, settingGLJ = rationGLJOprObj.setting,
-            sheetCoe = rationCoeOprObj.sheet, settingCoe = rationCoeOprObj.setting;
-        if(args.sheetArea === GC.Spread.Sheets.SheetArea.colHeader || args.sheetArea === GC.Spread.Sheets.SheetArea.corner){
-            sheetCommonObj.cleanSheet(sheetGLJ, settingGLJ, -1);
-            sheetCommonObj.shieldAllCells(sheetGLJ);
-            sheetCommonObj.cleanSheet(sheetCoe, settingCoe, -1);
-            sheetCommonObj.shieldAllCells(sheetCoe);
-        } else {
-            sheetCommonObj.cleanSheet(sheetGLJ, settingGLJ, -1);
-            sheetCommonObj.shieldAllCells(sheetGLJ);
-            sheetCommonObj.cleanSheet(sheetCoe, settingCoe, -1);
-            sheetCommonObj.shieldAllCells(sheetCoe);
+            sheetCoe = rationCoeOprObj.sheet, settingCoe = rationCoeOprObj.setting,
+            sheetAss = rationAssistOprObj.sheet, settingAss = rationAssistOprObj.setting;
+
+        sheetCommonObj.cleanSheet(sheetGLJ, settingGLJ, -1);
+        sheetCommonObj.shieldAllCells(sheetGLJ);
+        sheetCommonObj.cleanSheet(sheetCoe, settingCoe, -1);
+        sheetCommonObj.shieldAllCells(sheetCoe);
+        sheetCommonObj.cleanSheet(sheetAss, settingAss, -1);
+        sheetCommonObj.shieldAllCells(sheetAss);
+
+        if(!(args.sheetArea === GC.Spread.Sheets.SheetArea.colHeader || args.sheetArea === GC.Spread.Sheets.SheetArea.corner)){
             var cacheSection = me.getCache();
             if (cacheSection && args.row < cacheSection.length) {
-                //alert('0001'+JSON.stringify(cacheSection[args.row]));
                 rationGLJOprObj.getGljItems(cacheSection[args.row]);
                 rationCoeOprObj.getCoeItems(cacheSection[args.row]);
+                rationAssistOprObj.getAssItems(cacheSection[args.row]);
             }
-        }
+        };
         me.workBook.focus(true);
     },
+
     getCache: function() {
         var me = this, rst = me.currentRations["_SEC_ID_" + me.currentSectionId];
         if (!(rst)) {
@@ -244,6 +245,7 @@ var rationOprObj = {
                 sheetCommonObj.unShieldAllCells(me.workBook.getSheet(0));
                 sheetCommonObj.lockCells(rationGLJOprObj.sheet, rationGLJOprObj.setting);
                 sheetCommonObj.lockCells(rationCoeOprObj.sheet, rationCoeOprObj.setting);
+                sheetCommonObj.unShieldAllCells(rationAssistOprObj.sheet);
             } else {
                 $.ajax({
                     type:"POST",
@@ -259,10 +261,12 @@ var rationOprObj = {
                             sheetCommonObj.unShieldAllCells(me.workBook.getSheet(0));
                             sheetCommonObj.lockCells(rationGLJOprObj.sheet, rationGLJOprObj.setting);
                             sheetCommonObj.lockCells(rationCoeOprObj.sheet, rationCoeOprObj.setting);
+                            sheetCommonObj.unShieldAllCells(rationAssistOprObj.sheet);
                         } else {
                             sheetCommonObj.shieldAllCells(me.workBook.getSheet(0));
                             sheetCommonObj.shieldAllCells(rationGLJOprObj.sheet);
                             sheetCommonObj.shieldAllCells(rationCoeOprObj.sheet);
+                            sheetCommonObj.shieldAllCells(rationAssistOprObj.sheet);
                         }
                     },
                     error:function(err){

+ 114 - 0
web/maintain/ration_repository/js/ration_assist.js

@@ -0,0 +1,114 @@
+/**
+ * Created by CSL on 2017-06-14.
+ */
+var rationAssistOprObj = {
+    sheet: null,
+    libID: null,
+    ration: null,
+    setting: {
+        header:[
+            {headerName:"调整名称",headerWidth:200,dataCode:"name", dataType: "String", hAlign: "left"},
+            {headerName:"辅助定额号",headerWidth:120,dataCode:"assistCode", dataType: "String", hAlign: "center"},
+            {headerName:"标准值",headerWidth:100,dataCode:"stdValue", dataType: "String", hAlign: "right"},
+            {headerName:"步距",headerWidth:100,dataCode:"stepValue", dataType: "String", hAlign: "right"},
+            {headerName:"精度",headerWidth:80,dataCode:"decimal", dataType: "Number", hAlign: "right"},
+            {headerName:"进位方式",headerWidth:100,dataCode:"carryBit", dataType: "String", hAlign: "center"},
+            {headerName:"最小值",headerWidth:100,dataCode:"minValue", dataType: "String", hAlign: "right"},
+            {headerName:"最大值",headerWidth:100,dataCode:"maxValue", dataType: "String", hAlign: "right"}
+        ],
+        view:{}
+    },
+
+    buildSheet: function(sheet) {
+        var me = this;
+        me.sheet = sheet;
+        me.libID = storageUtil.getSessionCache("RationGrp","repositoryID"); // 不可靠,有时取不到
+        if (me.libID == undefined){me.libID = getQueryString('repository')};
+
+        sheetCommonObj.initSheet(me.sheet, me.setting, 30);
+
+        var carryBit = new GC.Spread.Sheets.CellTypes.ComboBox();
+        carryBit.items(["四舍五入","进一"]);
+        me.sheet.getRange(-1, 5, -1, 1).cellType(carryBit);
+
+        me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
+        me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
+        me.sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
+        me.sheet.bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
+    },
+
+    onClipboardPasting: function(sender, args) {
+        var me = rationAssistOprObj;
+        if (!me.ration) {
+            args.cancel = true;
+        }
+    },
+
+    onClipboardPasted: function(e, info) {
+        var me = rationAssistOprObj;
+        if (!me.ration) {return;};
+        var tempArr = sheetCommonObj.analyzePasteData(me.setting, info);
+        var assList = me.ration.rationAssList;
+        if (assList == undefined) {
+            me.ration.rationAssList = tempArr;
+        }else{
+            assList = assList.concat(tempArr);
+            me.ration.rationAssList = assList;
+        };
+
+        rationOprObj.mixUpdateRequest([me.ration], [], []);
+        sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
+        sheetCommonObj.showData(me.sheet, me.setting, me.ration.rationAssList);
+    },
+
+    onEditEnded: function(sender, args){
+        var me = rationAssistOprObj;
+        if (!me.ration) {return;};
+        var assList = me.ration.rationAssList;
+        var assObj = sheetCommonObj.combineRowData(me.sheet, me.setting, args.row);
+        // 新增
+        if ((assList == undefined) || (assList && args.row >= assList.length)) {
+            if (assObj.decimal == undefined || assObj.decimal == null){assObj.decimal = '0';};
+            if (assObj.carryBit == undefined || assObj.carryBit == null){assObj.carryBit = '四舍五入';};
+            assList.push(assObj);
+        }
+        // 修改
+        else{ assList[args.row] = assObj; };
+
+        rationOprObj.mixUpdateRequest([me.ration], [], []);
+        sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
+        sheetCommonObj.showData(me.sheet, me.setting, assList);
+    },
+
+    onRangeChanged: function(sender, args) {
+        if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
+            if (!confirm(`确定要删除选中的 ${args.rowCount} 条辅助定额吗?`)){return; }
+
+            var me = rationAssistOprObj;
+            if (!me.ration) {return;};
+            var assList = me.ration.rationAssList;
+            for (var i = args.rowCount - 1; i >= 0; i--) {
+                if (args.row + i < assList.length) {
+                    assList.splice(args.row + i, 1);
+                };
+            };
+
+            rationOprObj.mixUpdateRequest([me.ration], [], []);
+            sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
+            sheetCommonObj.showData(me.sheet, me.setting, assList);
+        };
+    },
+
+    getAssItems: function(ration) {
+        var me = this;
+        me.ration = ration;
+
+        sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
+        sheetCommonObj.unShieldAllCells(me.sheet);
+
+        if (ration == undefined || ration.rationAssList == undefined ||
+            ration.rationAssList.length == 0){return;};
+
+        sheetCommonObj.showData(me.sheet, me.setting, ration.rationAssList);
+    }
+}

+ 150 - 133
web/maintain/ration_repository/js/ration_coe.js

@@ -3,12 +3,12 @@
  */
 var rationCoeOprObj = {
     sheet: null,
-    libID: -1,
-    currentRationItem: null,
+    libID: null,
+    curRation: null,
     cache: {},
     setting: {
         header:[
-            {headerName:"编",headerWidth:120,dataCode:"ID", dataType: "Number"},
+            {headerName:"编",headerWidth:120,dataCode:"ID", dataType: "Number"},
             {headerName:"名称",headerWidth:400,dataCode:"name", dataType: "String"},
             {headerName:"内容",headerWidth:300,dataCode:"content", dataType: "String"}
         ],
@@ -17,199 +17,216 @@ var rationCoeOprObj = {
             lockColumns:[1,2]
         }
     },
+
     buildSheet: function(sheet) {
         var me = this;
         me.sheet = sheet;
-        //alert('0020 libID:' + JSON.stringify(me.libID));
-        me.libID = storageUtil.getSessionCache("RationGrp","repositoryID");
-        //alert('0021 libID:' + JSON.stringify(me.libID));
+        me.libID = storageUtil.getSessionCache("RationGrp","repositoryID"); // 不可靠,有时取不到
+        if (me.libID == undefined){me.libID = getQueryString('repository')};
         sheetCommonObj.initSheet(me.sheet, me.setting, 30);
         me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
         me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
-        me.sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onCellEditEnd);
+        me.sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
         me.sheet.bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
     },
-    onRangeChanged: function(sender, args) {
-        if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
-            var me = rationCoeOprObj, updateArr = [], removeArr = [];
-            if (args.col == 0) {
-                if (me.cache["_Coe_" + me.currentRationItem.ID]) {
-                    var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
-                    for (var i = args.rowCount - 1; i >= 0; i--) {
-                        if (args.row + i < cacheArr.length) {
-                            cacheArr.splice(args.row + i, 1);
-                        }
-                    }
-                    me.updateRationItem();
-                    sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
-                    me.showCoeItems(me.currentRationItem.ID);
-                }
-            }
 
-        }
-    },
-/*    onClipboardPasting: function(sender, args) {
+    onClipboardPasting: function(sender, args) {
         var me = rationCoeOprObj;
-        if (args.cellRange.colCount != 1 || args.cellRange.col != 0 || !(me.currentRationItem)) {
+        if (args.cellRange.colCount != 1 || args.cellRange.col != 0 || !(me.curRation)) {
             args.cancel = true;
         }
     },
+
     onClipboardPasted: function(e, info) {
         var me = rationCoeOprObj;
         if (me.libID) {
+            // 修改第一列(编号)
             if (info.cellRange.col == 0) {
-                var tmpCoeIDs = sheetCommonObj.analyzePasteData({header:[{dataCode: "ID"}] }, info);
-                var IDs = [];
-                for (var i = 0; i < tmpCoeIDs.length; i++) {
-                    IDs.push(tmpCoeIDs[i]);
-                }
-                me.addCoeItems(IDs);
+                var coeIDs = [];
+                var temp = sheetCommonObj.analyzePasteData({header:[{dataCode: "ID"}] }, info);
+                for (let obj of temp) {
+                    coeIDs.push(obj.ID);
+                };
+                me.addCoeItems(coeIDs);
             } else {
-                //修改用量
+                //修改其它列。
             }
         }
-    },*/
-    onCellEditEnd: function(sender, args){
+    },
+
+    onEditEnded: function(sender, args){
         var me = rationCoeOprObj;
         if (args.col == 0) {   // 编号列
-            if (args.editingText == null || args.editingText.trim() == "") {  //delete
-                var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
-                if (cacheArr) {
-                    if (args.row < cacheArr.length) {
-                        cacheArr.splice(args.row, 1);
-                        me.updateRationItem();
+            //delete
+            if (args.editingText == null || args.editingText.trim() == "") {
+                var curCache = me.cache["_Coe_" + me.curRation.ID];
+                if (curCache) {
+                    if (args.row < curCache.length) {
+                        curCache.splice(args.row, 1);
+                        me.updateCurRation();
                         sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
-                        me.showCoeItems(me.currentRationItem.ID);
+                        me.showCoeItems(me.curRation.ID);
                     }
                 }
             } else {
                 if (me.libID) {
-                    var coeIDs = [];
-                    coeIDs.push(args.editingText.trim());
-                    me.addCoeItems(coeIDs, me.libID);
-                }
-            }
-        }
+                    var ID = args.editingText.trim();
+                    if (!isNaN(ID)) {
+                        me.addCoeItems([ID]);
+                    };
+                };
+            };
+        };
+    },
+
+    onRangeChanged: function(sender, args) {
+        if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
+            if (!confirm(`确定要删除选中的 ${args.rowCount} 条附注条件吗?`)){return; }
+            var me = rationCoeOprObj;
+            if (args.col == 0) {
+                var curCache = me.cache["_Coe_" + me.curRation.ID];
+                if (curCache) {
+                    for (var i = args.rowCount - 1; i >= 0; i--) {
+                        if (args.row + i < curCache.length) {
+                            curCache.splice(args.row + i, 1);
+                        };
+                    };
+                    me.updateCurRation();
+                    sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
+                    me.showCoeItems(me.curRation.ID);
+                };
+            };
+        };
     },
 
     addCoeItems: function(coeIDs) {
         var me = this;
-        $.ajax({
-            type:"POST",
-            url:"api/getCoeItemsByIDs",
-            data: {"data": JSON.stringify({"libID": me.libID, "coeIDs": coeIDs})},
-            dataType:"json",
-            cache:false,
-            timeout:5000,
-            success:function(result){
-                sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
-                if (result) {
-                    var rstArr = [], newAddArr = [];
-                    for (var i = 0; i < result.data.length; i++) {
-                        rstArr.push(result.data[i]);
+        sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
+
+        var curCache = me.cache["_Coe_" + me.curRation.ID];
+        var temp = [];
+        if (curCache) {
+            for (var i = 0; i < coeIDs.length; i++) {
+                var isExist = false;
+                for (let obj of curCache) {
+                    if (obj.ID == coeIDs[i]) {
+                        isExist = true;
+                        break;
                     };
-                    if (me.cache["_Coe_" + me.currentRationItem.ID]) {
-                        var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
-                        for (var i = 0; i < rstArr.length; i++) {
-                            var hasDup = false;
-                            for (var j = 0; j < cacheArr.length; j++) {
-                                if (cacheArr[j] == rstArr[i]) {
-                                    hasDup = true;
-                                    break;
-                                }
-                            }
-                            if (!hasDup) {
-                                newAddArr.push(rstArr[i]);
-                            }
+                };
+                if (!isExist) {
+                    temp.push(coeIDs[i]);
+                };
+            };
+        }else{
+            for (let obj of coeIDs){temp.push(obj)};
+        };
+
+        if(temp.length == 0){
+            me.showCoeItems(me.curRation.ID);
+            sheetCommonObj.lockCells(me.sheet, me.setting);
+        }else{
+            $.ajax({
+                type:"POST",
+                url:"api/getCoeItemsByIDs",
+                data: {"data": JSON.stringify({"libID": me.libID, "coeIDs": temp})},
+                dataType:"json",
+                cache:false,
+                timeout:5000,
+                success:function(result){
+                    if (result) {
+                        var rstArr = [];
+                        for (let obj of result.data){rstArr.push(obj)};
+                        if (curCache) {
+                            curCache = curCache.concat(rstArr);
+                        }else{
+                            curCache = rstArr;
                         }
-                        cacheArr.sort(function(a, b) {
+
+                        curCache.sort(function(a, b) {
                             var rst = 0;
-                            if (a > b) rst = 1
-                            else if (a < b) rst = -1;
+                            if (a.ID > b.ID) rst = 1
+                            else if (a.ID < b.ID) rst = -1;
                             return rst;
                         });
-                        me.cache["_Coe_" + me.currentRationItem.ID] = cacheArr.concat(newAddArr);
-                    }
-                    me.showCoeItems(me.currentRationItem.ID);
-                    if (newAddArr.length > 0) {
-                        me.updateRationItem();
-                    }
+
+                        me.cache["_Coe_" + me.curRation.ID] = curCache;
+                        me.updateCurRation();
+                        me.showCoeItems(me.curRation.ID);
+                    };
+                    sheetCommonObj.lockCells(me.sheet, me.setting);
+                },
+                error:function(err){
+                    alert(err);
                 }
-                sheetCommonObj.lockCells(me.sheet, me.setting);
-            },
-            error:function(err){
-                alert(err);
-            }
-        })
+            });
+        };
     },
 
-    updateRationItem: function() {
-        var me = this, updateArr = [];
-        if (me.currentRationItem) {
-            me.currentRationItem.rationCoeList = me.getCoeIDsArr();
-            updateArr.push(me.currentRationItem);
-            rationOprObj.mixUpdateRequest(updateArr, [], []);
-        }
-    },
+    getCoeItems: function(ration) {
+        var me = this;
+        me.curRation = ration;
 
-    getCoeIDsArr: function(){
-        var me = this, rst = [];
-        if (me.currentRationItem && me.cache["_Coe_" + me.currentRationItem.ID]) {
-            var cacheArr = me.cache["_Coe_" + me.currentRationItem.ID];
-            for (var i = 0; i < cacheArr.length; i++) {
-                rst.push(cacheArr[i].ID);
-            }
-        }
-        return rst;
-    },
+        if (ration == undefined || ration.rationCoeList == undefined ||
+            ration.rationCoeList.length == 0){return;};
 
-    getCoeItems: function(rationItem) {
-        var me = this, rationID = rationItem.ID, rationCoeList = rationItem.rationCoeList;
-        if (rationCoeList == undefined){return;};
+        var coeList = ration.rationCoeList;
+        var curCache = me.cache["_Coe_" + ration.ID];
 
-        me.currentRationItem = rationItem;
-        //alert('0009 ' + JSON.stringify(me.cache));
-        //alert('0010 ' + JSON.stringify(me.cache["_Coe_" + rationID]));
-        //alert('0011 ' + JSON.stringify(me.libID));
-        if (me.cache["_Coe_" + rationID]) {
-            me.showCoeItems(rationID);
+        if (curCache && curCache.length > 0) {
+            me.showCoeItems(ration.ID);
             sheetCommonObj.lockCells(me.sheet, me.setting);
         } else {
+            var data = {"libID": me.libID, "coeIDs": coeList};
             $.ajax({
                 type:"POST",
                 url:"api/getCoeItemsByIDs",
-                data: {"data": JSON.stringify({"libID": me.libID, "coeIDs": rationCoeList})},
+                data: {"data": JSON.stringify(data)},
                 dataType:"json",
                 cache:false,
                 timeout:5000,
                 success:function(result){
                     sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
-
                     if (result.data) {
-                        var cacheArr = [];
-                        for (var i = 0; i < result.data.length; i++) {
-                            for (var j = 0; j < rationCoeList.length; j++) {
-                                if (rationCoeList[j] == result.data[i].ID) {
-                                    cacheArr.push(result.data[i]);
-                                    break;
-                                }
-                            }
+                        var tempResult = [];
+                        for (let obj of result.data) {
+                            tempResult.push(obj);
                         };
-                        me.cache["_Coe_" + rationID] = cacheArr;
-                        me.showCoeItems(rationID);
+
+                        me.cache["_Coe_" + ration.ID] = tempResult;
+
+                        me.showCoeItems(ration.ID);
                     }
                     sheetCommonObj.lockCells(me.sheet, me.setting);
                 },
                 error:function(err){
                     alert(err);
                 }
-            })
-        }
+            });
+        };
     },
+
     showCoeItems: function(rationID) {
         var me = this;
-        if (me.cache["_Coe_" + rationID]) {
-            sheetCommonObj.showData(me.sheet, me.setting, me.cache["_Coe_" + rationID]);
+        var curCache = me.cache["_Coe_" + rationID];
+        if (curCache) {
+            sheetCommonObj.showData(me.sheet, me.setting, curCache);
         }
+    },
+
+    updateCurRation: function() {
+        var me = this, updateArr = [];
+        if (me.curRation) {
+            var rst = [];
+            var curCache = me.cache["_Coe_" + me.curRation.ID];
+            if (curCache) {
+                for (let obj of curCache) {
+                    rst.push(obj.ID);
+                };
+                me.curRation.rationCoeList = rst;
+                updateArr.push(me.curRation);
+                rationOprObj.mixUpdateRequest(updateArr, [], []);
+            };
+        };
     }
 }

+ 2 - 2
web/users/login.html

@@ -6,7 +6,7 @@
     <meta http-equiv="x-ua-compatible" content="ie=edge">
     <title>用户登录-Smartcost</title>
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
-    <link rel="stylesheet" href="/web/building_saas/css/main.css">
+    <link rel="stylesheet" href="/web/maintain/ration_repository/css/main.css">
     <link rel="stylesheet" href="/lib/font-awesome/font-awesome.min.css">
     <script src="/lib/jquery/jquery.min.js"></script>
     <script src="/public/web/url_util.js"></script>
@@ -126,7 +126,7 @@
 
     <script src="/lib/tether/tether.min.js"></script>
     <script src="/lib/bootstrap/bootstrap.min.js"></script>
-    <script src="/web/building_saas/js/global.js"></script>
+    <script src="/web/maintain/ration_repository/js/global.js"></script>
 </body>
 
 </html>