import store from '@/store' import * as util from '@/utils/util' import { paginate } from '@/common/constant' import Config from './config' /** * 显示成功提示框 */ export const showSuccess = (msg, callback) => { uni.showToast({ title: msg, icon: 'success', // #ifndef MP-ALIPAY mask: true, // #endif duration: 1500, success() { callback && callback() } }) } /** * 显示失败提示框 */ export const showError = (msg, callback) => { uni.showModal({ title: '友情提示', content: msg, showCancel: false, success(res) { callback && callback() } }) } /** * 显示纯文字提示框 */ export const showToast = (msg, duration = 1500, mask = true) => { uni.showToast({ title: msg, // 提示的内容 icon: 'none', // #ifndef MP-ALIPAY mask, // 是否显示透明蒙层,防止触摸穿透 (支付宝小程序不支持) // #endif duration // 提示的延迟时间,单位毫秒,默认:1500 }) } /** * tabBar页面路径列表 (用于链接跳转时判断) * tabBarLinks为常量, 无需修改 */ export const getTabBarLinks = () => { const tabBarLinks = [ 'pages/index/index', 'pages/category/index', 'pages/cart/index', 'pages/user/index' ] return tabBarLinks } /** * 生成完整的H5地址 [带参数] * @param {string} baseUrl H5访问地址 * @param {string} path 页面路径 * @param {object} params 页面参数 * @return {string} */ export const buildUrL = (h5Url, path, params) => { let complete = h5Url if (!util.isEmpty(path)) { complete += '#/' + path const shareParamsStr = getShareUrlParams(params) if (!util.isEmpty(shareParamsStr)) { complete += '?' + shareParamsStr } } return complete } /** * 生成转发的url参数(string格式) * @param {object} params * @return {string} */ export const getShareUrlParams = params => { return util.urlEncode(getShareParams(params)) } /** * 生成转发的url参数(object格式) * @param {object} params * @return {object} */ export const getShareParams = params => { return { refereeId: store.getters.userId, // 推荐人ID ...params } } /** * 跳转到指定页面url * 支持tabBar页面 * @param {string} url 页面路径 * @param {object} query 页面参数 * @param {string} modo 跳转类型(默认navigateTo) */ export const navTo = (url, query = {}, modo = 'navigateTo') => { if (!url || url.length == 0) { return false } // tabBar页面, 使用switchTab if (util.inArray(url, getTabBarLinks())) { uni.switchTab({ url: `/${url}` }) return true } // 生成query参数 const queryStr = !util.isEmpty(query) ? '?' + util.urlEncode(query) : '' // 普通页面, 使用navigateTo modo === 'navigateTo' && uni.navigateTo({ url: `/${url}${queryStr}` }) // 特殊指定, 使用redirectTo modo === 'redirectTo' && uni.redirectTo({ url: `/${url}${queryStr}` }) return true } /** * 获取当前页面数据 * @param {object} */ export const getCurrentPage = () => { const pages = getCurrentPages() const pathInfo = pages[pages.length - 1].$page.fullPath.split('?') return { path: pathInfo[0].slice(1), query: util.urlDecode(pathInfo[1]) } } /** * 获取购物车商品总数量 * @param {*} value */ export const getCartTotalNum = (value) => { const cartTotal = uni.getStorageSync('cartTotalNum') || 0 return checkLogin() ? cartTotal : 0 } /** * 记录购物车商品总数量 * @param {*} value */ export const setCartTotalNum = (value) => { uni.setStorageSync('cartTotalNum', Number(value)) } /** * 设置购物车tabbar的角标 * 该方法只能在tabbar页面中调用, 其他页面调用会报错 */ export const setCartTabBadge = () => { const cartTabbarIndex = 3 const cartTotal = getCartTotalNum() if (cartTotal > 0) { uni.setTabBarBadge({ index: cartTabbarIndex, text: `${cartTotal}` }) } else { uni.removeTabBarBadge({ index: cartTabbarIndex }) } return } /** * 验证是否已登录 */ export const checkLogin = () => { return !!store.getters.userId } /** * 加载更多列表数据 * @param {Object} resList 新列表数据 * @param {Object} oldList 旧列表数据 * @param {int} pageNo 当前页码 */ export const getEmptyPaginateObj = () => { return util.cloneObj(paginate) } /** * 加载更多列表数据 * @param {Object} resList 新列表数据 * @param {Object} oldList 旧列表数据 * @param {int} pageNo 当前页码 */ export const getMoreListData = (resList, oldList, pageNo) => { // 如果是第一页需手动制空列表 if (pageNo == 1) oldList.data = [] // 合并新数据 return oldList.data.concat(resList.data) } /** * scene解码 * 用于解码微信小程序二维码参数,并返回对象 */ export const sceneDecode = (str) => { if (str === undefined) return {} const data = {} const params = decodeURIComponent(str).split(',') for (const i in params) { const val = params[i].split(':'); val.length > 0 && val[0] && (data[val[0]] = val[1] || null) } return data } /** * 获取二维码场景值(scene) */ export const getSceneData = query => { return util.hasOwnProperty(query, 'scene') ? sceneDecode(query.scene) : {} } /** * 验证指定的功能模块是否开启 */ export const checkModuleKey = moduleKey => { return util.inArray(moduleKey, store.getters.modules) } /** * 验证指定的功能模块是否开启(批量) */ export const checkModules = moduleKeys => { return moduleKeys.filter(val => checkModuleKey(val)).length > 0 } /** * 验证指定的功能模块是否开启(批量) */ export const filterModule = array => { return array.filter(item => !item.moduleKey || checkModuleKey(item.moduleKey)) }