edu/uniapp/src/utils/configUtils.ts

98 lines
2.9 KiB
TypeScript
Raw Normal View History

/**
*
* URL等
*/
import { getAliyunImageUrl } from './imageUtils'
import { getAliyunUrl } from '@/api/app'
function getDefaultStorageConfig() {
return {
aliyunBaseUrl: ''
}
}
async function fetchAndCacheStorageConfig() {
const configResponse = await getAliyunUrl()
// 兼容两种返回:
// 1) 拦截器已解包:{ aliyunUrl: '...' }
// 2) 未解包原始结构:{ code: 1, data: { aliyunUrl: '...' } }
const serverConfig =
configResponse && typeof configResponse === 'object' && 'aliyunUrl' in configResponse
? configResponse
: configResponse?.code === 1
? configResponse.data || {}
: {}
const storageConfig = {
aliyunBaseUrl: (serverConfig as any).aliyunUrl || ''
}
uni.setStorageSync('storageConfig', storageConfig)
return storageConfig
}
/**
*
*
*/
export async function initAppConfig() {
try {
const config = await fetchAndCacheStorageConfig()
console.log('应用配置初始化成功', config)
} catch (error) {
console.error('应用配置初始化失败:', error)
uni.setStorageSync('storageConfig', getDefaultStorageConfig())
}
}
/**
*
*/
export async function ensureStorageConfig() {
const config = uni.getStorageSync('storageConfig') || {}
if (config.aliyunBaseUrl) {
return config
}
try {
return await fetchAndCacheStorageConfig()
} catch (error) {
console.error('确保存储配置失败:', error)
const defaultConfig = getDefaultStorageConfig()
uni.setStorageSync('storageConfig', defaultConfig)
return defaultConfig
}
}
/**
* tabbar图标路径
* @param iconType ('home' | 'user')
* @param isActive
* @returns
*/
export function getTabBarIconPath(iconType: 'home' | 'user', isActive: boolean = false): string {
// 从配置中获取阿里云基础URL
const config = uni.getStorageSync('storageConfig') || {}
const baseUrl = config.aliyunBaseUrl || ''
// 定义本地路径映射
const localPaths = {
home: {
normal: 'static/images/tabbar/home.png',
active: 'static/yubaoming/home_icon_active.png'
},
user: {
normal: 'static/images/tabbar/user.png',
active: 'static/yubaoming/my_icon_active.png'
}
}
// 如果配置了阿里云基础URL则使用阿里云路径
if (baseUrl) {
const imagePath = isActive ? localPaths[iconType].active : localPaths[iconType].normal
return getAliyunImageUrl(imagePath)
}
// 否则返回本地路径
return isActive ? localPaths[iconType].active : localPaths[iconType].normal
}