景徳镇旅游微信小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

240 lines
5.0 KiB

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,
}