Browse Source

dictForExcel

luoyifan 3 years ago
parent
commit
53244ea03f
2 changed files with 70 additions and 6 deletions
  1. 69 5
      dist/yvan-ext.js
  2. 1 1
      dist/yvan-ext.js.map

+ 69 - 5
dist/yvan-ext.js

@@ -62530,10 +62530,10 @@ define(['exports'], function (exports) { 'use strict';
                     // 已经渲染出来了, 用方法进行修改
                     var editor_2 = sender.getEditor();
                     if (editor_2 && editor_2.xtype === 'combo') {
-                        var valueField = r.field[0];
-                        var displayField = r.field[1];
-                        editor_2.valueField = valueField;
-                        editor_2.setDisplayField(displayField);
+                        var valueField_1 = r.field[0];
+                        var displayField_1 = r.field[1];
+                        editor_2.valueField = valueField_1;
+                        editor_2.setDisplayField(displayField_1);
                         editor_2.setStore(new Ext.data.Store(r));
                     }
                 }
@@ -62586,14 +62586,27 @@ define(['exports'], function (exports) { 'use strict';
                     });
                     return value;
                 };
+                var dictForExcel = {};
+                var valueField = r.field[0];
+                var displayField = r.field[1];
+                lodash.each(r.data, function (row) {
+                    // 从 valueField 找到要显示的 displayField
+                    var key = row[valueField];
+                    if (key != '' && typeof key != "undefined" && key != null) {
+                        dictForExcel[key] = row[displayField];
+                    }
+                });
                 if (sender.rendered) {
                     // 已经渲染出来了, 对列进行渲染
                     sender.renderer = renderer;
+                    sender.dictForExcel = dictForExcel;
                     sender.getView().refresh();
                 }
                 else {
                     sender.renderer = renderer;
+                    sender.dictForExcel = dictForExcel;
                     config.renderer = renderer;
+                    config.dictForExcel = dictForExcel;
                 }
             });
             return;
@@ -95023,6 +95036,11 @@ define(['exports'], function (exports) { 'use strict';
                     load: function (store, records, successful, operation) {
                         var _a, _b, _c;
                         var rep = (_a = operation.getResponse()) === null || _a === void 0 ? void 0 : _a.responseJson;
+                        if (rep.pagination) {
+                            grid.dbInfo = rep.pagination.dbInfo;
+                            grid.exportDataSql = rep.pagination.exportDataSql;
+                            grid.exportDataSqlParams = rep.pagination.exportDataSqlParams;
+                        }
                         me.exportExcelTotal = ((_b = rep === null || rep === void 0 ? void 0 : rep.pagination) === null || _b === void 0 ? void 0 : _b.total) || ((_c = rep === null || rep === void 0 ? void 0 : rep.data) === null || _c === void 0 ? void 0 : _c.length) || 0;
                         if (isExcelExport) {
                             if (typeof excelExportCallBack === 'function') {
@@ -95142,6 +95160,7 @@ define(['exports'], function (exports) { 'use strict';
     }
     //# sourceMappingURL=stores.js.map
 
+    window["EXPORT_DATA_HOST"] = "http://127.0.0.1:30000/exportData";
     var defaultGrid = grid;
     function initGrid () {
         Ext.define('Yvan.Grid', {
@@ -95611,6 +95630,46 @@ define(['exports'], function (exports) { 'use strict';
                     scope.setLoading(false);
                 });
             },
+            exportBigExcelClick: function () {
+                var me = this;
+                var config = me.config;
+                var scope = lookupScope(me);
+                var excelFileName = config.excelFileName || scope.vjson.title || lodash.uniqueId("excel-");
+                var head = [];
+                var dict = {};
+                lodash.forEach(me.columns, function (column) {
+                    if (column.isHidden())
+                        return;
+                    if (!column.dataIndex)
+                        return;
+                    if (!column.text)
+                        return;
+                    head.push({ field: column.dataIndex, name: column.header });
+                    if (column.dictForExcel) {
+                        dict[column.dataIndex] = column.dictForExcel;
+                    }
+                });
+                scope.setLoading(true);
+                Ext.Ajax.request({
+                    timeout: 15000,
+                    url: window["EXPORT_DATA_HOST"],
+                    method: "POST",
+                    jsonData: {
+                        file: excelFileName,
+                        dbInfo: me.dbInfo,
+                        exportDataSql: me.exportDataSql,
+                        exportDataSqlParams: me.exportDataSqlParams,
+                        head: head,
+                        dict: dict,
+                    },
+                }).then(function () {
+                    scope.setLoading(false);
+                    msg('请求成功');
+                }).catch(function () {
+                    scope.setLoading(false);
+                    showErrorDialog('请求失败,请确认是否已安装客户端');
+                });
+            },
             makeExcelData: function (jsonData) {
                 var me = this;
                 me.fireEvent('onExcelDataLoadCompleted', me, jsonData);
@@ -95965,6 +96024,12 @@ define(['exports'], function (exports) { 'use strict';
                                     });
                                 }
                             }
+                        }, {
+                            text: '大批量导出(需要安装客户端)',
+                            iconCls: 'x-fa fa-download',
+                            listeners: {
+                                click: function (sender, value) { return grid.exportBigExcelClick(); }
+                            }
                         }]
                 });
                 treeMenu.showAt(rect.left, rect.top - 120);
@@ -96098,7 +96163,6 @@ define(['exports'], function (exports) { 'use strict';
         }
         // throw new TypeError('无法识别的调用方法')
     }
-    //# sourceMappingURL=grid.js.map
 
     function initTextfield () {
         var cc = Ext.form.field.Text.prototype.constructor;

File diff suppressed because it is too large
+ 1 - 1
dist/yvan-ext.js.map