function toArray(data) { if (!data) return [] if (data instanceof Array){ return data } else { return [data] } } function generateUUID() { return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } function generateRandomColor() { const letters = '0123456789ABCDEF'; let color = '#'; for (let i = 0; i < 6; i++) { color += letters[Math.floor(Math.random() * 16)]; } return color; } function generateLightRandomColor() { const min = 150; const range = 105; const r = Math.floor(Math.random() * range + min); const g = Math.floor(Math.random() * range + min); const b = Math.floor(Math.random() * range + min); const color = 'rgb(' + r + ',' + g + ',' + b + ')'; return color; } function verificationAll(data, msg){ let Msgs = { default : msg || '表单数据未填写' } if(typeof msg == 'object'){ Msgs = { default : '表单数据未填写', ...msg, } } if (!data){ uni.showToast({ title: Msgs.default, icon: "none" }) return true } for (let key in data) { if (!data[key] || data[key] === "") { uni.showToast({ title: (Msgs[key] || Msgs.default), icon: "none" }) return true } } return false } //验证手机号是否合法 function verificationPhone(phone){ if(!/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(phone)){ return false } return true } //获取url中参数的方法 export function getHrefParams(name) { var url = window.location.href; try { var cs = url.split('?')[1]; //获取?之后的参数字符串 var cs_arr = cs.split('&'); //参数字符串分割为数组 for (var i = 0; i < cs_arr.length; i++) { //遍历数组,拿到json对象 if (cs_arr[i].split('=')[0] == name) { return cs_arr[i].split('=')[1]; } } return ""; } catch { return ""; } } //其中url是文件的地址 export function hanldePreview(url) { console.log("url--->", url) let index = url.lastIndexOf('.'); let fileType = url.substring(index + 1, url.length); let white_filetype = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf'] let white_image = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'ico', 'wbmp', 'fax', 'net', 'rp', 'jfif', 'jpe', 'tiff', 'tif' ] let white_media = ['mp3', 'wav', 'flac', 'aac', 'mp4', 'avi', 'wmv', 'mov', 'flv'] uni.downloadFile({ url: url, success: function(res) { console.log("res--->", res) var filePath = res.tempFilePath; if (white_filetype.indexOf(fileType) != -1) { uni.openDocument({ filePath: filePath, showMenu: true, success: function(res) { console.log('打开文档成功'); }, fail: function(err) { console.log('打开文档失败--->', err); uni.showToast({ title: err.errMsg, icon: 'none' }) }, }); } else if (white_image.indexOf(fileType) != -1) { uni.previewImage({ urls: [filePath], longPressActions: { itemList: ['发送给朋友', '保存图片', '收藏'], success: function(data) { }, fail: function(err) { console.log(err.errMsg); uni.showToast({ title: err.errMsg, icon: 'none' }) } } }); } else if (white_media.indexOf(fileType) != -1) { wx.previewMedia({ sources: [{ url: filePath, //图片或者视频所在路径 type: 'video', //图片为image,视频为video }], success(res) { //预览成功 // uni.showToast({ // title: "预览成功", // icon: "none" // }) }, fail(err) { console.log(err); uni.showToast({ title: err.errMsg, icon: 'none' }) //预览失败 } }) } else { uni.showToast({ title: '不支持打开该类型文件', icon: 'none' }) } }, fail: function(err) { console.log("err--->", err) uni.showToast({ title: err.errMsg, icon: 'none' }) } }); } //深度对比合并两个对象,相同属性b会覆盖a export function deepMergeObject(a, b){ let data = JSON.parse(JSON.stringify(a)) function mergeObject(obj1, obj2){ for(let key in obj2){ if(typeof obj1[key] == 'object'){ obj1[key] = mergeObject(obj1[key], obj2[key]) }else{ obj1[key] = obj2[key] } } return obj1 } return mergeObject(data, b) } function params(url){ if(typeof url == 'object'){ return url } let data = { url } if(!data.url.includes('/pages')){ data.url = '/pages' + data.url } return data } export function navigateTo(...args){ uni.navigateTo(params(...args)) } export function navigateBack(num = -1){ uni.navigateBack(num) } export function redirectTo(...args){ uni.redirectTo(params(...args)) } export default { toArray, generateUUID, verificationAll, generateRandomColor, generateLightRandomColor, verificationPhone, getHrefParams, deepMergeObject, navigateTo, navigateBack, redirectTo, hanldePreview, }