From ae3855638dba0c927236c1a1b1a85d5b048c40e2 Mon Sep 17 00:00:00 2001
From: Houjie <714924425@qq.com>
Date: 星期五, 18 四月 2025 10:31:08 +0800
Subject: [PATCH] 提交

---
 plugin/uni-simple-router/helpers/urlQuery.js |  332 +++++++++++++++++++++++++++++++-----------------------
 1 files changed, 190 insertions(+), 142 deletions(-)

diff --git a/plugin/uni-simple-router/helpers/urlQuery.js b/plugin/uni-simple-router/helpers/urlQuery.js
index a2b1c69..0644f2f 100644
--- a/plugin/uni-simple-router/helpers/urlQuery.js
+++ b/plugin/uni-simple-router/helpers/urlQuery.js
@@ -1,157 +1,205 @@
-import { Global } from './config';
-import { warn, err } from './warn';
+import {
+	Global
+} from './config';
+import {
+	warn,
+	err
+} from './warn';
 
 const nodeURL = require('query-string');
 
 class ParseQuery {
-    get queryName() {
-        return nodeURL;
-    }
+	get queryName() {
+		return nodeURL;
+	}
 
-    /**
-     * 鍒ゆ柇褰撳墠杩欎釜瀵硅薄鏄惁涓烘繁搴﹀璞�
-     * @param {Object} obj
-     */
-    isDepthObject(obj) {
-        const str = JSON.stringify(obj);
-        return str.match(/}/g).length > 1;
-    }
+	/**
+	 * 鍒ゆ柇褰撳墠杩欎釜瀵硅薄鏄惁涓烘繁搴﹀璞�
+	 * @param {Object} obj
+	 */
+	isDepthObject(obj) {
+		const str = JSON.stringify(obj);
+		return str.match(/}/g).length > 1;
+	}
 
-    /**
-     * 浠嶶RL涓彁鍙栨煡璇㈠瓧绗︿覆
-     * @param {String} url
-     */
-    extract(url) {
-        return nodeURL.extract(url);
-    }
+	/**
+	 * 浠嶶RL涓彁鍙栨煡璇㈠瓧绗︿覆
+	 * @param {String} url
+	 */
+	extract(url) {
+		return nodeURL.extract(url);
+	}
 
-    /**
-     * 鎶婁竴涓� key=value&key1=value 鐨勫瓧绗︿覆杞垚瀵硅薄
-     * @param {string} strQuery key=value&key1=value 绫诲瀷鐨勫瓧绗︿覆
-     */
-    parse(strQuery) {
-        return nodeURL.parse(strQuery);
-    }
+	/**
+	 * 鎶婁竴涓� key=value&key1=value 鐨勫瓧绗︿覆杞垚瀵硅薄
+	 * @param {string} strQuery key=value&key1=value 绫诲瀷鐨勫瓧绗︿覆
+	 */
+	parse(strQuery) {
+		return nodeURL.parse(strQuery);
+	}
 
-    /**
-     * 鎶婁竴涓璞¤浆鎴� key=value&key1=value 绫诲瀷鐨勫瓧绗︿覆
-     * @param {Object} ObjQuery 绗﹀悎js鏍囨敞鐨勫璞�
-     * @param {Boolean} intact 鏄惁鍦ㄨ浆鎴愮殑瀛楃涓插墠娣诲姞锛熷彿
-     */
-    stringify(ObjQuery, intact = true) {
-        const strQuery = nodeURL.stringify(ObjQuery);
-        if (intact) {
-            return `?${strQuery}`;
-        }
-        return strQuery;
-    }
+	/**
+	 * 鎶婁竴涓璞¤浆鎴� key=value&key1=value 绫诲瀷鐨勫瓧绗︿覆
+	 * @param {Object} ObjQuery 绗﹀悎js鏍囨敞鐨勫璞�
+	 * @param {Boolean} intact 鏄惁鍦ㄨ浆鎴愮殑瀛楃涓插墠娣诲姞锛熷彿
+	 */
+	stringify(ObjQuery, intact = true) {
+		const strQuery = nodeURL.stringify(ObjQuery);
+		if (intact) {
+			return `?${strQuery}`;
+		}
+		return strQuery;
+	}
 
