Files
im-uniapp/util/oaRequest.js
砂糖 307b46b213 feat: 新增客户管理、项目进度和财务中心功能模块
新增客户管理、项目进度和财务中心相关页面及API接口
添加项目明细页面和启动图资源
重构请求基础URL和更新逻辑
引入uni-badge和uni-list组件
优化工作台首页功能入口布局
更新版本号至5.0.0并修改启动图配置
2025-11-06 16:56:35 +08:00

110 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { getToken } from './auth'
import errorCode from './errorCode'
import { toast, tansParams } from './common'
import { getSMSCodeFromOa, loginOaByPhone } from '../api/oa/login'
let timeout = 10000
const baseUrl = 'http://49.232.154.205:18081'
// const baseUrl = 'http://localhost:8080'
// 显示loading提示
const showLoading = (title = '正在登录OA系统...') => {
uni.showLoading({
title: title,
mask: true
})
}
// 隐藏loading提示
const hideLoading = () => {
uni.hideLoading()
}
const request = config => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
// 合并 header优先 config.header
config.header = Object.assign({
'Content-Type': 'application/json;charset=UTF-8',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Content-Language': 'zh_CN',
'User-Agent': uni.getStorageSync('userAgent') || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0'
}, config.header || {})
if (getToken() && !isToken) {
config.header['Authorization'] = 'Bearer ' + getToken()
}
// get请求映射params参数
if (config.params) {
let url = config.url + '?' + tansParams(config.params)
url = url.slice(0, -1)
config.url = url
}
// 打印请求体
console.log('[oaRequest] 请求体:', config)
return new Promise((resolve, reject) => {
uni.request({
method: config.method || 'get',
timeout: config.timeout || timeout,
url: config.baseUrl || baseUrl + config.url,
data: config.data,
header: config.header,
dataType: 'json'
}).then(async response => {
let [error, res] = response
// 打印返回值
console.log('[oaRequest] 返回值:', res)
if (error) {
console.log(error)
toast('后端接口连接异常')
reject('后端接口连接异常')
return
}
const code = res.data.code || 200
const msg = errorCode[code] || res.data.msg || errorCode['default']
if (code === 401) {
// 显示loading提示
showLoading()
// 从store中获取phoneNumber并依次调用getSMSCodeFromOa和loginOaByPhone
const store = require('@/store').default
const phoneNumber = store.getters.storeSelfInfo?.phoneNumber
if (phoneNumber) {
try {
await getSMSCodeFromOa(phoneNumber)
await loginOaByPhone(phoneNumber)
hideLoading()
} catch (e) {
hideLoading()
console.log('OA自动登录失败', e)
toast('OA自动登录失败')
}
} else {
hideLoading()
toast('无法获取手机号OA自动登录失败')
}
reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
toast(msg)
reject('500')
} else if (code !== 200) {
toast(msg)
reject(code)
}
resolve(res.data)
})
.catch(error => {
let { message } = error
if (message === 'Network Error') {
message = '后端接口连接异常'
} else if (message.includes('timeout')) {
message = '系统接口请求超时'
} else if (message.includes('Request failed with status code')) {
message = '系统接口' + message.substr(message.length - 3) + '异常'
}
toast(message)
reject(error)
})
})
}
export default request