386 lines
8.1 KiB
JavaScript
386 lines
8.1 KiB
JavaScript
// +----------------------------------------------------------------------
|
||
// | likeshop开源商城系统
|
||
// +----------------------------------------------------------------------
|
||
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
|
||
// | gitee下载:https://gitee.com/likeshop_gitee
|
||
// | github下载:https://github.com/likeshop-github
|
||
// | 访问官网:https://www.likeshop.cn
|
||
// | 访问社区:https://home.likeshop.cn
|
||
// | 访问手册:http://doc.likeshop.cn
|
||
// | 微信公众号:likeshop技术社区
|
||
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
|
||
// | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
|
||
// | 禁止对系统程序代码以任何目的,任何形式的再发布
|
||
// | likeshop团队版权所有并拥有最终解释权
|
||
// +----------------------------------------------------------------------
|
||
// | author: likeshop.cn.team
|
||
// +----------------------------------------------------------------------
|
||
|
||
import {
|
||
loadingType
|
||
} from './type'
|
||
import {
|
||
baseURL
|
||
} from '@/config/app.js'
|
||
|
||
import store from '@/store'
|
||
|
||
|
||
//所在环境
|
||
let client = null
|
||
// #ifdef MP-WEIXIN
|
||
client = 1
|
||
// #endif
|
||
|
||
// #ifdef H5
|
||
client = isWeixinClient() ? 2 : 6
|
||
// #endif
|
||
|
||
// #ifdef APP-PLUS
|
||
client = 3;
|
||
uni.getSystemInfo({
|
||
success: res => {
|
||
client = res.platform == 'ios' ? 3 : 4;
|
||
},
|
||
fail: res => {
|
||
client = 3
|
||
}
|
||
})
|
||
// #endif
|
||
export {
|
||
client
|
||
}
|
||
|
||
|
||
//节流
|
||
export const trottle = (func, time = 1000, context) => {
|
||
let previous = new Date(0).getTime()
|
||
return function(...args) {
|
||
let now = new Date().getTime()
|
||
if (now - previous > time) {
|
||
func.apply(context, args)
|
||
previous = now
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
//节流
|
||
export const debounce = (func, time = 1000, context) => {
|
||
let timer = null
|
||
return function(...args) {
|
||
if (timer) {
|
||
clearTimeout(timer)
|
||
}
|
||
timer = setTimeout(() => {
|
||
timer = null
|
||
func.apply(context, args)
|
||
}, time)
|
||
}
|
||
}
|
||
|
||
|
||
//判断是否为微信环境
|
||
export function isWeixinClient() {
|
||
var ua = navigator.userAgent.toLowerCase();
|
||
if (ua.match(/MicroMessenger/i) == "micromessenger") {
|
||
//这是微信环境
|
||
return true;
|
||
} else {
|
||
//这是非微信环境
|
||
return false;
|
||
}
|
||
}
|
||
|
||
//判断是否为安卓环境
|
||
export function isAndroid() {
|
||
let u = navigator.userAgent;
|
||
return u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
|
||
}
|
||
|
||
//获取url后的参数 以对象返回
|
||
export function strToParams(str) {
|
||
var newparams = {}
|
||
for (let item of str.split('&')) {
|
||
newparams[item.split('=')[0]] = item.split('=')[1]
|
||
}
|
||
return newparams
|
||
}
|
||
|
||
//重写encodeURL函数
|
||
export function urlencode(str) {
|
||
str = (str + '').toString();
|
||
return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
|
||
replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
|
||
}
|
||
|
||
|
||
//一维数组截取为二维数组
|
||
|
||
export function arraySlice(data, array = [], optNum = 10) {
|
||
data = JSON.parse(JSON.stringify(data))
|
||
if (data.length <= optNum) {
|
||
data.length > 0 && array.push(data);
|
||
return array;
|
||
}
|
||
array.push(data.splice(0, optNum));
|
||
return arraySlice(data, array, optNum);
|
||
}
|
||
|
||
//对象参数转为以?&拼接的字符
|
||
export function paramsToStr(params) {
|
||
let p = '';
|
||
if (typeof params == 'object') {
|
||
p = '?'
|
||
for (let props in params) {
|
||
p += `${props}=${params[props]}&`
|
||
}
|
||
p = p.slice(0, -1)
|
||
}
|
||
return p
|
||
}
|
||
|
||
|
||
|
||
// 获取wxml元素
|
||
|
||
export function getRect(selector, all, context) {
|
||
return new Promise(function(resolve) {
|
||
let qurey = uni.createSelectorQuery();
|
||
|
||
if (context) {
|
||
qurey = uni.createSelectorQuery().in(context);
|
||
}
|
||
|
||
qurey[all ? 'selectAll' : 'select'](selector).boundingClientRect(function(rect) {
|
||
if (all && Array.isArray(rect) && rect.length) {
|
||
resolve(rect);
|
||
}
|
||
if (!all && rect) {
|
||
resolve(rect);
|
||
}
|
||
}).exec();
|
||
});
|
||
}
|
||
|
||
|
||
// 轻提示
|
||
export function toast(info = {}, navigateOpt) {
|
||
let title = info.title || ''
|
||
let icon = info.icon || 'none'
|
||
let endtime = info.endtime || 2000
|
||
if (title) uni.showToast({
|
||
title: title,
|
||
icon: icon,
|
||
duration: endtime
|
||
})
|
||
if (navigateOpt != undefined) {
|
||
if (typeof navigateOpt == 'object') {
|
||
let tab = navigateOpt.tab || 1,
|
||
url = navigateOpt.url || '';
|
||
switch (tab) {
|
||
case 1:
|
||
//跳转至 table
|
||
setTimeout(function() {
|
||
uni.switchTab({
|
||
url: url
|
||
})
|
||
}, endtime);
|
||
break;
|
||
case 2:
|
||
//跳转至非table页面
|
||
setTimeout(function() {
|
||
uni.navigateTo({
|
||
url: url,
|
||
})
|
||
}, endtime);
|
||
break;
|
||
case 3:
|
||
//返回上页面
|
||
setTimeout(function() {
|
||
uni.navigateBack({
|
||
delta: parseInt(url),
|
||
})
|
||
}, endtime);
|
||
break;
|
||
case 4:
|
||
//关闭当前所有页面跳转至非table页面
|
||
setTimeout(function() {
|
||
uni.reLaunch({
|
||
url: url,
|
||
})
|
||
}, endtime);
|
||
break;
|
||
case 5:
|
||
//关闭当前页面跳转至非table页面
|
||
setTimeout(function() {
|
||
uni.redirectTo({
|
||
url: url,
|
||
})
|
||
}, endtime);
|
||
break;
|
||
}
|
||
|
||
} else if (typeof navigateOpt == 'function') {
|
||
setTimeout(function() {
|
||
navigateOpt && navigateOpt();
|
||
}, endtime);
|
||
}
|
||
}
|
||
}
|
||
|
||
//菜单跳转
|
||
export function menuJump(item) {
|
||
const {
|
||
is_tab,
|
||
link,
|
||
link_type
|
||
} = item
|
||
switch (link_type) {
|
||
case 1:
|
||
// 本地跳转
|
||
if (is_tab) {
|
||
uni.switchTab({
|
||
url: link
|
||
});
|
||
return;
|
||
}
|
||
uni.navigateTo({
|
||
url: link
|
||
});
|
||
break;
|
||
|
||
case 2:
|
||
// webview
|
||
uni.navigateTo({
|
||
url: "/pages/webview/webview?url=" + link
|
||
});
|
||
break;
|
||
|
||
case 3: // tabbar
|
||
|
||
}
|
||
}
|
||
|
||
export function uploadFile(path) {
|
||
return new Promise((resolve, reject) => {
|
||
uni.uploadFile({
|
||
url: baseURL + '/api/file/formimage',
|
||
filePath: path,
|
||
name: 'file',
|
||
header: {
|
||
token: store.getters.token,
|
||
// version: '1.2.1.20210717'
|
||
},
|
||
fileType: 'image',
|
||
cloudPath: '',
|
||
success: res => {
|
||
try {
|
||
console.log(path)
|
||
console.log('uploadFile res ==> ', res)
|
||
let data = JSON.parse(res.data);
|
||
|
||
if (data.code == 1) {
|
||
resolve(data.data);
|
||
} else {
|
||
reject()
|
||
}
|
||
} catch (e) {
|
||
console.log(e)
|
||
reject()
|
||
}
|
||
},
|
||
fail: (err) => {
|
||
console.log(err)
|
||
reject()
|
||
}
|
||
});
|
||
});
|
||
|
||
|
||
}
|
||
|
||
//当前页面
|
||
|
||
export function currentPage() {
|
||
let pages = getCurrentPages();
|
||
let currentPage = pages[pages.length - 1];
|
||
return currentPage || {};
|
||
}
|
||
|
||
|
||
|
||
// H5复制方法
|
||
export function copy(str) {
|
||
// #ifdef H5
|
||
let aux = document.createElement("input");
|
||
aux.setAttribute("value", str);
|
||
document.body.appendChild(aux);
|
||
aux.select();
|
||
document.execCommand("copy");
|
||
document.body.removeChild(aux);
|
||
uni.showToast({
|
||
title: "复制成功",
|
||
})
|
||
// #endif
|
||
|
||
// #ifndef H5
|
||
uni.setClipboardData({
|
||
data: str.toString(),
|
||
})
|
||
// #endif
|
||
}
|
||
|
||
|
||
export function setTabbar() {
|
||
const config = store.getters.appConfig
|
||
uni.setTabBarStyle({
|
||
color: config.navigation_setting.ust_color,
|
||
selectedColor: config.navigation_setting.st_color,
|
||
})
|
||
// #ifdef APP-PLUS
|
||
config.navigation_menu.forEach((item, index) => {
|
||
uni.downloadFile({
|
||
url: item.un_selected_icon,
|
||
success: res => {
|
||
uni.setTabBarItem({
|
||
index,
|
||
iconPath: res.tempFilePath,
|
||
})
|
||
}
|
||
});
|
||
uni.downloadFile({
|
||
url: item.selected_icon,
|
||
success: res => {
|
||
uni.setTabBarItem({
|
||
index,
|
||
selectedIconPath: res.tempFilePath,
|
||
})
|
||
}
|
||
});
|
||
uni.setTabBarItem({
|
||
index,
|
||
text: item.name,
|
||
fail(res) {
|
||
console.log(res)
|
||
},
|
||
success(res) {
|
||
console.log(res)
|
||
}
|
||
})
|
||
})
|
||
// #endif
|
||
// #ifndef APP-PLUS
|
||
config.navigation_menu.forEach((item, index) => {
|
||
uni.setTabBarItem({
|
||
index,
|
||
text: item.name,
|
||
iconPath: item.un_selected_icon,
|
||
selectedIconPath: item.selected_icon,
|
||
fail(res) {},
|
||
success(res) {}
|
||
})
|
||
})
|
||
// #endif
|
||
}
|