Browse Source

Merge branch 'dev' of http://192.168.1.41:3000/maixinrong/Calculation into dev

MaiXinRong 3 years ago
parent
commit
86690fe6e3

+ 11 - 2
app/controller/material_controller.js

@@ -760,8 +760,13 @@ module.exports = app => {
                 };
                 const monthList = await ctx.service.materialMonth.getListByMid(ctx.material.id);
                 const mbList = await this._getMaterialBillsData(ctx);
+                const material_month = this.ctx.material.months ? this.ctx.material.months.split(',') : [];
                 switch (data.type) {
                     case 'add':
+                        // 判断是否已存在该月份
+                        if (ctx.app._.indexOf(material_month, data.updateData.yearmonth) !== -1) {
+                            throw '调差期已创建过本月的信息价,请刷新页面重新获取';
+                        }
                         const tp = await ctx.service.materialMonth.add(data.updateData, monthList, mbList);
                         const materialBillsData = await this._getMaterialBillsData(ctx);
                         const monthsList = await this._getMaterialMonthsData(ctx, materialBillsData);
@@ -771,6 +776,10 @@ module.exports = app => {
                         };
                         break;
                     case 'del':
+                        // 判断是否已不存在该月份
+                        if (ctx.app._.indexOf(material_month, data.updateData.yearmonth) === -1) {
+                            throw '调差期已删除本月的信息价,请刷新页面重新获取';
+                        }
                         const tp2 = await ctx.service.materialMonth.del(data.updateData.del_yearmonth, monthList, mbList);
                         const materialBillsData2 = await this._getMaterialBillsData(ctx);
                         const monthsList2 = await this._getMaterialMonthsData(ctx, materialBillsData2);
@@ -1310,7 +1319,7 @@ module.exports = app => {
                     throw '无法设置非最新期的清单设置数据';
                 }
                 // 权限控制
-                if (!ctx.material.checklistPermission) {
+                if (!ctx.material.checklistPermission && data.type !== 'resetChecklist') {
                     throw '本期已审批完成或权限不足,无法设置清单数据';
                 }
                 switch (data.type) {
@@ -1335,7 +1344,7 @@ module.exports = app => {
                         // 取所有工料表
                         break;
                     case 'resetChecklist':
-                        responseData.data = await ctx.service.materialChecklist.resetData(data.pushData, data.removeData);
+                        responseData.data = await ctx.service.materialChecklist.resetData(data.pushData, data.removeData, data.updateData);
                         break;
                     default: throw '参数有误';
                 }

+ 13 - 5
app/public/js/material_checklist.js

@@ -39,7 +39,7 @@ function makeChecklistData(lists, checklists) {
             const isChecked = checklistInfo ? ' checked' : '';
             const isDisabled = checklistInfo && checklistInfo.had_bills === 1 ? ' disabled' : '';
             html += '<tr>\n' +
-                '                                    <td onselectstart="return false" style="{-moz-user-select:none}"><div class="text-center custom-control custom-checkbox mb-2">\n' +
+                '                                    <td><div class="text-center custom-control custom-checkbox mb-2">\n' +
                 '                                            <input type="checkbox" id="lists_'+ i +'" value="'+ i +'" name="customCheckbox" class="custom-control-input"'+ isChecked + isDisabled +'>\n' +
                 '                                            <label class="custom-control-label" for="lists_'+ i +'"></label>\n' +
                 '                                        </div></td>\n' +
@@ -139,8 +139,10 @@ $(document).ready(() => {
         gclGatherData = gclGatherModel.gatherGclData();
         console.log(gclGatherData);
         const hadBillsidList = _.uniq(_.map(materialListData, 'gcl_id'));
+        console.log(hadBillsidList);
         // 对比清单设置和调差清单,还要和台账对比,显示已选清单列表 不同则更新到清单设置页中
         const pushData = [];
+        const updateData = [];
         for (const hb of hadBillsidList) {
             const gcl = _.find(gclGatherData, function (item) {
                 return item.leafXmjs && item.leafXmjs.length > 0 && _.findIndex(item.leafXmjs, { gcl_id : hb }) !== -1;
@@ -160,12 +162,18 @@ $(document).ready(() => {
             if (!gcl) {
                 removeData.push(mc.id);
             }
+            // 更新had_bills值
+            if (mc.had_bills === 1) {
+                if (_.indexOf(hadBillsidList, gcl.leafXmjs ? gcl.leafXmjs[0].gcl_id : null) === -1) {
+                    updateData.push({ id: mc.id, mid: materialID, had_bills: 0 });
+                }
+            }
         }
-        setChecklistData(pushData, removeData, true);
+        setChecklistData(pushData, removeData, updateData, true);
     });
-    function setChecklistData(pushData, removeData, sendmsg = false) {
-        if (pushData.length > 0 || removeData.length > 0) {
-            postData(window.location.pathname + '/save', { type: 'resetChecklist', pushData, removeData }, function (result2) {
+    function setChecklistData(pushData, removeData, updateData = [], sendmsg = false) {
+        if (pushData.length > 0 || removeData.length > 0 || updateData.length > 0) {
+            postData(window.location.pathname + '/save', { type: 'resetChecklist', pushData, removeData, updateData }, function (result2) {
                 if (sendmsg && pushData.length > 0) {
                     toastr.success('已同步并添加到调差清单数据至本页中');
                 }

+ 4 - 1
app/service/material_checklist.js

@@ -19,7 +19,7 @@ module.exports = app => {
             this.tableName = 'material_checklist';
         }
 
-        async resetData(pushData, removeData) {
+        async resetData(pushData, removeData, updateData) {
             if (!this.ctx.tender || !this.ctx.material) {
                 throw '数据错误';
             }
@@ -39,6 +39,9 @@ module.exports = app => {
                         await transaction.delete(this.tableName, { id: r });
                     }
                 }
+                if (updateData.length > 0) {
+                    await transaction.updateRows(this.tableName, updateData);
+                }
                 await transaction.commit();
                 const materialChecklistData = await this.getAllDataByCondition({ where: { tid: this.ctx.tender.id } });
                 const self = this;