import store from '@/store/index' import { uploadUrl } from '@/enums/index.js' // 框架方法封装 const tabList = ['client', 'trade', 'mall', '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('client') } } /** * 跳转到指定页面,包括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) } }) }) }