diff --git a/ruoyi-ui/src/assets/styles/ruoyi.scss b/ruoyi-ui/src/assets/styles/ruoyi.scss index e3912cec8..4d3cf312f 100644 --- a/ruoyi-ui/src/assets/styles/ruoyi.scss +++ b/ruoyi-ui/src/assets/styles/ruoyi.scss @@ -250,9 +250,10 @@ } .avatar-upload-preview { - position: absolute; + position: relative; top: 50%; - transform: translate(50%, -50%); + left: 50%; + transform: translate(-50%, -50%); width: 200px; height: 200px; border-radius: 50%; diff --git a/ruoyi-ui/src/views/system/user/profile/userAvatar.vue b/ruoyi-ui/src/views/system/user/profile/userAvatar.vue index 835602e83..8d3195b44 100644 --- a/ruoyi-ui/src/views/system/user/profile/userAvatar.vue +++ b/ruoyi-ui/src/views/system/user/profile/userAvatar.vue @@ -24,7 +24,7 @@
- + 选择 @@ -32,19 +32,19 @@ - + - + - + - + - + 提 交 @@ -56,6 +56,7 @@ import store from "@/store"; import { VueCropper } from "vue-cropper"; import { uploadAvatar } from "@/api/system/user"; +import { debounce } from '@/utils' export default { components: { VueCropper }, @@ -79,7 +80,8 @@ export default { autoCropHeight: 200, // 默认生成截图框高度 fixedBox: true // 固定截图框大小 不允许改变 }, - previews: {} + previews: {}, + resizeHandler: null }; }, methods: { @@ -90,6 +92,16 @@ export default { // 打开弹出层结束时的回调 modalOpened() { this.visible = true; + if (!this.resizeHandler) { + this.resizeHandler = debounce(() => { + this.refresh() + }, 100) + } + window.addEventListener("resize", this.resizeHandler) + }, + // 刷新组件 + refresh() { + this.$refs.cropper.refresh(); }, // 覆盖默认的上传行为 requestUpload() { @@ -141,6 +153,7 @@ export default { closeDialog() { this.options.img = store.getters.avatar this.visible = false; + window.removeEventListener("resize", this.resizeHandler) } } }; @@ -169,4 +182,4 @@ export default { line-height: 110px; border-radius: 50%; } - \ No newline at end of file +