You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.7 KiB
82 lines
1.7 KiB
interface IGlobalParams { |
|
gUrl: string |
|
version: string |
|
} |
|
|
|
export const request = function ( |
|
{ gUrl, version }: IGlobalParams, |
|
{ |
|
url, |
|
method, |
|
data, |
|
header, |
|
showMsg = true, |
|
loading = false, |
|
loadingText = '加载中...', |
|
isJSON = false, |
|
...options |
|
}: IAgaxParams, |
|
): Promise<any> { |
|
return new Promise((resolve, reject) => { |
|
if (loading) { |
|
wx.showLoading({ |
|
title: loadingText, |
|
mask: true, |
|
}) |
|
} |
|
wx.request({ |
|
header: { |
|
loginState: getApp().globalData.loginState, |
|
...header, |
|
}, |
|
url: gUrl + url, |
|
method, |
|
data: { |
|
loginState: getApp().globalData.loginState, |
|
...(data as object), |
|
}, |
|
...options, |
|
success(res: any) { |
|
const { code, data } = res.data |
|
if (isJSON) { |
|
resolve(res.data) |
|
} else if (code === 0) { |
|
resolve(data) |
|
} else if (showMsg) { |
|
const msg = errPicker(res.data) |
|
if (loading) { |
|
setTimeout(() => { |
|
wx.showToast({ |
|
title: msg, |
|
icon: 'none', |
|
}) |
|
}, 30) |
|
} else { |
|
wx.showToast({ |
|
title: msg, |
|
icon: 'none', |
|
}) |
|
reject(res) |
|
} |
|
} else { |
|
reject(res) |
|
} |
|
}, |
|
fail(err) { |
|
reject(err) |
|
}, |
|
complete() { |
|
if (loading) { |
|
wx.hideLoading() |
|
} |
|
}, |
|
}) |
|
}) |
|
} |
|
|
|
function errPicker(err) { |
|
if (typeof err === 'string') { |
|
return err |
|
} |
|
return err.data || err.msg || err.errMsg || (err.detail && err.detail.errMsg) || '未知错误' |
|
}
|
|
|