瀏覽代碼

1. 台账修订,对比方式调整
2. 台账分解,计量台账,加载列调整,增加hpack压缩
3. 所有使用mathjs的地方,都增加parseFloat,兼容可能加载上了大数计算

MaiXinRong 3 年之前
父節點
當前提交
71cd18f379

+ 25 - 14
app/controller/ledger_controller.js

@@ -90,23 +90,11 @@ module.exports = app => {
                     }
                 }
             }
-            function setColFormat(cols, field, formatter) {
-                const col = _.find(cols, function(c) {
-                    return c.field === field;
-                });
-                col.formatter = formatter;
-            }
-            // const tpFormatter = this.ctx.helper.getNumberFormatter(this.ctx.tender.info.decimal.tp);
-            // const upFormatter = this.ctx.helper.getNumberFormatter(this.ctx.tender.info.decimal.up);
             const tender = this.ctx.tender;
             const setting = tender.data.measure_type === measureType.tz.value
                 ? (tender.info.display.ledger.clQty ? spreadConst.withCl : spreadConst.withoutCl)
                 : (tender.info.display.ledger.clQty ? spreadConst.withClGcl : spreadConst.withoutClGcl);
             const ledger = JSON.parse(JSON.stringify(setting.ledger));
-            // setColFormat(ledger.cols, 'unit_price', upFormatter);
-            // setColFormat(ledger.cols, 'dgn_price', upFormatter);
-            // setColFormat(ledger.cols, 'total_price', tpFormatter);
-            // setColFormat(ledger.cols, 'deal_tp', tpFormatter);
             const pos = setting.pos ? JSON.parse(JSON.stringify(setting.pos)) : spreadConst.blank;
 
             if (this._ledgerReadOnly(tender.data)) {
@@ -123,6 +111,26 @@ module.exports = app => {
             return [ledger, pos];
         }
 
+        _getLedgerColumn(sjsRela) {
+            const tender = this.ctx.tender;
+            const ledgerColumn = [
+                'id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
+                'code', 'b_code', 'name', 'unit', 'unit_price',
+                'sgfh_qty', 'sgfh_expr', 'sgfh_tp', 'memo', 'drawing_code'];
+            if (tender.data.measureType === measureType.gcl.value) ledgerColumn.push('deal_qty', 'deal_tp');
+            if (tender.info.display.ledger.dgnQty) ledgerColumn.push('dgn_qty1', 'dgn_qty2');
+            if (tender.info.display.ledger.clQty) ledgerColumn.push('sjcl_qty', 'qtcl_qty', 'sjcl_expr', 'qtcl_expr', 'sjcl_tp', 'qtcl_tp', 'quantity', 'total_price');
+            const posColumn = ['id', 'lid', 'name', 'position', 'porder', 'sjcl_qty', 'sjcl_expr', 'add_stage_order'];
+            if (tender.info.display.ledger.clQty) posColumn.push('sjcl_qty', 'qtcl_qty', 'sjcl_expr', 'qtcl_expr', 'quantity');
+            for (const field of sjsRela.ledgerCol) {
+                if (field.show) {
+                    ledgerColumn.push(field.field);
+                    posColumn.push(field.field);
+                }
+            }
+            return [ledgerColumn, posColumn];
+        }
+
         /**
          * 台账分解页面 (Get)
          *
@@ -473,15 +481,18 @@ module.exports = app => {
          */
         async loadExplodeData(ctx) {
             try {
+                const sjsRela = await this.ctx.service.project.getSjsRela(ctx.session.sessionProject.id);
+                const [ledgerColumn, posColumn] = this._getLedgerColumn(sjsRela);
                 const ledgerData = ctx.tender.ledgerReadOnly && ctx.tender.his
                     ? await ctx.helper.loadLedgerDataFromOss(ctx.tender.his.bills_file)
-                    : await ctx.service.ledger.getData(ctx.tender.id);
+                    : await ctx.service.ledger.getAllDataByCondition({ columns: ledgerColumn, where: { tender_id: ctx.tender.id } });
                 const posData = this.ctx.tender.data.measure_type === measureType.tz.value
                     ? (ctx.tender.ledgerReadOnly && ctx.tender.his
                         ? await ctx.helper.loadLedgerDataFromOss(ctx.tender.his.pos_file)
-                        : await ctx.service.pos.getPosData({tid: ctx.tender.id}))
+                        : await ctx.service.pos.getPosData({tid: ctx.tender.id}, posColumn))
                     : [];
                 const ledgerTags = await this.ctx.service.ledgerTag.getDatas(ctx.tender.id);
+                //ctx.body = { err: 0, msg: '', data: { bills: this.ctx.helper.hpackArr(ledgerData), pos: this.ctx.helper.hpackArr(posData), tags: ledgerTags }, hpack: ['bills', 'pos'] };
                 ctx.body = { err: 0, msg: '', data: { bills: ledgerData, pos: posData, tags: ledgerTags } };
             } catch (err) {
                 this.log(err);

+ 48 - 8
app/controller/stage_controller.js

@@ -233,10 +233,37 @@ module.exports = app => {
             return surplus;
         }
 
-        async _getStageLedgerData(ctx) {
+        _getLedgerColumn(sjsRela) {
+            const tender = this.ctx.tender;
+            const ledgerColumn = [
+                'id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
+                'code', 'b_code', 'name', 'unit', 'unit_price',
+                'quantity', 'total_price', 'memo', 'drawing_code'];
+            if (this.ctx.session.sessionProject.gxby) ledgerColumn.push('gxby_status', 'gxby_url', 'gxby_limit');
+            if (this.ctx.session.sessionProject.dagl) ledgerColumn.push('dagl_status', 'dagl_url', 'dagl_limit');
+            if (tender.data.measureType === measureType.gcl.value) ledgerColumn.push('deal_qty', 'deal_tp', 'sjcl_qty', 'sjcl_expr', 'sjcl_tp');
+            if (tender.info.display.ledger.dgnQty) ledgerColumn.push('dgn_qty1', 'dgn_qty2');
+            const posColumn = ['id', 'lid', 'name', 'position', 'porder', 'quantity'];
+            if (tender.info.display.stage.realComplete) posColumn.push('real_qty');
+            if (this.ctx.session.sessionProject.gxby) posColumn.push('gxby_status', 'gxby_url', 'gxby_limit');
+            if (this.ctx.session.sessionProject.dagl) posColumn.push('dagl_status', 'dagl_url', 'dagl_limit');
+            if (tender.data.measureType === measureType.gcl.value) ledgerColumn.push('sjcl_qty', 'sjcl_expr');
+            for (const field of sjsRela.ledgerCol) {
+                if (field.show) {
+                    ledgerColumn.push(field.field);
+                    posColumn.push(field.field);
+                }
+            }
+            return [ledgerColumn, posColumn];
+        }
+
+        async _getStageLedgerData(ctx, ledgerColumn) {
+            // const ledgerData = ctx.stage.ledgerHis
+            //     ? await ctx.helper.loadLedgerDataFromOss(ctx.stage.ledgerHis.bills_file)
+            //     : await ctx.service.ledger.getAllDataByCondition({ where: { tender_id: ctx.tender.id } });
             const ledgerData = ctx.stage.ledgerHis
                 ? await ctx.helper.loadLedgerDataFromOss(ctx.stage.ledgerHis.bills_file)
-                : await ctx.service.ledger.getData(ctx.tender.id);
+                : await ctx.service.ledger.getAllDataByCondition({ columns: ledgerColumn, where: { tender_id: ctx.tender.id } });
             const dgnData = await ctx.service.stageBillsDgn.getDgnData(ctx.tender.id);
             for (const d of dgnData) {
                 const l = ctx.app._.find(ledgerData, { id: d.id });
@@ -266,10 +293,11 @@ module.exports = app => {
             ]);
             return ledgerData;
         }
-        async _getStagePosData(ctx) {
+        async _getStagePosData(ctx, posColumn) {
             let curStageData,
                 preStageData;
-            const posData = await ctx.service.pos.getPosDataWithAddStageOrder({ tid: ctx.tender.id });
+            // const posData = await ctx.service.pos.getAllDataByCondition({ where: { tid: ctx.tender.id } });
+            const posData = await ctx.service.pos.getAllDataByCondition({ columns: posColumn, where: { tid: ctx.tender.id } });
             // 根据当前人,或指定对象查询数据
             // console.time('cur');
             if (ctx.stage.readOnly) {
@@ -313,21 +341,33 @@ module.exports = app => {
                 return await ctx.service.stageChange.getAuditorAllStageData(ctx.tender.id, ctx.stage.id, ctx.stage.curTimes, ctx.stage.curOrder);
             }
             return await ctx.service.stageChange.getLastestAllStageData(ctx.tender.id, ctx.stage.id);
-
         }
 
         async getStageData(ctx) {
             try {
                 const data = JSON.parse(ctx.request.body.data);
                 const filter = data.filter.split(';');
-                const responseData = { err: 0, msg: '', data: {} };
+                const responseData = { err: 0, msg: '', data: {}, hpack: [] };
+                const hpack = true;
+                const sjsRela = await this.ctx.service.project.getSjsRela(ctx.session.sessionProject.id);
+                const [ledgerColumn, posColumn] = this._getLedgerColumn(sjsRela);
                 for (const f of filter) {
                     switch (f) {
                         case 'ledger':
-                            responseData.data.ledgerData = await this._getStageLedgerData(ctx);
+                            if (hpack) {
+                                responseData.hpack.push('ledgerData');
+                                responseData.data.ledgerData = this.ctx.helper.hpackArr(await this._getStageLedgerData(ctx, ledgerColumn));
+                            } else {
+                                responseData.data.ledgerData = await this._getStageLedgerData(ctx, ledgerColumn);
+                            }
                             break;
                         case 'pos':
-                            responseData.data.posData = await this._getStagePosData(ctx);
+                            if (hpack) {
+                                responseData.hpack.push('posData');
+                                responseData.data.posData = this.ctx.helper.hpackArr(await this._getStagePosData(ctx, posColumn));
+                            } else {
+                                responseData.data.posData = await this._getStagePosData(ctx, posColumn);
+                            }
                             break;
                         case 'detail':
                             responseData.data.detailData = await this._getStageDetailData(ctx);

+ 19 - 2
app/extend/helper.js

@@ -473,7 +473,6 @@ module.exports = {
             return this.mul(this.div(num, 100, 0), 100) + '';
         }
         return '10000';
-
     },
 
     /**
@@ -1316,7 +1315,7 @@ module.exports = {
 
     calcExpr(expr) {
         const validExpr = expr.replace('=', '').replace('%', '/100');
-        return math.eval(validExpr);
+        return parseFloat(math.eval(validExpr));
     },
 
     /**
@@ -1479,4 +1478,22 @@ module.exports = {
         const result = JSON.parse(File.content);
         return result;
     },
+
+    hpackArr(data) {
+        const keyIndex = {}, key = [];
+        const result = [];
+        result.push(key);
+        for (const d of data) {
+            const r = [];
+            for (const prop in d) {
+                if (keyIndex[prop] === undefined) {
+                    key.push(prop);
+                    keyIndex[prop] = key.indexOf(prop);
+                }
+                r[keyIndex[prop]] = d[prop];
+            }
+            result.push(r);
+        }
+        return result;
+    }
 };

+ 1 - 1
app/lib/material_calc.js

@@ -52,7 +52,7 @@ class MaterialCalculate {
                     formula = formula.replace(p, v);
                 }
             }
-            const value = math.eval(formula);
+            const value = parseFloat(math.eval(formula));
             return value;
         } catch (err) {
             return 0;

+ 2 - 3
app/lib/rpt_data_analysis.js

@@ -157,7 +157,7 @@ const rdaUtils = {
                         expr = expr.replace(m.match, m.value[f] ? m.value[f] : 0);
                     }
                     try {
-                        c[f] = ctx.helper.round(math.eval(expr), 6);
+                        c[f] = ctx.helper.round(parseFloat(math.eval(expr)), 6);
                     } catch (err) {
                     }
                 }
@@ -556,7 +556,7 @@ const gatherChapter = {
                         expr = expr.replace(m.match, m.value[f] ? m.value[f] : 0);
                     }
                     try {
-                        c[f] = ctx.helper.round(math.eval(expr), 6);
+                        c[f] = ctx.helper.round(parseFloat(math.eval(expr), 6));
                     } catch (err) {
                     }
                 }
@@ -662,7 +662,6 @@ const gatherChapter = {
             return (x.visible !== undefined && x.visible !== null) ? x.visible : true;
 
         });
-        console.log(data[fieldsKey[0].table]);
     },
 };
 const join = {

+ 25 - 0
app/public/js/global.js

@@ -243,6 +243,11 @@ const postData = function (url, data, successCallback, errorCallBack, showWaitin
         },
         success: function(result){
             if (result.err === 0) {
+                if (result.hpack) {
+                    result.hpack.forEach(x => {
+                        result.data[x] = hpackArrBack(result.data[x]);
+                    });
+                }
                 if (successCallback) {
                     successCallback(result.data);
                 }
@@ -1107,3 +1112,23 @@ function transFormToChinese(num) {
     if (noWan.toString().length < 4) noWan = "0" + noWan;
     return overWan ? getWan(overWan) + "万" + getWan(noWan) : getWan(num);
 }
+
+function hpackArrBack(data) {
+    if (data.length <= 1) throw '数据错误';
+    const result = [];
+    //const keyIndex = {};
+    // data[0].forEach((x, i) => {
+    //     keyIndex[x] = i;
+    // });
+    const key = data[0];
+    data.forEach((d, i) => {
+        if (i === 0) return;
+        const obj = {};
+        d.forEach((v, j) => {
+            if (v === undefined) return;
+            obj[key[j]] = v;
+        });
+        result.push(obj);
+    });
+    return result;
+}

+ 1 - 7
app/public/js/revise_compare.js

@@ -94,14 +94,8 @@ $(document).ready(() => {
                     sameId.org_parent = parent;
                 }
                 return sameId;
-            } else {
-                const siblings = parent ? parent.children : tree.children;
-                return siblings.find(function (x) {
-                    return node.b_code
-                        ? x.b_code === node.b_code && x.name === node.name && x.unit === node.unit && x.unit_price === node.unit_price
-                        : x.code === node.code && x.name === node.name;
-                });
             }
+            return null;
         },
         loadInfo1: function (node, sourceNode, source) {
             for (const f of billsCompareField) {

+ 2 - 2
app/service/pos.js

@@ -23,11 +23,11 @@ module.exports = app => {
             this.tableName = 'pos';
         }
 
-        async getPosData(condition) {
+        async getPosData(condition, column) {
             if (!condition.tid) throw '查询计量单元缺少必要信息';
             return await this.db.select(this.departTableName(condition.tid), {
                 where: condition,
-                columns: ['id', 'tid', 'lid', 'name', 'quantity', 'position', 'drawing_code', 'sgfh_qty', 'sjcl_qty',
+                columns: column || ['id', 'tid', 'lid', 'name', 'quantity', 'position', 'drawing_code', 'sgfh_qty', 'sjcl_qty',
                     'qtcl_qty', 'in_time', 'porder', 'add_stage', 'sgfh_expr', 'sjcl_expr', 'qtcl_expr', 'real_qty',
                     'dagl_status', 'dagl_url', 'gxby_status', 'gxby_url', 'gxby_limit', 'dagl_limit',
                     'ex_memo1', 'ex_memo2', 'ex_memo3'],

+ 2 - 2
db_script/ledger_his.js

@@ -20,7 +20,7 @@ console.log = function() {
 };
 
 const audit = require('../app/const/audit');
-const measureType = require('../app/const/message_type');
+const measureType = require('../app/const/tender').measureType;
 
 const mysql = require('mysql');
 const oss = require('ali-oss');
@@ -112,7 +112,7 @@ const doCompleteTender = async function(t) {
             if (r.bills_file) {
                 r.his_id = await saveReviseLedgerHis(t, r);
                 if (r.valid) his_id = r.his_id;
-                await querySql('Update zh_ledger_revise Set his_id = ? Where id = ?', [his_id, r.id]);
+                await querySql('Update zh_ledger_revise Set his_id = ? Where id = ?', [r.his_id, r.id]);
             } else {
                 if (r.status !== 1) withoutHisRevise.push(r);
             }

+ 73 - 10
package-lock.json

@@ -2989,7 +2989,7 @@
         },
         "charenc": {
             "version": "0.0.2",
-            "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+            "resolved": "https://registry.npm.taobao.org/charenc/download/charenc-0.0.2.tgz",
             "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
         },
         "chokidar": {
@@ -3220,12 +3220,12 @@
             "dependencies": {
                 "sax": {
                     "version": "0.6.1",
-                    "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz",
+                    "resolved": "http://registry.npm.taobao.org/sax/download/sax-0.6.1.tgz",
                     "integrity": "sha1-VjsZx8HeiS4Jv8Ty/DDjwn8JUrk="
                 },
                 "xml2js": {
                     "version": "0.4.4",
-                    "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz",
+                    "resolved": "https://registry.npm.taobao.org/xml2js/download/xml2js-0.4.4.tgz?cache=0&sync_timestamp=1584990425260&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxml2js%2Fdownload%2Fxml2js-0.4.4.tgz",
                     "integrity": "sha1-MREBAAMAiuGSQOuhdJe1fHKcVV0=",
                     "requires": {
                         "sax": "0.6.x",
@@ -3261,7 +3261,7 @@
         },
         "co-wechat-oauth": {
             "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/co-wechat-oauth/-/co-wechat-oauth-2.0.1.tgz",
+            "resolved": "https://registry.npm.taobao.org/co-wechat-oauth/download/co-wechat-oauth-2.0.1.tgz",
             "integrity": "sha1-n/pS3fuTWdAwAYiBw/jWIQSKKVQ=",
             "requires": {
                 "httpx": "^2.1.1"
@@ -3269,7 +3269,7 @@
         },
         "co-wechat-payment": {
             "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/co-wechat-payment/-/co-wechat-payment-0.2.0.tgz",
+            "resolved": "https://registry.npm.taobao.org/co-wechat-payment/download/co-wechat-payment-0.2.0.tgz",
             "integrity": "sha1-6V2uUqYEPHDZADDbHzPQFg0hEkA=",
             "requires": {
                 "md5": "^2.1.0",
@@ -3767,7 +3767,7 @@
         },
         "crypt": {
             "version": "0.0.2",
-            "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+            "resolved": "https://registry.npm.taobao.org/crypt/download/crypt-0.0.2.tgz",
             "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
         },
         "csrf": {
@@ -8464,6 +8464,51 @@
             "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
             "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg=="
         },
+        "hpack.js": {
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+            "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+            "requires": {
+                "inherits": "^2.0.1",
+                "obuf": "^1.0.0",
+                "readable-stream": "^2.0.1",
+                "wbuf": "^1.1.0"
+            },
+            "dependencies": {
+                "isarray": {
+                    "version": "1.0.0",
+                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+                    "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+                },
+                "process-nextick-args": {
+                    "version": "2.0.1",
+                    "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+                    "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+                },
+                "readable-stream": {
+                    "version": "2.3.7",
+                    "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+                    "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+                    "requires": {
+                        "core-util-is": "~1.0.0",
+                        "inherits": "~2.0.3",
+                        "isarray": "~1.0.0",
+                        "process-nextick-args": "~2.0.0",
+                        "safe-buffer": "~5.1.1",
+                        "string_decoder": "~1.1.1",
+                        "util-deprecate": "~1.0.1"
+                    }
+                },
+                "string_decoder": {
+                    "version": "1.1.1",
+                    "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+                    "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+                    "requires": {
+                        "safe-buffer": "~5.1.0"
+                    }
+                }
+            }
+        },
         "http-assert": {
             "version": "1.3.0",
             "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.3.0.tgz",
@@ -10290,7 +10335,7 @@
         },
         "md5": {
             "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
+            "resolved": "https://registry.npm.taobao.org/md5/download/md5-2.2.1.tgz",
             "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=",
             "requires": {
                 "charenc": "~0.0.1",
@@ -10390,6 +10435,11 @@
             "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
             "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
         },
+        "minimalistic-assert": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+            "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+        },
         "minimatch": {
             "version": "3.0.4",
             "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -12179,6 +12229,11 @@
                 }
             }
         },
+        "obuf": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+            "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
+        },
         "on-finished": {
             "version": "2.3.0",
             "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -13656,7 +13711,7 @@
         },
         "sha1": {
             "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz",
+            "resolved": "https://registry.npm.taobao.org/sha1/download/sha1-1.1.1.tgz",
             "integrity": "sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=",
             "requires": {
                 "charenc": ">= 0.0.1",
@@ -14830,7 +14885,7 @@
         },
         "ueditor": {
             "version": "1.2.3",
-            "resolved": "https://registry.npmjs.org/ueditor/-/ueditor-1.2.3.tgz",
+            "resolved": "https://registry.npmjs.org/ueditor/-/ueditor-1.0.0.tgz",
             "integrity": "sha1-HsihLT8VutOkAReGpzpIZJY2twQ=",
             "requires": {
                 "busboy": "^0.2.9",
@@ -15305,6 +15360,14 @@
             "integrity": "sha1-jz5DKM9jsVQMDWfhsneDhviXWyY=",
             "dev": true
         },
+        "wbuf": {
+            "version": "1.7.3",
+            "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+            "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+            "requires": {
+                "minimalistic-assert": "^1.0.0"
+            }
+        },
         "webstorm-disable-index": {
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/webstorm-disable-index/-/webstorm-disable-index-1.2.0.tgz",
@@ -15328,7 +15391,7 @@
         },
         "wechat-crypto": {
             "version": "0.0.2",
-            "resolved": "https://registry.npmjs.org/wechat-crypto/-/wechat-crypto-0.0.2.tgz",
+            "resolved": "https://registry.npm.taobao.org/wechat-crypto/download/wechat-crypto-0.0.2.tgz",
             "integrity": "sha1-pVRD7AgQ9MGZKik6J4YIOXAMY2k="
         },
         "whatwg-fetch": {

+ 1 - 0
package.json

@@ -25,6 +25,7 @@
         "egg-wechat-all": "^0.1.4",
         "gt3-sdk": "^2.0.0",
         "gulp": "^4.0.0",
+        "hpack.js": "^2.1.6",
         "js-xlsx": "^0.8.22",
         "jsonwebtoken": "^8.5.1",
         "jszip": "^3.1.3",