【前端】纸掌柜h5端
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.

132 lines
3.1 KiB

import store from '@/store/index'
import { uploadUrl } from '@/enums/index.js'
// 框架方法封装
const tabList = ['store', 'cart', 'mine']
/**
* @param {string} 跳转的tabBar页面
* @return {null}
*/
export function tab2(tabPage) {
if (tabList.includes(tabPage)) {
uni.switchTab({
url: `/pages/${tabPage}/index`
})
}
}
/**
* @param {string} 返回上一级
* @return {null}
*/
export function back() {
if (getCurrentPages().length > 1) {
uni.navigateBack({
delta: 1
})
} else {
go2('store')
}
}
/**
* 跳转到指定页面,包括tabBar页面
* @param {string} url 页面名称
* @param {object} data 页面参数
* @param {string} isRedirect 是否重定向 默认false
* @return {null}
*/
export function go2(url, data = {}, isRedirect = false) {
if (!url) {
console.error('请选择页面')
return
}
let param = ''
Object.keys(data).forEach((key) => {
if (param === '') {
param = `${key}=${data[key]}`
} else {
param += `&${key}=${data[key]}`
}
})
if (tabList.includes(url)) {
uni.switchTab({
url: `/pages/${url}/index${param ? '?' + param : ''}`
})
} else {
if (isRedirect) {
uni.redirectTo({
url: `/pages/${url}/index${param ? '?' + param : ''}`
})
} else {
uni.navigateTo({
url: `/pages/${url}/index${param ? '?' + param : ''}`
})
}
}
}
/**
* 跳转到指定页面,包括tabBar页面,校验是否已登录,未登录则跳转到登录页面
* @param {string} url 页面名称
* @param {object} data 页面参数
* @param {string} isRedirect 是否重定向 默认false
* @return {null}
*/
export function loginGo2(url, data = {}, isRedirect) {
const token = store.state.qnToken
if (token) {
go2(url, data, isRedirect)
} else {
store.commit('setNextPage', { name: url, data })
go2('login')
}
}
/**
* 退出登录并跳转到登录页面
* @return {null}
*/
export function exit() {
store.dispatch('logout')
go2('login')
}
/**
* 文件上传
* @param {array} sourceType 上传的方式 album:相册 camera:相机
* @return {Promise} 以数组的形式返回对应的文件地址
*/
export function uploadImage(sourceType = ['album', 'camera']) {
return new Promise((resolve, reject) => {
uni.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: sourceType,
success: (res) => {
const tempFilePaths = res.tempFilePaths
uni.uploadFile({
url: uploadUrl.image,
filePath: tempFilePaths[0],
name: 'image',
fileType: 'image',
success: (res) => {
let result = JSON.parse(res.data)
if (result.data) {
resolve(result.data)
} else {
reject(result.message)
}
},
fail: (err) => {
console.error('uploadFile error:', err)
reject(err)
}
})
},
fail: (err) => {
console.error('chooseImage error:', err)
reject(err)
}
})
})
}