123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396 |
- // +----------------------------------------------------------------------
- // | 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() {
- // #ifdef H5
- var ua = navigator.userAgent.toLowerCase();
- if (ua.match(/MicroMessenger/i) == "micromessenger") {
- //这是微信环境
- return true;
- } else {
- //这是非微信环境
- return false;
- }
- // #endif
- // #ifndef H5
- return false
- // #endif
- }
- //判断是否为安卓环境
- 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:
- console.log(is_tab);
- // 本地跳转
- if (is_tab) {
- uni.switchTab({
- url: link,
- });
- return;
- }
- console.log(link);
- uni.navigateTo({
- url: link
- });
- break;
- case 2:
- // webview
- uni.navigateTo({
- url: "/pages/webview/webview?url=" + link
- });
- break;
- case 3:
- console.log('111')
- uni.navigateTo({
- url: "/pages/goods_cate/goods_cate?id=" + link
- });
- // 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
- }
|