fix:前端上传头像名称取值错误以及用户保存个人信息时还使用的是旧的头像数据

pull/822/head
sunjianfeng 2025-09-12 01:05:07 +08:00
parent 7ddbf8712c
commit 9c8abbc341
3 changed files with 33 additions and 5 deletions

View File

@ -20,7 +20,7 @@ export const useUpload = (directory?: string) => {
// 模式一:前端上传 // 模式一:前端上传
if (isClientUpload) { if (isClientUpload) {
// 1.1 生成文件名称 // 1.1 生成文件名称
const fileName = await generateFileName(options.file) const fileName = options.filename
// 1.2 获取文件预签名地址 // 1.2 获取文件预签名地址
const presignedInfo = await FileApi.getFilePresignedUrl(fileName, directory) const presignedInfo = await FileApi.getFilePresignedUrl(fileName, directory)
// 1.3 上传文件(不能使用 ElUpload 的 ajaxUpload 方法的原因:其使用的是 FormData 上传Minio 不支持) // 1.3 上传文件(不能使用 ElUpload 的 ajaxUpload 方法的原因:其使用的是 FormData 上传Minio 不支持)
@ -32,7 +32,7 @@ export const useUpload = (directory?: string) => {
}) })
.then(() => { .then(() => {
// 1.4. 记录文件信息到后端(异步) // 1.4. 记录文件信息到后端(异步)
createFile(presignedInfo, options.file) createFile(presignedInfo, options.file,fileName)
// 通知成功,数据格式保持与后端上传的返回结果一致 // 通知成功,数据格式保持与后端上传的返回结果一致
return { data: presignedInfo.url } return { data: presignedInfo.url }
}) })
@ -64,15 +64,15 @@ export const useUpload = (directory?: string) => {
/** /**
* *
* @param vo * @param vo
* @param name
* @param file * @param file
* @param fileName
*/ */
function createFile(vo: FileApi.FilePresignedUrlRespVO, file: UploadRawFile) { function createFile(vo: FileApi.FilePresignedUrlRespVO, file: UploadRawFile, fileName: string) {
const fileVo = { const fileVo = {
configId: vo.configId, configId: vo.configId,
url: vo.url, url: vo.url,
path: vo.path, path: vo.path,
name: file.name, name: fileName,
type: file.type, type: file.type,
size: file.size size: file.size
} }

View File

@ -78,6 +78,21 @@ const schema = reactive<FormSchema[]>([
} }
]) ])
const formRef = ref<FormExpose>() // Ref const formRef = ref<FormExpose>() // Ref
// userStore
watch(
() => userStore.getUser.avatar,
(newAvatar) => {
if (newAvatar && formRef.value) {
//
const formModel = formRef.value.formModel
if (formModel) {
formModel.avatar = newAvatar
}
}
}
)
const submit = () => { const submit = () => {
const elForm = unref(formRef)?.getElFormRef() const elForm = unref(formRef)?.getElFormRef()
if (!elForm) return if (!elForm) return

View File

@ -49,18 +49,31 @@
<script lang="ts" setup> <script lang="ts" setup>
import { formatDate } from '@/utils/formatTime' import { formatDate } from '@/utils/formatTime'
import UserAvatar from './UserAvatar.vue' import UserAvatar from './UserAvatar.vue'
import { useUserStore } from '@/store/modules/user'
import { getUserProfile, ProfileVO } from '@/api/system/user/profile' import { getUserProfile, ProfileVO } from '@/api/system/user/profile'
defineOptions({ name: 'ProfileUser' }) defineOptions({ name: 'ProfileUser' })
const { t } = useI18n() const { t } = useI18n()
const userStore = useUserStore()
const userInfo = ref({} as ProfileVO) const userInfo = ref({} as ProfileVO)
const getUserInfo = async () => { const getUserInfo = async () => {
const users = await getUserProfile() const users = await getUserProfile()
userInfo.value = users userInfo.value = users
} }
// userStore userInfo
watch(
() => userStore.getUser.avatar,
(newAvatar) => {
if (newAvatar && userInfo.value) {
userInfo.value.avatar = newAvatar
}
}
)
// //
defineExpose({ defineExpose({
refresh: getUserInfo refresh: getUserInfo