@ -6,454 +6,459 @@ const tokenKey = "token";
const tokenKeyValue = "" ;
class Request {
constructor ( config = { } ) {
this . config = { } ;
this . config . baseUrl = config . baseUrl ? config . baseUrl : "" ;
this . config . dataType = config . dataType ? config . dataType : "json" ;
this . config . responseType = config . responseType
? config . responseType
: "text" ;
this . config . header = config . header ? config . header : { } ;
this . reqInterceptors = null ;
this . resInterceptors = null ;
this . interceptors = {
request : ( fn ) => {
this . reqInterceptors = fn ;
} ,
response : ( fn ) => {
this . resInterceptors = fn ;
} ,
} ;
}
setConfig ( config = { } ) {
this . config = this . _deepCopy ( this . _merge ( this . config , config ) ) ;
}
// 请求封装
globalRequest ( url , config , method , isForm = "" ) {
const _this = this ;
let newConfig = this . _deepCopy ( this . _merge ( this . config , config ) ) ;
let lastConfig = { } ;
if ( this . reqInterceptors && typeof this . reqInterceptors === "function" ) {
let reqInterceptors = this . reqInterceptors ( newConfig ) ;
if ( ! reqInterceptors && process . env . NODE _ENV === "development" ) {
console . log ( "请求被拦截,此消息仅在开发环境显示。" ) ;
return false ;
} else if (
Object . prototype . toString . call ( reqInterceptors ) === "[object Promise]"
) {
return reqInterceptors ;
}
lastConfig = this . _deepCopy ( reqInterceptors ) ;
} else {
lastConfig = this . _deepCopy ( newConfig ) ;
}
let header = { } ;
let tokenData = $ . getData ( "token" ) ;
if ( tokenData ) {
header [ tokenKey ] = tokenKeyValue + tokenData ;
}
if ( isForm ) {
header [ "content-type" ] = "application/x-www-form-urlencoded" ;
}
let fullUrl = this . _formatUrl ( lastConfig . baseUrl , url ) ;
if ( url . indexOf ( "http" ) != - 1 ) {
fullUrl = url ;
}
return new Promise ( ( resolve , reject ) => {
uni . request ( {
url : fullUrl ,
method : method ,
data : config ,
header : header ,
async complete ( response ) {
let res = response ;
if ( response . statusCode == 404 ) {
$ . toast ( "请求地址不存在" ) ;
} else if ( response . statusCode == 500 ) {
$ . toast ( "服务器内部错误" ) ;
} else {
console . log ( "response" , response . statusCode ) ;
let res = response ;
if (
_this . resInterceptors &&
typeof _this . resInterceptors === "function"
) {
let resInterceptors = _this . resInterceptors ( res ) ;
// console.log('resInterceptors-----------------',resInterceptors)
if (
resInterceptors . statusCode == 401 ||
resInterceptors . data . code == 403
) {
$ . toast ( "登录信息已过期,请重新登录" ) ;
$ . removeData ( "token" ) ;
setTimeout ( ( ) => {
$ . openNew ( "/pages/logIn/logIn" ) ;
} , 1500 ) ;
return ;
} else if ( resInterceptors . statusCode != 200 ) {
$ . toast ( resInterceptors . data . message ) ;
}
if ( ! resInterceptors && resInterceptors != "" ) {
reject ( "返回值已被您拦截!" ) ;
return ;
} else if (
Object . prototype . toString . call ( resInterceptors ) ===
"[object Promise]"
) {
try {
let promiseRes = await resInterceptors ;
resolve ( promiseRes ) ;
} catch ( error ) {
reject ( error ) ;
}
} else {
res = resInterceptors ;
}
}
}
resolve ( res . data ) ;
} ,
} ) ;
} ) ;
}
constructor ( config = { } ) {
this . config = { } ;
this . config . baseUrl = config . baseUrl ? config . baseUrl : "" ;
this . config . dataType = config . dataType ? config . dataType : "json" ;
this . config . responseType = config . responseType ?
config . responseType :
"text" ;
this . config . header = config . header ? config . header : { } ;
this . reqInterceptors = null ;
this . resInterceptors = null ;
this . interceptors = {
request : ( fn ) => {
this . reqInterceptors = fn ;
} ,
response : ( fn ) => {
this . resInterceptors = fn ;
} ,
} ;
}
setConfig ( config = { } ) {
this . config = this . _deepCopy ( this . _merge ( this . config , config ) ) ;
}
// 请求封装
globalRequest ( url , config , method , isForm = "" ) {
const _this = this ;
let newConfig = this . _deepCopy ( this . _merge ( this . config , config ) ) ;
let lastConfig = { } ;
if ( this . reqInterceptors && typeof this . reqInterceptors === "function" ) {
let reqInterceptors = this . reqInterceptors ( newConfig ) ;
if ( ! reqInterceptors && process . env . NODE _ENV === "development" ) {
console . log ( "请求被拦截,此消息仅在开发环境显示。" ) ;
return false ;
} else if (
Object . prototype . toString . call ( reqInterceptors ) === "[object Promise]"
) {
return reqInterceptors ;
}
lastConfig = this . _deepCopy ( reqInterceptors ) ;
} else {
lastConfig = this . _deepCopy ( newConfig ) ;
}
let header = { } ;
let tokenData = $ . getData ( "token" ) ;
if ( tokenData ) {
header [ tokenKey ] = tokenKeyValue + tokenData ;
}
if ( isForm ) {
header [ "content-type" ] = "application/x-www-form-urlencoded" ;
}
let fullUrl = this . _formatUrl ( lastConfig . baseUrl , url ) ;
if ( url . indexOf ( "http" ) != - 1 ) {
fullUrl = url ;
}
return new Promise ( ( resolve , reject ) => {
uni . request ( {
url : fullUrl ,
method : method ,
data : config ,
header : header ,
async complete ( response ) {
let res = response ;
if ( ( response . errMsg == 'request:ok' ) ) {
addFile ( file , success , progress ) {
const _this = this ;
let newConfig = this . _deepCopy ( this . _merge ( this . config , { } ) ) ;
let lastConfig = { } ;
if ( this . reqInterceptors && typeof this . reqInterceptors === "function" ) {
let reqInterceptors = this . reqInterceptors ( newConfig ) ;
if ( ! reqInterceptors && process . env . NODE _ENV === "development" ) {
console . log ( "请求被拦截,此消息仅在开发环境显示。" ) ;
return false ;
} else if (
Object . prototype . toString . call ( reqInterceptors ) === "[object Promise]"
) {
return reqInterceptors ;
}
lastConfig = this . _deepCopy ( reqInterceptors ) ;
} else {
lastConfig = this . _deepCopy ( newConfig ) ;
}
let fullUrl = this . _formatUrl ( lastConfig . baseUrl , $ . imgUrl ) ;
let header = {
// 'content-Type':'multipart/form-data'
} ;
return new Promise ( ( resolve , reject ) => {
const UploadTask = uni . uploadFile ( {
url : fullUrl ,
filePath : file [ 0 ] . path ,
header : header ,
name : $ . fileImgKey ,
formData : { } ,
async complete ( response ) {
let res = response ;
if (
_this . resInterceptors &&
typeof _this . resInterceptors === "function"
) {
let resInterceptors = _this . resInterceptors ( res ) ;
if ( ! resInterceptors && resInterceptors != "" ) {
reject ( "返回值已被您拦截!" ) ;
return ;
} else if (
Object . prototype . toString . call ( resInterceptors ) ===
"[object Promise]"
) {
try {
let promiseRes = await resInterceptors ;
resolve ( promiseRes ) ;
} catch ( error ) {
reject ( error ) ;
}
} else {
res = resInterceptors ;
}
}
success ( JSON . parse ( res . data ) ) ;
} ,
} ) ;
// 监听上传进度
if ( progress ) {
UploadTask . onProgressUpdate ( ( res ) => {
progress ( res . progress ) ;
} ) ;
}
} ) ;
}
if ( response . statusCode == 404 ) {
$ . toast ( "请求地址不存在" ) ;
} else if ( response . statusCode == 500 ) {
$ . toast ( "服务器内部错误" ) ;
} else {
// console.log("response", response.statusCode);
let res = response ;
if (
_this . resInterceptors &&
typeof _this . resInterceptors === "function"
) {
let resInterceptors = _this . resInterceptors ( res ) ;
// console.log('resInterceptors-----------------',resInterceptors)
if (
resInterceptors . statusCode == 401 ||
resInterceptors . data . code == 403
) {
$ . toast ( "登录信息已过期,请重新登录" ) ;
$ . removeData ( "token" ) ;
setTimeout ( ( ) => {
$ . openNew ( "/pages/logIn/logIn" ) ;
} , 1500 ) ;
return ;
} else if ( resInterceptors . statusCode != 200 ) {
$ . toast ( resInterceptors . data . message ) ;
}
if ( ! resInterceptors && resInterceptors != "" ) {
reject ( "返回值已被您拦截!" ) ;
return ;
} else if (
Object . prototype . toString . call ( resInterceptors ) ===
"[object Promise]"
) {
try {
let promiseRes = await resInterceptors ;
resolve ( promiseRes ) ;
} catch ( error ) {
reject ( error ) ;
}
} else {
res = resInterceptors ;
}
}
}
resolve ( res . data ) ;
} else {
reject ( )
}
// 上传图片
addImg ( length = 1 , success , progress , type = 1 ) {
// 获取本地图片的路径
uni . chooseImage ( {
count : length ,
// original原图compressed压缩图
sizeType : [ "compressed" ] , // 可以指定是原图还是压缩图,默认二者都有
// camera相机album相册
sourceType : [ "album" , "camera" ] , // 可以指定来源是相册还是相机,默认二者都有
success : ( res ) => {
// 显示上传动画
$ . showLoading ( "图片上传中..." ) ;
var imgs ;
imgs = res . tempFilePaths ;
// #ifdef H5
// 调用上传图片的函数
// 处理多选
// if (imgs.length > length) {
// imgs = imgs.slice(0, length);
// }
this . fileImg ( imgs , 0 , success , progress , type ) ;
// #endif
// #ifdef APP
console . log ( "imgs" , imgs ) ;
// 将新添加的图片添加到imgs_arr中
uni . compressImage ( {
src : imgs [ 0 ] ,
quality : 60 , // 仅对jpg有效
success : ( ress ) => {
this . fileImg ( [ ress . tempFilePath ] , 0 , success , progress , type ) ;
} ,
fail : ( err ) => {
$ . hideLoading ( "图片上传中..." ) ;
} ,
complete : ( msg ) => { } ,
} ) ;
// #endif
} ,
complete : ( err ) => { } ,
} ) ;
}
fileImg ( imgs , index , success , progress , type ) {
const _this = this ;
let newConfig = this . _deepCopy ( this . _merge ( this . config , { } ) ) ;
let lastConfig = { } ;
if ( this . reqInterceptors && typeof this . reqInterceptors === "function" ) {
let reqInterceptors = this . reqInterceptors ( newConfig ) ;
if ( ! reqInterceptors && process . env . NODE _ENV === "development" ) {
console . log ( "请求被拦截,此消息仅在开发环境显示。" ) ;
return false ;
} else if (
Object . prototype . toString . call ( reqInterceptors ) === "[object Promise]"
) {
return reqInterceptors ;
}
lastConfig = this . _deepCopy ( reqInterceptors ) ;
} else {
lastConfig = this . _deepCopy ( newConfig ) ;
}
let fullUrl = this . _formatUrl ( lastConfig . baseUrl , $ . imgUrl ) ;
if ( type == 2 ) {
fullUrl = this . _formatUrl ( lastConfig . baseUrl , $ . imgUserIdUrl ) ;
}
let header = {
token : $ . getData ( "token" ) ,
} ;
// 如果数组长度大于下标,说明没有上传完
if ( imgs . length > index ) {
var src = imgs [ index ] ;
return new Promise ( ( resolve , reject ) => {
const UploadTask = uni . uploadFile ( {
url : fullUrl ,
filePath : src ,
header : header ,
name : $ . fileImgKey ,
formData : { } ,
async complete ( response ) {
let res = response ;
if (
_this . resInterceptors &&
typeof _this . resInterceptors === "function"
) {
let resInterceptors = _this . resInterceptors ( res ) ;
// console.log('resInterceptors',resInterceptors)
let datasJSON = JSON . parse ( resInterceptors . data ) ;
if ( datasJSON . code == 1101 ) {
}
if ( ! resInterceptors && resInterceptors != "" ) {
reject ( "返回值已被您拦截!" ) ;
return ;
} else if (
Object . prototype . toString . call ( resInterceptors ) ===
"[object Promise]"
) {
try {
let promiseRes = await resInterceptors ;
resolve ( promiseRes ) ;
} catch ( error ) {
reject ( error ) ;
}
} else {
res = resInterceptors ;
}
}
success ( JSON . parse ( res . data ) ) ;
_this . fileImg ( imgs , index + 1 , progress ) ;
} ,
} ) ;
// 监听上传进度
if ( progress ) {
UploadTask . onProgressUpdate ( ( res ) => {
progress ( res . progress ) ;
} ) ;
}
} ) ;
// #ifdef H5
// 压缩
// lrz(src, {
// quality: 0.7,
// }).then((rst) => { // fieldName 为 formData 中多媒体的字段名
} ,
} ) ;
} ) ;
}
// })
// #endif
// #ifdef APP-PLUS
// #endif
} else {
$ . hideLoading ( ) ;
}
}
addFile ( file , success , progress ) {
const _this = this ;
let newConfig = this . _deepCopy ( this . _merge ( this . config , { } ) ) ;
let lastConfig = { } ;
if ( this . reqInterceptors && typeof this . reqInterceptors === "function" ) {
let reqInterceptors = this . reqInterceptors ( newConfig ) ;
if ( ! reqInterceptors && process . env . NODE _ENV === "development" ) {
console . log ( "请求被拦截,此消息仅在开发环境显示。" ) ;
return false ;
} else if (
Object . prototype . toString . call ( reqInterceptors ) === "[object Promise]"
) {
return reqInterceptors ;
}
lastConfig = this . _deepCopy ( reqInterceptors ) ;
} else {
lastConfig = this . _deepCopy ( newConfig ) ;
}
let fullUrl = this . _formatUrl ( lastConfig . baseUrl , $ . imgUrl ) ;
let header = {
// 'content-Type':'multipart/form-data'
} ;
return new Promise ( ( resolve , reject ) => {
const UploadTask = uni . uploadFile ( {
url : fullUrl ,
filePath : file [ 0 ] . path ,
header : header ,
name : $ . fileImgKey ,
formData : { } ,
async complete ( response ) {
let res = response ;
if (
_this . resInterceptors &&
typeof _this . resInterceptors === "function"
) {
let resInterceptors = _this . resInterceptors ( res ) ;
if ( ! resInterceptors && resInterceptors != "" ) {
reject ( "返回值已被您拦截!" ) ;
return ;
} else if (
Object . prototype . toString . call ( resInterceptors ) ===
"[object Promise]"
) {
try {
let promiseRes = await resInterceptors ;
resolve ( promiseRes ) ;
} catch ( error ) {
reject ( error ) ;
}
} else {
res = resInterceptors ;
}
}
success ( JSON . parse ( res . data ) ) ;
} ,
} ) ;
// 监听上传进度
if ( progress ) {
UploadTask . onProgressUpdate ( ( res ) => {
progress ( res . progress ) ;
} ) ;
}
} ) ;
}
// 上传视频
addVideo ( url , success , progress ) {
// 获取本地视频的路径
uni . chooseVideo ( {
sourceType : [ "album" , "camera" ] , // 选择方式
success : ( res ) => {
if ( res . size > $ . videoSize ) {
let size = parseInt ( $ . videoSize / 1024000 ) ;
$ . toast ( "上传视频过大,大小请不要超过" + size + "M" ) ;
} else {
// 显示上传动画
$ . showLoading ( "视频上传中..." ) ;
// 调用上传视频的函数
this . fileVideo ( res . tempFilePath , url , success , progress ) ;
}
} ,
fail : ( res ) => {
console . log ( JSON . stringify ( res ) ) ;
} ,
} ) ;
}
fileVideo ( src , url , success , progress ) {
const _this = this ;
let newConfig = this . _deepCopy ( this . _merge ( this . config , { } ) ) ;
let lastConfig = { } ;
if ( this . reqInterceptors && typeof this . reqInterceptors === "function" ) {
let reqInterceptors = this . reqInterceptors ( newConfig ) ;
if ( ! reqInterceptors && process . env . NODE _ENV === "development" ) {
console . log ( "请求被拦截,此消息仅在开发环境显示。" ) ;
return false ;
} else if (
Object . prototype . toString . call ( reqInterceptors ) === "[object Promise]"
) {
return reqInterceptors ;
}
lastConfig = this . _deepCopy ( reqInterceptors ) ;
} else {
lastConfig = this . _deepCopy ( newConfig ) ;
}
let fullUrl = this . _formatUrl ( lastConfig . baseUrl , $ . imgUrl ) ;
//上传视频
return new Promise ( ( resolve , reject ) => {
const UploadTask = uni . uploadFile ( {
url : fullUrl ,
filePath : src ,
name : $ . fileVideoKey ,
async complete ( response ) {
let res = response ;
if (
_this . resInterceptors &&
typeof _this . resInterceptors === "function"
) {
let resInterceptors = _this . resInterceptors ( res ) ;
// console.log('resInterceptors',resInterceptors)
if ( ! resInterceptors && resInterceptors != "" ) {
reject ( "返回值已被您拦截!" ) ;
return ;
} else if (
Object . prototype . toString . call ( resInterceptors ) ===
"[object Promise]"
) {
try {
let promiseRes = await resInterceptors ;
resolve ( promiseRes ) ;
} catch ( error ) {
reject ( error ) ;
}
} else {
res = resInterceptors ;
}
}
success ( JSON . parse ( res . data ) ) ;
$ . hideLoading ( ) ;
} ,
success : ( res ) => {
success ( JSON . parse ( res . data ) ) ;
// 关闭上传动画
} ,
fail : ( e ) => {
// 关闭上传动画
$ . hideLoading ( ) ;
$ . toast ( "上传超时!" ) ;
} ,
} ) ;
// 监听上传进度
if ( progress ) {
UploadTask . onProgressUpdate ( ( res ) => {
progress ( res . progress ) ;
} ) ;
}
} ) ;
}
// 上传图片
addImg ( length = 1 , success , progress , type = 1 ) {
// 获取本地图片的路径
uni . chooseImage ( {
count : length ,
// original原图compressed压缩图
sizeType : [ "compressed" ] , // 可以指定是原图还是压缩图,默认二者都有
// camera相机album相册
sourceType : [ "album" , "camera" ] , // 可以指定来源是相册还是相机,默认二者都有
success : ( res ) => {
// 显示上传动画
$ . showLoading ( "图片上传中..." ) ;
var imgs ;
imgs = res . tempFilePaths ;
// #ifdef H5
// 调用上传图片的函数
// 处理多选
// if (imgs.length > length) {
// imgs = imgs.slice(0, length);
// }
this . fileImg ( imgs , 0 , success , progress , type ) ;
// #endif
// #ifdef APP
console . log ( "imgs" , imgs ) ;
// 将新添加的图片添加到imgs_arr中
uni . compressImage ( {
src : imgs [ 0 ] ,
quality : 60 , // 仅对jpg有效
success : ( ress ) => {
this . fileImg ( [ ress . tempFilePath ] , 0 , success , progress , type ) ;
} ,
fail : ( err ) => {
$ . hideLoading ( "图片上传中..." ) ;
} ,
complete : ( msg ) => { } ,
} ) ;
// #endif
} ,
complete : ( err ) => { } ,
} ) ;
}
fileImg ( imgs , index , success , progress , type ) {
const _this = this ;
let newConfig = this . _deepCopy ( this . _merge ( this . config , { } ) ) ;
let lastConfig = { } ;
if ( this . reqInterceptors && typeof this . reqInterceptors === "function" ) {
let reqInterceptors = this . reqInterceptors ( newConfig ) ;
if ( ! reqInterceptors && process . env . NODE _ENV === "development" ) {
console . log ( "请求被拦截,此消息仅在开发环境显示。" ) ;
return false ;
} else if (
Object . prototype . toString . call ( reqInterceptors ) === "[object Promise]"
) {
return reqInterceptors ;
}
lastConfig = this . _deepCopy ( reqInterceptors ) ;
} else {
lastConfig = this . _deepCopy ( newConfig ) ;
}
let fullUrl = this . _formatUrl ( lastConfig . baseUrl , $ . imgUrl ) ;
if ( type == 2 ) {
fullUrl = this . _formatUrl ( lastConfig . baseUrl , $ . imgUserIdUrl ) ;
}
let header = {
token : $ . getData ( "token" ) ,
} ;
// 如果数组长度大于下标,说明没有上传完
if ( imgs . length > index ) {
var src = imgs [ index ] ;
return new Promise ( ( resolve , reject ) => {
const UploadTask = uni . uploadFile ( {
url : fullUrl ,
filePath : src ,
header : header ,
name : $ . fileImgKey ,
formData : { } ,
async complete ( response ) {
let res = response ;
if (
_this . resInterceptors &&
typeof _this . resInterceptors === "function"
) {
let resInterceptors = _this . resInterceptors ( res ) ;
// console.log('resInterceptors',resInterceptors)
let datasJSON = JSON . parse ( resInterceptors . data ) ;
if ( datasJSON . code == 1101 ) { }
if ( ! resInterceptors && resInterceptors != "" ) {
reject ( "返回值已被您拦截!" ) ;
return ;
} else if (
Object . prototype . toString . call ( resInterceptors ) ===
"[object Promise]"
) {
try {
let promiseRes = await resInterceptors ;
resolve ( promiseRes ) ;
} catch ( error ) {
reject ( error ) ;
}
} else {
res = resInterceptors ;
}
}
success ( JSON . parse ( res . data ) ) ;
_this . fileImg ( imgs , index + 1 , progress ) ;
} ,
} ) ;
// 监听上传进度
if ( progress ) {
UploadTask . onProgressUpdate ( ( res ) => {
progress ( res . progress ) ;
} ) ;
}
} ) ;
// #ifdef H5
// 压缩
// lrz(src, {
// quality: 0.7,
// }).then((rst) => { // fieldName 为 formData 中多媒体的字段名
_formatUrl ( baseUrl , url ) {
if ( ! baseUrl ) return url ;
let formatUrl = "" ;
const baseUrlEndsWithSlash = baseUrl . endsWith ( "/" ) ;
const urlStartsWithSlash = url . startsWith ( "/" ) ;
if ( baseUrlEndsWithSlash && urlStartsWithSlash ) {
formatUrl = baseUrl + url . substring ( 1 ) ;
} else if ( baseUrlEndsWithSlash || urlStartsWithSlash ) {
formatUrl = baseUrl + url ;
} else {
formatUrl = baseUrl + "/" + url ;
}
return formatUrl ;
}
_merge ( oldConfig , newConfig ) {
let mergeConfig = this . _deepCopy ( oldConfig ) ;
if ( ! newConfig || ! Object . keys ( newConfig ) . length ) return mergeConfig ;
for ( let key in newConfig ) {
if ( key !== "header" ) {
mergeConfig [ key ] = newConfig [ key ] ;
} else {
if (
Object . prototype . toString . call ( newConfig [ key ] ) === "[object Object]"
) {
for ( let headerKey in newConfig [ key ] ) {
mergeConfig [ key ] [ headerKey ] = newConfig [ key ] [ headerKey ] ;
}
}
}
}
return mergeConfig ;
}
_deepCopy ( obj ) {
let result = Array . isArray ( obj ) ? [ ] : { } ;
for ( let key in obj ) {
if ( obj . hasOwnProperty ( key ) ) {
if ( typeof obj [ key ] === "object" ) {
result [ key ] = this . _deepCopy ( obj [ key ] ) ;
} else {
result [ key ] = obj [ key ] ;
}
}
}
return result ;
}
// })
// #endif
// #ifdef APP-PLUS
// #endif
} else {
$ . hideLoading ( ) ;
}
}
// 上传视频
addVideo ( url , success , progress ) {
// 获取本地视频的路径
uni . chooseVideo ( {
sourceType : [ "album" , "camera" ] , // 选择方式
success : ( res ) => {
if ( res . size > $ . videoSize ) {
let size = parseInt ( $ . videoSize / 1024000 ) ;
$ . toast ( "上传视频过大,大小请不要超过" + size + "M" ) ;
} else {
// 显示上传动画
$ . showLoading ( "视频上传中..." ) ;
// 调用上传视频的函数
this . fileVideo ( res . tempFilePath , url , success , progress ) ;
}
} ,
fail : ( res ) => {
console . log ( JSON . stringify ( res ) ) ;
} ,
} ) ;
}
fileVideo ( src , url , success , progress ) {
const _this = this ;
let newConfig = this . _deepCopy ( this . _merge ( this . config , { } ) ) ;
let lastConfig = { } ;
if ( this . reqInterceptors && typeof this . reqInterceptors === "function" ) {
let reqInterceptors = this . reqInterceptors ( newConfig ) ;
if ( ! reqInterceptors && process . env . NODE _ENV === "development" ) {
console . log ( "请求被拦截,此消息仅在开发环境显示。" ) ;
return false ;
} else if (
Object . prototype . toString . call ( reqInterceptors ) === "[object Promise]"
) {
return reqInterceptors ;
}
lastConfig = this . _deepCopy ( reqInterceptors ) ;
} else {
lastConfig = this . _deepCopy ( newConfig ) ;
}
let fullUrl = this . _formatUrl ( lastConfig . baseUrl , $ . imgUrl ) ;
//上传视频
return new Promise ( ( resolve , reject ) => {
const UploadTask = uni . uploadFile ( {
url : fullUrl ,
filePath : src ,
name : $ . fileVideoKey ,
async complete ( response ) {
let res = response ;
if (
_this . resInterceptors &&
typeof _this . resInterceptors === "function"
) {
let resInterceptors = _this . resInterceptors ( res ) ;
// console.log('resInterceptors',resInterceptors)
if ( ! resInterceptors && resInterceptors != "" ) {
reject ( "返回值已被您拦截!" ) ;
return ;
} else if (
Object . prototype . toString . call ( resInterceptors ) ===
"[object Promise]"
) {
try {
let promiseRes = await resInterceptors ;
resolve ( promiseRes ) ;
} catch ( error ) {
reject ( error ) ;
}
} else {
res = resInterceptors ;
}
}
success ( JSON . parse ( res . data ) ) ;
$ . hideLoading ( ) ;
} ,
success : ( res ) => {
success ( JSON . parse ( res . data ) ) ;
// 关闭上传动画
} ,
fail : ( e ) => {
// 关闭上传动画
$ . hideLoading ( ) ;
$ . toast ( "上传超时!" ) ;
} ,
} ) ;
// 监听上传进度
if ( progress ) {
UploadTask . onProgressUpdate ( ( res ) => {
progress ( res . progress ) ;
} ) ;
}
} ) ;
}
_formatUrl ( baseUrl , url ) {
if ( ! baseUrl ) return url ;
let formatUrl = "" ;
const baseUrlEndsWithSlash = baseUrl . endsWith ( "/" ) ;
const urlStartsWithSlash = url . startsWith ( "/" ) ;
if ( baseUrlEndsWithSlash && urlStartsWithSlash ) {
formatUrl = baseUrl + url . substring ( 1 ) ;
} else if ( baseUrlEndsWithSlash || urlStartsWithSlash ) {
formatUrl = baseUrl + url ;
} else {
formatUrl = baseUrl + "/" + url ;
}
return formatUrl ;
}
_merge ( oldConfig , newConfig ) {
let mergeConfig = this . _deepCopy ( oldConfig ) ;
if ( ! newConfig || ! Object . keys ( newConfig ) . length ) return mergeConfig ;
for ( let key in newConfig ) {
if ( key !== "header" ) {
mergeConfig [ key ] = newConfig [ key ] ;
} else {
if (
Object . prototype . toString . call ( newConfig [ key ] ) === "[object Object]"
) {
for ( let headerKey in newConfig [ key ] ) {
mergeConfig [ key ] [ headerKey ] = newConfig [ key ] [ headerKey ] ;
}
}
}
}
return mergeConfig ;
}
_deepCopy ( obj ) {
let result = Array . isArray ( obj ) ? [ ] : { } ;
for ( let key in obj ) {
if ( obj . hasOwnProperty ( key ) ) {
if ( typeof obj [ key ] === "object" ) {
result [ key ] = this . _deepCopy ( obj [ key ] ) ;
} else {
result [ key ] = obj [ key ] ;
}
}
}
return result ;
}
}
if ( ! global . $request ) {
global . $request = new Request ( ) ;
global . $request = new Request ( ) ;
}
export default global . $request ;