Bläddra i källkod

变更清单提供是否计价按钮

ellisran 1 år sedan
förälder
incheckning
f2aaa07523

+ 2 - 2
app/public/js/change_information.js

@@ -74,7 +74,7 @@ $(document).ready(() => {
     if (cca !== null && cca !== undefined) {
         $('#customCheck1').prop('checked', cca !== 'false');
     }
-    changeSpreadSheet.setColumnVisible(5,$('#customCheck1').is(':checked'), GC.Spread.Sheets.SheetArea.viewport);
+    changeSpreadSheet.setColumnVisible(6,$('#customCheck1').is(':checked'), GC.Spread.Sheets.SheetArea.viewport);
     // 变更详情展示和隐藏
     $('.change-detail-checkbox').on('click', function (e) {
         if($(e.target).is('label')){
@@ -82,7 +82,7 @@ $(document).ready(() => {
         }
         // // 设置用户项目本地记录展示和隐藏情况
         setLocalCache('change-checkbox-account-'+ accountId, $(this).is(':checked'));
-        changeSpreadSheet.setColumnVisible(5,$(this).is(':checked'), GC.Spread.Sheets.SheetArea.viewport);
+        changeSpreadSheet.setColumnVisible(6,$(this).is(':checked'), GC.Spread.Sheets.SheetArea.viewport);
     });
 
     // 计算最新的变更总额和change的total_price是否一致,不一致则更新

+ 15 - 12
app/public/js/change_information_approval.js

@@ -19,6 +19,7 @@ function getPasteHint (str, row = '') {
 $(document).ready(() => {
     const changeSpreadSetting = {
         cols: [
+            {title: '计价', colSpan: '1', rowSpan: '2', field: 'is_valuation', hAlign: 1, width: 50, cellType: 'checkbox', readOnly: true},
             {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 80, formatter: '@', readOnly: true},
             {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 120, formatter: '@', readOnly: true},
             {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@', readOnly: true},
@@ -113,6 +114,8 @@ $(document).ready(() => {
             // 增加汇总行并设为锁定禁止编辑状态
             changeSpreadSheet.addRows(changeSpreadSheet.getRowCount(), 1);
             changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 0, '合计');
+            const cellType1 = new GC.Spread.Sheets.CellTypes.Text();
+            changeSpreadSheet.getCell(changeSpreadSheet.getRowCount() - 1, 0).cellType(cellType1);
             changeSpreadSheet.setStyle(changeSpreadSheet.getRowCount() - 1, -1, style1);
             changeSpreadObj.countSum();
         },
@@ -159,8 +162,8 @@ $(document).ready(() => {
         },
         setRowValueAndSum: function (data, row, col) {
             for (const j in aidList) {
-                const sum = ZhCalc.round(ZhCalc.mul(data.unit_price, parseFloat(changeSpreadSheet.getValue(row, 10 + parseInt(j)*2))), totalPriceUnit);
-                changeSpreadSheet.setValue(row, 11 + j*2, sum !== 0 ? sum : null);
+                const sum = ZhCalc.round(ZhCalc.mul(data.unit_price, parseFloat(changeSpreadSheet.getValue(row, 11 + parseInt(j)*2))), totalPriceUnit);
+                changeSpreadSheet.setValue(row, 12 + j*2, sum !== 0 ? sum : null);
             }
             // const sum = ZhCalc.round(ZhCalc.mul(data.unit_price, data.spamount), totalPriceUnit);
             // changeSpreadSheet.setValue(row, col+1, sum !== 0 ? sum : null);
@@ -171,11 +174,11 @@ $(document).ready(() => {
             let changed_sum = 0;
             for(let i = 0; i < rowCount - 1; i++){
                 audit_sum = ZhCalc.add(audit_sum, changeSpreadSheet.getValue(i, col+1));
-                changed_sum = ZhCalc.add(changed_sum, changeSpreadSheet.getValue(i, (11 + aidList.length*2)));
+                changed_sum = ZhCalc.add(changed_sum, changeSpreadSheet.getValue(i, (12 + aidList.length*2)));
             }
 
             changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, col+1, audit_sum !== 0 ? audit_sum : null);
-            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, (11 + aidList.length*2), changed_sum !== 0 ? changed_sum : null);
+            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, (12 + aidList.length*2), changed_sum !== 0 ? changed_sum : null);
         },
         countSum: function() {
             const rowCount = changeSpreadSheet.getRowCount();
@@ -183,20 +186,20 @@ $(document).ready(() => {
                 cSum = 0,
                 cdSum = 0;
             for(let i = 0; i < rowCount - 1; i++){
-                oSum = ZhCalc.add(oSum, changeSpreadSheet.getValue(i, 7));
-                cSum = ZhCalc.add(cSum, changeSpreadSheet.getValue(i, 9));
-                cdSum = ZhCalc.add(cdSum, changeSpreadSheet.getValue(i, (11 + aidList.length*2)));
+                oSum = ZhCalc.add(oSum, changeSpreadSheet.getValue(i, 8));
+                cSum = ZhCalc.add(cSum, changeSpreadSheet.getValue(i, 10));
+                cdSum = ZhCalc.add(cdSum, changeSpreadSheet.getValue(i, (12 + aidList.length*2)));
             }
-            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 7, oSum !== 0 ? oSum : null);
-            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 9, cSum !== 0 ? cSum : null);
-            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, (11 + aidList.length*2), cdSum !== 0 ? cdSum : null);
+            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 8, oSum !== 0 ? oSum : null);
+            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 10, cSum !== 0 ? cSum : null);
+            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, (12 + aidList.length*2), cdSum !== 0 ? cdSum : null);
             // 用户的数据合计
             for (const j in aidList) {
                 let audit_sum = 0;
                 for(let i = 0; i < rowCount - 1; i++){
-                    audit_sum = ZhCalc.add(audit_sum, changeSpreadSheet.getValue(i, 11 + j*2));
+                    audit_sum = ZhCalc.add(audit_sum, changeSpreadSheet.getValue(i, 12 + j*2));
                 }
-                changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 11 + j*2, audit_sum !== 0 ? audit_sum : null);
+                changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 12 + j*2, audit_sum !== 0 ? audit_sum : null);
             }
         },
         deletePress: function (sheet) {

+ 40 - 8
app/public/js/change_information_set.js

@@ -94,6 +94,7 @@ let searchCodeList = [];
 $(document).ready(() => {
     const changeSpreadSetting = {
         cols: [
+            {title: '计价', colSpan: '1', rowSpan: '2', field: 'is_valuation', hAlign: 1, width: 50, cellType: 'checkbox', readOnly: false},
             {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 80, formatter: '@', readOnly: 'readOnly.isEdit2'},
             {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 120, formatter: '@', readOnly: 'readOnly.isEdit2'},
             {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@', readOnly: 'readOnly.isEdit2', cellType: 'unit', comboItems: changeUnits, comboEdit: true},
@@ -182,6 +183,8 @@ $(document).ready(() => {
             // 增加汇总行并设为锁定禁止编辑状态
             changeSpreadSheet.addRows(changeSpreadSheet.getRowCount(), 1);
             changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 0, '合计');
+            const cellType1 = new GC.Spread.Sheets.CellTypes.Text();
+            changeSpreadSheet.getCell(changeSpreadSheet.getRowCount() - 1, 0).cellType(cellType1);
             changeSpreadSheet.setStyle(changeSpreadSheet.getRowCount() - 1, -1, style1);
             changeSpreadObj.countSum();
         },
@@ -191,13 +194,13 @@ $(document).ready(() => {
                 cSum = 0,
                 cdSum = 0;
             for(var i = 0; i < rowCount - 1; i++){
-                oSum = ZhCalc.add(oSum, changeSpreadSheet.getValue(i, 7));
-                cSum = ZhCalc.add(cSum, changeSpreadSheet.getValue(i, 9));
-                cdSum = ZhCalc.add(cdSum, changeSpreadSheet.getValue(i, 11));
+                oSum = ZhCalc.add(oSum, changeSpreadSheet.getValue(i, 8));
+                cSum = ZhCalc.add(cSum, changeSpreadSheet.getValue(i, 10));
+                cdSum = ZhCalc.add(cdSum, changeSpreadSheet.getValue(i, 12));
             }
-            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 7, oSum !== 0 ? oSum : null);
-            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 9, cSum !== 0 ? cSum : null);
-            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 11, cdSum !== 0 ? cdSum : null);
+            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 8, oSum !== 0 ? oSum : null);
+            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 10, cSum !== 0 ? cSum : null);
+            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 12, cdSum !== 0 ? cdSum : null);
         },
         add: function () {
             let select = null;
@@ -236,6 +239,8 @@ $(document).ready(() => {
             postData(window.location.pathname + '/save', {type: 'batchadd', num, postData: select ? select.order : null}, function (result) {
                 if (result) {
                     changeList = result;
+                    SpreadJsObj.initSpreadSettingEvents(changeSpreadSetting, changeCol);
+                    SpreadJsObj.initSheet(changeSpreadSheet, changeSpreadSetting);
                     SpreadJsObj.loadSheetData(changeSpreadSheet, SpreadJsObj.DataType.Data, changeList);
                     changeSpreadObj.makeSjsFooter();
                     changeSpreadObj.resetXmjSpread();
@@ -453,7 +458,7 @@ $(document).ready(() => {
             if (info.sheet.zh_setting) {
                 const select = SpreadJsObj.getSelectObject(info.sheet);
                 const col = info.sheet.zh_setting.cols[info.col];
-                if (col.field === 'del_list') {
+                if (col.field === 'del_list' || col.field === 'is_valuation') {
                     return;
                 }
                 let validText = is_numeric(info.editingText) && _.indexOf(numField, col.field) !== -1 ? parseFloat(info.editingText) : (info.editingText ? trimInvalidChar(info.editingText) : '');
@@ -684,6 +689,27 @@ $(document).ready(() => {
                 return;
             });
         },
+        buttonClicked: function (e, info) {
+            if (info.sheet.zh_setting) {
+                const select = SpreadJsObj.getSelectObject(info.sheet);
+                const col = info.sheet.zh_setting.cols[info.col];
+                if (col.field === 'is_valuation') {
+                    if (info.sheet.isEditing()) {
+                        info.sheet.endEdit(true);
+                    }
+                    select.is_valuation = info.sheet.getValue(info.row, info.col) ? 0 : 1;
+                    delete select.waitingLoading;
+                    // 更新至服务器
+                    postData(window.location.pathname + '/save', { type:'update', updateData: select }, function (result) {
+                        changeList.splice(info.row, 1, select);
+                        SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                    }, function () {
+                        select.is_valuation = info.sheet.getValue(info.row, info.col) ? 1 : 0;
+                        SpreadJsObj.reLoadRowData(info.sheet, info.row);
+                    });
+                }
+            }
+        },
         valueChanged(e, info) {
             // 防止ctrl+z撤销数据
             SpreadJsObj.reLoadRowData(info.sheet, info.row);
@@ -934,8 +960,9 @@ $(document).ready(() => {
         changeSpread.bind(spreadNS.Events.SelectionChanged, changeSpreadObj.selectionChanged);
         changeSpread.bind(spreadNS.Events.ClipboardPasted, changeSpreadObj.clipboardPasted);
         changeSpread.bind(spreadNS.Events.ValueChanged, changeSpreadObj.valueChanged);
+        changeSpread.bind(spreadNS.Events.ButtonClicked, changeSpreadObj.buttonClicked);
         SpreadJsObj.addDeleteBind(changeSpread, changeSpreadObj.deletePress);
-        changeSpreadSheet.getCell(-1, 12).foreColor('#dc3545');
+        changeSpreadSheet.getCell(-1, 13).foreColor('#dc3545');
         const delCommand = {
             canUndo: false,
             execute: function (context, options, isUndo) {
@@ -1387,7 +1414,10 @@ $(document).ready(() => {
         postData(window.location.pathname + '/save', { type:'ledger_list', updateData: newLedgerList, postData: select ? select.order : null }, function (result) {
             changeList = result.changeList;
             changeUsedData = result.usedList;
+            SpreadJsObj.initSpreadSettingEvents(changeSpreadSetting, changeCol);
+            SpreadJsObj.initSheet(changeSpreadSheet, changeSpreadSetting);
             SpreadJsObj.loadSheetData(changeSpreadSheet, SpreadJsObj.DataType.Data, changeList);
+            // SpreadJsObj.reLoadSheetData(changeSpreadSheet);
             changeSpreadObj.makeSjsFooter();
             const select = SpreadJsObj.getSelectObject(changeSpreadSheet);
             changeSpreadObj.resetXmjSpread(select);
@@ -2198,6 +2228,7 @@ function remakeChangeSpread(cOrder = changeOrder) {
                 xmj_fxgc,
                 gcl_id,
                 mx_id,
+                is_valuation: 1,
             };
             const radionInfo = changeList.find(function (info) {
                 //return info.code === code && (info.lid == lid || parseInt(info.lid) === parseInt(lindex)) && gcl_id == info.gcl_id && (info.bwmx === bwmx || (info.bwmx === xmj_jldy && info.mx_id && info.mx_id === mx_id)) && parseInt(info.oamount) === parseInt(oamount);
@@ -2207,6 +2238,7 @@ function remakeChangeSpread(cOrder = changeOrder) {
                 trlist.camount = radionInfo.camount;
                 trlist.camount_expr = radionInfo.camount_expr;
                 trlist.detail = radionInfo.detail;
+                trlist.is_valuation = radionInfo.is_valuation;
             }
             newTableList.push(trlist);
         }

+ 18 - 15
app/public/js/change_information_show.js

@@ -10,6 +10,7 @@
 $(document).ready(() => {
     const changeSpreadSetting = {
         cols: [
+            {title: '计价', colSpan: '1', rowSpan: '2', field: 'is_valuation', hAlign: 1, width: 50, cellType: 'checkbox', readOnly: true},
             {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 80, formatter: '@'},
             {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 120, formatter: '@'},
             {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@'},
@@ -107,6 +108,8 @@ $(document).ready(() => {
             // 增加汇总行并设为锁定禁止编辑状态
             changeSpreadSheet.addRows(changeSpreadSheet.getRowCount(), 1);
             changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 0, '合计');
+            const cellType1 = new GC.Spread.Sheets.CellTypes.Text();
+            changeSpreadSheet.getCell(changeSpreadSheet.getRowCount() - 1, 0).cellType(cellType1);
             changeSpreadSheet.setStyle(changeSpreadSheet.getRowCount() - 1, -1, style1);
             changeSpreadObj.countSum();
         },
@@ -137,11 +140,11 @@ $(document).ready(() => {
             for (const j in aidList) {
                 for(let i = 0; i <= rowCount - 1; i++){
                     const data = {
-                        unit_price: changeSpreadSheet.getValue(i, 3),
-                        amount: parseFloat(changeSpreadSheet.getValue(i, 12 + parseInt(j)*2)),
+                        unit_price: changeSpreadSheet.getValue(i, 4),
+                        amount: parseFloat(changeSpreadSheet.getValue(i, 13 + parseInt(j)*2)),
                     };
                     const sum = ZhCalc.round(ZhCalc.mul(data.unit_price, data.amount), totalPriceUnit);
-                    changeSpreadSheet.setValue(i, 13 + j*2, sum !== 0 ? sum : null);
+                    changeSpreadSheet.setValue(i, 14 + j*2, sum !== 0 ? sum : null);
                 }
             }
         },
@@ -152,31 +155,31 @@ $(document).ready(() => {
                 sSum = 0,
                 cdSum = 0;
             for(let i = 0; i < rowCount - 1; i++){
-                oSum = ZhCalc.add(oSum, changeSpreadSheet.getValue(i, 7));
-                cSum = ZhCalc.add(cSum, changeSpreadSheet.getValue(i, 9));
-                sSum = ZhCalc.add(sSum, changeSpreadSheet.getValue(i, 11));
-                cdSum = ZhCalc.add(cdSum, changeSpreadSheet.getValue(i, (13 + aidList.length*2)));
+                oSum = ZhCalc.add(oSum, changeSpreadSheet.getValue(i, 8));
+                cSum = ZhCalc.add(cSum, changeSpreadSheet.getValue(i, 10));
+                sSum = ZhCalc.add(sSum, changeSpreadSheet.getValue(i, 12));
+                cdSum = ZhCalc.add(cdSum, changeSpreadSheet.getValue(i, (14 + aidList.length*2)));
             }
-            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 7, oSum !== 0 ? oSum : null);
-            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 9, cSum !== 0 ? cSum : null);
-            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 11, sSum !== 0 ? sSum : null);
-            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, (13 + aidList.length*2), cdSum !== 0 ? cdSum : null);
+            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 8, oSum !== 0 ? oSum : null);
+            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 10, cSum !== 0 ? cSum : null);
+            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 12, sSum !== 0 ? sSum : null);
+            changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, (14 + aidList.length*2), cdSum !== 0 ? cdSum : null);
             // 用户的数据合计
             for (const j in aidList) {
                 let audit_sum = 0;
                 for(let i = 0; i < rowCount - 1; i++){
-                    audit_sum = ZhCalc.add(audit_sum, changeSpreadSheet.getValue(i, 13 + j*2));
+                    audit_sum = ZhCalc.add(audit_sum, changeSpreadSheet.getValue(i, 14 + j*2));
                 }
-                changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 13 + j*2, audit_sum !== 0 ? audit_sum : null);
+                changeSpreadSheet.setValue(changeSpreadSheet.getRowCount() - 1, 14 + j*2, audit_sum !== 0 ? audit_sum : null);
             }
         },
         showHideAudit: function (show = false) {
             const count = changeSpreadSetting.cols.length;
-            for (let i = 12; i < count - 2; i++) {
+            for (let i = 13; i < count - 2; i++) {
                 changeSpreadSheet.setColumnVisible(i, show, GC.Spread.Sheets.SheetArea.viewport);
             }
-            changeSpreadSheet.setColumnVisible(10, !show, GC.Spread.Sheets.SheetArea.viewport);
             changeSpreadSheet.setColumnVisible(11, !show, GC.Spread.Sheets.SheetArea.viewport);
+            changeSpreadSheet.setColumnVisible(12, !show, GC.Spread.Sheets.SheetArea.viewport);
         }
     };
 

+ 2 - 0
app/service/change_audit_list.js

@@ -106,6 +106,7 @@ module.exports = app => {
                     xmj_fxgc: null,
                     gcl_id: '',
                     order,
+                    is_valuation: 1,
                 };
                 // 新增工料
                 const result = await transaction.insert(this.tableName, insertData);
@@ -169,6 +170,7 @@ module.exports = app => {
                         xmj_fxgc: null,
                         gcl_id: '',
                         order: order ? order + i : null,
+                        is_valuation: 1,
                     };
                     insertArray.push(insertData);
                 }

+ 3 - 0
sql/update.sql

@@ -9,3 +9,6 @@ ADD COLUMN `material_col_show` json DEFAULT NULL COMMENT '调差列表展示合
 
 ALTER TABLE `zh_change_audit_list`
 ADD COLUMN `camount_expr` varchar(500) DEFAULT '' COMMENT '变更数量计算式' AFTER `camount`;
+
+ALTER TABLE `zh_change_audit_list`
+ADD COLUMN `is_valuation` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否计价' AFTER `spamount`;