12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import { objToUrl } from '@/libs/tools.js';
- const baseUrl = getApp().globalData.baseUrl
- //带Token请求
- const request = (opts, hasToken) => {
- const authorization = getApp().globalData.token
- // console.log(authorization,'authorization')
- // hasToken是否传入token,为true则不传token
- const header = {
- 'content-Type': 'application/json;charset=UTF-8'
- }
- if(!hasToken&&authorization){
- header['X-AUTH-TOKEN'] = authorization
- }
- //此token是登录成功后后台返回保存在storage中的
- let DefaultOpts = {
- url: baseUrl+opts.url,
- data: opts.data,
- method: opts.method,
- header: opts.header ? opts.header : header
- }
- let promise = new Promise(function(resolve, reject) {
- uni.request(DefaultOpts).then(
- (res) => {
- if(res[0]&&res[0].errMsg.indexOf('request:fail')>=0){
- resolve({
- status: 6000,
- message: "网络请求失败"
- })
- }
- let ret = res[1]
- if(res[1].data.status){
- ret = res[1].data
- }else if(res[1].status){
- ret = res[1]
- }
- if(ret.status == '200'){
- resolve(ret)
- }else{
- if(ret.status != '401'){
- setTimeout(()=>{ // 通过延时避免uni.hideLoading()关闭加载中状态时同时关闭提示信息
- uni.showToast({
- icon:'none',
- title: ret.message,
- mask: true,
- duration: 5000
- })
- }, 1000)
- }else{
- setTimeout(()=>{
- uni.showToast({
- icon:'none',
- title: '未登录或登录已过期,请重新登录',
- duration: 5000
- })
- }, 500)
- setTimeout(function() {
- const currentRoute = getRoutePath()
- const url = `/pages/login/login?lanuch=${currentRoute.lanuch}&path=` + encodeURIComponent(currentRoute.url)
- uni.redirectTo({ url })
- }, 1000);
- }
- resolve(ret)
- }
- resolve(ret)
- }
- ).catch(
- (response) => {
- reject(response)
- }
- )
- })
- return promise
- }
- function getRoutePath() {
- // eslint-disable-next-line no-undef
- const pages = getCurrentPages(); // 获取加载的页面
- const currentPage = pages[pages.length - 1]; // 获取当前页面的对象
- let url = currentPage.route; // 当前页面url
- const options = objToUrl(currentPage.options); // 如果要获取url中所带的参数可以查看options
- const lanuch = [
- 'pages/index/index'
- ].includes(url);
- url = '/' + url;
- if (options.length) {
- url += '?' + options;
- }
- return {
- url,
- lanuch
- };
- }
- export default {
- baseUrl,
- request
- }
|