edu/uniapp/src/utils/imageUtils.ts

73 lines
2.1 KiB
TypeScript
Raw Normal View History

/**
*
*
*/
import request from '@/utils/request'
/**
* URL
* @param imageKey key
* @returns URL
*/
export function getAliyunImageUrl(imageKey: string): string {
// 从配置中获取阿里云基础URL如果配置不存在则返回原路径
const config = uni.getStorageSync('storageConfig') || {}
const baseUrl = config.aliyunBaseUrl || config.baseUrl || ''
if (baseUrl && imageKey) {
// 确保URL格式正确
const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl : baseUrl + '/'
return normalizedBaseUrl + imageKey
}
// 如果没有配置,则返回原始图片路径(本地路径)
return imageKey
}
/**
* API获取图片URL
* @param teacherId ID
* @returns URL
*/
export async function getTeacherQrCodeUrl(teacherId: number): Promise<string> {
try {
const response = await request.get(
{ url: `frontapi/teacher/qrcode?id=${teacherId}` },
{ urlPrefix: '', isTransformResponse: false }
)
if (response && response.code === 1 && response.data) {
return response.data
}
console.error('获取教师二维码URL失败:', response)
return ''
} catch (error) {
console.error('获取教师二维码URL异常:', error)
return ''
}
}
/**
*
* 退
* @param imageUrl URL
* @param localImagePath
* @returns Promise<string> 使
*/
export async function loadImageWithFallback(
imageUrl: string,
localImagePath: string
): Promise<string> {
if (!imageUrl) return localImagePath
return new Promise((resolve) => {
// 尝试加载网络图片
const image = new Image()
image.onload = () => resolve(imageUrl)
image.onerror = () => resolve(localImagePath)
image.src = imageUrl
})
}