Browse Source

feat: 在定额库搜索全部定额,新增一列显示定额库名称

TASK #3505
vian 4 years ago
parent
commit
e5fa6a6105

+ 18 - 0
modules/complementary_ration_lib/models/searchModel.js

@@ -6,6 +6,7 @@ const compleRationModel = mongoose.model('complementary_ration_items');
 const complementaryGljModel = mongoose.model('complementary_glj_lib');
 const stdGljModel = mongoose.model('std_glj_lib_gljList');
 const compleRationSectionTreeModel = mongoose.model('complementary_ration_section_tree');
+const rationLibModel = mongoose.model('std_ration_lib_map');
 let stdSectionTreeModel = require ('../../ration_repository/models/ration_section_tree').Model;
 let stdRationModel = require ('../../ration_repository/models/ration_item').Model;
 let gljUtil = require('../../../public/gljUtil');
@@ -91,6 +92,20 @@ class SearchDao{
         }
         return ration;
     }
+    // 设置定额所属定额库数据
+    async setRationLibName(stdRations, compleRations) {
+        const rationLibIDSet = new Set();
+        stdRations.forEach(ration => {
+            rationLibIDSet.add(ration.rationRepId);
+        });
+        const rationLibNameList = await rationLibModel.find({ ID: { $in: [...rationLibIDSet] } }, '-_id dispName ID').lean();
+        const rationLibNameMap = {};
+        rationLibNameList.forEach(lib => rationLibNameMap[lib.ID] = lib.dispName);
+        stdRations.forEach(ration => {
+            ration.rationLibName = rationLibNameMap[ration.rationRepId];
+        });
+        compleRations.forEach(ration => ration.rationLibName = '我的补充定额');
+    }
     //@param {Object}skip({std: Number, comple: Number})
     async findRation(userId, compilationId, rationRepId, keyword, skip, callback){
         //每次限制结果数
@@ -162,6 +177,9 @@ class SearchDao{
                 }
             }
 
+            // 设置定额所属定额库名称
+            await this.setRationLibName(stdRations, compleRations);
+
             //设置悬浮信息
             stdGljIds = Array.from(new Set(stdGljIds));
             comGljIds = Array.from(new Set(comGljIds));

+ 28 - 2
web/building_saas/main/js/views/std_ration_lib.js

@@ -6,6 +6,7 @@
 
 var rationLibObj = {
     searchLimit: 50,
+    searchMode: 0,
     libType: {complementary: 0, std: 1},
     compleRationLibId: 'compleRationLib',
     doAfterGetRationTree: null, //获取章节树回调
@@ -688,6 +689,7 @@ $('#rationSearchKeyword').keyup(function () {
 
 //变换搜索本定额、全部定额状态
 function switchRationSearchMode(mode) {
+    rationLibObj.searchMode = mode;
     rationLibObj.resultCache = [];
     //搜索本定额
     if(mode === 0){
@@ -802,12 +804,35 @@ function seachRation(){
             }
         });
     };
+    const searchCurRationSetting = _.cloneDeep(rationLibObj.sectionRationsSetting);
+    // 搜索全部定额,表格需要多显示一列定额库
+    const searchAllRationSetting = _.cloneDeep(rationLibObj.sectionRationsSetting);
+    searchAllRationSetting.cols.push({
+        "width": 100,
+        "readOnly": true,
+        "showHint": true,
+        "head": {
+            "titleNames": ["定额库"],
+            "spanCols": [1],
+            "spanRows": [1],
+            "vAlign": [1],
+            "hAlign": [1],
+            "font": ["Arial"]
+        },
+        "data": {
+            "field": "rationLibName",
+            "vAlign": 1,
+            "hAlign": 0,
+            "font": "Arial"
+        }
+    });
+    const rationSetting = rationLibObj.searchMode === 0 ? searchCurRationSetting : searchAllRationSetting;
     var showResult = function (result) {
         if(!rationLibObj.resultSpread){
             let resultSpread = SheetDataHelper.createNewSpread($('.main-data-side-search')[0]);
             rationLibObj.resultSpread = resultSpread;
             bindContextmenuOpr(resultSpread.getActiveSheet());
-            SheetDataHelper.loadSheetHeader(rationLibObj.sectionRationsSetting, resultSpread.getActiveSheet());
+            //SheetDataHelper.loadSheetHeader(rationLibObj.sectionRationsSetting, resultSpread.getActiveSheet());
             if (!projectReadOnly) {
                 resultSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick, rationLibObj.onRationSpreadCellDoubleClick);
             }
@@ -815,7 +840,8 @@ function seachRation(){
         }else {
             rationLibObj.resultSpread.refresh();
         }
-        SheetDataHelper.loadSheetData(rationLibObj.sectionRationsSetting, rationLibObj.resultSpread.getActiveSheet(), result);
+        SheetDataHelper.loadSheetHeader(rationSetting, rationLibObj.resultSpread.getActiveSheet());
+        SheetDataHelper.loadSheetData(rationSetting, rationLibObj.resultSpread.getActiveSheet(), result);
         rationLibObj.setTagForHint(rationLibObj.resultSpread.getActiveSheet(), result);
         rationLibObj.resultCache = result;
     };