From 6761e4f06daef8e5cb71fb8f3fde9ca9a353bb2c Mon Sep 17 00:00:00 2001
From: chenhaozhe <cgz@hz-kingdee.com>
Date: 星期二, 22 七月 2025 16:46:51 +0800
Subject: [PATCH] Merge branch 'Dev' of http://101.37.171.70:10101/r/~jhz/STUWMS into Dev

---
 utils/common.js |  159 +++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 141 insertions(+), 18 deletions(-)

diff --git a/utils/common.js b/utils/common.js
index 65ea5c2..d3dd163 100644
--- a/utils/common.js
+++ b/utils/common.js
@@ -1,10 +1,10 @@
 class commonUtils {
 	serverUrl
-	
+
 	constructor() {
 		this.serverUrl = uni.getStorageSync('serverUrl') || 'http://47.96.97.237/API';
 	}
-	
+
 	// 闃叉姈鍑芥暟
 	debounce(func, delay, immediate = false) {
 		let timer = null;
@@ -87,9 +87,110 @@
 	isAllDigits(str) {
 		return /^\d+$/.test(str);
 	}
-	
-	// uni-app 浣跨敤 灏佽璇锋眰鍑芥暟
-	doRequest(url, data, resFunction, errFunction, method) {
+
+	isJson(str) {
+		try {
+			JSON.parse(str)
+			return true
+		} catch {
+			return false
+		}
+	}
+
+	timeClock(callback, delay) {
+		let timeoutId;
+		let isRunning = false;
+
+		function interval() {
+			timeoutId = setTimeout(() => {
+				callback();
+				clearTimeout(timeoutId); // 绔嬪嵆娓呴櫎褰撳墠瀹氭椂鍣↖D
+				if (isRunning) {
+					interval();
+				}
+			}, delay);
+		}
+
+		return {
+			start() {
+				if (!isRunning) {
+					isRunning = true;
+					interval();
+				}
+			},
+			stop() {
+				if (isRunning) {
+					isRunning = false;
+					clearTimeout(timeoutId);
+				}
+			}
+		};
+	}
+
+	deepClone(target, map = new WeakMap()) {
+		// 澶勭悊鍘熷鍊煎拰鍑芥暟(typeof 鏁扮粍浼氳繑鍥瀘bject)
+		if (typeof target !== 'object' || target === null) {
+			return target;
+		}
+
+		// 澶勭悊寰幆寮曠敤
+		if (map.has(target)) {
+			return map.get(target);
+		}
+
+		let clone;
+
+		// 澶勭悊鏁扮粍
+		if (Array.isArray(target)) {
+			clone = [];
+			map.set(target, clone);
+			target.forEach((item, index) => {
+				clone[index] = deepClone(item, map);
+			});
+			return clone;
+		}
+
+		// 澶勭悊鏃ユ湡瀵硅薄
+		if (target instanceof Date) {
+			clone = new Date(target.getTime());
+			map.set(target, clone);
+			return clone;
+		}
+
+		// 澶勭悊姝e垯琛ㄨ揪寮�
+		if (target instanceof RegExp) {
+			clone = new RegExp(target);
+			map.set(target, clone);
+			return clone;
+		}
+
+		// 澶勭悊鍑芥暟 (鐩存帴浣跨敤鍑芥暟鐨勫紩鐢�)
+		if (typeof target === 'function') {
+			return target;
+		}
+
+		// 澶勭悊鍏朵粬瀵硅薄锛堟櫘閫氬璞°�佺被瀹炰緥绛夛級
+		clone = Object.create(Object.getPrototypeOf(target));
+		map.set(target, clone);
+
+		// 鑾峰彇鎵�鏈夊睘鎬э紙鍖呮嫭 Symbol 绫诲瀷锛�
+		const allKeys = [...Object.getOwnPropertyNames(target), ...Object.getOwnPropertySymbols(target)];
+
+		allKeys.forEach(key => {
+			const descriptor = Object.getOwnPropertyDescriptor(target, key);
+			if (descriptor && descriptor.enumerable) {
+				// 閫掑綊澶嶅埗灞炴�у��
+				clone[key] = deepClone(target[key], map);
+			}
+		});
+
+		return clone;
+	}
+
+	// uni-app 浣跨敤 灏佽璇锋眰鍑芥暟 浣跨敤浼犵粺鍑芥暟褰撲綔鍥炶皟闇�瑕佷紶that锛岀澶村嚱鏁颁笉闇�瑕�
+	doRequest(url, data, resFunction, errFunction, method, that) {
+		that = that || this;
+		let errorTip = null;
 		uni.showLoading({
 			title: '鍔犺浇涓�...'
 		})
@@ -99,30 +200,52 @@
 			data: data || "",
 			success: (res) => {
 				if (typeof resFunction === 'function') {
-					resFunction.call(this, res)
-				} else if (typeof errFunction === 'undefined') {
+					resFunction.call(that, res)
+				} else if (typeof errFunction === 'undefined' || errFunction === null) {
 					return
 				} else {
-					throw new TypeError("璁块棶鎴愬姛鍥炶皟鍑芥暟绫诲瀷寮傚父!")
+					throw new TypeError("璁块棶鎴愬姛鍥炶皟鍑芥暟绫诲瀷涓嶄负鍑芥暟鎴栬�呯┖!")
 				}
 			},
 			fail: (err) => {
-				uni.showToast({
-					icon: "error",
-					title: "鎺ュ彛璁块棶寮傚父!",
-					duration: 2000
-				})
+				console.error(err)
+				errorTip = () => {
+					uni.showToast({
+						icon: "none",
+						title: err.errMsg || err.data.message || "鎺ュ彛寮傚父!",
+						duration: 2000
+					})
+				}
 				if (typeof errFunction === 'function') {
-					errFunction.call(this, err)
-				} else if (typeof errFunction === 'undefined') {
+					errFunction.call(that, err)
+				} else if (typeof errFunction === 'undefined' || errFunction === null) {
 					return
 				} else {
-					throw new TypeError("璁块棶澶辫触鍥炶皟鍑芥暟绫诲瀷寮傚父!")
+					throw new TypeError("璁块棶澶辫触鍥炶皟鍑芥暟绫诲瀷涓嶄负鍑芥暟鎴栬�呯┖!")
 				}
+
+			},
+			complete() {
+				setTimeout(() => {
+					uni.hideLoading()
+					if (errorTip != null) {
+						errorTip()
+					}
+				}, 1000)
 			}
 		})
-		uni.hideLoading()
+	}
+
+	// uni-app 鎾斁闊抽灏佽
+	playSound(e) {
+		const innerAudioContext = uni.createInnerAudioContext();
+		if (e == 1) {
+			innerAudioContext.src = '/static/success.wav';
+		} else {
+			innerAudioContext.src = '/static/jingbao.wav';
+		}
+		innerAudioContext.play(); // 鎾斁闊抽
 	}
 }
 
-export const CommonUtils =  Object.freeze(new commonUtils());
\ No newline at end of file
+export const CommonUtils = Object.freeze(new commonUtils());
\ No newline at end of file

--
Gitblit v1.9.1