From b38151a0bb0484221ba7b9ad3a1aa773105e1b14 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期二, 06 十二月 2022 11:32:35 +0800
Subject: [PATCH] !260 单元格合并判断cellValue是否相等方法调整 Merge pull request !260 from zendwang/dev
---
ruoyi-ui/src/views/system/user/profile/userAvatar.vue | 96 +++++++++++++++++++++++++++++++++++++-----------
1 files changed, 74 insertions(+), 22 deletions(-)
diff --git a/ruoyi-ui/src/views/system/user/profile/userAvatar.vue b/ruoyi-ui/src/views/system/user/profile/userAvatar.vue
index 3faf560..18b23a4 100644
--- a/ruoyi-ui/src/views/system/user/profile/userAvatar.vue
+++ b/ruoyi-ui/src/views/system/user/profile/userAvatar.vue
@@ -1,7 +1,7 @@
<template>
<div>
- <img v-bind:src="options.img" @click="editCropper()" title="鐐瑰嚮涓婁紶澶村儚" class="img-circle img-lg" />
- <el-dialog :title="title" :visible.sync="open" width="800px">
+ <div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" title="鐐瑰嚮涓婁紶澶村儚" class="img-circle img-lg" /></div>
+ <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog">
<el-row>
<el-col :xs="24" :md="12" :style="{height: '350px'}">
<vue-cropper
@@ -12,7 +12,9 @@
:autoCropWidth="options.autoCropWidth"
:autoCropHeight="options.autoCropHeight"
:fixedBox="options.fixedBox"
+ :outputType="options.outputType"
@realTime="realTime"
+ v-if="visible"
/>
</el-col>
<el-col :xs="24" :md="12" :style="{height: '350px'}">
@@ -23,27 +25,27 @@
</el-row>
<br />
<el-row>
- <el-col :lg="2" :md="2">
+ <el-col :lg="2" :sm="3" :xs="3">
<el-upload action="#" :http-request="requestUpload" :show-file-list="false" :before-upload="beforeUpload">
<el-button size="small">
- 涓婁紶
+ 閫夋嫨
<i class="el-icon-upload el-icon--right"></i>
</el-button>
</el-upload>
</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-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-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-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-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-col>
</el-row>
@@ -55,6 +57,7 @@
import store from "@/store";
import { VueCropper } from "vue-cropper";
import { uploadAvatar } from "@/api/system/user";
+import { debounce } from '@/utils'
export default {
components: { VueCropper },
@@ -67,6 +70,8 @@
return {
// 鏄惁鏄剧ず寮瑰嚭灞�
open: false,
+ // 鏄惁鏄剧ずcropper
+ visible: false,
// 寮瑰嚭灞傛爣棰�
title: "淇敼澶村儚",
options: {
@@ -74,15 +79,32 @@
autoCrop: true, // 鏄惁榛樿鐢熸垚鎴浘妗�
autoCropWidth: 200, // 榛樿鐢熸垚鎴浘妗嗗搴�
autoCropHeight: 200, // 榛樿鐢熸垚鎴浘妗嗛珮搴�
- fixedBox: true // 鍥哄畾鎴浘妗嗗ぇ灏� 涓嶅厑璁告敼鍙�
+ fixedBox: true, // 鍥哄畾鎴浘妗嗗ぇ灏� 涓嶅厑璁告敼鍙�
+ outputType:"png", // 榛樿鐢熸垚鎴浘涓篜NG鏍煎紡
+ filename: ''
},
- previews: {}
+ previews: {},
+ resizeHandler: null
};
},
methods: {
// 缂栬緫澶村儚
editCropper() {
this.open = true;
+ },
+ // 鎵撳紑寮瑰嚭灞傜粨鏉熸椂鐨勫洖璋�
+ modalOpened() {
+ this.visible = true;
+ if (!this.resizeHandler) {
+ this.resizeHandler = debounce(() => {
+ this.refresh()
+ }, 100)
+ }
+ window.addEventListener("resize", this.resizeHandler)
+ },
+ // 鍒锋柊缁勪欢
+ refresh() {
+ this.$refs.cropper.refresh();
},
// 瑕嗙洊榛樿鐨勪笂浼犺涓�
requestUpload() {
@@ -103,12 +125,13 @@
// 涓婁紶棰勫鐞�
beforeUpload(file) {
if (file.type.indexOf("image/") == -1) {
- this.msgError("鏂囦欢鏍煎紡閿欒锛岃涓婁紶鍥剧墖绫诲瀷,濡傦細JPG锛孭NG鍚庣紑鐨勬枃浠躲��");
+ this.$modal.msgError("鏂囦欢鏍煎紡閿欒锛岃涓婁紶鍥剧墖绫诲瀷,濡傦細JPG锛孭NG鍚庣紑鐨勬枃浠躲��");
} else {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
this.options.img = reader.result;
+ this.options.filename = file.name;
};
}
},
@@ -116,23 +139,52 @@
uploadImg() {
this.$refs.cropper.getCropBlob(data => {
let formData = new FormData();
- formData.append("avatarfile", data);
+ console.log(this.options.filename)
+ formData.append("avatarfile", data, this.options.filename);
uploadAvatar(formData).then(response => {
- if (response.code === 200) {
- this.open = false;
- this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;
- this.msgSuccess("淇敼鎴愬姛");
- } else {
- this.msgError(response.msg);
- }
- this.$refs.cropper.clearCrop();
+ this.open = false;
+ this.options.img = response.data.imgUrl;
+ store.commit('SET_AVATAR', this.options.img);
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.visible = false;
});
});
},
// 瀹炴椂棰勮
realTime(data) {
this.previews = data;
+ },
+ // 鍏抽棴绐楀彛
+ closeDialog() {
+ this.options.img = store.getters.avatar
+ this.visible = false;
+ window.removeEventListener("resize", this.resizeHandler)
}
}
};
-</script>
\ No newline at end of file
+</script>
+<style scoped lang="scss">
+.user-info-head {
+ position: relative;
+ display: inline-block;
+ height: 120px;
+}
+
+.user-info-head:hover:after {
+ content: '+';
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ color: #eee;
+ background: rgba(0, 0, 0, 0.5);
+ font-size: 24px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ cursor: pointer;
+ line-height: 110px;
+ border-radius: 50%;
+}
+</style>
--
Gitblit v1.9.3