From 78fa1f005a9ec2581611e53d7eba8efeacb4df6e Mon Sep 17 00:00:00 2001 From: 田源 <tianyuan@vci-tech.com> Date: 星期三, 15 一月 2025 18:35:48 +0800 Subject: [PATCH] 调试头像接口 --- Source/plt-web/plt-web-ui/src/views/system/userInfo/index.vue | 6 +-- Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue | 6 +- Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue | 52 ++++++++++++++++++------- Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue | 3 + Source/plt-web/plt-web-ui/src/store/modules/user.js | 27 ++++++++++--- Source/plt-web/plt-web-ui/src/api/user.js | 17 ++++++++ Source/plt-web/plt-web-ui/src/page/index/top/index.vue | 5 ++ 7 files changed, 86 insertions(+), 30 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/api/user.js b/Source/plt-web/plt-web-ui/src/api/user.js index f66c597..279286c 100644 --- a/Source/plt-web/plt-web-ui/src/api/user.js +++ b/Source/plt-web/plt-web-ui/src/api/user.js @@ -53,3 +53,20 @@ params }); } +// 鑾峰彇澶村儚 +export function getUserPhoto(params) { + return request({ + url: "/api/userQueryController/getUserPhoto", + method: "get", + responseType:'blob', + params + }); +} +// 涓婁紶澶村儚 +export function updateUserPhoto(formData) { + return request({ + url: "/api/userQueryController/updateUserPhoto", + method: "post", + data:formData + }); +} diff --git a/Source/plt-web/plt-web-ui/src/page/index/top/index.vue b/Source/plt-web/plt-web-ui/src/page/index/top/index.vue index f11d053..ad400a3 100644 --- a/Source/plt-web/plt-web-ui/src/page/index/top/index.vue +++ b/Source/plt-web/plt-web-ui/src/page/index/top/index.vue @@ -77,7 +77,7 @@ </el-tooltip> <el-tooltip content="涓汉淇℃伅"> <div> - <img :src="userInfo.avatar" + <img :src="avatar" class="top-bar__img" @click="gotoInfo"> </div> @@ -184,6 +184,9 @@ listenfullscreen(this.setScreen); }, computed: { + avatar(){ + return this.userInfo.avatar + }, ...mapState({ showDebug: state => state.common.showDebug, showTheme: state => state.common.showTheme, diff --git a/Source/plt-web/plt-web-ui/src/store/modules/user.js b/Source/plt-web/plt-web-ui/src/store/modules/user.js index fc95d95..5f3aab8 100644 --- a/Source/plt-web/plt-web-ui/src/store/modules/user.js +++ b/Source/plt-web/plt-web-ui/src/store/modules/user.js @@ -4,7 +4,7 @@ import {isURL, validatenull} from '@/util/validate' import {deepClone, queryStringToObject} from '@/util/util' import website from '@/config/website' -import {loginByUsername, loginBySocial, loginBySso, getUserInfo, logout, refreshToken, getButtons} from '@/api/user' +import {loginByUsername, loginBySocial, loginBySso, getUserInfo, logout, refreshToken, getButtons,getUserPhoto} from '@/api/user' import {getTopMenu, getRoutes} from '@/api/system/menu' import md5 from 'js-md5' import func from "@/util/func"; @@ -286,12 +286,27 @@ state.tenantId = tenantId; setStore({name: 'tenantId', content: state.tenantId}) }, + // SET_USER_INFO: (state, userInfo) => { + // getUserPhoto().then(res => { + // userInfo.avatar = URL.createObjectURL(res.data); + // console.log('userInfo',userInfo) + // }) + // state.userInfo = userInfo; + // setStore({name: 'userInfo', content: state.userInfo}) + // }, SET_USER_INFO: (state, userInfo) => { - if (validatenull(userInfo.avatar)) { - userInfo.avatar = "/img/bg/img-logo.png"; - } - state.userInfo = userInfo; - setStore({name: 'userInfo', content: state.userInfo}) + getUserPhoto().then(res => { + // 灏� Blob 杞崲涓� Base64 + const reader = new FileReader(); + reader.onloadend = (result) => { + userInfo.avatar = reader.result; // 瀛樺偍 Base64 瀛楃涓� + + // 鏇存柊鐘舵�佸苟瀛樺偍鍒� localStorage + state.userInfo = userInfo; + setStore({ name: 'userInfo', content: state.userInfo }); + }; + reader.readAsDataURL(res.data); // 璋冪敤reader鏂规硶 + }); }, SET_ROLES: (state, roles) => { state.roles = roles; diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue index 00fc35a..15a8daa 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/bottomTable/index.vue @@ -165,7 +165,7 @@ <span slot-scope="{ node, data }" class="el-tree-node__label"> <span style="display: flex"> <i v-if="data.oId=='parentNode'" class="iconShow el-icon-s-home"></i> - <icon-show v-else :name="data.iconPath"></icon-show> + <icon-show v-if="data.oId!='parentNode' && data.iconPath && data.iconPath!='undefined'" :name="data.iconPath"></icon-show> {{ (node || {}).label }} </span> </span> @@ -476,9 +476,10 @@ ] }, { - label: '缂栧彿', + label: '搴忓彿', prop: 'seq', width: 100, + type:'number', labelWidth: 110, hide: false, rules: [ @@ -1324,7 +1325,6 @@ } else { return false; } - done(); }); }, diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue index d8a1f23..d9641f4 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/ui/uiDefine/rightRegion/plShow.vue @@ -185,7 +185,8 @@ prop: 'plExtAttr' }, { label: '鎻忚堪', - prop: 'plDesc' + prop: 'plDesc', + overHidden: true }] }, data: [], diff --git a/Source/plt-web/plt-web-ui/src/views/system/userInfo/index.vue b/Source/plt-web/plt-web-ui/src/views/system/userInfo/index.vue index f8250e3..c74a424 100644 --- a/Source/plt-web/plt-web-ui/src/views/system/userInfo/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/system/userInfo/index.vue @@ -19,7 +19,7 @@ <script> import option from "@/option/user/info"; -import {getUserInfo, updateInfo, updatePassword} from "@/api/system/user"; +import { updateUser } from "@/api/system/user/api"; import func from "../../../util/func"; import {changePassword} from "../../../api/user" import userAvatar from "./userAvatar"; @@ -44,7 +44,7 @@ methods: { handleSubmit(form, done) { if (this.index === 0) { - updateInfo(form).then(res => { + updateUser(form).then(res => { if (res.data.success) { this.$message({ type: "success", @@ -58,7 +58,6 @@ } done(); }, error => { - window.console.log(error); done(); }) } else { @@ -87,7 +86,6 @@ handleWitch() { if (this.index === 0) { this.form = {...this.userInfo}; - console.log(this.form); } }, handleTabClick(tabs) { diff --git a/Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue b/Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue index 37864cc..ce25b08 100644 --- a/Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue +++ b/Source/plt-web/plt-web-ui/src/views/system/userInfo/userAvatar.vue @@ -61,7 +61,9 @@ <script> import store from "@/store"; import { VueCropper } from "vue-cropper"; -import { uploadAvatar } from "@/api/system/user"; +import {getUserPhoto, updateUserPhoto} from "@/api/user"; +import {mapGetters} from "vuex"; +import {setStore} from '@/util/store' export default { components: { VueCropper }, @@ -74,18 +76,23 @@ visible: false, // 寮瑰嚭灞傛爣棰� title: "淇敼澶村儚", - options: { - img: this.avatar, //瑁佸壀鍥剧墖鐨勫湴鍧� + previews: {}, + resizeHandler: null + }; + }, + computed: { + ...mapGetters(["userInfo"]), + options() { + return { + img: this.userInfo.avatar, //瑁佸壀鍥剧墖鐨勫湴鍧� autoCrop: true, // 鏄惁榛樿鐢熸垚鎴浘妗� autoCropWidth: 200, // 榛樿鐢熸垚鎴浘妗嗗搴� autoCropHeight: 200, // 榛樿鐢熸垚鎴浘妗嗛珮搴� fixedBox: true, // 鍥哄畾鎴浘妗嗗ぇ灏� 涓嶅厑璁告敼鍙� outputType:"png", // 榛樿鐢熸垚鎴浘涓篜NG鏍煎紡 filename: 'avatar' // 鏂囦欢鍚嶇О - }, - previews: {}, - resizeHandler: null - }; + } + } }, methods: { // 缂栬緫澶村儚 @@ -125,7 +132,7 @@ // 涓婁紶棰勫鐞� beforeUpload(file) { if (file.type.indexOf("image/") == -1) { - this.$modal.msgError("鏂囦欢鏍煎紡閿欒锛岃涓婁紶鍥剧墖绫诲瀷,濡傦細JPG锛孭NG鍚庣紑鐨勬枃浠躲��"); + this.$message.error("鏂囦欢鏍煎紡閿欒锛岃涓婁紶鍥剧墖绫诲瀷,濡傦細JPG锛孭NG鍚庣紑鐨勬枃浠躲��"); } else { const reader = new FileReader(); reader.readAsDataURL(file); @@ -133,19 +140,21 @@ this.options.img = reader.result; this.options.filename = file.name; }; + this.$refs.cropper.refresh(); } }, // 涓婁紶鍥剧墖 uploadImg() { this.$refs.cropper.getCropBlob(data => { - console.log(data); + let formData = new FormData(); - formData.append("avatarfile", data, this.options.filename); - uploadAvatar(formData).then(response => { + formData.append("file", data, this.options.filename); + formData.append("username",this.userInfo.userId); + + updateUserPhoto(formData).then(response => { this.open = false; - this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl; - store.commit('SET_AVATAR', this.options.img); - this.$modal.msgSuccess("淇敼鎴愬姛"); + this.$message.success('淇敼鎴愬姛锛�'); + this.getUserInfo(); this.visible = false; }); }); @@ -156,9 +165,22 @@ }, // 鍏抽棴绐楀彛 closeDialog() { - this.options.img = store.getters.avatar + this.options.img = this.userInfo.avatar; // 鍏抽棴绐楀彛鏇存柊涓虹紦瀛樹腑鐨勫ご鍍忓湴鍧� 濡備慨鏀规垚鍔熸洿鏂颁负鏈�鏂扮殑 濡備慨鏀瑰悗鏈繚瀛樻洿鏂颁负缂撳瓨涓殑 this.visible = false; window.removeEventListener("resize", this.resizeHandler) + }, + // 鏇存柊缂撳瓨鍐呭 + getUserInfo(){ + getUserPhoto().then(res => { + // 灏� Blob 杞崲涓� Base64 + const reader = new FileReader(); + reader.onloadend = (result) => { + this.userInfo.avatar = reader.result; // 瀛樺偍 Base64 瀛楃涓� + + setStore({ name: 'userInfo', content: this.userInfo }); + }; + reader.readAsDataURL(res.data); // 璋冪敤reader鏂规硶 + }); } } }; -- Gitblit v1.9.3