瀏覽代碼

进度台账选中

laiguoran 4 年之前
父節點
當前提交
b03b4ed549

+ 17 - 0
app/controller/schedule_controller.js

@@ -62,6 +62,23 @@ module.exports = app => {
                 ctx.body = { err: 1, msg: err.toString(), data: [] };
             }
         }
+
+        /**
+         * 台账选中提交(Ajax)
+         *
+         * @param ctx
+         * @return {Promise<void>}
+         */
+        async saveLedger(ctx) {
+            try {
+                const data = JSON.parse(ctx.request.body.data);
+                const result = await ctx.service.scheduleLedger.saveLedger(data);
+                ctx.body = { err: 0, msg: '', data: result };
+            } catch (err) {
+                this.log(err);
+                ctx.body = { err: 1, msg: err.toString(), data: [] };
+            }
+        }
     }
 
     return ScheduleController;

+ 16 - 0
app/public/js/schedule_ledger.js

@@ -162,6 +162,22 @@ $(function () {
 
     ledgerSpread.bind(spreadNS.Events.ButtonClicked, ledgerSpreadObj.buttonClicked);
 
+    $('#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;
+        }
+        $(this).attr('disabled', true);
+        postData(window.location.pathname + '/save',  _.map(select_ledger, 'ledger_id'), function (result) {
+            toastr.success('设置成功');
+            setTimeout(function () {
+                window.location.reload();
+            },1500);
+        });
+    })
+
 
     // // 显示层次
     // (function (select, sheet) {

+ 1 - 0
app/router.js

@@ -434,4 +434,5 @@ module.exports = app => {
     app.get('/tender/:id/schedule', sessionAuth, tenderCheck, uncheckTenderCheck, 'scheduleController.index');
     app.get('/tender/:id/schedule/ledger', sessionAuth, tenderCheck, uncheckTenderCheck, 'scheduleController.ledger');
     app.post('/tender/:id/schedule/ledger/load', sessionAuth, tenderCheck, uncheckTenderCheck, 'scheduleController.loadLedgerData');
+    app.post('/tender/:id/schedule/ledger/save', sessionAuth, tenderCheck, uncheckTenderCheck, 'scheduleController.saveLedger');
 };

+ 33 - 0
app/service/schedule_ledger.js

@@ -6,6 +6,39 @@ module.exports = app => {
             super(ctx);
             this.tableName = 'schedule_ledger';
         }
+
+        async saveLedger(datas) {
+            const transaction = await this.db.beginTransaction();
+            try {
+                const oldDatas = await this.getAllDataByCondition({
+                    where: { tid: this.ctx.tender.id },
+                });
+                const oldLids = this._.map(oldDatas, 'ledger_id');
+                const insertDatas = [];
+                for (const l of datas) {
+                    if (oldLids.indexOf(l) === -1) {
+                        const data = {
+                            tid: this.ctx.tender.id,
+                            ledger_id: l,
+                        };
+                        insertDatas.push(data);
+                    } else {
+                        this._.pull(oldLids, l);
+                    }
+                }
+                if (oldLids.length > 0) {
+                    for (const ol of oldLids) {
+                        await transaction.delete(this.tableName, { tid: this.ctx.tender.id, ledger_id: ol });
+                    }
+                }
+                if (insertDatas.length > 0) await transaction.insert(this.tableName, insertDatas);
+                await transaction.commit();
+                return true;
+            } catch (err) {
+                await transaction.rollback();
+                throw err;
+            }
+        }
     }
     return ScheduleLedger;
 };

+ 1 - 1
app/view/schedule/ledger.ejs

@@ -30,7 +30,7 @@
                 </div>
             </div>
             <div class="ml-auto">
-                <a href="#add-qi" data-toggle="modal" data-target="#add-qi" class="btn btn-primary btn-sm pull-right">确认提交<div></div></a>
+                <button type="button" id="ledger_submit" class="btn btn-primary btn-sm pull-right">确认提交</button>
             </div>
         </div>
     </div>