diff --git a/yudao-ui-admin-vue3/src/api/system/user/profile.ts b/yudao-ui-admin-vue3/src/api/system/user/profile.ts
index e78424cc4..eb3de0f5f 100644
--- a/yudao-ui-admin-vue3/src/api/system/user/profile.ts
+++ b/yudao-ui-admin-vue3/src/api/system/user/profile.ts
@@ -73,5 +73,5 @@ export const updateUserPwdApi = (oldPassword: string, newPassword: string) => {
 
 // 用户头像上传
 export const uploadAvatarApi = (data) => {
-  return request.upload({ url: '/system/user/profile/update-avatar', data: data })
+  return request.put({ url: '/system/user/profile/update-avatar', data })
 }
diff --git a/yudao-ui-admin-vue3/src/views/Profile/components/UserAvatar.vue b/yudao-ui-admin-vue3/src/views/Profile/components/UserAvatar.vue
index b7a08de3a..2aaa65d3c 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/components/UserAvatar.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/components/UserAvatar.vue
@@ -1,97 +1,10 @@
-<script setup lang="ts">
-import { ref, reactive, watch } from 'vue'
-import 'vue-cropper/dist/index.css'
-import { VueCropper } from 'vue-cropper'
-import { ElRow, ElCol, ElUpload, ElMessage, ElDialog } from 'element-plus'
-import { propTypes } from '@/utils/propTypes'
-import { uploadAvatarApi } from '@/api/system/user/profile'
-const cropper = ref()
-const dialogVisible = ref(false)
-const cropperVisible = ref(false)
-const props = defineProps({
-  img: propTypes.string.def('')
-})
-const options = reactive({
-  dialogTitle: '编辑头像',
-  options: {
-    img: props.img, //裁剪图片的地址
-    autoCrop: true, // 是否默认生成截图框
-    autoCropWidth: 200, // 默认生成截图框宽度
-    autoCropHeight: 200, // 默认生成截图框高度
-    fixedBox: true // 固定截图框大小 不允许改变
-  },
-  previews: {
-    img: '',
-    url: ''
-  }
-})
-/** 编辑头像 */
-const editCropper = () => {
-  dialogVisible.value = true
-}
-// 打开弹出层结束时的回调
-const modalOpened = () => {
-  cropperVisible.value = true
-}
-/** 向左旋转 */
-const rotateLeft = () => {
-  cropper.value.rotateLeft()
-}
-/** 向右旋转 */
-const rotateRight = () => {
-  cropper.value.rotateRight()
-}
-/** 图片缩放 */
-const changeScale = (num: number) => {
-  num = num || 1
-  cropper.value.changeScale(num)
-}
-// 覆盖默认的上传行为
-const requestUpload: any = () => {}
-/** 上传预处理 */
-const beforeUpload = (file: Blob) => {
-  if (file.type.indexOf('image/') == -1) {
-    ElMessage('文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。')
-  } else {
-    const reader = new FileReader()
-    reader.readAsDataURL(file)
-    reader.onload = () => {
-      if (reader.result) {
-        options.options.img = reader.result as string
-      }
-    }
-  }
-}
-/** 上传图片 */
-const uploadImg = () => {
-  cropper.value.getCropBlob((data: any) => {
-    let formData = new FormData()
-    formData.append('avatarfile', data)
-    uploadAvatarApi(formData)
-  })
-}
-/** 实时预览 */
-const realTime = (data: any) => {
-  options.previews = data
-}
-watch(
-  () => props.img,
-  () => {
-    if (props.img) {
-      options.options.img = props.img
-      options.previews.img = props.img
-      options.previews.url = props.img
-    }
-  }
-)
-</script>
 <template>
   <div class="user-info-head" @click="editCropper()">
     <img :src="options.options.img" title="点击上传头像" class="img-circle img-lg" alt="" />
   </div>
   <el-dialog
     v-model="dialogVisible"
-    :title="options.dialogTitle"
+    title="编辑头像"
     width="800px"
     append-to-body
     style="padding: 30px 20px"
@@ -101,6 +14,7 @@ watch(
       <el-col :xs="24" :md="12" style="height: 350px">
         <VueCropper
           ref="cropper"
+          v-if="cropperVisible"
           :img="options.options.img"
           :info="true"
           :autoCrop="options.options.autoCrop"
@@ -108,17 +22,26 @@ watch(
           :autoCropHeight="options.options.autoCropHeight"
           :fixedBox="options.options.fixedBox"
           @real-time="realTime"
-          v-if="cropperVisible"
         />
       </el-col>
       <el-col :xs="24" :md="12" style="height: 350px">
-        <div class="avatar-upload-preview">
-          <img
-            :src="options.previews.url"
-            :style="options.previews.img"
-            style="!max-width: 100%"
-            alt=""
-          />
+        <div
+          class="avatar-upload-preview"
+          :style="{
+            width: options.previews.w + 'px',
+            height: options.previews.h + 'px',
+            overflow: 'hidden',
+            margin: '5px'
+          }"
+        >
+          <div :style="options.previews.div">
+            <img
+              :src="options.previews.url"
+              :style="options.previews.img"
+              style="!max-width: 100%"
+              alt=""
+            />
+          </div>
         </div>
       </el-col>
     </el-row>
@@ -164,6 +87,100 @@ watch(
     </template>
   </el-dialog>
 </template>
+<script setup lang="ts">
+import { ref, reactive, watch } from 'vue'
+import 'vue-cropper/dist/index.css'
+import { VueCropper } from 'vue-cropper'
+import { ElRow, ElCol, ElUpload, ElMessage, ElDialog } from 'element-plus'
+import { propTypes } from '@/utils/propTypes'
+import { uploadAvatarApi } from '@/api/system/user/profile'
+const cropper = ref()
+const dialogVisible = ref(false)
+const cropperVisible = ref(false)
+const props = defineProps({
+  img: propTypes.string.def('')
+})
+const options = reactive({
+  options: {
+    img: props.img, //裁剪图片的地址
+    autoCrop: true, // 是否默认生成截图框
+    autoCropWidth: 200, // 默认生成截图框宽度
+    autoCropHeight: 200, // 默认生成截图框高度
+    fixedBox: true // 固定截图框大小 不允许改变
+  },
+  previews: {
+    img: '',
+    url: '',
+    w: 0,
+    h: 0,
+    div: ''
+  }
+})
+/** 编辑头像 */
+const editCropper = () => {
+  dialogVisible.value = true
+}
+// 打开弹出层结束时的回调
+const modalOpened = () => {
+  cropperVisible.value = true
+}
+/** 向左旋转 */
+const rotateLeft = () => {
+  cropper.value.rotateLeft()
+}
+/** 向右旋转 */
+const rotateRight = () => {
+  cropper.value.rotateRight()
+}
+/** 图片缩放 */
+const changeScale = (num: number) => {
+  num = num || 1
+  cropper.value.changeScale(num)
+}
+// 覆盖默认的上传行为
+const requestUpload: any = () => {}
+/** 上传预处理 */
+const beforeUpload = (file: Blob) => {
+  if (file.type.indexOf('image/') == -1) {
+    ElMessage('文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。')
+  } else {
+    const reader = new FileReader()
+    reader.readAsDataURL(file)
+    reader.onload = () => {
+      if (reader.result) {
+        options.options.img = reader.result as string
+      }
+    }
+  }
+}
+/** 上传图片 */
+const uploadImg = () => {
+  cropper.value.getCropBlob((data: any) => {
+    let formData = new FormData()
+    formData.append('avatarFile', data)
+    uploadAvatarApi(formData).then((res) => {
+      options.options.img = res
+    })
+    dialogVisible.value = false
+    cropperVisible.value = false
+  })
+}
+/** 实时预览 */
+const realTime = (data: any) => {
+  options.previews = data
+}
+watch(
+  () => props.img,
+  () => {
+    if (props.img) {
+      options.options.img = props.img
+      options.previews.img = props.img
+      options.previews.url = props.img
+    }
+  }
+)
+</script>
+
 <style scoped>
 .user-info-head {
   position: relative;