feat: 前端添加完善头像功能
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Yi.RBAC.Application.Contracts.Identity.Dtos.Account
|
||||||
|
{
|
||||||
|
public class UpdateIconDto
|
||||||
|
{
|
||||||
|
public string? Icon { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -73,6 +73,13 @@
|
|||||||
<param name="input"></param>
|
<param name="input"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Yi.RBAC.Application.Identity.AccountService.UpdateIconAsync(Yi.RBAC.Application.Contracts.Identity.Dtos.Account.UpdateIconDto)">
|
||||||
|
<summary>
|
||||||
|
更新头像
|
||||||
|
</summary>
|
||||||
|
<param name="icon"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:Yi.RBAC.Application.Identity.DeptService">
|
<member name="T:Yi.RBAC.Application.Identity.DeptService">
|
||||||
<summary>
|
<summary>
|
||||||
Dept服务实现
|
Dept服务实现
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ using Yi.RBAC.Domain.Identity.Repositories;
|
|||||||
using Yi.RBAC.Domain.Shared.Identity.ConstClasses;
|
using Yi.RBAC.Domain.Shared.Identity.ConstClasses;
|
||||||
using Yi.RBAC.Domain.Shared.Identity.Dtos;
|
using Yi.RBAC.Domain.Shared.Identity.Dtos;
|
||||||
using Yi.RBAC.Domain.Shared.Identity.Etos;
|
using Yi.RBAC.Domain.Shared.Identity.Etos;
|
||||||
|
using System.Net.WebSockets;
|
||||||
|
|
||||||
namespace Yi.RBAC.Application.Identity
|
namespace Yi.RBAC.Application.Identity
|
||||||
{
|
{
|
||||||
@@ -188,5 +189,19 @@ namespace Yi.RBAC.Application.Identity
|
|||||||
await _accountManager.RestPasswordAsync(userId, input.Password);
|
await _accountManager.RestPasswordAsync(userId, input.Password);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新头像
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="icon"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<bool> UpdateIconAsync(UpdateIconDto input)
|
||||||
|
{
|
||||||
|
var entity = await _userRepository.GetByIdAsync(_currentUser.Id);
|
||||||
|
entity.Icon = input.Icon;
|
||||||
|
await _userRepository.UpdateAsync(entity);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
Binary file not shown.
@@ -1,9 +1,9 @@
|
|||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
export function
|
export function
|
||||||
upload(type,data){
|
upload(data){
|
||||||
return request({
|
return request({
|
||||||
url: `/file/upload/${type}`,
|
url: `/file`,
|
||||||
headers:{"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"},
|
headers:{"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"},
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
data:data
|
data:data
|
||||||
|
|||||||
@@ -82,6 +82,15 @@ export function updateUserProfile(data) {
|
|||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 只修改用户头像
|
||||||
|
export function updateUserIcon(data) {
|
||||||
|
return request({
|
||||||
|
url: `/account/icon`,
|
||||||
|
method: 'put',
|
||||||
|
data:{icon:data}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 用户密码重置
|
// 用户密码重置
|
||||||
export function updateUserPwd(oldPassword, newPassword) {
|
export function updateUserPwd(oldPassword, newPassword) {
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
import "vue-cropper/dist/index.css";
|
import "vue-cropper/dist/index.css";
|
||||||
import { VueCropper } from "vue-cropper";
|
import { VueCropper } from "vue-cropper";
|
||||||
import { upload } from "@/api/file";
|
import { upload } from "@/api/file";
|
||||||
import { updateUserProfile } from "@/api/system/user";
|
import { updateUserIcon } from "@/api/system/user";
|
||||||
import useUserStore from '@/store/modules/user'
|
import useUserStore from '@/store/modules/user'
|
||||||
|
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
@@ -116,14 +116,11 @@ function uploadImg() {
|
|||||||
proxy.$refs.cropper.getCropBlob(data => {
|
proxy.$refs.cropper.getCropBlob(data => {
|
||||||
let formData = new FormData();
|
let formData = new FormData();
|
||||||
formData.append("file", data);
|
formData.append("file", data);
|
||||||
upload("image",formData).then(response => {
|
upload(formData).then(response => {
|
||||||
open.value = false;
|
open.value = false;
|
||||||
options.img = import.meta.env.VITE_APP_BASE_API +"/file/"+response.data[0];
|
options.img = import.meta.env.VITE_APP_BASE_API +"/file/"+response.data[0].id;
|
||||||
userStore.avatar = options.img;
|
userStore.avatar = options.img;
|
||||||
|
updateUserIcon(response.data[0].id).then(response2=>{
|
||||||
|
|
||||||
|
|
||||||
updateUserProfile({icon:response.data[0]}).then(response2=>{
|
|
||||||
proxy.$modal.msgSuccess("修改成功");
|
proxy.$modal.msgSuccess("修改成功");
|
||||||
visible.value = false;
|
visible.value = false;
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user