-    /**
-     * 鎶婁竴涓璞℃垨鑰� key=value&key1=value 绫诲瀷鐨勬暟鎹姞瀵嗘垚 query=encodeURIComponent(value)
-     * @param {Object|String} query 绗﹀悎js鏍囨敞鐨勫璞� 鎴栬�� key=value&key1=value 瀛楃涓�
-     * @param {Boolean} intact 鏄惁鍦ㄨ浆鎴愮殑瀛楃涓插墠娣诲姞锛熷彿
-     */
-    encode(query, intact = true) {
-        let [strQuery, formatQuery] = ['', ''];
-        if (query == null) {
-            warn('鍔犲瘑鍙傛暟娌℃湁浼犻�掞紝浣犵煡閬擄紵', true);
-            return '';
-        }
-        if (query.constructor === String) { // 瀛楃涓� 灏濊瘯 杞垚 瀵硅薄
-            strQuery = JSON.stringify(this.parse(query));
-        } else if (query.constructor === Object) { // 鐩存帴杞垚瀛楃涓插璞″嵆鍙�
-            if (Object.keys(query).length === 0) {
-                warn('褰撳墠鍙傛暟涓嶆弧瓒冲姞瀵嗚鑼冿紒');
-                return '';
-            }
-            strQuery = JSON.stringify(query);
-        }
-        if (intact) {
-            formatQuery = '?';
-        }
-        formatQuery += `query=${encodeURIComponent(strQuery)}`;
-        return formatQuery;
-    }
+	/**
+	 * 鎶婁竴涓璞℃垨鑰� key=value&key1=value 绫诲瀷鐨勬暟鎹姞瀵嗘垚 query=encodeURIComponent(value)
+	 * @param {Object|String} query 绗﹀悎js鏍囨敞鐨勫璞� 鎴栬�� key=value&key1=value 瀛楃涓�
+	 * @param {Boolean} intact 鏄惁鍦ㄨ浆鎴愮殑瀛楃涓插墠娣诲姞锛熷彿
+	 */
+	encode(query, intact = true) {
+		let [strQuery, formatQuery] = ['', ''];
+		if (query == null) {
+			warn('鍔犲瘑鍙傛暟娌℃湁浼犻�掞紝浣犵煡閬擄紵', true);
+			return '';
+		}
+		if (query.constructor === String) { // 瀛楃涓� 灏濊瘯 杞垚 瀵硅薄
+			strQuery = JSON.stringify(this.parse(query));
+		} else if (query.constructor === Object) { // 鐩存帴杞垚瀛楃涓插璞″嵆鍙�
+			if (Object.keys(query).length === 0) {
+				warn('褰撳墠鍙傛暟涓嶆弧瓒冲姞瀵嗚鑼冿紒');
+				return '';
+			}
+			strQuery = JSON.stringify(query);
+		}
+		if (intact) {
+			formatQuery = '?';
+		}
+		formatQuery += `query=${encodeURIComponent(strQuery)}`;
+		return formatQuery;
+	}
 
