From bd7206cfaf7c709686396945b5e9c3b0d278b521 Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Tue, 09 Nov 2021 09:03:48 +0800
Subject: [PATCH] Taro公共样式微调

---
 bases/Fetcher.js |  105 +++++++++++++---------------------------------------
 1 files changed, 26 insertions(+), 79 deletions(-)

diff --git a/bases/Fetcher.js b/bases/Fetcher.js
index e76073e..e0b9e8b 100644
--- a/bases/Fetcher.js
+++ b/bases/Fetcher.js
@@ -82,8 +82,12 @@
         }
         // 正常模式
         else {
+            // 代理模式
+            if (typeof project.host.proxyType !== 'undefined' && project.host.proxyType !== 'lc') {
+                url = '/proxy' + this._data.urlPrefix[1] + (serSuffix || devSuffix);
+            }
             // 开发环境地址
-            if (Fetcher.inDevMod) {
+            else if (Fetcher.inDevMod) {
                 url = this._data.urlPrefix[0] + devSuffix;
             }
             // 生产环境地址
@@ -103,31 +107,29 @@
      * get 请求
      * @param {String} url
      * @param {*} data
-     * @param {(String[])[]} [remap]
      * @param {object} [options]
      * @return {Promise<any>}
      */
-    get(url, data, remap = [], options = null) {
+    get(url, data, options = {}) {
         const params = Qs.stringify(data);
         if (url.indexOf('?') >= 0) {
             url += '&' + params;
         } else {
             url += '?' + params;
         }
-        return this.query('get', url, null, remap, options);
+        return this.query('get', url, null, options);
     }
 
     /**
      * post 请求
      * @param {String} url
      * @param {*} data
-     * @param {(String[])[]} [remap]
      * @param {object} [options]
      * @return {Promise<any>}
      */
-    post(url, data, remap = [], options = null) {
+    post(url, data, options = {}) {
         if (this._data.mock === 'on') {
-            return this.get(url, data, remap = [], options);
+            return this.get(url, data, options);
         }
         const params = Qs.stringify(data);
         const data2 = {};
@@ -137,7 +139,7 @@
                 data2[decodeURIComponent(item[0])] = decodeURIComponent(item[1]);
             }
         });
-        return this.query('post', url, data2, remap, options);
+        return this.query('post', url, data2, options);
     }
 
     /**
@@ -145,11 +147,10 @@
      * @param {String} type
      * @param {String} url
      * @param {*} [data]
-     * @param {*} [remap]
      * @param {object} [options]
      * @return {Promise<any>|}
      */
-    query(type, url, data = null, remap, options = {}) {
+    query(type, url, data = null, options = {}) {
         return new Promise((resolve, reject) => {
             const header = {
                 ...this._defaultConfig.header,
@@ -178,10 +179,12 @@
                      */
                     const responseData = this._adaptiveResponseData(response.data);
                     responseData.state.http = response.statusCode;
-                    resolve(this._transformResponseData(responseData, remap));
+                    resolve(this._transformResponseData(responseData, options));
                 },
                 fail: error => {
-                    this._resolveCaughtNetErr(error);
+                    if (typeof options.silence === 'undefined' || !options.silence) {
+                        this._resolveCaughtNetErr(error);
+                    }
                     reject(null);
                 },
             });
@@ -353,11 +356,10 @@
     /**
      * 转换响应体
      * @param response
-     * @param {Array[]} remap
      * @returns {Object|{}|null}
      * @private
      */
-    _transformResponseData(response, remap) {
+    _transformResponseData(response, options) {
         if (!response) {
             return null;
         }
@@ -371,17 +373,15 @@
                 }
                 // 先转驼峰
                 response.data = this.transKeyName('camel', response.data);
-                // 再重映射
-                if (remap && remap.length > 0) {
-                    response.data = this._remapData(response.data, remap);
-                }
                 // 转换常规数字字符串为数值
                 response.data = this._transNumStringToNumber(response.data);
                 return response.data;
             }
         } else if (response.state.code === 2001) {
             setTimeout(() => {
-                this.message('info', response.state.msg);
+                if (typeof options.silence === 'undefined' || !options.silence) {
+                    this.message('info', response.state.msg);
+                }
             }, 20);
             return null;
         } else if (response.state.code === 9001) {
@@ -397,65 +397,12 @@
             return null;
         } else {
             setTimeout(() => {
-                this.message('error', response.state.msg);
+                if (typeof options.silence === 'undefined' || !options.silence) {
+                    this.message('error', response.state.msg);
+                }
             }, 20);
             return null;
         }
-    }
-
-    /**
-     * 转换响应体数据结构
-     * @param {Object} data
-     * @param {Array[]} maps
-     * @example maps: [
-     *          ['rows.[]', 'recvName', 'userName']   // 默认语法:键名转换(路径,旧名,新名)
-     *      ]
-     * @private
-     */
-    _remapData(data, maps) {
-        // 渡值
-        const ferryValue = (source, paths, map) => {
-            // 最后一环,传值
-            if (paths.length === 0) {
-                // 目标已有值,跳过传值不覆盖
-                if (typeof source[map[2]] !== 'undefined') {
-                    return;
-                }
-                // 来源没有值,赋值空字符串
-                if (typeof source[map[1]] === 'undefined') {
-                    source[map[2]] = '';
-                }
-                // 来源有值,直接赋值
-                else {
-                    source[map[2]] = source[map[1]];
-                }
-                delete source[map[1]];
-                return;
-            }
-            // 提取当前环节
-            const curPath = paths.shift();
-            if (curPath === '[]') {
-                source.forEach(item => {
-                    ferryValue(item, [...paths], map);
-                });
-            } else {
-                ferryValue(source[curPath], [...paths], map);
-            }
-        };
-        for (let map of maps) {
-            // 键名转换
-            if (map[0].indexOf('.') >= 0) {
-                const paths = map[0].split('.');
-                ferryValue(data, paths, map);
-            } else {
-                if (map[0].length > 0) {
-                    ferryValue(data, [map[0]], map);
-                } else {
-                    ferryValue(data, [], map);
-                }
-            }
-        }
-        return data;
     }
 
     /**
@@ -464,7 +411,7 @@
      * @return {String}
      * @private
      */
-    _stringToCamel(str) {
+    stringToCamel(str) {
         let str2 = '';
         if (str.indexOf('_') <= 0) {
             str2 = str;
@@ -484,7 +431,7 @@
      * @return {String}
      * @private
      */
-    _stringToUnderline(str) {
+    stringToUnderline(str) {
         let str2 = '';
         if ((/[A-Z]/).test(str)) {
             str2 = str.replace(/([A-Z])/g, ($1) => {
@@ -514,9 +461,9 @@
                     // 字符串键名进行转换
                     else {
                         if (type === 'camel') {
-                            key = this._stringToCamel(p);
+                            key = this.stringToCamel(p);
                         } else if (type === 'underline') {
-                            key = this._stringToUnderline(p);
+                            key = this.stringToUnderline(p);
                         }
                     }
                     // 属性为对象时,递归转换

--
Gitblit v1.9.1