From 2d43a1df3f5ba42710e6d21c27d1e13bdb8dfd56 Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期一, 24 三月 2025 09:23:08 +0800 Subject: [PATCH] - --- src/common/utils/util.js | 228 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 226 insertions(+), 2 deletions(-) diff --git a/src/common/utils/util.js b/src/common/utils/util.js index 0d4f51e..bd7bb9c 100644 --- a/src/common/utils/util.js +++ b/src/common/utils/util.js @@ -133,6 +133,30 @@ parseInt(t[2], 10) || null )).getTime() / 1000; }, + minutesBetweenDates(date1, date2) { + let dateOne = new Date(date1) + const oneMinute = 60 * 1000; // 1鍒嗛挓鐨勬绉掓暟 + const difference = Math.abs(date2.getTime() - dateOne.getTime()); // 璁$畻涓や釜鏃ユ湡鐨勬绉掑樊 + return Math.floor(difference / oneMinute); // 灏嗗樊寮傝浆鎹负鍒嗛挓骞跺悜涓嬪彇鏁� + }, + formatDate(dat, type, addNum) { + if (!dat) { + return '-' + } + let date = new Date(dat) + if (addNum) { + date = new Date(date.setDate(date.getDate() + addNum)); + } + const year = date.getFullYear(); + const month = (date.getMonth() + 1).toString().padStart(2, '0'); + const day = date.getDate().toString().padStart(2, '0'); + const hours = date.getHours().toString().padStart(2, '0'); + const minutes = date.getMinutes().toString().padStart(2, '0'); + if (type) { + return type=='riqi' ? `${month}-${day}`: `${year}-${month}-${day} ${hours}:${minutes}`; + } + return `${year}-${month}-${day}`; + }, /** * 鍊掕鏃� * @param {Object} seconds 绉� @@ -695,6 +719,206 @@ } } typeof callback == 'function' && callback(theRequest); - } + }, -} + /** + * 璺緞杞琤ase64 + * @param {Object} string + */ + pathToBase64(path) { + if (/^data:/.test(path)) return path + return new Promise((resolve, reject) => { + // #ifdef H5 + let image = new Image(); + image.setAttribute("crossOrigin", 'Anonymous'); + image.onload = function() { + let canvas = document.createElement('canvas'); + canvas.width = this.naturalWidth; + canvas.height = this.naturalHeight; + canvas.getContext('2d').drawImage(image, 0, 0); + let result = canvas.toDataURL('image/png') + resolve(result); + canvas.height = canvas.width = 0 + } + image.src = path + '?v=' + Math.random() + image.onerror = (error) => { + reject(error); + }; + // #endif + + // #ifdef MP + if (uni.canIUse('getFileSystemManager')) { + uni.getFileSystemManager().readFile({ + filePath: path, + encoding: 'base64', + success: (res) => { + resolve('data:image/png;base64,' + res.data) + }, + fail: (error) => { + reject(error) + } + }) + } + // #endif + + // #ifdef APP-PLUS + plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), (entry) => { + entry.file((file) => { + const fileReader = new plus.io.FileReader() + fileReader.onload = (data) => { + resolve(data.target.result) + } + fileReader.onerror = (error) => { + reject(error) + } + fileReader.readAsDataURL(file) + }, reject) + }, reject) + // #endif + }) + }, + roundToTwo(num) { + if (isNaN(num)) { + return 0 + } + return Math.round((num + Number.EPSILON) * 100) / 100; + }, + /** + * @method 鍑芥暟闃叉姈 + * @desc 鐭椂闂村唴澶氭瑙﹀彂鍚屼竴浜嬩欢锛屽彧鎵ц鏈�鍚庝竴娆★紝鎴栬�呭彧鎵ц鏈�寮�濮嬬殑涓�娆★紝涓棿鐨勪笉鎵ц銆� + * @param func 鐩爣鍑芥暟 + * @param wait 寤惰繜鎵ц姣鏁� + * @param immediate true - 绔嬪嵆鎵ц锛� false - 寤惰繜鎵ц + */ + debounce(func, wait = 1000, immediate = true) { + let timer; + return function() { + let context = this, + args = arguments; + if (timer) clearTimeout(timer); + if (immediate) { + let callNow = !timer; + timer = setTimeout(() => { + timer = null; + }, wait); + if (callNow) func.apply(context, args); + } else { + timer = setTimeout(() => { + func.apply(context, args); + }, wait) + } + } + }, + /** + * @method 鍑芥暟鑺傛祦 + * @desc 鎸囪繛缁Е鍙戜簨浠讹紝浣嗘槸鍦� n 绉掑唴鍙墽琛屼竴娆″嚱鏁般�傚嵆 2n 绉掑唴鎵ц 2 娆�... 銆備細绋�閲婂嚱鏁扮殑鎵ц棰戠巼銆� + * @param func 鍑芥暟 + * @param wait 寤惰繜鎵ц姣鏁� + * @param type 1 鍦ㄦ椂闂存寮�濮嬬殑鏃跺�欒Е鍙� 2 鍦ㄦ椂闂存缁撴潫鐨勬椂鍊欒Е鍙� + */ + throttle(func, wait = 1000, type = 1) { + let previous = 0; + let timeout; + return function() { + let context = this; + let args = arguments; + if (type === 1) { + let now = Date.now(); + if (now - previous > wait) { + func.apply(context, args); + previous = now; + } + } else if (type === 2) { + if (!timeout) { + timeout = setTimeout(() => { + timeout = null; + func.apply(context, args) + }, wait) + } + } + } + }, + checkFileExtensions(str) { + const extensions = ['pdf', 'doc', 'docx', 'xls', 'xlsx']; + return extensions.some(extension => str.includes(extension)); + }, + previewWechat(urlPdf) { + uni.showLoading({ + title: '姝e湪鍔犺浇涓�..' + }) + uni.downloadFile({ + url: urlPdf, + success: function(res) { + var filePath = res.tempFilePath; + const index = urlPdf.lastIndexOf("."); + const suffix = urlPdf.substring(index + 1); + uni.openDocument({ + fileType: suffix, + filePath: filePath, + showMenu: true, + success: function(res) { + console.log('鎵撳紑鏂囨。鎴愬姛'); + uni.hideLoading() + }, + }); + }, + complete: function(r) { + uni.hideLoading() + } + }); + }, + //鐢熸垚鏃堕棿鎴�+闅忔満鏁� + // 鐢熸垚鏃堕棿鎴�+闅忔満鏁扮殑鍑芥暟 + generateTimestampWithRandom(filename) { + // 鑾峰彇褰撳墠鏃ユ湡鍜屾椂闂� + const now = new Date(); + // 鑾峰彇骞翠唤锛岀‘淇濅负鍥涗綅鏁� + const year = now.getFullYear(); + // 鑾峰彇鏈堜唤锛岀‘淇濅负涓や綅鏁� + const month = String(now.getMonth() + 1).padStart(2, '0'); + // 鑾峰彇鏃ユ湡锛岀‘淇濅负涓や綅鏁� + const day = String(now.getDate()).padStart(2, '0'); + // 鑾峰彇灏忔椂锛岀‘淇濅负涓や綅鏁� + const hours = String(now.getHours()).padStart(2, '0'); + // 鑾峰彇鍒嗛挓锛岀‘淇濅负涓や綅鏁� + const minutes = String(now.getMinutes()).padStart(2, '0'); + // 鑾峰彇绉掓暟锛岀‘淇濅负涓や綅鏁� + const seconds = String(now.getSeconds()).padStart(2, '0'); + // 鎷兼帴鏃堕棿鎴� + const timestamp = `${year}${month}${day}${hours}${minutes}${seconds}`; + // 鐢熸垚涓�涓� 0 鍒� 9999 涔嬮棿鐨勯殢鏈烘暟锛屽苟鏍煎紡鍖栦负鍥涗綅鏁� + const randomNumber = String(Math.floor(Math.random() * 10000)).padStart(4, '0'); + // 鎷兼帴鏃堕棿鎴冲拰闅忔満鏁� + return `cylsg/${timestamp}_${randomNumber}` + filename.match(/\.[^.]+$/); + }, + getFileExtensionWithDotRegex(filename) { + const match = filename.match(/\.[^.]+$/); + return match ? match[0] : ''; + }, + isEmpty(value) { + return ( + value === null || + value === undefined || + value === '' || + (Array.isArray(value) && value.length === 0) || + (typeof value === 'object' &&!Array.isArray(value) && Object.keys(value).length === 0) + ); + }, + + removeEmptyValuesRecursive(obj) { + const newObj = {}; + for (const key in obj) { + if (obj.hasOwnProperty(key)) { + const value = obj[key]; + if (!this.isEmpty(value)) { + if (typeof value === 'object' &&!Array.isArray(value)) { + newObj[key] = removeEmptyValuesRecursive(value); + } else { + newObj[key] = value; + } + } + } + } + return newObj; + } +} \ No newline at end of file -- Gitblit v1.9.1