// uni-app请求封装 export default class Request { // 添加一个计数器,确保多个请求不会互相干扰 static loadingCount = 0; http(router, data = {}, method, contentType) { let that = this; // let path = 'http://nd383294.natappfree.cc'//余红奇 // let path = 'https://live.test.ylrztop.com/prod-api'//余红奇 // let path = 'http://v56c9b8e.natappfree.cc'//余红奇 // let path = 'http://192.168.10.170:7114'//陈果 let path = 'http://192.168.10.166:7114' //余红奇 // let path = 'http://h5api.wxcourse.cdwjyyh.com' uni.setStorageSync('requestPath', path) // 只在第一个请求时显示loading if (Request.loadingCount === 0) { uni.showLoading({ title: '加载中', mask: true }); } Request.loadingCount++; return new Promise((resolve, reject) => { let token = uni.getStorageSync('AppToken'); var httpContentType = 'application/x-www-form-urlencoded'; if (contentType != undefined) { //application/json;charset=UTF-8 httpContentType = contentType; } var routers = router; // 请求 uni.request({ header: { // 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Type': httpContentType, 'AppToken': token }, url: `${path}${router}`, data: data, method: method, success: (res) => { //收到开发者服务器成功返回的回调函数 if (res.code == 401) { //没有权限直接退出到登录界面 let pages = getCurrentPages(); let url = pages[pages.length - 1]; //当前页页面实例 //如果登录界面已打开,自动关闭 if (url != undefined && url.route == "/pages/home/index") { resolve(res.data) return; } uni.reLaunch({ url: '/pages/home/index' }); return; } if (res.token) { uni.setStorageSync('AppToken', res.token) } resolve(res.data) }, fail: (res) => { //接口调用失败的回调函数 }, complete: (res) => { // 确保每次请求完成都减少计数器 Request.loadingCount--; // 当所有请求都完成时才隐藏loading if (Request.loadingCount <= 0) { uni.hideLoading(); Request.loadingCount = 0; // 重置计数器 } } }) }) } }