修复小屏幕上修改头像界面布局错位的问题

This commit is contained in:
刘元博 2022-10-20 19:18:10 +08:00
parent bf83fe568b
commit 9dcddc7876
2 changed files with 459 additions and 445 deletions

View File

@ -250,9 +250,10 @@
} }
.avatar-upload-preview { .avatar-upload-preview {
position: absolute; position: relative;
top: 50%; top: 50%;
transform: translate(50%, -50%); left: 50%;
transform: translate(-50%, -50%);
width: 200px; width: 200px;
height: 200px; height: 200px;
border-radius: 50%; border-radius: 50%;

View File

@ -24,7 +24,7 @@
</el-row> </el-row>
<br /> <br />
<el-row> <el-row>
<el-col :lg="2" :md="2"> <el-col :lg="2" :sm="2" :xs="2">
<el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload"> <el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload">
<el-button size="small"> <el-button size="small">
选择 选择
@ -32,19 +32,19 @@
</el-button> </el-button>
</el-upload> </el-upload>
</el-col> </el-col>
<el-col :lg="{span: 1, offset: 2}" :md="2"> <el-col :lg="{span: 1, offset: 2}" :sm="2" :xs="2">
<el-button icon="el-icon-plus" size="small" @click="changeScale(1)"></el-button> <el-button icon="el-icon-plus" size="small" @click="changeScale(1)"></el-button>
</el-col> </el-col>
<el-col :lg="{span: 1, offset: 1}" :md="2"> <el-col :lg="{span: 1, offset: 1}" :sm="2" :xs="2">
<el-button icon="el-icon-minus" size="small" @click="changeScale(-1)"></el-button> <el-button icon="el-icon-minus" size="small" @click="changeScale(-1)"></el-button>
</el-col> </el-col>
<el-col :lg="{span: 1, offset: 1}" :md="2"> <el-col :lg="{span: 1, offset: 1}" :sm="2" :xs="2">
<el-button icon="el-icon-refresh-left" size="small" @click="rotateLeft()"></el-button> <el-button icon="el-icon-refresh-left" size="small" @click="rotateLeft()"></el-button>
</el-col> </el-col>
<el-col :lg="{span: 1, offset: 1}" :md="2"> <el-col :lg="{span: 1, offset: 1}" :sm="2" :xs="2">
<el-button icon="el-icon-refresh-right" size="small" @click="rotateRight()"></el-button> <el-button icon="el-icon-refresh-right" size="small" @click="rotateRight()"></el-button>
</el-col> </el-col>
<el-col :lg="{span: 2, offset: 6}" :md="2"> <el-col :lg="{span: 2, offset: 6}" :sm="2" :xs="2">
<el-button type="primary" size="small" @click="uploadImg()"> </el-button> <el-button type="primary" size="small" @click="uploadImg()"> </el-button>
</el-col> </el-col>
</el-row> </el-row>
@ -56,6 +56,7 @@
import store from "@/store"; import store from "@/store";
import { VueCropper } from "vue-cropper"; import { VueCropper } from "vue-cropper";
import { uploadAvatar } from "@/api/system/user"; import { uploadAvatar } from "@/api/system/user";
import { debounce } from '@/utils'
export default { export default {
components: { VueCropper }, components: { VueCropper },
@ -79,7 +80,8 @@ export default {
autoCropHeight: 200, // autoCropHeight: 200, //
fixedBox: true // fixedBox: true //
}, },
previews: {} previews: {},
resizeHandler: null
}; };
}, },
methods: { methods: {
@ -90,6 +92,16 @@ export default {
// //
modalOpened() { modalOpened() {
this.visible = true; this.visible = true;
if (!this.resizeHandler) {
this.resizeHandler = debounce(() => {
this.refresh()
}, 100)
}
window.addEventListener("resize", this.resizeHandler)
},
//
refresh() {
this.$refs.cropper.refresh();
}, },
// //
requestUpload() { requestUpload() {
@ -141,6 +153,7 @@ export default {
closeDialog() { closeDialog() {
this.options.img = store.getters.avatar this.options.img = store.getters.avatar
this.visible = false; this.visible = false;
window.removeEventListener("resize", this.resizeHandler)
} }
} }
}; };