-    /**
-     * 鎶婁竴涓凡缁忓姞瀵嗗ソ鐨勫瓧绗︿覆 query=encodeURIComponent(value) 瑙e瘑鎴� 瀵硅薄
-     * @param {string} strQuery  宸茬粡鍔犲瘑濂界殑瀛楃涓� query=encodeURIComponent(value)
-     */
-    decode(strQuery) {
-        if (strQuery == null) {
-            warn('瑙e瘑鍙傛暟娌℃湁浼犻�掞紝浣犵煡閬擄紵', true);
-            return {};
-        }
-        let jsonQuery = strQuery;
-        if (strQuery.constructor === Object) { // 濡傛灉鏄璞� 鐪嬭兘涓嶈兘婊¤冻瑕佹眰
-            jsonQuery = strQuery.query;
-            if (jsonQuery == null) {
-                warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�');
-                return {};
-            }
-            jsonQuery = `query=${jsonQuery}`;
-        }
-        let decode = {};
-        // query 闀胯繖涓牱  query=encodeURIComponent(value)
-        const decodeStr = decodeURIComponent(jsonQuery);
-        const { query } = this.parse(decodeStr); // 杞垚 json 鑾峰彇鍒版鐪熺殑json瀛楃涓�
-        if (query == null) {
-            warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�');
-        } else {
-            try {
-                decode = JSON.parse(query);
-            } catch (error) {
-                warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�');
-            }
-        }
-        return decode;
-    }
+	/**
+	 * 鎶婁竴涓凡缁忓姞瀵嗗ソ鐨勫瓧绗︿覆 query=encodeURIComponent(value) 瑙e瘑鎴� 瀵硅薄
+	 * @param {string} strQuery  宸茬粡鍔犲瘑濂界殑瀛楃涓� query=encodeURIComponent(value)
+	 */
+	decode(strQuery) {
+		if (strQuery == null) {
+			warn('瑙e瘑鍙傛暟娌℃湁浼犻�掞紝浣犵煡閬擄紵', true);
+			return {};
+		}
+		let jsonQuery = strQuery;
+		if (strQuery.constructor === Object) { // 濡傛灉鏄璞� 鐪嬭兘涓嶈兘婊¤冻瑕佹眰
+			jsonQuery = strQuery.query;
+			if (jsonQuery == null) {
+				warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�');
+				return {};
+			}
+			jsonQuery = `query=${jsonQuery}`;
+		}
+		let decode = {};
+		// query 闀胯繖涓牱  query=encodeURIComponent(value)
+		const decodeStr = decodeURIComponent(jsonQuery);
+		const {
+			query
+		} = this.parse(decodeStr); // 杞垚 json 鑾峰彇鍒版鐪熺殑json瀛楃涓�
+		if (query == null) {
+			warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�');
+		} else {
+			try {
+				decode = JSON.parse(query);
+			} catch (error) {
+				warn('褰撳墠瑙e瘑鍙傛暟涓嶆弧瓒崇紪鐮佽鍒�');
+			}
+		}
+		return decode;
+	}
+	queryGet(query) {
+		const {
+			encodeURI
+		} = Global.Router.CONFIG; // 鑾峰彇鍒拌矾鐢遍厤缃�  
+		let [decode, historyObj, strQuery] = [query, query, ''];
+		switch (encodeURI) {
+			case true: { // 鍔犲瘑妯″紡  
+				decode = this.decode(query);
+				strQuery = this.encode(decode); { //-> 浠g爜 杩欐槸淇敼鐨勫唴瀹� 娣诲姞鎴戜滑鑷畾涔夊鐞�  
+					if (strQuery === '' && query) {
+						//-> junjie  
+						//-| 闇�瑕佹敞鎰� ,鎴戜滑鐨勬槸鑷畾涔夊璞� , 鏄笉鍖呭惈 query 鐨�,   
+						//-| 鎸夌収鎴戜滑鑷繁鐨勮鍒欒В鏋�   
+						let newstrQuery = Object.keys(query).map(key => key.concat("=").concat(query[key])).join(
+							"&")
+						if (newstrQuery) {
+							strQuery = "?" + newstrQuery;
+						}
+					}
+				}
+				historyObj = {
+					query: encodeURIComponent(JSON.stringify(decode)),
+				};
+				break;
+			}
+			case false: { // 涓嶅姞瀵嗘ā寮�  
+				strQuery = this.stringify(query);
+				break;
+			}
+			default: {
+				err('鏈煡鍙傛暟妯″紡锛岃妫�鏌� \'encodeURI\'', true);
+			}
+		}
 
-    queryGet(query) {
-        const { encodeURI } = Global.Router.CONFIG; // 鑾峰彇鍒拌矾鐢遍厤缃�
-        let [decode, historyObj, strQuery] = [query, query, ''];
-        switch (encodeURI) {
-        case true: { // 鍔犲瘑妯″紡
-            decode = this.decode(query);
-            strQuery = this.encode(decode);
-            historyObj = {
-                query: encodeURIComponent(JSON.stringify(decode)),
-            };
-            break;
-        }
-        case false: { // 涓嶅姞瀵嗘ā寮�
-            strQuery = this.stringify(query);
-            break;
-        }
-        default: {
-            err('鏈煡鍙傛暟妯″紡锛岃妫�鏌� \'encodeURI\'', true);
-        }
-        }
-        return { strQuery, historyObj, decode };
-    }
+		return {
+			strQuery,
+			historyObj,
+			decode
+		};
+	}
+	// queryGet(query) {
+	//     const { encodeURI } = Global.Router.CONFIG; // 鑾峰彇鍒拌矾鐢遍厤缃�
+	//     let [decode, historyObj, strQuery] = [query, query, ''];
+	//     switch (encodeURI) {
+	//     case true: { // 鍔犲瘑妯″紡
+	//         decode = this.decode(query);
+	//         strQuery = this.encode(decode);
+	//         historyObj = {
+	//             query: encodeURIComponent(JSON.stringify(decode)),
+	//         };
+	//         break;
+	//     }
+	//     case false: { // 涓嶅姞瀵嗘ā寮�
+	//         strQuery = this.stringify(query);
+	//         break;
+	//     }
+	//     default: {
+	//         err('鏈煡鍙傛暟妯″紡锛岃妫�鏌� \'encodeURI\'', true);
+	//     }
+	//     }
+	//     return { strQuery, historyObj, decode };
+	// }
 
 
-    /**
-     * 瀵归渶瑕佷紶閫掔殑鍙傛暟杩涜鍔犲瘑瑙e瘑
-     * @param {Object|String} query get涓篺alse 蹇呴』涓� Object 绫诲瀷
-     * @param {String} get 鏄彇鍊� 杩樻槸閫氳繃api浼犲��
-     */
-    transfer(query = {}) {
-        const { encodeURI } = Global.Router.CONFIG; // 鑾峰彇鍒拌矾鐢遍厤缃�
-        switch (encodeURI) {
-        case true: {
-            // 鍔犲瘑妯″紡
-            return this.encode(query, false);
-        }
-        case false: {
-            // 涓嶅姞瀵嗘ā寮�
-            return this.stringify(query);
-        }
-        default: {
-            err('鏈煡鍙傛暟妯″紡锛岃妫�鏌� \'encodeURI\' ', true);
-        }
-        }
-    }
+	/**
+	 * 瀵归渶瑕佷紶閫掔殑鍙傛暟杩涜鍔犲瘑瑙e瘑
+	 * @param {Object|String} query get涓篺alse 蹇呴』涓� Object 绫诲瀷
+	 * @param {String} get 鏄彇鍊� 杩樻槸閫氳繃api浼犲��
+	 */
+	transfer(query = {}) {
+		const {
+			encodeURI
+		} = Global.Router.CONFIG; // 鑾峰彇鍒拌矾鐢遍厤缃�
+		switch (encodeURI) {
+			case true: {
+				// 鍔犲瘑妯″紡
+				return this.encode(query, false);
+			}
+			case false: {
+				// 涓嶅姞瀵嗘ā寮�
+				return this.stringify(query);
+			}
+			default: {
+				err('鏈煡鍙傛暟妯″紡锛岃妫�鏌� \'encodeURI\' ', true);
+			}
+		}
+	}
 }
 
-export default ParseQuery;
+export default ParseQuery;
\ No newline at end of file

--
Gitblit v1.9.3