Quellcode durchsuchen

定额库搜索定额定位
模板关联debug

zhongzewei vor 7 Jahren
Ursprung
Commit
3ac46746c9

+ 9 - 9
modules/ration_repository/controllers/search_controller.js

@@ -8,15 +8,15 @@ var callback = function(req, res, err, message, data){
 };
 
 class SearchController extends BaseController{
-    getRationItem (req, res) {
-        var rId = req.body.rationLibId, code = req.body.code;
-        var rationData = {}
-        rationItem.getRationItem(rId, code).then(function (result) {
-            rationData = result._doc;
-            callback(req, res, null, '', rationData);
-        }).catch(function (err, message) {
-            callback(req, res, err, message, null);
-        })
+    async getRationItem (req, res) {
+        try {
+            let data = JSON.parse(req.body.data);
+            let rId = data.rationLibId, code = data.code;
+            let ration = await rationItem.getRationItem(rId, code);
+            callback(req, res, 0, '', ration);
+        } catch (err) {
+            callback(req, res, 1, err, null);
+        }
     }
     findRation (req, res) {
         var rId = req.body.rationLibId, keyword = req.body.keyword;

+ 3 - 14
modules/ration_repository/models/ration_item.js

@@ -222,20 +222,9 @@ rationItemDAO.prototype.findRation = function (repId, keyword, callback) {
     })
 }
 
-rationItemDAO.prototype.getRationItem = function (repId, code, callback) {
-    if (callback) {
-        rationItemModel.findOne({rationRepId: repId, code: code, "$or": [{"isDeleted": null}, {"isDeleted": false}]}, '-_id').exec()
-            .then(function (result, err) {
-                if (err) {
-                    callback(1, '找不到定额“' + code +'”' , null);
-                } else {
-                    callback(0, '', result);
-                }
-            });
-        return null;
-    } else {
-        return rationItemModel.findOne({rationRepId: repId, code: code, "$or": [{"isDeleted": null}, {"isDeleted": false}]}, '-_id').exec();
-    }
+rationItemDAO.prototype.getRationItem = async function (repId, code) {
+    let ration = await rationItemModel.findOne({rationRepId: repId, code: code});
+    return ration;
 };
 
 rationItemDAO.prototype.addRationItems = function(rationLibId, lastOpr, sectionId, items,callback){

+ 12 - 7
web/maintain/ration_repository/dinge.html

@@ -60,13 +60,18 @@
                 <div class="row" id="dataRow">
                     <div class="main-side p-0" id="leftContent" style="width: 25%; height: 100%; overflow: hidden">
                         <div style="width: 99%; float: left">
-                            <div class="tab-bar">
-                                <a href="javascript:void(0);" id="tree_Insert" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="插入"><i class="fa fa-plus" aria-hidden="true"></i></a>
-                                <a href="javascript:void(0);" id="tree_remove" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
-                                <a href="javascript:void(0);" id="tree_upLevel" class="btn btn-sm " data-toggle="tooltip" data-placement="bottom" title="" data-original-title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
-                                <a href="javascript:void(0);" id="tree_downLevel" class="btn btn-sm " data-toggle="tooltip" data-placement="bottom" title="" data-original-title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
-                                <a href="javascript:void(0);" id="tree_downMove" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
-                                <a href="javascript:void(0);" id="tree_upMove" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+                            <div class="tab-bar row">
+                                <div>
+                                    <a href="javascript:void(0);" id="tree_Insert" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="插入"><i class="fa fa-plus" aria-hidden="true"></i></a>
+                                    <a href="javascript:void(0);" id="tree_remove" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="删除"><i class="fa fa-remove" aria-hidden="true"></i></a>
+                                    <a href="javascript:void(0);" id="tree_upLevel" class="btn btn-sm " data-toggle="tooltip" data-placement="bottom" title="" data-original-title="升级"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
+                                    <a href="javascript:void(0);" id="tree_downLevel" class="btn btn-sm " data-toggle="tooltip" data-placement="bottom" title="" data-original-title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
+                                    <a href="javascript:void(0);" id="tree_downMove" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
+                                    <a href="javascript:void(0);" id="tree_upMove" class="btn btn-sm" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+                                </div>
+                                <div>
+                                    <input type="text" class="form-control form-control-sm" placeholder="搜索定额" value="" id="rationSearch">
+                                </div>
                             </div>
                             <div class="tab-content" id="sectionSpread" style="overflow: hidden">
                             </div>

+ 2 - 1
web/maintain/ration_repository/js/ration.js

@@ -693,6 +693,7 @@ let rationOprObj = {
             }
         });
     },
