浏览代码

操作限制及hadbills更新

laiguoran 3 年之前
父节点
当前提交
6be827d32d
共有 3 个文件被更改,包括 25 次插入5 次删除
  1. 10 1
      app/controller/material_controller.js
  2. 11 3
      app/public/js/material_checklist.js
  3. 4 1
      app/service/material_checklist.js

+ 10 - 1
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);
@@ -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 '参数有误';
                 }

+ 11 - 3
app/public/js/material_checklist.js

@@ -141,6 +141,7 @@ $(document).ready(() => {
         const hadBillsidList = _.uniq(_.map(materialListData, 'gcl_id'));
         // 对比清单设置和调差清单,还要和台账对比,显示已选清单列表 不同则更新到清单设置页中
         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 +161,19 @@ $(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, had_bills: 0 });
+                }
+            }
+
         }
-        setChecklistData(pushData, removeData, true);
+        setChecklistData(pushData, removeData, updateData, true);
     });
-    function setChecklistData(pushData, removeData, sendmsg = false) {
+    function setChecklistData(pushData, removeData, updateData = [], sendmsg = false) {
         if (pushData.length > 0 || removeData.length > 0) {
-            postData(window.location.pathname + '/save', { type: 'resetChecklist', pushData, removeData }, function (result2) {
+            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;