From 2841620be623be15c1832a783136a2b73c2b4424 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期四, 13 二月 2020 10:48:51 +0800 Subject: [PATCH] 初始化项目 --- ruoyi-ui/src/views/system/user/profile/userAvatar.vue | 138 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 138 insertions(+), 0 deletions(-) diff --git a/ruoyi-ui/src/views/system/user/profile/userAvatar.vue b/ruoyi-ui/src/views/system/user/profile/userAvatar.vue new file mode 100644 index 0000000..3faf560 --- /dev/null +++ b/ruoyi-ui/src/views/system/user/profile/userAvatar.vue @@ -0,0 +1,138 @@ +<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"> + <el-row> + <el-col :xs="24" :md="12" :style="{height: '350px'}"> + <vue-cropper + ref="cropper" + :img="options.img" + :info="true" + :autoCrop="options.autoCrop" + :autoCropWidth="options.autoCropWidth" + :autoCropHeight="options.autoCropHeight" + :fixedBox="options.fixedBox" + @realTime="realTime" + /> + </el-col> + <el-col :xs="24" :md="12" :style="{height: '350px'}"> + <div class="avatar-upload-preview"> + <img :src="previews.url" :style="previews.img" /> + </div> + </el-col> + </el-row> + <br /> + <el-row> + <el-col :lg="2" :md="2"> + <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-button icon="el-icon-plus" size="small" @click="changeScale(1)"></el-button> + </el-col> + <el-col :lg="{span: 1, offset: 1}" :md="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-button icon="el-icon-refresh-left" size="small" @click="rotateLeft()"></el-button> + </el-col> + <el-col :lg="{span: 1, offset: 1}" :md="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-button type="primary" size="small" @click="uploadImg()">鎻� 浜�</el-button> + </el-col> + </el-row> + </el-dialog> + </div> +</template> + +<script> +import store from "@/store"; +import { VueCropper } from "vue-cropper"; +import { uploadAvatar } from "@/api/system/user"; + +export default { + components: { VueCropper }, + props: { + user: { + type: Object + } + }, + data() { + return { + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 寮瑰嚭灞傛爣棰� + title: "淇敼澶村儚", + options: { + img: store.getters.avatar, //瑁佸壀鍥剧墖鐨勫湴鍧� + autoCrop: true, // 鏄惁榛樿鐢熸垚鎴浘妗� + autoCropWidth: 200, // 榛樿鐢熸垚鎴浘妗嗗搴� + autoCropHeight: 200, // 榛樿鐢熸垚鎴浘妗嗛珮搴� + fixedBox: true // 鍥哄畾鎴浘妗嗗ぇ灏� 涓嶅厑璁告敼鍙� + }, + previews: {} + }; + }, + methods: { + // 缂栬緫澶村儚 + editCropper() { + this.open = true; + }, + // 瑕嗙洊榛樿鐨勪笂浼犺涓� + requestUpload() { + }, + // 鍚戝乏鏃嬭浆 + rotateLeft() { + this.$refs.cropper.rotateLeft(); + }, + // 鍚戝彸鏃嬭浆 + rotateRight() { + this.$refs.cropper.rotateRight(); + }, + // 鍥剧墖缂╂斁 + changeScale(num) { + num = num || 1; + this.$refs.cropper.changeScale(num); + }, + // 涓婁紶棰勫鐞� + beforeUpload(file) { + if (file.type.indexOf("image/") == -1) { + this.msgError("鏂囦欢鏍煎紡閿欒锛岃涓婁紶鍥剧墖绫诲瀷,濡傦細JPG锛孭NG鍚庣紑鐨勬枃浠躲��"); + } else { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = () => { + this.options.img = reader.result; + }; + } + }, + // 涓婁紶鍥剧墖 + uploadImg() { + this.$refs.cropper.getCropBlob(data => { + let formData = new FormData(); + formData.append("avatarfile", data); + 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(); + }); + }); + }, + // 瀹炴椂棰勮 + realTime(data) { + this.previews = data; + } + } +}; +</script> \ No newline at end of file -- Gitblit v1.9.3