uniapp,常用工具函数
/* 处理文件路径 */ export default { // 拨打电话 callPhone(phone) { uni.makePhoneCall({ phoneNumber: phone //仅为示例 }); }, // 判断对象是否包含空值 /* ** @return flag ** @params 目标对象 */ paramsValidate(params) { let flag = true; for (var key in params) { if (params[key] != '0' && !params[key]) { return false; // 终止程序 } } return flag; }, // 日期2023-01-03转几小时前,刚刚文字 timeToWords(stringTime) { if (stringTime) { // 获取当前 var minute = 1000 * 60; var hour = minute * 60; var day = hour * 24; var week = day * 7; var month = day * 30; var time1 = new Date().getTime(); //当前的时间戳 var time2 = Date.parse(new Date(stringTime)); //指定时间的时间戳 var time = time1 - time2; var result = null; if (time < 0) { result = stringTime } else if (time / month >= 1) { result = parseInt(time / month) + "月前"; } else if (time / week >= 1) { result = parseInt(time / week) + "周前"; } else if (time / day >= 1) { result = parseInt(time / day) + "天前"; } else if (time / hour >= 1) { result = parseInt(time / hour) + "小时前"; } else if (time / minute >= 1) { result = parseInt(time / minute) + "分钟前"; } else { result = "刚刚"; } return result; } }, // 判断是否是json格式 isJSON(str) { if (typeof str == "string") { try { var obj = JSON.parse(str) if (typeof obj == "object" && obj) { return true } else { return false } } catch (e) { return false } } }, // 电话号码加密 phonePas(string, type) { if (string) { let str = string.substring(3, 7) return string.replace(str, '****') } }, checkPhone(phone) { let check = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/g.test(phone); return check }, // 身份证校验 checkIdNumber(idNum) { let c = /^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}[\dXx]$/g.test(idNum); return c }, // 字符串截取,str,需要截取的字符串,num需要从第几位截取,endStr-结尾的字符串 substr(str, num, endStr) { return `${str.substring(0,num)}${endStr}` }, // 判断空对象 isEmpty(obj) { return Object.keys(obj).length === 0 }, // 年月日转为日期格式 // 日期转换 formatYMD(data, format = '-') { if (data) { let time1 = data.split(' ') let time = time1[0].replace('年', '-').replace('月', '-').replace('日', ' ') let arr = time.split('-') let y = arr[0] let m = arr[1] < 10 ? `0${arr[1]}` : arr[1] let r = arr[2] < 10 ? `0${arr[2]}` : arr[2] // 没有秒自动补全秒 if (time1[1].split(':').length < 3) { return `${y}${format}${m}${format}${r}${time1[1]?time1[1]+':00':''}` } return `${y}${format}${m}${format}${r}${time1[1]?time1[1]:''}` } else { return null } }, // 日期格式转年月日 formatToYMD(data) { if (data) { let time1 = data.split(' ') let time = time1[0].replace('-', '年').replace('-', '月') let arr = time1[0].split('-') let y = arr[0] let m = arr[1] < 10 ? `${arr[1].split('0')[1]}` : arr[1] let enr = arr[2] let r = enr.split('0')[0] ? enr.split('0')[0] : enr.split('0')[1] return `${y}年${m}月${r}日 ${time1[1]?time1[1]:''}` } else { return null } }, // 日期格式化 formatDate: function(dateA, format = 'yyyy-MM-dd HH:mm:ss', splitType = "-") { console.log('dateA', dateA) const dateB = new Date(dateA).toJSON(); const date = new Date(+new Date(dateB) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace( /\.[\d]{3}Z/, '') let arr = date.split(" ") let dates switch (format) { case 'yyyy-MM-dd HH:mm:ss': dates = date break case 'yyyy-MM-dd': // dates = arr[0] dates = arr[0].replace('-', splitType).replace('-', splitType) break case 'HH:mm:ss': dates = arr[1] break case 'yyyy-MM-dd HH:mm': let arr2 = [] arr2.push(date.split(":")[0]) arr2.push(date.split(":")[1]) dates = arr2.join(":") break case 'MM-dd': let newArr = arr[0].split('-') let result = [] if (newArr.length === 3) { newArr[1] < 10 ? newArr[1] = newArr[1].split('0')[1] : newArr[1] newArr[2] < 10 ? newArr[2] = newArr[2].split('0')[1] : newArr[2] result.push(newArr[1]) result.push(newArr[2]) dates = result.join(splitType) } break case 'HH:mm': let newArr2 = arr[1].split(':') let arr3 = [] arr3.push(newArr2[0]) arr3.push(newArr2[1]) dates = arr3.join(':') break } return dates }, // 获取当前月的最后一天 getLastDay(year, month) { const isLeapYear = ((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0) const maxDays = [1, 3, 5, 7, 8, 10, 12] const middleDays = [4, 6, 9, 11] month = Number(month) if (month == 2) { if (isLeapYear) { return 29 } else { return 28 } } else if (maxDays.includes(month)) { return 31 } else if (middleDays.includes(month)) { return 30 } }, // 删除对象属性值为空的属性,obj-传入的对象 removeProperty(obj) { Object.keys(obj).forEach((item) => { if (obj[item] === '' || obj[item] === undefined || obj[item] === null || obj[item] === 'null') { Reflect.deleteProperty(obj,item) } }) return obj }, // base64转path base64ToPath(base64) { return new Promise(function(resolve, reject) { if (typeof window === 'object' && 'document' in window) { base64 = base64.split(',') var type = base64[0].match(/:(.*?);/)[1] var str = atob(base64[1]) var n = str.length var array = new Uint8Array(n) while (n--) { array[n] = str.charCodeAt(n) } return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type }))) } var extName = base64.match(/data\:\S+\/(\S+);/) if (extName) { extName = extName[1] } else { reject(new Error('base64 error')) } var fileName = Date.now() + '.' + extName if (typeof plus === 'object') { var bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now()) bitmap.loadBase64Data(base64, function() { var filePath = '_doc/uniapp_temp/' + fileName bitmap.save(filePath, {}, function() { bitmap.clear() resolve(filePath) }, function(error) { bitmap.clear() reject(error) }) }, function(error) { bitmap.clear() reject(error) }) return } if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) { var filePath = wx.env.USER_DATA_PATH + '/' + fileName wx.getFileSystemManager().writeFile({ filePath: filePath, data: base64.replace(/^data:\S+\/\S+;base64,/, ''), encoding: 'base64', success: function() { resolve(filePath) }, fail: function(error) { reject(error) } }) return } reject(new Error('not support')) }) } } function getLocalFilePath(path) { if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf( '_downloads') === 0) { return path } if (path.indexOf('file://') === 0) { return path } if (path.indexOf('/storage/emulated/0/') === 0) { return path } if (path.indexOf('/') === 0) { var localFilePath = plus.io.convertAbsoluteFileSystem(path) if (localFilePath !== path) { return localFilePath } else { path = path.substr(1) } } return '_www/' + path } /* base64转文件路径 */ export function base64ToPath(base64) { return new Promise(function(resolve, reject) { if (typeof window === 'object' && 'document' in window) { base64 = base64.split(',') var type = base64[0].match(/:(.*?);/)[1] var str = atob(base64[1]) var n = str.length var array = new Uint8Array(n) while (n--) { array[n] = str.charCodeAt(n) } return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type }))) } var extName = base64.match(/data\:\S+\/(\S+);/) if (extName) { extName = extName[1] } else { reject(new Error('base64 error')) } var fileName = Date.now() + '.' + extName if (typeof plus === 'object') { var bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now()) bitmap.loadBase64Data(base64, function() { var filePath = '_doc/uniapp_temp/' + fileName bitmap.save(filePath, {}, function() { bitmap.clear() resolve(filePath) }, function(error) { bitmap.clear() reject(error) }) }, function(error) { bitmap.clear() reject(error) }) return } if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) { var filePath = wx.env.USER_DATA_PATH + '/' + fileName wx.getFileSystemManager().writeFile({ filePath: filePath, data: base64.replace(/^data:\S+\/\S+;base64,/, ''), encoding: 'base64', success: function() { resolve(filePath) }, fail: function(error) { reject(error) } }) return } reject(new Error('not support')) }) }