schangxiang@126.com
2025-03-27 71e1322fa3f5879b9d71930b783ed1a393477451
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// 同时发送异步请求的次数,防止一次点击有多次请求
let ajaxTime = 0;
// export const baseUrl = 'http://10.10.14.91:5005'  //本机测试环境
//export const baseUrl = 'http://localhost:5005'  //本机测试环境
export const baseUrl = 'http://172.17.1.111:5005'  //本机测试环境
// 公共的request方法
export function request(option) {
    //请求头.nql、。,
    const header = {};
    // 返回方式
    header['Content-Type'] = option.contentType || 'application/json';
    // 判断是否是登录请求,不是在header中加上token
    if (option.url != '/login') {
        header['token'] = uni.getStorageSync('token') ? 'Bearer ' + uni.getStorageSync('token') : '';
        header.Authorization = uni.getStorageSync('token') ? 'Bearer ' + uni.getStorageSync('token') : ''
    }
    ajaxTime++;
    // 显示加载中效果
    uni.showLoading({
        title: '加载中...',
        mask: true
    });
 
    return new Promise((resolve, reject) => {
        uni.request({
            url: baseUrl + option.url,
            method: option.method || 'POST',
            data: option.data || {},
            header,
            timeout: 45000, //45秒
            success: (res) => {
                if(res.statusCode === 200) {
                    const result = res.data;
                    if (result.code === 200 || result.code === 204) {
                        // 请求状态正常,返回数据
                        resolve(result)
                    } else if (result.code === 401) { 
                        //token失效,清除token关闭当前页面,跳转到登录
                        uni.showModal({
                            title: '提示',
                            content: 'token失效,请重新登陆',
                            showCancel: false
                        })
                        // 清楚token
                        uni.removeStorageSync('token')
                        // 跳转到登录
                        uni.redirectTo({
                            url: '/pages/login/login'
                        })
                    } else {
                        uni.showModal({
                            title: '提示',
                            content: `${result.code}:${JSON.stringify(result.message)}`,
                            showCancel: false
                        })
                        // 异常,返回异常code和message
                        reject(result)
                    }
                    
                }else {
                    uni.showModal({
                        title: '提示',
                        content: `${res.statusCode}:${JSON.stringify(res.errMsg)}`,
                        showCancel: false
                    })
                    
                    const {statusCode,errMsg} = res;
                    reject({statusCode,errMsg})
                }
            },
            fail: (err) => {
                // 请求失败
                //reject(err);
                uni.showModal({
                    title: '提示',
                    content: `网络错误`,
                    showCancel: false
                })
            },
            complete: () => {
                // 请求完成后判断状态
                ajaxTime--;
                // 只有值等于0,才清除转圈效果
                if (ajaxTime == 0) {
                    uni.hideLoading()
                }
            }
        })
    })
}
 
// export default request