Browse Source

调差工料应耗数量筛选

laiguoran 3 years ago
parent
commit
60f628ffaf

+ 2 - 2
app/controller/material_controller.js

@@ -200,7 +200,7 @@ module.exports = app => {
                 material: ctx.material,
                 material: ctx.material,
                 shenpiConst,
                 shenpiConst,
             };
             };
-            if ((ctx.material.status === auditConst.status.uncheck || ctx.material.status === auditConst.status.checkNo) && ctx.session.sessionUser.accountId === ctx.material.user_id) {
+            if ((ctx.material.status === auditConst.status.uncheck || ctx.material.status === auditConst.status.checkNo) && (ctx.session.sessionUser.accountId === ctx.material.user_id || ctx.tender.isTourist)) {
                 // data.accountGroup = accountGroup;
                 // data.accountGroup = accountGroup;
                 // 获取所有项目参与者
                 // 获取所有项目参与者
                 const accountList = await ctx.service.projectAccount.getAllDataByCondition({
                 const accountList = await ctx.service.projectAccount.getAllDataByCondition({
@@ -1245,7 +1245,7 @@ module.exports = app => {
             ctx.material.checklistPermission = false;
             ctx.material.checklistPermission = false;
             if (ctx.session.sessionProject.page_show.openMaterialChecklist && ctx.material.highOrder === ctx.material.order && ctx.material.status !== auditConst.status.checked) {
             if (ctx.session.sessionProject.page_show.openMaterialChecklist && ctx.material.highOrder === ctx.material.order && ctx.material.status !== auditConst.status.checked) {
                 const permission = ctx.session.sessionUser.permission;
                 const permission = ctx.session.sessionUser.permission;
-                if ((permission.tender !== undefined && permission.tender.indexOf('4') !== -1) || (ctx.material.order === 1 && ctx.session.sessionUser.accountId === ctx.material.user_id && (ctx.material.status === auditConst.status.uncheck || ctx.material.status === auditConst.status.checkNo))) {
+                if ((permission && permission.tender !== undefined && permission.tender.indexOf('4') !== -1) || (ctx.material.order === 1 && ctx.session.sessionUser.accountId === ctx.material.user_id && (ctx.material.status === auditConst.status.uncheck || ctx.material.status === auditConst.status.checkNo))) {
                     ctx.material.checklistPermission = true;
                     ctx.material.checklistPermission = true;
                 }
                 }
             }
             }

+ 105 - 24
app/public/js/material.js

@@ -244,6 +244,16 @@ $(document).ready(() => {
     SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
     SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
 
 
     const materialSpreadObj = {
     const materialSpreadObj = {
+        materialSheetReset: function () {
+            let newMaterialBillsData = materialBillsData;
+            if($('#bills0_list').is(':checked')) {
+                newMaterialBillsData = _.filter(materialBillsData, function (item) {
+                    return item.quantity === null || item.quantity === 0;
+                });
+            }
+            SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, newMaterialBillsData);
+            materialSpreadObj.refreshActn();
+        },
         refreshActn: function (rowCount = 1) {
         refreshActn: function (rowCount = 1) {
             const setObjEnable = function (obj, enable) {
             const setObjEnable = function (obj, enable) {
                 if (enable) {
                 if (enable) {
@@ -256,8 +266,8 @@ $(document).ready(() => {
             const select = SpreadJsObj.getSelectObject(sheet);
             const select = SpreadJsObj.getSelectObject(sheet);
             // 还需判断是否已被调差清单调用
             // 还需判断是否已被调差清单调用
             setObjEnable($('#del'), !readOnly && select && materialBase.isUsed(select) && rowCount === 1);
             setObjEnable($('#del'), !readOnly && select && materialBase.isUsed(select) && rowCount === 1);
-            setObjEnable($('#up-move'), !readOnly && select && materialBillsData.indexOf(select) > 0);
-            setObjEnable($('#down-move'), !readOnly && select && materialBillsData.indexOf(select) < materialBillsData.length - 1);
+            setObjEnable($('#up-move'), !readOnly && select && materialBillsData.indexOf(select) > 0 && !$('#bills0_list').is(':checked'));
+            setObjEnable($('#down-move'), !readOnly && select && materialBillsData.indexOf(select) < materialBillsData.length - 1 && !$('#bills0_list').is(':checked'));
         },
         },
         add: function () {
         add: function () {
             const sheet = materialSpread.getActiveSheet();
             const sheet = materialSpread.getActiveSheet();
@@ -266,8 +276,15 @@ $(document).ready(() => {
                     materialBillsData.push(result);
                     materialBillsData.push(result);
                     // sheet.addRows(materialBillsData.length - 1, 1);
                     // sheet.addRows(materialBillsData.length - 1, 1);
                     // SpreadJsObj.reLoadRowData(sheet, materialBillsData.length - 1);
                     // SpreadJsObj.reLoadRowData(sheet, materialBillsData.length - 1);
-                    SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
-                    sheet.setSelection(materialBillsData.length - 1, 0, 1, 1);
+                    let newMaterialBillsData = materialBillsData;
+                    if($('#bills0_list').is(':checked')) {
+                        newMaterialBillsData = _.filter(materialBillsData, function (item) {
+                            return item.quantity === null || item.quantity === 0;
+                        });
+                    }
+                    SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, newMaterialBillsData);
+                    // materialSpreadObj.materialSheetReset();
+                    sheet.setSelection(newMaterialBillsData.length - 1, 0, 1, 1);
                     materialSpreadObj.refreshActn();
                     materialSpreadObj.refreshActn();
                     // 月信息价需要同时添加空白的list
                     // 月信息价需要同时添加空白的list
                     if (months.length > 0) {
                     if (months.length > 0) {
@@ -276,8 +293,13 @@ $(document).ready(() => {
                             one_month[m] = null;
                             one_month[m] = null;
                         }
                         }
                         monthsList.push(one_month);
                         monthsList.push(one_month);
-                        materialMonthSpread.getActiveSheet().addRows(monthsList.length - 1, 1);
-                        SpreadJsObj.reLoadRowData(materialMonthSpread.getActiveSheet(), monthsList.length - 1);
+                        // const newMonthsList = _.filter(monthsList, function (item) {
+                        //     return _.findIndex(newMaterialBillsData, { code: item.code }) !== -1;
+                        // });
+                        // materialMonthSpread.getActiveSheet().addRows(newMonthsList.length - 1, 1);
+                        // SpreadJsObj.reLoadRowData(materialMonthSpread.getActiveSheet(), newMonthsList.length - 1);
+                        monthFunGather.monthsListSet();
+                        // materialMonthSpreadObj.monthsListSet();
                     }
                     }
                 }
                 }
             });
             });
@@ -292,21 +314,32 @@ $(document).ready(() => {
                 }
                 }
                 resetTpTable();
                 resetTpTable();
                 const index = materialBillsData.indexOf(select);
                 const index = materialBillsData.indexOf(select);
+                let newMaterialBillsData = materialBillsData;
+                let newIndex = index;
+                if($('#bills0_list').is(':checked')) {
+                    newMaterialBillsData = _.filter(materialBillsData, function (item) {
+                        return item.quantity === null || item.quantity === 0;
+                    });
+                    newIndex = newMaterialBillsData.indexOf(select);
+                }
                 materialBillsData.splice(index, 1);
                 materialBillsData.splice(index, 1);
-                sheet.deleteRows(index, 1);
+                sheet.deleteRows(newIndex, 1);
                 // SpreadJsObj.reLoadSheetData(materialSpread.getActiveSheet());
                 // SpreadJsObj.reLoadSheetData(materialSpread.getActiveSheet());
                 const sel = sheet.getSelections();
                 const sel = sheet.getSelections();
-                sheet.setSelection(index > 0 ? index - 1 : 0, sel.length > 0 ? sel[0].col : 0, 1, 1);
+                sheet.setSelection(newIndex > 0 ? newIndex - 1 : 0, sel.length > 0 ? sel[0].col : 0, 1, 1);
                 materialSpreadObj.refreshActn();
                 materialSpreadObj.refreshActn();
                 // 月信息价需要同时删除
                 // 月信息价需要同时删除
                 if (months.length > 0) {
                 if (months.length > 0) {
                     monthsList.splice(index, 1);
                     monthsList.splice(index, 1);
-                    materialMonthSpread.getActiveSheet().deleteRows(index, 1);
+                    materialMonthSpread.getActiveSheet().deleteRows(newIndex, 1);
                     // SpreadJsObj.reLoadSheetData(materialMonthSpread.getActiveSheet());
                     // SpreadJsObj.reLoadSheetData(materialMonthSpread.getActiveSheet());
                 }
                 }
             });
             });
         },
         },
         upMove: function () {
         upMove: function () {
+            if($('#bills0_list').is(':checked')) {
+                return;
+            }
             const sheet = materialSpread.getActiveSheet();
             const sheet = materialSpread.getActiveSheet();
             const cur = SpreadJsObj.getSelectObject(sheet);
             const cur = SpreadJsObj.getSelectObject(sheet);
             const up = materialBillsData[materialBillsData.indexOf(cur) - 1];
             const up = materialBillsData[materialBillsData.indexOf(cur) - 1];
@@ -338,6 +371,9 @@ $(document).ready(() => {
             });
             });
         },
         },
         downMove: function () {
         downMove: function () {
+            if($('#bills0_list').is(':checked')) {
+                return;
+            }
             const sheet = materialSpread.getActiveSheet();
             const sheet = materialSpread.getActiveSheet();
             const cur = SpreadJsObj.getSelectObject(sheet);
             const cur = SpreadJsObj.getSelectObject(sheet);
             const down = materialBillsData[materialBillsData.indexOf(cur) + 1];
             const down = materialBillsData[materialBillsData.indexOf(cur) + 1];
@@ -460,8 +496,9 @@ $(document).ready(() => {
                     SpreadJsObj.reLoadRowData(info.sheet, info.row);
                     SpreadJsObj.reLoadRowData(info.sheet, info.row);
                     // 判断如果是更改了编号,名称,单位,月信息价需要跟着改变值
                     // 判断如果是更改了编号,名称,单位,月信息价需要跟着改变值
                     if (months.length > 0 && (col.field === 'code' || col.field === 'name' || col.field === 'unit')) {
                     if (months.length > 0 && (col.field === 'code' || col.field === 'name' || col.field === 'unit')) {
-                        monthsList[info.row][col.field] = validText;
-                        SpreadJsObj.reLoadRowData(materialMonthSpread.getActiveSheet(), info.row);
+                        const index = materialBillsData.indexOf(select);
+                        monthsList[index][col.field] = validText;
+                        monthFunGather.monthsListSet();
                     }
                     }
                 }, function () {
                 }, function () {
                     select[col.field] = orgValue;
                     select[col.field] = orgValue;
@@ -617,7 +654,8 @@ $(document).ready(() => {
             postData(window.location.pathname + '/save', { type:'paste', updateData: data }, function (result) {
             postData(window.location.pathname + '/save', { type:'paste', updateData: data }, function (result) {
                 materialBillsData = result.info;
                 materialBillsData = result.info;
                 // SpreadJsObj.reLoadSheetData(materialSpread.getActiveSheet());
                 // SpreadJsObj.reLoadSheetData(materialSpread.getActiveSheet());
-                SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
+                materialSpreadObj.materialSheetReset();
+                // SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
                 // for (const row in rowData) {
                 // for (const row in rowData) {
                 //     materialBillsData.splice(index, 1, result.info[row]);
                 //     materialBillsData.splice(index, 1, result.info[row]);
                 //     SpreadJsObj.reLoadRowData(info.sheet, row);
                 //     SpreadJsObj.reLoadRowData(info.sheet, row);
@@ -629,7 +667,8 @@ $(document).ready(() => {
                         m.unit = materialBillsData[i].unit;
                         m.unit = materialBillsData[i].unit;
                         m.origin = materialBillsData[i].origin;
                         m.origin = materialBillsData[i].origin;
                     }
                     }
-                    SpreadJsObj.loadSheetData(materialMonthSpread.getActiveSheet(), SpreadJsObj.DataType.Data, monthsList);
+                    // SpreadJsObj.loadSheetData(materialMonthSpread.getActiveSheet(), SpreadJsObj.DataType.Data, monthsList);
+                    monthFunGather.monthsListSet();
                     // SpreadJsObj.reLoadSheetData(materialMonthSpread.getActiveSheet());
                     // SpreadJsObj.reLoadSheetData(materialMonthSpread.getActiveSheet());
                 }
                 }
                 m_tp = result.m_tp;
                 m_tp = result.m_tp;
@@ -720,7 +759,7 @@ $(document).ready(() => {
             }
             }
             return pushMonth;
             return pushMonth;
         },
         },
-        monthSheetReset: function () {
+        monthSheetReset: function (ml = monthsList) {
             const monthCols = monthFunGather._monthHeaderSet();
             const monthCols = monthFunGather._monthHeaderSet();
             const newMonthSpreadHeaderCols = static_cols.concat(monthCols);
             const newMonthSpreadHeaderCols = static_cols.concat(monthCols);
             materialMonthSpreadSetting.cols = newMonthSpreadHeaderCols;
             materialMonthSpreadSetting.cols = newMonthSpreadHeaderCols;
@@ -728,10 +767,21 @@ $(document).ready(() => {
             materialMonthSpread.getActiveSheet().reset();
             materialMonthSpread.getActiveSheet().reset();
             SpreadJsObj.initSpreadSettingEvents(materialMonthSpreadSetting, materialMonthCol);
             SpreadJsObj.initSpreadSettingEvents(materialMonthSpreadSetting, materialMonthCol);
             SpreadJsObj.initSheet(materialMonthSpread.getActiveSheet(), materialMonthSpreadSetting);
             SpreadJsObj.initSheet(materialMonthSpread.getActiveSheet(), materialMonthSpreadSetting);
-            SpreadJsObj.loadSheetData(materialMonthSpread.getActiveSheet(), SpreadJsObj.DataType.Data, monthsList);
+            SpreadJsObj.loadSheetData(materialMonthSpread.getActiveSheet(), SpreadJsObj.DataType.Data, ml);
             monthFunGather._setMonthHtml();
             monthFunGather._setMonthHtml();
+        },
+        monthsListSet: function (ml = materialBillsData, checked = true) {
+            if($('#bills0_list').is(':checked') && checked) {
+                ml = _.filter(materialBillsData, function (item) {
+                    return item.quantity === null || item.quantity === 0;
+                });
+            }
+            const newMonthsList = _.filter(monthsList, function (item) {
+                return _.findIndex(ml, { code: item.code }) !== -1;
+            });
+            monthFunGather.monthSheetReset(newMonthsList);
         }
         }
-    }
+    };
 
 
     const materialMonthSpread = SpreadJsObj.createNewSpread($('#material-month-spread')[0]);
     const materialMonthSpread = SpreadJsObj.createNewSpread($('#material-month-spread')[0]);
     const materialMonthSpreadSetting = {
     const materialMonthSpreadSetting = {
@@ -794,7 +844,8 @@ $(document).ready(() => {
                     postData(window.location.pathname + '/month/save', { type:'updateOrigin', updateData: { mb_id: select.mb_id, value: validText } }, function (result) {
                     postData(window.location.pathname + '/month/save', { type:'updateOrigin', updateData: { mb_id: select.mb_id, value: validText } }, function (result) {
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
                         materialBillsData = result.materialBillsData;
                         materialBillsData = result.materialBillsData;
-                        SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
+                        materialSpreadObj.materialSheetReset();
+                        // SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
                     }, function () {
                     }, function () {
                         select[col.field] = orgValue;
                         select[col.field] = orgValue;
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
@@ -818,7 +869,8 @@ $(document).ready(() => {
                     postData(window.location.pathname + '/month/save', { type:'update', updateData: { mb_id: select.mb_id, yearmonth: col.field, value: validText } }, function (result) {
                     postData(window.location.pathname + '/month/save', { type:'update', updateData: { mb_id: select.mb_id, yearmonth: col.field, value: validText } }, function (result) {
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
                         materialBillsData = result.materialBillsData;
                         materialBillsData = result.materialBillsData;
-                        SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
+                        materialSpreadObj.materialSheetReset();
+                        // SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
                         m_tp = result.m_tp;
                         m_tp = result.m_tp;
                         if (materialTax) {
                         if (materialTax) {
                             m_tax_tp = result.m_tax_tp;
                             m_tax_tp = result.m_tax_tp;
@@ -949,7 +1001,8 @@ $(document).ready(() => {
                 postData(window.location.pathname + '/month/save', { type:'paste', updateData: data }, function (result) {
                 postData(window.location.pathname + '/month/save', { type:'paste', updateData: data }, function (result) {
                     SpreadJsObj.reLoadSheetData(materialMonthSpread.getActiveSheet());
                     SpreadJsObj.reLoadSheetData(materialMonthSpread.getActiveSheet());
                     materialBillsData = result.materialBillsData;
                     materialBillsData = result.materialBillsData;
-                    SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
+                    materialSpreadObj.materialSheetReset();
+                    // SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
                     m_tp = result.m_tp;
                     m_tp = result.m_tp;
                     if (materialTax) {
                     if (materialTax) {
                         m_tax_tp = result.m_tax_tp;
                         m_tax_tp = result.m_tax_tp;
@@ -1177,8 +1230,17 @@ $(document).ready(() => {
                 const sheet = materialSpread.getActiveSheet();
                 const sheet = materialSpread.getActiveSheet();
                 const select = SpreadJsObj.getSelectObject(sheet);
                 const select = SpreadJsObj.getSelectObject(sheet);
                 const index = materialBillsData.indexOf(select);
                 const index = materialBillsData.indexOf(select);
+                let newIndex = index;
+                if($('#bills0_list').is(':checked')) {
+                    const newMaterialBillsData = _.filter(materialBillsData, function (item) {
+                        return item.quantity === null || item.quantity === 0;
+                    });
+                    newIndex = newMaterialBillsData.indexOf(select);
+                    newMaterialBillsData.splice(newIndex, 1, result.info);
+                    sheet.zh_data[newIndex] = result.info;
+                }
                 materialBillsData.splice(index, 1, result.info);
                 materialBillsData.splice(index, 1, result.info);
-                SpreadJsObj.reLoadRowData(sheet, index);
+                SpreadJsObj.reLoadRowData(sheet, newIndex);
                 $('#bcyy').modal('hide');
                 $('#bcyy').modal('hide');
             });
             });
         });
         });
@@ -1200,10 +1262,11 @@ $(document).ready(() => {
                 months.push(yearmonth);
                 months.push(yearmonth);
                 months.sort();
                 months.sort();
                 monthsList = data.monthsList;
                 monthsList = data.monthsList;
-                monthFunGather.monthSheetReset();
+                monthFunGather.monthsListSet();
                 // 工料表单价显示也要更新
                 // 工料表单价显示也要更新
                 materialBillsData = data.materialBillsData;
                 materialBillsData = data.materialBillsData;
-                SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
+                materialSpreadObj.materialSheetReset();
+                // SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
                 m_tp = data.m_tp;
                 m_tp = data.m_tp;
                 if (materialTax) {
                 if (materialTax) {
                     m_tax_tp = data.m_tax_tp;
                     m_tax_tp = data.m_tax_tp;
@@ -1232,11 +1295,12 @@ $(document).ready(() => {
                     });
                     });
                 }
                 }
                 monthsList = data.monthsList;
                 monthsList = data.monthsList;
-                monthFunGather.monthSheetReset();
+                monthFunGather.monthsListSet();
 
 
                 // 工料表单价显示也要更新
                 // 工料表单价显示也要更新
                 materialBillsData = data.materialBillsData;
                 materialBillsData = data.materialBillsData;
-                SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
+                materialSpreadObj.materialSheetReset();
+                // SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialBillsData);
                 m_tp = data.m_tp;
                 m_tp = data.m_tp;
                 if (materialTax) {
                 if (materialTax) {
                     m_tax_tp = data.m_tax_tp;
                     m_tax_tp = data.m_tax_tp;
@@ -1248,6 +1312,23 @@ $(document).ready(() => {
     } else {
     } else {
         // SpreadJsObj.forbiddenSpreadContextMenu('#material-spread', materialSpread);
         // SpreadJsObj.forbiddenSpreadContextMenu('#material-spread', materialSpread);
     }
     }
+
+    // 筛选调差工料本期应耗数量为0
+    $('#bills0_list').click(function () {
+        const isCheck = $(this).is(':checked');
+        let newMaterialBillsData = materialBillsData;
+        if (isCheck) {
+            newMaterialBillsData = _.filter(materialBillsData, function (item) {
+                return item.quantity === null || item.quantity === 0;
+            });
+            SpreadJsObj.initSpreadSettingEvents(materialSpreadSetting, materialCol);
+            SpreadJsObj.initSheet(materialSpread.getActiveSheet(), materialSpreadSetting);
+        }
+        SpreadJsObj.loadSheetData(materialSpread.getActiveSheet(), SpreadJsObj.DataType.Data, newMaterialBillsData);
+        monthFunGather.monthsListSet(newMaterialBillsData, false);
+        materialSpreadObj.refreshActn();
+    });
+
     $.subMenu({
     $.subMenu({
         menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
         menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
         toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
         toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',

+ 1 - 1
app/public/js/material_list.js

@@ -1117,7 +1117,7 @@ $(document).ready(() => {
             const height = $('.bcontent-wrap').height();
             const height = $('.bcontent-wrap').height();
             setLocalCache('material_list2_' + materialID, height);
             setLocalCache('material_list2_' + materialID, height);
         }
         }
-    });
+    });jub
 
 
     // 展开收起月信息价并浏览器记住本期展开收起
     // 展开收起月信息价并浏览器记住本期展开收起
     $('a', '.right-nav').bind('click', function () {
     $('a', '.right-nav').bind('click', function () {

+ 15 - 10
app/service/material_audit.js

@@ -13,6 +13,7 @@ const pushType = require('../const/audit').pushType;
 const smsTypeConst = require('../const/sms_type');
 const smsTypeConst = require('../const/sms_type');
 const wxConst = require('../const/wechat_template');
 const wxConst = require('../const/wechat_template');
 const shenpiConst = require('../const/shenpi');
 const shenpiConst = require('../const/shenpi');
+const materialConst = require('../const/material');
 
 
 module.exports = app => {
 module.exports = app => {
     class MaterialAudit extends app.BaseService {
     class MaterialAudit extends app.BaseService {
@@ -234,13 +235,14 @@ module.exports = app => {
 
 
                 // 微信模板通知
                 // 微信模板通知
                 const materialInfo = await this.ctx.service.material.getDataById(materialId);
                 const materialInfo = await this.ctx.service.material.getDataById(materialId);
+                const material_decimal = materialInfo && materialInfo.decimal ? JSON.parse(materialInfo.decimal) : materialConst.decimal;
                 const wechatData = {
                 const wechatData = {
                     qi: materialInfo.order,
                     qi: materialInfo.order,
                     status: wxConst.status.check,
                     status: wxConst.status.check,
                     tips: wxConst.tips.check,
                     tips: wxConst.tips.check,
                     begin_time: Date.parse(new Date()),
                     begin_time: Date.parse(new Date()),
-                    m_tp: this.ctx.helper.add(this.ctx.helper.round(materialInfo.m_tp, 2), this.ctx.helper.round(materialInfo.ex_tp, 2)),
-                    hs_m_tp: this.ctx.helper.add(this.ctx.helper.round(this.ctx.helper.mul(materialInfo.m_tp, 1+materialInfo.rate/100), 2), this.ctx.helper.round(this.ctx.helper.mul(materialInfo.ex_tp, 1+materialInfo.rate/100), 2)),
+                    m_tp: this.ctx.helper.add(this.ctx.helper.round(materialInfo.m_tp, material_decimal.tp), this.ctx.helper.round(materialInfo.ex_tp, material_decimal.tp)),
+                    hs_m_tp: this.ctx.helper.add(this.ctx.helper.round(this.ctx.helper.mul(materialInfo.m_tp, 1+materialInfo.rate/100), material_decimal.tp), this.ctx.helper.round(this.ctx.helper.mul(materialInfo.ex_tp, 1+materialInfo.rate/100), material_decimal.tp)),
                 };
                 };
                 await this.ctx.helper.sendWechat(audit.aid, smsTypeConst.const.TC, smsTypeConst.judge.approval.toString(), wxConst.template.material, wechatData);
                 await this.ctx.helper.sendWechat(audit.aid, smsTypeConst.const.TC, smsTypeConst.judge.approval.toString(), wxConst.template.material, wechatData);
 
 
@@ -302,6 +304,7 @@ module.exports = app => {
                     order: 1,
                     order: 1,
                 });
                 });
                 const materialInfo = await this.ctx.service.material.getDataById(materialId);
                 const materialInfo = await this.ctx.service.material.getDataById(materialId);
+                const material_decimal = materialInfo && materialInfo.decimal ? JSON.parse(materialInfo.decimal) : materialConst.decimal;
 
 
                 // 无下一审核人表示,审核结束
                 // 无下一审核人表示,审核结束
                 if (nextAudit) {
                 if (nextAudit) {
@@ -321,8 +324,8 @@ module.exports = app => {
                         status: wxConst.status.check,
                         status: wxConst.status.check,
                         tips: wxConst.tips.check,
                         tips: wxConst.tips.check,
                         begin_time: Date.parse(begin_audit.begin_time),
                         begin_time: Date.parse(begin_audit.begin_time),
-                        m_tp: this.ctx.helper.add(this.ctx.helper.round(materialInfo.m_tp, 2), this.ctx.helper.round(materialInfo.ex_tp, 2)),
-                        hs_m_tp: this.ctx.helper.add(this.ctx.helper.round(this.ctx.helper.mul(materialInfo.m_tp, 1+materialInfo.rate/100), 2), this.ctx.helper.round(this.ctx.helper.mul(materialInfo.ex_tp, 1+materialInfo.rate/100), 2)),
+                        m_tp: this.ctx.helper.add(this.ctx.helper.round(materialInfo.m_tp, material_decimal.tp), this.ctx.helper.round(materialInfo.ex_tp, material_decimal.tp)),
+                        hs_m_tp: this.ctx.helper.add(this.ctx.helper.round(this.ctx.helper.mul(materialInfo.m_tp, 1+materialInfo.rate/100), material_decimal.tp), this.ctx.helper.round(this.ctx.helper.mul(materialInfo.ex_tp, 1+materialInfo.rate/100), material_decimal.tp)),
                     };
                     };
                     await this.ctx.helper.sendWechat(nextAudit.aid, smsTypeConst.const.TC, smsTypeConst.judge.approval.toString(), wxConst.template.material, wechatData);
                     await this.ctx.helper.sendWechat(nextAudit.aid, smsTypeConst.const.TC, smsTypeConst.judge.approval.toString(), wxConst.template.material, wechatData);
 
 
@@ -413,8 +416,8 @@ module.exports = app => {
                         status: wxConst.status.success,
                         status: wxConst.status.success,
                         tips: wxConst.tips.success,
                         tips: wxConst.tips.success,
                         begin_time: Date.parse(begin_audit.begin_time),
                         begin_time: Date.parse(begin_audit.begin_time),
-                        m_tp: this.ctx.helper.add(this.ctx.helper.round(materialInfo.m_tp, 2), this.ctx.helper.round(materialInfo.ex_tp, 2)),
-                        hs_m_tp: this.ctx.helper.add(this.ctx.helper.round(this.ctx.helper.mul(materialInfo.m_tp, 1+materialInfo.rate/100), 2), this.ctx.helper.round(this.ctx.helper.mul(materialInfo.ex_tp, 1+materialInfo.rate/100), 2)),
+                        m_tp: this.ctx.helper.add(this.ctx.helper.round(materialInfo.m_tp, material_decimal.tp), this.ctx.helper.round(materialInfo.ex_tp, material_decimal.tp)),
+                        hs_m_tp: this.ctx.helper.add(this.ctx.helper.round(this.ctx.helper.mul(materialInfo.m_tp, 1+materialInfo.rate/100), material_decimal.tp), this.ctx.helper.round(this.ctx.helper.mul(materialInfo.ex_tp, 1+materialInfo.rate/100), material_decimal.tp)),
                     };
                     };
                     await this.ctx.helper.sendWechat(users, smsTypeConst.const.TC, smsTypeConst.judge.result.toString(), wxConst.template.material, wechatData);
                     await this.ctx.helper.sendWechat(users, smsTypeConst.const.TC, smsTypeConst.judge.result.toString(), wxConst.template.material, wechatData);
 
 
@@ -504,14 +507,15 @@ module.exports = app => {
                     order: 1,
                     order: 1,
                 });
                 });
                 const materialInfo = await this.ctx.service.material.getDataById(materialId);
                 const materialInfo = await this.ctx.service.material.getDataById(materialId);
+                const material_decimal = materialInfo && materialInfo.decimal ? JSON.parse(materialInfo.decimal) : materialConst.decimal;
                 const users = this._.uniq(this._.concat(this._.map(auditors, 'aid'), materialInfo.user_id));
                 const users = this._.uniq(this._.concat(this._.map(auditors, 'aid'), materialInfo.user_id));
                 const wechatData = {
                 const wechatData = {
                     qi: materialInfo.order,
                     qi: materialInfo.order,
                     status: wxConst.status.back,
                     status: wxConst.status.back,
                     tips: wxConst.tips.back,
                     tips: wxConst.tips.back,
                     begin_time: Date.parse(begin_audit.begin_time),
                     begin_time: Date.parse(begin_audit.begin_time),
-                    m_tp: this.ctx.helper.add(this.ctx.helper.round(materialInfo.m_tp, 2), this.ctx.helper.round(materialInfo.ex_tp, 2)),
-                    hs_m_tp: this.ctx.helper.add(this.ctx.helper.round(this.ctx.helper.mul(materialInfo.m_tp, 1+materialInfo.rate/100), 2), this.ctx.helper.round(this.ctx.helper.mul(materialInfo.ex_tp, 1+materialInfo.rate/100), 2)),
+                    m_tp: this.ctx.helper.add(this.ctx.helper.round(materialInfo.m_tp, material_decimal.tp), this.ctx.helper.round(materialInfo.ex_tp, material_decimal.tp)),
+                    hs_m_tp: this.ctx.helper.add(this.ctx.helper.round(this.ctx.helper.mul(materialInfo.m_tp, 1+materialInfo.rate/100), material_decimal.tp), this.ctx.helper.round(this.ctx.helper.mul(materialInfo.ex_tp, 1+materialInfo.rate/100), material_decimal.tp)),
                 };
                 };
                 await this.ctx.helper.sendWechat(users, smsTypeConst.const.TC, smsTypeConst.judge.result.toString(), wxConst.template.material, wechatData);
                 await this.ctx.helper.sendWechat(users, smsTypeConst.const.TC, smsTypeConst.judge.result.toString(), wxConst.template.material, wechatData);
 
 
@@ -602,13 +606,14 @@ module.exports = app => {
                     order: 1,
                     order: 1,
                 });
                 });
                 const materialInfo = await this.ctx.service.material.getDataById(materialId);
                 const materialInfo = await this.ctx.service.material.getDataById(materialId);
+                const material_decimal = materialInfo && materialInfo.decimal ? JSON.parse(materialInfo.decimal) : materialConst.decimal;
                 const wechatData = {
                 const wechatData = {
                     qi: materialInfo.order,
                     qi: materialInfo.order,
                     status: wxConst.status.check,
                     status: wxConst.status.check,
                     tips: wxConst.tips.check,
                     tips: wxConst.tips.check,
                     begin_time: Date.parse(begin_audit.begin_time),
                     begin_time: Date.parse(begin_audit.begin_time),
-                    m_tp: this.ctx.helper.add(this.ctx.helper.round(materialInfo.m_tp, 2), this.ctx.helper.round(materialInfo.ex_tp, 2)),
-                    hs_m_tp: this.ctx.helper.add(this.ctx.helper.round(this.ctx.helper.mul(materialInfo.m_tp, 1+materialInfo.rate/100), 2), this.ctx.helper.round(this.ctx.helper.mul(materialInfo.ex_tp, 1+materialInfo.rate/100), 2)),
+                    m_tp: this.ctx.helper.add(this.ctx.helper.round(materialInfo.m_tp, material_decimal.tp), this.ctx.helper.round(materialInfo.ex_tp, material_decimal.tp)),
+                    hs_m_tp: this.ctx.helper.add(this.ctx.helper.round(this.ctx.helper.mul(materialInfo.m_tp, 1+materialInfo.rate/100), material_decimal.tp), this.ctx.helper.round(this.ctx.helper.mul(materialInfo.ex_tp, 1+materialInfo.rate/100), material_decimal.tp)),
                 };
                 };
                 await this.ctx.helper.sendWechat(preAuditor.aid, smsTypeConst.const.TC, smsTypeConst.judge.approval.toString(), wxConst.template.material, wechatData);
                 await this.ctx.helper.sendWechat(preAuditor.aid, smsTypeConst.const.TC, smsTypeConst.judge.approval.toString(), wxConst.template.material, wechatData);
 
 

+ 1 - 1
app/service/material_list.js

@@ -220,7 +220,7 @@ module.exports = app => {
             const newTp = this.ctx.helper.round(this.ctx.helper.mul(newQuantity, mbInfo.m_spread), this.ctx.material.decimal.tp);
             const newTp = this.ctx.helper.round(this.ctx.helper.mul(newQuantity, mbInfo.m_spread), this.ctx.material.decimal.tp);
             const updateData = {
             const updateData = {
                 id: mb_id,
                 id: mb_id,
-                quantity: this.ctx.helper.round(mb_quantity.quantity, this.ctx.material.decimal.qty),
+                quantity: newQuantity,
                 m_tp: newTp,
                 m_tp: newTp,
                 m_tax_tp: this.ctx.helper.round(this.ctx.helper.mul(newTp, (1 + this.ctx.helper.div(mbInfo.m_tax, 100))), this.ctx.material.decimal.tp),
                 m_tax_tp: this.ctx.helper.round(this.ctx.helper.mul(newTp, (1 + this.ctx.helper.div(mbInfo.m_tax, 100))), this.ctx.material.decimal.tp),
             };
             };

+ 8 - 0
app/view/material/info.ejs

@@ -23,6 +23,14 @@
                 <div class="d-inline-block ml-2" >
                 <div class="d-inline-block ml-2" >
                     <a href="#cc-digits" class="btn btn-sm btn-light text-primary" data-toggle="modal" data-placement="bottom" title="小数位数" data-target="#cc-digits" ><i class="fa fa-cog" aria-hidden="true"></i></a>
                     <a href="#cc-digits" class="btn btn-sm btn-light text-primary" data-toggle="modal" data-placement="bottom" title="小数位数" data-target="#cc-digits" ><i class="fa fa-cog" aria-hidden="true"></i></a>
                 </div>
                 </div>
+                <div class="d-inline-block">
+                    <a class="btn btn-sm btn-light">
+                        <div class="custom-control custom-checkbox">
+                            <input type="checkbox" class="custom-control-input" id="bills0_list">
+                            <label class="custom-control-label text-primary" for="bills0_list">本期应耗数量为0</label>
+                        </div>
+                    </a>
+                </div>
             </div>
             </div>
             <div class="ml-auto">
             <div class="ml-auto">
                 <% if (ctx.session.sessionProject.page_show.openMaterialChecklist && material.order === material.highOrder) { %>
                 <% if (ctx.session.sessionProject.page_show.openMaterialChecklist && material.order === material.highOrder) { %>