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.
242 lines
5.3 KiB
242 lines
5.3 KiB
1 year ago
|
import store from '@/store'
|
||
|
import * as util from '@/utils/util'
|
||
|
import { paginate } from '@/common/constant'
|
||
|
|
||
|
/**
|
||
|
* 显示成功提示框
|
||
|
*/
|
||
|
export const showSuccess = (msg, callback) => {
|
||
|
uni.showToast({
|
||
|
title: msg,
|
||
|
icon: 'success',
|
||
|
mask: true,
|
||
|
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',
|
||
|
mask, // 是否显示透明蒙层,防止触摸穿透
|
||
|
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} h5Url 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格式)
|
||
|
*/
|
||
|
export const getShareUrlParams = (params) => {
|
||
|
return util.urlEncode({
|
||
|
// 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 {*} 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 = 2
|
||
|
const cartTotal = getCartTotalNum()
|
||
|
if (cartTotal > 0) {
|
||
|
uni.setTabBarBadge({
|
||
|
index: cartTabbarIndex,
|
||
|
text: `${cartTotal}`
|
||
|
})
|
||
|
} else {
|
||
|
uni.removeTabBarBadge({
|
||
|
index: cartTabbarIndex
|
||
|
})
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 验证是否已登录
|
||
|
*/
|
||
|
export const checkLogin = () => {
|
||
|
return !!store.getters.token;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 发起支付请求
|
||
|
* @param {Object} 参数
|
||
|
*/
|
||
|
export const wxPayment = (option) => {
|
||
|
const options = {
|
||
|
appId:option.appId,//与登录的APPID相同,详细请查询微信公众号平台
|
||
|
package: option.package,
|
||
|
timeStamp: '',
|
||
|
nonceStr: '',
|
||
|
prepay_id: '',
|
||
|
paySign: '',
|
||
|
...option
|
||
|
}
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const wx = require('jweixin-module');
|
||
|
console.log(option);
|
||
|
wx.config({
|
||
|
debug: false,
|
||
|
appId: option.appId,//与登录的APPID相同,详细请查询微信公众号平台
|
||
|
timestamp: option.timeStamp,
|
||
|
nonceStr: option.nonceStr,
|
||
|
signature: option.paySign,
|
||
|
package:option.package,
|
||
|
jsApiList: ['chooseWXPay']
|
||
|
|
||
|
});
|
||
|
|
||
|
wx.ready(function() {
|
||
|
wx.checkJsApi({
|
||
|
jsApiList: ['chooseWXPay'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
|
||
|
success: function(res) {
|
||
|
console.log('checkjsapi Success')
|
||
|
console.log(res);
|
||
|
},
|
||
|
fail: function(res) {
|
||
|
console.log('res')
|
||
|
console.log(res);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
wx.chooseWXPay({
|
||
|
|
||
|
nonceStr: option.nonceStr,
|
||
|
package:option.package,
|
||
|
signType: option.signType,
|
||
|
paySign: option.paySign,
|
||
|
timestamp: option.timeStamp,
|
||
|
success: res => resolve(res),
|
||
|
fail: res => reject(res)
|
||
|
});
|
||
|
});
|
||
|
})
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 加载更多列表数据
|
||
|
* @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)
|
||
|
}
|