作者 RuoYi

修复头像上传成功二次打开无法改变裁剪框大小和位置问题

1 <template> 1 <template>
2 <div> 2 <div>
3 <img v-bind:src="options.img" @click="editCropper()" title="点击上传头像" class="img-circle img-lg" /> 3 <img v-bind:src="options.img" @click="editCropper()" title="点击上传头像" class="img-circle img-lg" />
4 - <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body> 4 + <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened">
5 <el-row> 5 <el-row>
6 <el-col :xs="24" :md="12" :style="{height: '350px'}"> 6 <el-col :xs="24" :md="12" :style="{height: '350px'}">
7 <vue-cropper 7 <vue-cropper
@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
13 :autoCropHeight="options.autoCropHeight" 13 :autoCropHeight="options.autoCropHeight"
14 :fixedBox="options.fixedBox" 14 :fixedBox="options.fixedBox"
15 @realTime="realTime" 15 @realTime="realTime"
  16 + v-if="visible"
16 /> 17 />
17 </el-col> 18 </el-col>
18 <el-col :xs="24" :md="12" :style="{height: '350px'}"> 19 <el-col :xs="24" :md="12" :style="{height: '350px'}">
@@ -67,6 +68,8 @@ export default { @@ -67,6 +68,8 @@ export default {
67 return { 68 return {
68 // 是否显示弹出层 69 // 是否显示弹出层
69 open: false, 70 open: false,
  71 + // 是否显示cropper
  72 + visible: false,
70 // 弹出层标题 73 // 弹出层标题
71 title: "修改头像", 74 title: "修改头像",
72 options: { 75 options: {
@@ -84,6 +87,10 @@ export default { @@ -84,6 +87,10 @@ export default {
84 editCropper() { 87 editCropper() {
85 this.open = true; 88 this.open = true;
86 }, 89 },
  90 + // 打开弹出层结束时的回调
  91 + modalOpened() {
  92 + this.visible = true;
  93 + },
87 // 覆盖默认的上传行为 94 // 覆盖默认的上传行为
88 requestUpload() { 95 requestUpload() {
89 }, 96 },
@@ -121,9 +128,10 @@ export default { @@ -121,9 +128,10 @@ export default {
121 if (response.code === 200) { 128 if (response.code === 200) {
122 this.open = false; 129 this.open = false;
123 this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl; 130 this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;
  131 + store.commit('SET_AVATAR', this.options.img);
124 this.msgSuccess("修改成功"); 132 this.msgSuccess("修改成功");
125 } 133 }
126 - this.$refs.cropper.clearCrop(); 134 + this.visible = false;
127 }); 135 });
128 }); 136 });
129 }, 137 },