提交了吸顶组件
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
import request from '@/api/request'
|
||||
|
||||
|
||||
|
||||
// 获取问题list
|
||||
export const queryHotQuestionApi = (data) => {
|
||||
return request({
|
||||
url: '/traask/traAskchat/queryHotQuestion',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
};
|
||||
+101
-41
@@ -119,51 +119,111 @@ export const queryCurrentUser = (data) => request({
|
||||
const base_url = get_base_url()
|
||||
// 预加载头像
|
||||
// #ifdef APP-PLUS
|
||||
// 更新用户信息中的头像路径
|
||||
const updateUserAvatar = (imagePath) => {
|
||||
const userInfo = getUserInfo()
|
||||
setUserInfo({
|
||||
...userInfo,
|
||||
'imagePath': imagePath
|
||||
})
|
||||
const userInfo = getUserInfo()
|
||||
setUserInfo({
|
||||
...userInfo,
|
||||
'imagePath': imagePath
|
||||
})
|
||||
}
|
||||
|
||||
try {
|
||||
const pathName = res.body.imageAddr
|
||||
const url = base_url + pathName
|
||||
// 生成唯一文件名,避免冲突
|
||||
const filename = pathName.split('/').pop()
|
||||
const localFilePath = '_downloads/' + filename
|
||||
console.log('localFilePath', localFilePath, url);
|
||||
// 先检查是否存在
|
||||
uni.getFileInfo({
|
||||
filePath: localFilePath,
|
||||
success: () => {
|
||||
console.log('头像已存在,无需下载');
|
||||
updateUserAvatar(localFilePath)
|
||||
},
|
||||
fail: () => {
|
||||
console.log('开始下载头像:', url);
|
||||
const dtask = plus.downloader.createDownload(
|
||||
url, {
|
||||
method: 'GET',
|
||||
filename: '_downloads/' + filename
|
||||
},
|
||||
(download, status) => {
|
||||
if (status === 200) {
|
||||
console.log('头像下载成功:', download.filename);
|
||||
updateUserAvatar(download.filename)
|
||||
}
|
||||
}
|
||||
)
|
||||
dtask.start();
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
} catch (error) {
|
||||
console.error('头像预加载过程发生错误:', error);
|
||||
|
||||
// 确保目录存在
|
||||
const ensureDirectoryExists = (dirPath) => {
|
||||
return new Promise((resolve) => {
|
||||
plus.io.requestFileSystem(plus.io.PRIVATE_DOC, (fs) => {
|
||||
fs.root.getDirectory(dirPath, { create: true }, resolve, resolve)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 生成唯一文件名
|
||||
const generateUniqueFilename = (pathName) => {
|
||||
if (!pathName || typeof pathName !== 'string') {
|
||||
throw new Error('无效的头像路径');
|
||||
}
|
||||
|
||||
// 直接使用原始文件名(带扩展名)
|
||||
const filename = pathName.split('/').pop();
|
||||
|
||||
if (!filename) {
|
||||
throw new Error('无法从路径中提取文件名');
|
||||
}
|
||||
|
||||
// 确保文件扩展名为.png (可选,根据实际需求)
|
||||
const ext = filename.split('.').pop().toLowerCase();
|
||||
if (ext === 'png' || ext === 'jpg' || ext === 'jpeg' || ext === 'webp') {
|
||||
return filename;
|
||||
}
|
||||
|
||||
// 如果没有有效扩展名,添加.png
|
||||
return `${filename}.png`;
|
||||
};
|
||||
|
||||
// 下载并保存头像
|
||||
const downloadAndSaveAvatar = async (fileUrl, localFilePath) => {
|
||||
try {
|
||||
await ensureDirectoryExists('avatar')
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
console.log('开始下载头像:', fileUrl)
|
||||
const dtask = plus.downloader.createDownload(fileUrl, {
|
||||
filename: localFilePath
|
||||
}, (d, status) => {
|
||||
if (status === 200) {
|
||||
console.log("保存路径:", d.filename)
|
||||
resolve(d.filename)
|
||||
} else {
|
||||
console.error("文件下载失败:", status)
|
||||
reject(new Error(`下载失败,状态码: ${status}`))
|
||||
}
|
||||
})
|
||||
|
||||
dtask.start()
|
||||
})
|
||||
} catch (error) {
|
||||
console.error('创建目录失败:', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
// 检查文件是否存在
|
||||
const checkFileExists = (filePath) => {
|
||||
return new Promise((resolve) => {
|
||||
uni.getFileInfo({
|
||||
filePath,
|
||||
success: () => resolve(true),
|
||||
fail: () => resolve(false)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 主逻辑
|
||||
(async () => {
|
||||
try {
|
||||
const pathName = res.body.imageAddr
|
||||
const fileUrl = base_url + pathName
|
||||
|
||||
// 生成保存路径
|
||||
const filename = generateUniqueFilename(pathName)
|
||||
const localFilePath = '_doc/avatar/' + filename
|
||||
|
||||
// 检查文件是否存在
|
||||
const exists = await checkFileExists(localFilePath)
|
||||
|
||||
if (exists) {
|
||||
console.log('头像已存在,无需下载')
|
||||
updateUserAvatar(localFilePath)
|
||||
} else {
|
||||
const savedPath = await downloadAndSaveAvatar(fileUrl, localFilePath)
|
||||
updateUserAvatar(savedPath)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('头像预加载过程发生错误:', error)
|
||||
}
|
||||
})()
|
||||
// #endif
|
||||
|
||||
return res.body
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user