前端终极完善
This commit is contained in:
@@ -50,7 +50,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
if ( user_data!=null)
|
||||
{
|
||||
var token = MakeJwt.app(new jwtUser() {user=user_data,menuIds= menuList});
|
||||
return Result.Success().SetData(new { user = new { _user.id, _user.username, _user.introduction, _user.icon, _user.nick }, token });
|
||||
return Result.Success().SetData(new { user = new { user_data.id, user_data.username, user_data.introduction, user_data.icon, user_data.nick }, token });
|
||||
}
|
||||
return Result.Error();
|
||||
}
|
||||
|
||||
@@ -23,28 +23,42 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
{
|
||||
_userService = userService;
|
||||
_env = env;
|
||||
}
|
||||
}
|
||||
[HttpPost]
|
||||
[Authorize]
|
||||
public async Task<Result> EditIcon(IFormFile file)
|
||||
{
|
||||
var _user = HttpContext.GetCurrentUserInfo();
|
||||
var user_data = await _userService.GetUserById(_user.id);
|
||||
var type = "image";
|
||||
var filename = await Upload(type, file);
|
||||
user_data.icon = filename;
|
||||
await _userService.UpdateAsync(user_data);
|
||||
return Result.Success();
|
||||
try
|
||||
{
|
||||
var _user = HttpContext.GetCurrentUserInfo();
|
||||
var user_data = await _userService.GetUserById(_user.id);
|
||||
var type = "image";
|
||||
var filename = await Upload(type, file);
|
||||
user_data.icon = filename;
|
||||
await _userService.UpdateAsync(user_data);
|
||||
return Result.Success();
|
||||
}
|
||||
catch
|
||||
{
|
||||
return Result.Error();
|
||||
}
|
||||
}
|
||||
|
||||
[Route("{type}/{fileNmae}")]
|
||||
[Route("/api/{type}/{fileName}")]
|
||||
[HttpGet]
|
||||
public IActionResult Get(string type, string fileNmae)
|
||||
public IActionResult Get(string type, string fileName)
|
||||
{
|
||||
var path = Path.Combine($"wwwroot\\{type}", fileNmae);
|
||||
var stream = System.IO.File.OpenRead(path);
|
||||
var MimeType = Common.Helper.MimeHelper.GetMimeMapping(fileNmae);
|
||||
return new FileStreamResult(stream, MimeType);
|
||||
try
|
||||
{
|
||||
var path = Path.Combine($"wwwroot/{type}", fileName);
|
||||
var stream = System.IO.File.OpenRead(path);
|
||||
var MimeType = Common.Helper.MimeHelper.GetMimeMapping(fileName);
|
||||
return new FileStreamResult(stream, MimeType);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return new NotFoundResult();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -53,11 +67,10 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
/// <param name="type"></param>
|
||||
/// <param name="file"></param>
|
||||
/// <returns></returns>
|
||||
private async Task<string> Upload(string type,IFormFile file)
|
||||
private async Task<string> Upload(string type, IFormFile file)
|
||||
{
|
||||
|
||||
string filename = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName);
|
||||
using (var stream = new FileStream(Path.Combine($"wwwroot\\{type}", filename), FileMode.CreateNew, FileAccess.Write))
|
||||
using (var stream = new FileStream(Path.Combine($"wwwroot/{type}", filename), FileMode.CreateNew, FileAccess.Write))
|
||||
{
|
||||
await file.CopyToAsync(stream);
|
||||
}
|
||||
@@ -65,15 +78,15 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
return filename;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult>ExportFile()
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> ExportFile()
|
||||
{
|
||||
var userdata = await _userService.GetAllEntitiesTrueAsync();
|
||||
var userList = userdata.ToList();
|
||||
List<string> header = new() { "用户", "密码", "头像", "昵称", "邮箱", "ip","年龄", "个人介绍", "地址", "手机", "角色" };
|
||||
var filename= Common.Helper.ExcelHelper.CreateExcelFromList(userList,header,_env.ContentRootPath.ToString());
|
||||
List<string> header = new() { "用户", "密码", "头像", "昵称", "邮箱", "ip", "年龄", "个人介绍", "地址", "手机", "角色" };
|
||||
var filename = Common.Helper.ExcelHelper.CreateExcelFromList(userList, header, _env.ContentRootPath.ToString());
|
||||
var MimeType = Common.Helper.MimeHelper.GetMimeMapping(filename);
|
||||
return new FileStreamResult(new FileStream(Path.Combine(_env.ContentRootPath+@"\wwwroot\Excel", filename), FileMode.Open),MimeType);
|
||||
return new FileStreamResult(new FileStream(Path.Combine(_env.ContentRootPath + @"\wwwroot\Excel", filename), FileMode.Open), MimeType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,6 +103,11 @@ namespace Yi.Framework.ApiMicroservice
|
||||
#endregion
|
||||
//app.UseErrorHandlingService();
|
||||
|
||||
#region
|
||||
//<2F><>̬<EFBFBD>ļ<EFBFBD>ע<EFBFBD><D7A2>
|
||||
#endregion
|
||||
//app.UseStaticFiles();
|
||||
|
||||
#region
|
||||
//HttpsRedirectionע<6E><D7A2>
|
||||
#endregion
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"Cors_Enabled": true,
|
||||
"RabbitMQ_Enabled": false,
|
||||
"Redis_Enabled": true,
|
||||
"RedisSeed_Enabled": true,
|
||||
"RedisSeed_Enabled": false,
|
||||
"Kafka_Enabled": false,
|
||||
"MutiDB_Enabled": false,
|
||||
"DbList": [ "Sqlite", "Mysql", "Sqlserver", "Oracle" ],
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
@@ -93,7 +93,7 @@ namespace Yi.Framework.Core
|
||||
{
|
||||
for (int i = menu_data.children.Count() - 1; i >= 0; i--)
|
||||
{
|
||||
menu_data.children = menu_data.children.AsEnumerable().OrderBy(u => u.sort).ToList();
|
||||
menu_data.children = menu_data.children.AsEnumerable().OrderByDescending(u => u.sort).ToList();
|
||||
|
||||
if (menu_data.children != null || menu_data.children.Count() != 0)
|
||||
{
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Yi.Framework.WebCore.Init
|
||||
|
||||
if (_cacheClientDB.Get<SettingDto>(RedisConst.key)==null)
|
||||
{
|
||||
Newtonsoft.Json.JsonConvert.SerializeObject();
|
||||
//Newtonsoft.Json.JsonConvert.SerializeObject();
|
||||
_cacheClientDB.Add(RedisConst.key, new SettingDto()
|
||||
{
|
||||
ImageList_key = { "默认图片", "默认图片" } ,
|
||||
|
||||
28
Yi.Vue/src/components/ccAvatar.vue
Normal file
28
Yi.Vue/src/components/ccAvatar.vue
Normal file
@@ -0,0 +1,28 @@
|
||||
<template>
|
||||
<v-avatar :size="size" >
|
||||
<!-- <img src="https://z3.ax1x.com/2021/05/09/gJadhD.jpg" /> -->
|
||||
<img
|
||||
:src="baseurl +'/image/'+$store.state.user.user.icon"
|
||||
/>
|
||||
</v-avatar>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// Utilities
|
||||
// import { get } from 'vuex-pathify'
|
||||
|
||||
export default {
|
||||
name: 'ccAvatar',
|
||||
mounted() {
|
||||
this.baseurl = process.env.VUE_APP_BASE_API;
|
||||
},
|
||||
data:()=>({
|
||||
baseurl: "",
|
||||
}),
|
||||
props: {
|
||||
size: {
|
||||
type: Number,
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
@@ -65,8 +65,10 @@
|
||||
},
|
||||
title () {
|
||||
const matches = this.item.menu_name.match(/\b(\w)/g)
|
||||
|
||||
if(matches!=null)
|
||||
{
|
||||
return matches.join('')
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
@@ -48,8 +48,10 @@
|
||||
computed: {
|
||||
title () {
|
||||
const matches = this.item.menu_name.match(/\b(\w)/g)
|
||||
|
||||
if(matches!=null)
|
||||
{
|
||||
return matches.join('')
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -8,50 +8,26 @@
|
||||
transition="scale-transition"
|
||||
>
|
||||
<template v-slot:activator="{ attrs, on }">
|
||||
<v-btn
|
||||
class="ml-2"
|
||||
min-width="0"
|
||||
text
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
>
|
||||
<v-btn class="ml-2" min-width="0" text v-bind="attrs" v-on="on">
|
||||
<!-- <v-icon>mdi-account</v-icon> -->
|
||||
<v-avatar size="36" class="elevation-2">
|
||||
<!-- <img src="https://z3.ax1x.com/2021/05/09/gJadhD.jpg" /> -->
|
||||
<img
|
||||
:src="
|
||||
baseurl +
|
||||
'/File/ShowNoticeImg?filePath=' +
|
||||
$store.state.user.user.icon
|
||||
"
|
||||
/>
|
||||
</v-avatar>
|
||||
<ccAvatar :size="36" class="elevation-2"></ccAvatar>
|
||||
</v-btn>
|
||||
</template>
|
||||
|
||||
<v-list
|
||||
:tile="false"
|
||||
flat
|
||||
nav
|
||||
>
|
||||
<v-list :tile="false" flat nav>
|
||||
<app-bar-item to="/"
|
||||
><v-list-item-title v-text="'用户名:'+$store.state.user.user.username"
|
||||
/></app-bar-item>
|
||||
<app-bar-item to="/"
|
||||
><v-list-item-title v-text="'称号:'+$store.state.user.user.nick"
|
||||
/></app-bar-item>
|
||||
|
||||
<app-bar-item to="/"><v-list-item-title v-text="'用户名:橙子'" /></app-bar-item>
|
||||
<app-bar-item to="/"><v-list-item-title v-text="'称号:橙子'" /></app-bar-item>
|
||||
|
||||
<v-divider class="mb-2 mt-2"/>
|
||||
<v-divider class="mb-2 mt-2" />
|
||||
|
||||
<template v-for="(p, i) in profile">
|
||||
<v-divider
|
||||
v-if="p.divider"
|
||||
:key="`divider-${i}`"
|
||||
class="mb-2 mt-2"
|
||||
/>
|
||||
<v-divider v-if="p.divider" :key="`divider-${i}`" class="mb-2 mt-2" />
|
||||
|
||||
<app-bar-item
|
||||
v-else
|
||||
:key="`item-${i}`"
|
||||
to="/"
|
||||
>
|
||||
<app-bar-item v-else :key="`item-${i}`" to="/">
|
||||
<v-list-item-title v-text="p.title" />
|
||||
</app-bar-item>
|
||||
</template>
|
||||
@@ -60,16 +36,15 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'DefaultAccount',
|
||||
|
||||
export default {
|
||||
name: "DefaultAccount",
|
||||
data: () => ({
|
||||
profile: [
|
||||
{ title: '用户信息' },
|
||||
{ title: '设置' },
|
||||
{ title: "用户信息" },
|
||||
{ title: "设置" },
|
||||
{ divider: true },
|
||||
{ title: '登出' },
|
||||
{ title: "登出" },
|
||||
],
|
||||
}),
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -3,11 +3,7 @@
|
||||
<v-row justify="center">
|
||||
<v-col cols="12" md="4">
|
||||
<app-card class="mt-4 text-center">
|
||||
<v-img
|
||||
class="rounded-circle elevation-6 mt-n12 d-inline-block"
|
||||
src="https://demos.creative-tim.com/vue-material-dashboard/img/marc.aba54d65.jpg"
|
||||
width="128"
|
||||
/>
|
||||
<ccAvatar :size="128" class="rounded-circle elevation-6 mt-n12 d-inline-block"></ccAvatar>
|
||||
|
||||
<v-card-text class="text-center">
|
||||
<h6 class="text-h6 mb-2 text--secondary">
|
||||
@@ -321,8 +317,12 @@ export default {
|
||||
this.userInfo = resp.data;
|
||||
this.userInfo.password = "";
|
||||
this.editInfo = Object.assign({}, this.userInfo);
|
||||
this.$store.commit('SET_USER',this.userInfo)
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
menuApi.GetTopMenusByHttpUser().then((resp) => {
|
||||
this.menuInfo = resp.data;
|
||||
});
|
||||
@@ -333,9 +333,13 @@ choiceImg() {
|
||||
uploadImage() {
|
||||
const file = this.$refs.imgFile.files[0];
|
||||
let formData = new FormData();
|
||||
formData.append("img", file);
|
||||
formData.append("file", file);
|
||||
fileApi.EditIcon(formData).then(resp=>{
|
||||
this.init();
|
||||
this.$dialog.notify.success(resp.msg, {
|
||||
position: "top-right",
|
||||
timeout: 5000,
|
||||
});
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user