Преглед на файлове

清单库新增固定ID列

zhongzewei преди 6 години
родител
ревизия
79199a6c48

+ 1 - 0
modules/all_models/stdBills_bills.js

@@ -13,6 +13,7 @@ const stdBills_bills = new Schema({
             unit: String,
             ruleText: String,
             engineering: Number, //工程专业,填计算程序工程专业ID
+            fixedFlag: Number,  //固定ID
             Expression: String,
             comment: String, //备注,清单精灵处输入
             jobs: [],

+ 10 - 3
modules/bills_lib/controllers/views_permissionController.js

@@ -3,16 +3,23 @@
  * Created by Zhong on 2017/8/2.
  */
 import baseController from "../../common/base/base_controller";
+import {List as BillsFixedFlagList} from "../../common/const/bills_fixed.js";
 let config = require("../../../config/config.js");
 class viewsPermContr extends baseController{
     redirectStdBillsMain(req, res){
         res.render("maintain/bills_lib/html/main.html",
-            {userAccount: req.session.managerData.username,
-                userID: req.session.managerData.userID});
+            {
+                userAccount: req.session.managerData.username,
+                userID: req.session.managerData.userID
+            });
     }
     redirectStdBills(req, res){
         res.render("maintain/bills_lib/html/qingdan.html",
-            {userAccount: req.session.managerData.username, LicenseKey:config.getLicenseKey(process.env.NODE_ENV)});
+            {
+                userAccount: req.session.managerData.username,
+                LicenseKey:config.getLicenseKey(process.env.NODE_ENV),
+                BillsFixedFlagList: JSON.stringify(BillsFixedFlagList)
+            });
     }
     redirectStdJobs(req, res){
         res.render('maintain/bills_lib/html/neirong.html',

+ 23 - 3
web/maintain/bills_lib/html/qingdan.html

@@ -364,6 +364,7 @@
     });
     codeEditor.setSize('auto','350px');
     autoFlashHeight();
+    let BillsFixedFlagList = JSON.parse('<%- BillsFixedFlagList %>');
     let userAccount = '<%= userAccount %>';
     let maxJobsNumber;
     let maxItemsNumber;
@@ -457,8 +458,15 @@
             }
         });
     }
-
-
+    function setCombo(sheet, col, comboDatas) {
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        let combo = sheetCommonObj.getDynamicCombo();
+        combo.items(comboDatas).itemHeight(10).editable(false);
+        sheet.getRange(-1, col, -1, 1).cellType(combo);
+        sheet.resumePaint();
+        sheet.resumeEvent();
+    }
     function showBillsSheet(datas, jobsSheet, itemsSheet, setting) {
         let billsSpread = new GC.Spread.Sheets.Workbook($('#spreadBills')[0], {sheetCount: 1});
         let billsSheet = billsSpread.getSheet(0);
@@ -466,6 +474,14 @@
         billsSpread.focus(true);
         setSheet.initSheet(billsSpread, setting, true);
         myKey.delKey(billsSpread);
+        for (let data of datas) {
+            if (data.fixedFlag) {
+                let findData = BillsFixedFlagList.find((x) => data.fixedFlag === x.value);
+                if (findData) {
+                    data.fixedFlag = findData.name;
+                }
+            }
+        }
         billsTree.loadDatas(datas);
         let controller = TREE_SHEET_CONTROLLER.createNew(billsTree.tree, billsSpread.getActiveSheet(), setting);
         controller.showTreeData();
@@ -483,7 +499,7 @@
         //粘贴事件
         bindPasteBills(controller, billsSpread.getActiveSheet(), setting);
         //补注内容改变
-        rechargeChange(controller);
+        rechargeChange(controller);//
         //焦点控制
         switchFcs(controller, controller.sheet, billsSpread, jobsSheet, itemsSheet);
         //jobs
@@ -497,6 +513,9 @@
                 nodeOpration(controller, totalJobs, totalItems);
             });
         });