+    doAfterGetRation: null,
     getRationItems: function(sectionID, callback = null){
         if (sectionID != -1) {
             let me = rationOprObj;
@@ -730,7 +731,7 @@ let rationOprObj = {
                         }
                         sectionTreeObj.removeBtn.removeClass('disabled');
                         if(callback) {
-                            callback();
+                            callback(result.data);
                         }
                     },
                     error:function(err){

+ 11 - 4
web/maintain/ration_repository/js/ration_template.js

@@ -126,6 +126,12 @@ const RationTemplate = (function () {
         onEnterCell: function (sender, args) {
             args.sheet.repaint();
         },
+        onEditStarting: function (sender, args) {
+            let dataCode = setting.header[args.col]['dataCode'];
+            if (dataCode === 'name') {
+                args.cancel = true;
+            }
+        },
         onEditEnded: function (sender, args) {
             edit();
         },
@@ -166,6 +172,7 @@ const RationTemplate = (function () {
         templateSheet.options.isProtected = true;
         setComboCells();
         const Events = GC.Spread.Sheets.Events;
+        sheet.bind(Events.EditStarting, events.onEditStarting);
         sheet.bind(Events.EditEnded, events.onEditEnded);
         sheet.bind(Events.RangeChanged, events.onRangeChanged);
         sheet.bind(Events.EnterCell, events.onEnterCell);
@@ -176,11 +183,11 @@ const RationTemplate = (function () {
     function changeLockMode(locked) {
         if (templateSheet) {
             if (!locked) {
-                templateSheet.getRange(-1, 0, -1, 2).locked(false);
-                templateSheet.getRange(-1, 3, -1, 1).locked(false);
+                templateSheet.getRange(-1, 0, -1, 4).locked(false);
+                //templateSheet.getRange(-1, 3, -1, 1).locked(false);
             } else {
-                templateSheet.getRange(-1, 0, -1, 2).locked(true);
-                templateSheet.getRange(-1, 3, -1, 1).locked(true);
+                templateSheet.getRange(-1, 0, -1, 4).locked(true);
+                //templateSheet.getRange(-1, 3, -1, 1).locked(true);
             }
         }
     }

+ 55 - 6
web/maintain/ration_repository/js/section_tree.js

@@ -616,7 +616,7 @@ let sectionTreeObj = {
         }
     },
     //模仿默认点击
-    initSelection: function (node) {
+    initSelection: function (node, doAfterGetRation = null) {
         if (node && node.tree){
             node.tree.selected = node ? node : null;
         }
@@ -637,10 +637,17 @@ let sectionTreeObj = {
             me.removeBtn.addClass('disabled');
             rationOprObj.canRations = true;
             rationOprObj.workBook.getSheet(0).clearSelection();
-            rationOprObj.getRationItems(node.data.ID, function () {
-                rationOprObj.workBook.getActiveSheet().setActiveCell(0, 0);
-                rationOprObj.rationSelInit(0, true);
-            });
+            //获取定额后的回调操作:1.正常变更章节树节点,则默认获取定额后定位至首行定额 2.搜索定额后,获取定额后定位至匹配到的定额
+            if (doAfterGetRation && typeof doAfterGetRation === 'function') {
+                rationOprObj.doAfterGetRation = doAfterGetRation;
+            } else {
+                rationOprObj.doAfterGetRation = function (rations) {
+                    rationOprObj.workBook.getActiveSheet().setActiveCell(0, 0);
+                    rationOprObj.rationSelInit(0, true);
+                    rationOprObj.workBook.getActiveSheet().showRow(0, GC.Spread.Sheets.VerticalPosition.top);
+                };
+            }
+            rationOprObj.getRationItems(node.data.ID, rationOprObj.doAfterGetRation);
             rationOprObj.setCombo(rationOprObj.workBook.getSheet(0), 'dynamic');
         }
         else {
@@ -660,5 +667,47 @@ let sectionTreeObj = {
             sheetCommonObj.cleanSheet(rationInstObj.sheet, rationInstObj.setting, -1);
         }
         me.workBook.focus(true);
+    },
+    //根据定额定位至章节树
+    locateToSection: function (rationCode) {
+        let me = this;
+        //去后台搜索该定额
+        CommonAjax.post('/rationRepository/api/getRationItem', {rationLibId: pageOprObj.rationLibId, code: rationCode}, function (rstData) {
+            if (!rstData) {
+                alert(`不存在定额${rationCode}`);
+                return;
+            }
+            //定位至相关章节
+            let sectionId = rstData.sectionId;
+            if (!sectionId) {
+                return;
+            }
+            let sectionNode = me.tree.nodes[`id_${sectionId}`];
+            if (!sectionNode) {
+                return;
+            }
+            me.sheet.setActiveCell(sectionNode.serialNo(), 1);
+            let doAfterGetRation = function (rations) {
+                let findRation = _.find(rations, {code: rationCode}),
+                    rIdx = rations.indexOf(findRation),
+                    rationSheet = rationOprObj.workBook.getActiveSheet();
+                rationSheet.setActiveCell(rIdx, 0);
+                rationOprObj.rationSelInit(rIdx, true);
+                rationOprObj.workBook.getActiveSheet().showRow(rIdx, GC.Spread.Sheets.VerticalPosition.top);
+            };
+            me.initSelection(sectionNode, doAfterGetRation);
+        }, function () {
+        });
     }
-};
+};
+$(document).ready(function () {
+    $('#rationSearch').keydown(function (event) {
+        if(event.keyCode === 13){
+            $(this).blur();
+            let rationCode = $(this).val().toUpperCase();
+            if (rationCode) {
+                sectionTreeObj.locateToSection(rationCode);
+            }
+        }
+    });
+});