前端终极完善

This commit is contained in:
橙子
2021-11-03 20:28:45 +08:00
parent 2e4f024928
commit ca815ec53e
15 changed files with 106 additions and 77 deletions

View File

@@ -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();
}

View File

@@ -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);
}
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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)
{

View File

@@ -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 = { "默认图片", "默认图片" } ,

View 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>

View File

@@ -65,8 +65,10 @@
},
title () {
const matches = this.item.menu_name.match(/\b(\w)/g)
if(matches!=null)
{
return matches.join('')
}
},
},

View File

@@ -48,8 +48,10 @@
computed: {
title () {
const matches = this.item.menu_name.match(/\b(\w)/g)
if(matches!=null)
{
return matches.join('')
}
},
},
}

View File

@@ -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>

View File

@@ -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,
});
})
},