Ver código fonte

进度台账节点重新选中对父节点已有数据影响

laiguoran 4 anos atrás
pai
commit
a6785a358d
2 arquivos alterados com 22 adições e 3 exclusões
  1. 18 3
      app/public/js/schedule_ledger.js
  2. 4 0
      app/service/schedule_ledger.js

+ 18 - 3
app/public/js/schedule_ledger.js

@@ -189,7 +189,6 @@ $(function () {
 
     $('#ledger_submit').click(function () {
         const select_ledger = _.filter(ledgerTree.nodes, { 'is_select': 1 });
-        console.log(select_ledger);
         if (select_ledger.length === 0) {
             toastr.error('请至少勾选一个节点');
             return;
@@ -200,10 +199,26 @@ $(function () {
         for (const sl of select_ledger) {
             const hadChild = _.find(select_ledger, { ledger_pid: sl.ledger_id });
             if (!hadChild) {
-                under_ledger.push({ ledger_id: sl.ledger_id, gcl: sl.dgn_qty1, tp: sl.total_price });
+                under_ledger.push({ ledger_id: sl.ledger_id, ledger_pid: sl.ledger_pid, gcl: sl.dgn_qty1, tp: sl.total_price });
             }
         }
-        postData(window.location.pathname + '/save',  { select_ledger: _.map(select_ledger, 'ledger_id'), under_ledger } , function (result) {
+        // 从最底层找出之前的所有父节点,删除他们可能存在已填的值
+        const parent_ledger = [];
+        if (under_ledger.length > 0) {
+            for (const ul of under_ledger) {
+                digui(select_ledger, ul.ledger_pid);
+            }
+        }
+        function digui(select_ledger, ul) {
+            const parent = _.find(select_ledger, { ledger_id: ul });
+            if (parent && parent_ledger.indexOf(ul) === -1) {
+                digui(select_ledger, parent.ledger_pid);
+                if (!parent.can_select) {
+                    parent_ledger.push(parent.ledger_id);
+                }
+            }
+        }
+        postData(window.location.pathname + '/save',  { select_ledger: _.map(select_ledger, 'ledger_id'), under_ledger, parent_ledger } , function (result) {
             toastr.success('设置成功');
             setTimeout(function () {
                 window.location.reload();

+ 4 - 0
app/service/schedule_ledger.js

@@ -67,6 +67,10 @@ module.exports = app => {
                 // 判断是否已存在计划月,并更新计划月统计数据,再更新总的统计数据
                 const smList = await this.ctx.service.scheduleLedgerMonth.getAllDataByCondition({ where: { tid: this.ctx.tender.id } });
                 if (smList.length > 0) {
+                    // 删除所有父节点已填过的值
+                    for (const p of datas.parent_ledger) {
+                        await transaction.delete(this.ctx.service.scheduleLedgerMonth.tableName, { tid: this.ctx.tender.id, lid: p });
+                    }
                     for (const sm of smList) {
                         await this.ctx.service.scheduleLedgerMonth.calcMonthPlan(transaction, this.ctx.tender.id, sm.yearmonth);
                         await this.ctx.service.scheduleLedgerMonth.calcMonthSj(transaction, this.ctx.tender.id, sm.yearmonth);