浏览代码

feat: 清单规则库增加清单预算标记

vian 1 年之前
父节点
当前提交
7c72f1f47f

+ 1 - 0
modules/all_models/stdBills_bills.js

@@ -34,6 +34,7 @@ const stdBills_bills = new Schema({
     kind: Number, // 前台里(重构、微前端)BRType: 1: 大项费用、 8:XMJ 4:清单
     erratumRecord: String, // 勘误记录
     unitPrice: Number, // 单价
+    isBillBudget: Boolean, // 清单预算标记
 },
     { versionKey: false }
 );

+ 6 - 1
web/maintain/bills_lib/html/qingdan.html

@@ -443,7 +443,7 @@
         let btnDownLevel = $('#downLevel');
         let btnUpMove = $('#upMove');
         let btnDownMove = $('#downMove');
-        dbController.editData(controller);
+        dbController.editData(controller, billsSpread);
         btnInsert.click(function(){
             if(btnInsert.attr('doing') === 'false' && btnInsert.attr('fcsOnBills') === 'true'){
                 dbController.insert(controller, btnInsert);
@@ -537,6 +537,11 @@
             }
         }
         billsTree.loadDatas(datas);
+        for (col of setting.cols) {
+            if (col.data.field === 'isBillBudget') {
+                col.data.cellType = new GC.Spread.Sheets.CellTypes.CheckBox();
+            }
+    }
         let controller = TREE_SHEET_CONTROLLER.createNew(billsTree.tree, billsSpread.getActiveSheet(), setting);
         controller.showTreeData();
         dbController.controller = controller;

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

@@ -155,7 +155,24 @@ var billsLibSetting = {
                 font: 'Arial'
             },
             width: 100
-        }
+        },
+        {
+            width: 60,
+            head: {
+                titleNames: ["清单预算\n标记"],
+                spanCols: [1],
+                spanRows: [1],
+                vAlign: [1],
+                hAlign: [1],
+                font: ["Arial"],
+            },
+            data: {
+                field: "isBillBudget",
+                vAlign: 0,
+                hAlign: 1,
+                font: "Arail",
+            },
+        },
     ],
     headRows: 1,
     headRowHeight: [47],

+ 33 - 1
web/maintain/bills_lib/scripts/db_controller.js

@@ -397,7 +397,39 @@ var dbController = {
     onEnterCell: function (sender, args) {
         args.sheet.repaint();
     },
-    editData: function (controller) {
+
+    onButtonClicked: function (sender, info) {
+        if (info.sheet.isEditing()) {
+            info.sheet.endEdit(true);
+        }
+        debugger;
+        const field = dbController.controller.setting.cols[info.col].data.field;
+        var node = dbController.controller.tree.items[info.row];
+        if (node && field === 'isBillBudget') {
+            const isChecked = Boolean(info.sheet.getValue(info.row, info.col));
+            const allNodes = [node, ...node.getPosterity()];
+            const postData = [];
+            allNodes.forEach(item => {
+                postData.push({ ID: item.data.ID, [field]: isChecked });
+            });
+            billsAjax.pasteBills(userAccount, billsLibId, postData, () => {
+                allNodes.forEach(item => {
+                    const row = node.tree.items.indexOf(item);
+                    if (row >= 0) {
+                        sheetBillsDatas.datasIdx['rowIdx' + row][field] = isChecked;
+                        item.data[field] = isChecked;
+                    }
+                });
+                dbController.controller.refreshTreeNode(allNodes, false);
+            })
+
+            /* node.data[field] = isChecked;
+            sheetBillsDatas.datasIdx['rowIdx' + info.row][field] = isChecked;
+            billsAjax.updateBills(userAccount, billsLibId, node.getID(), field, isChecked); */
+        }
+    },
+    editData: function (controller, billsSpread) {
+        billsSpread.bind(GC.Spread.Sheets.Events.ButtonClicked, this.onButtonClicked);
         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);