Просмотр исходного кода

变更清单增加批量添加空白清单数目

laiguoran 4 лет назад
Родитель
Сommit
96d1d7cb44

+ 3 - 0
app/controller/change_controller.js

@@ -730,6 +730,9 @@ module.exports = app => {
                     case 'add':
                         responseData.data = await ctx.service.changeAuditList.add(data.postData);
                         break;
+                    case 'batchadd':
+                        responseData.data = await ctx.service.changeAuditList.batchAdd(data);
+                        break;
                     case 'del':
                         await ctx.service.changeAuditList.del(data.id);
                         break;

+ 56 - 0
app/public/js/change_information_set.js

@@ -184,6 +184,16 @@ $(document).ready(() => {
                 }
             });
         },
+        batchAdd: function(num) {
+            postData(window.location.pathname + '/save', {type: 'batchadd', num}, function (result) {
+                if (result) {
+                    changeList = _.concat(changeList, result);
+                    SpreadJsObj.loadSheetData(changeSpreadSheet, SpreadJsObj.DataType.Data, changeList);
+                    changeSpreadObj.makeSjsFooter();
+                    changeSpreadObj.resetXmjSpread();
+                }
+            });
+        },
         del: function () {
             const select = SpreadJsObj.getSelectObject(changeSpreadSheet);
             const index = changeList.indexOf(select);
@@ -478,6 +488,33 @@ $(document).ready(() => {
         SpreadJsObj.addDeleteBind(changeSpread, changeSpreadObj.deletePress);
         changeSpreadSheet.getCell(-1, 10).foreColor('#dc3545');
 
+        let batchInsertObj;
+        $.contextMenu.types.batchInsert = function (item, opt, root) {
+            const self = this;
+            if ($.isFunction(item.icon)) {
+                item._icon = item.icon.call(this, this, $t, key, item);
+            } else {
+                if (typeof(item.icon) === 'string' && item.icon.substring(0, 3) === 'fa-') {
+                    // to enable font awesome
+                    item._icon = root.classNames.icon + ' ' + root.classNames.icon + '--fa fa ' + item.icon;
+                } else {
+                    item._icon = root.classNames.icon + ' ' + root.classNames.icon + '-' + item.icon;
+                }
+            }
+            this.addClass(item._icon);
+            const $obj = $('<div>' + item.name + '<input class="text-right ml-1 mr-1" type="tel" max="100" min="1" value="' + item.value + '" style="width: 30px; height: 18px; padding-right: 4px;">行</div>')
+                .appendTo(this);
+            const $input = $obj.find('input');
+            const event = () => {
+                if (self.hasClass('context-menu-disabled')) return;
+                item.batchInsert($input[0], root);
+            };
+            $obj.on('click', event).keypress(function (e) {if (e.keyCode === 13) { event(); }});
+            $input.click((e) => {e.stopPropagation();})
+                .keyup((e) => {if (e.keyCode === 13) item.batchInsert($input[0], root);})
+                .on('input', function () {this.value = this.value.replace(/[^\d]/g, '');});
+        };
+
         // 右键菜单
         $.contextMenu({
             selector: '#change-spread',
@@ -500,6 +537,25 @@ $(document).ready(() => {
                         changeSpreadObj.add(changeSpreadSheet);
                     },
                 },
+                'batchInsert': {
+                    name: '批量添加空白清单',
+                    type: 'batchInsert',
+                    value: '2',
+                    icon: 'fa-sign-in',
+                    batchInsert: function (obj, root) {
+                        if (_.toNumber(obj.value) > _.toNumber(obj.max)) {
+                            obj.value = obj.max;
+                            toastr.warning('批量添加不可多于' + obj.max);
+                        } else if(_.toNumber(obj.value) < _.toNumber(obj.min)) {
+                            obj.value = obj.min;
+                            toastr.warning('批量添加不可少于' + obj.min);
+                        } else {
+                            // treeOperationObj.addNode(ledgerSpread.getActiveSheet(), parseInt(obj.value));
+                            changeSpreadObj.batchAdd(obj.value);
+                            root.$menu.trigger('contextmenu:hide');
+                        }
+                    },
+                },
                 'delete': {
                     name: '删除',
                     icon: 'fa-remove',

+ 49 - 0
app/service/change_audit_list.js

@@ -71,6 +71,55 @@ module.exports = app => {
         }
 
         /**
+         * 批量添加空白变更清单
+         * @return {void}
+         */
+        async batchAdd(data) {
+            if (!this.ctx.tender || !this.ctx.change) {
+                throw '数据错误';
+            }
+            const num = data.num ? parseInt(data.num) : 0;
+            if (num < 1 || num > 100) {
+                throw '批量添加的空白清单数目不能小于1或大于100';
+            }
+            const insertArray = [];
+            for (let i = 0; i < num; i++) {
+                const insertData = {
+                    tid: this.ctx.tender.id,
+                    cid: this.ctx.change.cid,
+                    lid: '0',
+                    code: '',
+                    name: '',
+                    bwmx: '',
+                    unit: '',
+                    unit_price: null,
+                    oamount: 0,
+                    camount: 0,
+                    samount: '',
+                    detail: '',
+                    spamount: 0,
+                    xmj_code: null,
+                    xmj_jldy: null,
+                    xmj_dwgc: null,
+                    xmj_fbgc: null,
+                    xmj_fxgc: null,
+                    gcl_id: '',
+                };
+                insertArray.push(insertData);
+            }
+            // 新增工料
+            const result = await this.db.insert(this.tableName, insertArray);
+            if (result.affectedRows !== num) {
+                throw '批量添加空白清单数据失败';
+            }
+            // 获取刚批量添加的所有list
+            for (let j = 0; j < num; j++) {
+                insertArray[j].id = result.insertId + j;
+            }
+            return insertArray;
+        }
+
+        /**
          * 删除变更清单
          * @param {int} id 清单id
          * @return {void}