2025-09-09 19:37:24 +08:00

62 lines
1.9 KiB
TypeScript

import { access, defineRuntimeConfig } from '@fesjs/fes'
import { isPlainObject } from 'lodash-es'
import PageLoading from '@/components/pageLoading.vue'
import UserCenter from '@/components/userCenter.vue'
export default defineRuntimeConfig({
beforeRender: {
loading: <PageLoading />,
action() {
const { setRole } = access
return new Promise((resolve) => {
setTimeout(() => {
setRole('admin')
// 初始化应用的全局状态,可以通过 useModel('@@initialState') 获取,具体用法看@/components/UserCenter 文件
resolve({
userName: '李雷',
})
}, 1000)
})
},
},
request: {
baseURL: '',
timeout: 10000, // 默认 10s
method: 'POST', // 默认 post
mergeRequest: false, // 是否合并请求
responseType: null, // 可选 'json' | 'text' | 'blob' | 'arrayBuffer' | 'formData',默认根据 content-type 处理
credentials: 'include', // 默认 include, 'include' | 'same-origin' | 'omit'
headers: {}, // 传给服务器的 header
cacheData: false, // 是否缓存
transformData(data, response) {
// 处理响应内容异常
if (isPlainObject(data)) {
if (data.code === '10000') {
return Promise.reject(data)
}
return data?.result ? data.result : data
}
return data
},
// http 异常,和插件异常
errorHandler(error) {
// 处理业务异常,例如上述 transformData 抛出的异常
if (error.code) {
console.log(error.msg)
}
else if (error.response) {
// 请求成功发出且服务器也响应了状态码,但状态代码超出了 2xx 的范围
console.log(`服务异常:${error.response.status}`)
}
else {
// 请求异常
console.log(error.msg || error.message || `请求失败`)
}
},
},
layout: {
renderCustom: () => <UserCenter />,
},
})