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