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