+        let nameList = BillsFixedFlagList.map((data) => data.name);
+        let comboCol = setting.cols.findIndex((data) => data.data.field === 'fixedFlag');
+        setCombo(billsSheet, comboCol, nameList);
     }
 
     function switchFcs(controller, billsSheet, billsSpread, jobsSheet, itemsSheet){
@@ -796,6 +815,7 @@
                     sheet.setValue(i, 2, sheetBillsDatas.datasIdx['rowIdx'+ i].unit);
                     sheet.setValue(i, 3, sheetBillsDatas.datasIdx['rowIdx'+ i].ruleText);
                     sheet.setValue(i, 4, sheetBillsDatas.datasIdx['rowIdx'+ i].engineering);
+                    sheet.setValue(i, 5, sheetBillsDatas.datasIdx['rowIdx'+ i].fixedFlag);
                 }
                 else {
                     sheet.clear(i, 0, 1, sheet.getColumnCount(), GC.Spread.Sheets.SheetArea.viewport,GC.Spread.Sheets.StorageType.data);

+ 15 - 1
web/maintain/bills_lib/scripts/bills_lib_ajax.js

@@ -13,7 +13,7 @@ var mainAjax = {
                 for(let i = 0; i < result.data.length; i++){
                     let $option =  $("<option >"+ result.data[i].name +"</option>");
                     $option.val( result.data[i]._id);
-                    $('#compilationSels').append($option);
+                    $('#compilationSels').append($option);//
                 }
                 $('#compilationSels').on("change", function () {
                 });
@@ -279,6 +279,12 @@ var billsAjax = {
         });
     },
     updateBills: function(lastOperator, billsLibId, updateId, field, data){
+        if (field === 'fixedFlag') {
+            let findData = BillsFixedFlagList.find((x) => x.name === data);
+            if (findData) {
+                data = findData.value;
+            }
+        }
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/updateBills',
@@ -340,6 +346,14 @@ var billsAjax = {
         });
     },
     pasteBills: function(lastOperator, billsLibId, datas){
+        for (let data of datas) {
+            if (data.fixedFlag) {
+                let findData = BillsFixedFlagList.find((x) => x.name === data.fixedFlag);
+                if (findData) {
+                    data.fixedFlag = findData.value;
+                }
+            }
+        }
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/pasteBills',

+ 18 - 1
web/maintain/bills_lib/scripts/bills_lib_setting.js

@@ -69,7 +69,7 @@ var billsLibSetting = {
                 hAlign: 0,
                 font: 'Arial'
             },
-            width: 420
+            width: 320
         },
         {
             head: {
@@ -87,6 +87,23 @@ var billsLibSetting = {
                 font: 'Arial'
             },
             width: 80
+        },
+        {
+            head: {
+                titleNames: ['固定ID'],
+                spanCols: [1],
+                spanRows: [2],
+                vAlign: [1, 1],
+                hAlign: [1, 1],
+                font: ' Arial'
+            },
+            data: {
+                field: 'fixedFlag',
+                vAlign: 1,
+                hAlign: 1,
+                font: 'Arial'
+            },
+            width: 100
         }
     ],
     headRows: 1,

+ 14 - 9
web/maintain/bills_lib/scripts/db_controller.js

@@ -375,9 +375,13 @@ var dbController = {
             args.sheet.getCell(args.row, args.col, GC.Spread.Sheets.SheetArea.viewport).value('');
         }
     },
+    onEnterCell: function (sender, args) {
+        args.sheet.repaint();
+    },
     editData: function(controller){
         controller.sheet.bind(GC.Spread.Sheets.Events.EditStarting, this.onEditStart);
         controller.sheet.bind(GC.Spread.Sheets.Events.EditEnded, this.onEditEnded);
+        controller.sheet.bind(GC.Spread.Sheets.Events.EnterCell, this.onEnterCell);
     }
 };
 
@@ -679,17 +683,16 @@ var tools = {
             for(let j= orgCol; j<=maxCol; j++){
                 let value = sheet.getValue(i, j);
                 if(value){
-                  /*  setting.cols.forEach(function(col, colIdx){
-                        if(colIdx === j){
-                            validData[col.data.field] = value;
-                        }
-                    });*/
                     if(setting.cols[j].data.field === 'engineering'){
                         if(!isNaN(value) && value % 1 === 0){
                             validData[setting.cols[j].data.field] = value;
                         }
-                    }
-                    else {
+                    } else if (setting.cols[j].data.field === 'fixedFlag') {
+                        let findData = BillsFixedFlagList.find((x) => x.name === value);
+                        if (findData) {
+                            validData[setting.cols[j].data.field] = value;
+                        }
+                    } else {
                         validData[setting.cols[j].data.field] = value;
                     }
                 }
@@ -1005,8 +1008,10 @@ var tools = {
             sheetDatas = {datasIdx: {},  datas: []};
             for(let i= 0; i< controller.tree.items.length; i++){
                 let code = sheet.getValue(i, 0), name = sheet.getValue(i, 1),
-                    unit = sheet.getValue(i, 2), ruleText = sheet.getValue(i, 3);
-                let data = {code: code, name: name, unit: unit, ruleText: ruleText, rowIdx: i};
+                    unit = sheet.getValue(i, 2), ruleText = sheet.getValue(i, 3),
+                    engineering = sheet.getValue(i, 4),
+                    fixedFlag = sheet.getValue(i, 5);
+                let data = {code: code, name: name, unit: unit, ruleText: ruleText, engineering: engineering, fixedFlag: fixedFlag, rowIdx: i};
                 sheetDatas.datas.push(data);
                 sheetDatas.datasIdx['rowIdx' + i] = data;
             }