diff --git a/Yi.Abp.Net8/framework/Yi.Framework.SqlSugarCore/YiFrameworkSqlSugarCoreModule.cs b/Yi.Abp.Net8/framework/Yi.Framework.SqlSugarCore/YiFrameworkSqlSugarCoreModule.cs index 25deb79c..afe09a78 100644 --- a/Yi.Abp.Net8/framework/Yi.Framework.SqlSugarCore/YiFrameworkSqlSugarCoreModule.cs +++ b/Yi.Abp.Net8/framework/Yi.Framework.SqlSugarCore/YiFrameworkSqlSugarCoreModule.cs @@ -70,19 +70,22 @@ namespace Yi.Framework.SqlSugarCore private void CodeFirst(IServiceProvider service) { - var moduleContainer = service.GetRequiredService(); - var db = service.GetRequiredService().SqlSugarClient; + var moduleContainer = service.GetRequiredService(); + var db = service.GetRequiredService().SqlSugarClient; + + //尝试创建数据库 + db.DbMaintenance.CreateDatabase(); + + List types = new List(); + foreach (var module in moduleContainer.Modules) + { + types.AddRange(module.Assembly.GetTypes().Where(x => x.GetCustomAttribute() != null).Where(x => x.GetCustomAttribute() is null)); + } + if (types.Count > 0) + { + db.CodeFirst.InitTables(types.ToArray()); + } - List types = new List(); - foreach (var module in moduleContainer.Modules) - { - types.AddRange(module.Assembly.GetTypes().Where(x => x.GetCustomAttribute() != null).Where(x => x.GetCustomAttribute() is null)); - } - if (types.Count > 0) - { - db.CodeFirst.InitTables(types.ToArray()); - } - } private async Task DataSeedAsync(IServiceProvider service) diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Discuss/DiscussUpdateInputVo.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Discuss/DiscussUpdateInputVo.cs index d5574786..e50f6753 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Discuss/DiscussUpdateInputVo.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Discuss/DiscussUpdateInputVo.cs @@ -12,7 +12,7 @@ namespace Yi.Framework.Bbs.Application.Contracts.Dtos.Discuss public string Content { get; set; } public string? Color { get; set; } - public List PermissionUserIds { get; set; } + public List? PermissionUserIds { get; set; } public DiscussPermissionTypeEnum PermissionType { get; set; } diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/ArticleService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/ArticleService.cs index 83400b0d..bdbd5157 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/ArticleService.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/ArticleService.cs @@ -55,7 +55,7 @@ namespace Yi.Framework.Bbs.Application.Services /// - /// 获取文章全部平铺信息 + /// 获取文章全部树级信息 /// /// /// diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.SqlSugarCore/DataSeeds/BbsDictionaryDataSeed.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.SqlSugarCore/DataSeeds/BbsDictionaryDataSeed.cs new file mode 100644 index 00000000..a3d59a8b --- /dev/null +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.SqlSugarCore/DataSeeds/BbsDictionaryDataSeed.cs @@ -0,0 +1,214 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; +using Yi.Framework.Rbac.Domain.Entities; +using Yi.Framework.SqlSugarCore.Abstractions; + +namespace Yi.Framework.Bbs.SqlSugarCore.DataSeeds +{ + public class BbsDictionaryDataSeed : IDataSeedContributor, ITransientDependency + { + private ISqlSugarRepository _repository; + private ISqlSugarRepository _typeRepository; + public BbsDictionaryDataSeed(ISqlSugarRepository repository, ISqlSugarRepository typeRepository) { + _repository=repository; + _typeRepository=typeRepository; + + } + public async Task SeedAsync(DataSeedContext context) + { + if (!await _typeRepository.IsAnyAsync(x => x.DictType== "bbs_type_lable")) + { + await _typeRepository.InsertManyAsync(GetSeedDictionaryTypeData()); + await _repository.InsertManyAsync(GetSeedDictionaryData()); + } + } + public List GetSeedDictionaryData() + { + List entities = new List(); + DictionaryEntity dictInfo1 = new DictionaryEntity() + { + + DictLabel = "前端", + DictValue = "0", + DictType = "bbs_type_lable", + OrderNum = 100, + Remark = "", + IsDeleted = false, + State = true + + }; + entities.Add(dictInfo1); + + DictionaryEntity dictInfo2 = new DictionaryEntity() + { + + DictLabel = "后端", + DictValue = "1", + DictType = "bbs_type_lable", + OrderNum = 99, + Remark = "", + IsDeleted = false, + State = true + }; + entities.Add(dictInfo2); + + DictionaryEntity dictInfo3 = new DictionaryEntity() + { + + DictLabel = "运维", + DictValue = "2", + DictType = "bbs_type_lable", + OrderNum = 98, + Remark = "", + IsDeleted = false, + State = true + }; + entities.Add(dictInfo3); + DictionaryEntity dictInfo4 = new DictionaryEntity() + { + + DictLabel = "测试", + DictValue = "3", + DictType = "bbs_type_lable", + OrderNum = 97, + Remark = "", + IsDeleted = false, + State = true + }; + entities.Add(dictInfo4); + + DictionaryEntity dictInfo5 = new DictionaryEntity() + { + + DictLabel = "UI", + DictValue = "4", + DictType = "bbs_type_lable", + OrderNum = 96, + Remark = "", + IsDeleted = false, + State = true + }; + entities.Add(dictInfo5); + + + DictionaryEntity dictInfo6 = new DictionaryEntity() + { + + DictLabel = "产品", + DictValue = "5", + DictType = "bbs_type_lable", + OrderNum = 95, + Remark = "", + IsDeleted = false, + State = true + }; + entities.Add(dictInfo6); + + DictionaryEntity dictInfo7 = new DictionaryEntity() + { + + DictLabel = "项目", + DictValue = "6", + DictType = "bbs_type_lable", + OrderNum = 94, + Remark = "", + IsDeleted = false, + State = true + }; + entities.Add(dictInfo7); + + DictionaryEntity dictInfo8 = new DictionaryEntity() + { + + DictLabel = "C#", + DictValue = "7", + DictType = "bbs_type_lable", + OrderNum = 93, + Remark = "", + IsDeleted = false, + State = true + }; + entities.Add(dictInfo8); + + DictionaryEntity dictInfo9 = new DictionaryEntity() + { + + DictLabel = ".Net", + DictValue = "8", + DictType = "bbs_type_lable", + OrderNum = 92, + Remark = "", + IsDeleted = false, + State = true + }; + entities.Add(dictInfo9); + + + DictionaryEntity dictInfo10 = new DictionaryEntity() + { + + DictLabel = ".NetCore", + DictValue = "9", + DictType = "bbs_type_lable", + OrderNum = 91, + Remark = "", + IsDeleted = false, + State = true + }; + entities.Add(dictInfo10); + + + DictionaryEntity dictInfo11 = new DictionaryEntity() + { + + DictLabel = "Asp.NetCore", + DictValue = "10", + DictType = "bbs_type_lable", + OrderNum = 90, + Remark = "", + IsDeleted = false, + State = true + }; + entities.Add(dictInfo11); + + DictionaryEntity dictInfo12 = new DictionaryEntity() + { + + DictLabel = "Abp.vNext", + DictValue = "11", + DictType = "bbs_type_lable", + OrderNum = 89, + Remark = "", + IsDeleted = false, + State = true + }; + entities.Add(dictInfo12); + + return entities; + } + + public List GetSeedDictionaryTypeData() + { + List entities = new List(); + DictionaryTypeEntity dict1 = new DictionaryTypeEntity() + { + + DictName = "BBS类型标签", + DictType = "bbs_type_lable", + OrderNum = 200, + Remark = "BBS类型标签", + IsDeleted = false, + State = true + }; + entities.Add(dict1); + return entities; + } + } +} diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.SqlSugarCore/DataSeeds/BbsMenuDataSeed.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.SqlSugarCore/DataSeeds/BbsMenuDataSeed.cs new file mode 100644 index 00000000..4c75b13e --- /dev/null +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.SqlSugarCore/DataSeeds/BbsMenuDataSeed.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SqlSugar.DistributedSystem.Snowflake; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Guids; +using Yi.Framework.Rbac.Domain.Entities; +using Yi.Framework.Rbac.Domain.Shared.Enums; +using Yi.Framework.SqlSugarCore.Abstractions; + +namespace Yi.Framework.Bbs.SqlSugarCore.DataSeeds +{ + public class BbsMenuDataSeed : IDataSeedContributor, ITransientDependency + { + private IGuidGenerator _guidGenerator; + private ISqlSugarRepository _repository; + public BbsMenuDataSeed(ISqlSugarRepository repository, IGuidGenerator guidGenerator) + { + _repository=repository; + _guidGenerator=guidGenerator; + } + public async Task SeedAsync(DataSeedContext context) + { + if (!await _repository.IsAnyAsync(x => x.MenuName == "BBS")) + { + await _repository.InsertManyAsync(GetSeedData()); + } + } + + public List GetSeedData() + { + List entities = new List(); + //BBS + MenuEntity bbs = new MenuEntity(_guidGenerator.Create()) + { + MenuName = "BBS", + MenuType = MenuTypeEnum.Catalogue, + Router = "/bbs", + IsShow = true, + IsLink = false, + MenuIcon = "monitor", + OrderNum = 91, + IsDeleted = false + }; + entities.Add(bbs); + + + + //板块管理 + MenuEntity plate = new MenuEntity(_guidGenerator.Create()) + { + + MenuName = "板块管理", + PermissionCode = "bbs:plate:list", + MenuType = MenuTypeEnum.Menu, + Router = "plate", + IsShow = true, + IsLink = false, + IsCache = true, + Component = "bbs/plate/index", + MenuIcon = "component", + OrderNum = 100, + ParentId = bbs.Id, + IsDeleted = false + }; + entities.Add(plate); + + //文章管理 + MenuEntity article = new MenuEntity(_guidGenerator.Create()) + { + + MenuName = "文章管理", + PermissionCode = "bbs:article:list", + MenuType = MenuTypeEnum.Menu, + Router = "article", + IsShow = true, + IsLink = false, + IsCache = true, + Component = "bbs/article/index", + MenuIcon = "documentation", + OrderNum = 99, + ParentId = bbs.Id, + IsDeleted = false + }; + entities.Add(article); + + + return entities; + } + } +} diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.SqlSugarCore/Repositories/ArticleRepository.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.SqlSugarCore/Repositories/ArticleRepository.cs index 7ba47774..9f6ffa9f 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.SqlSugarCore/Repositories/ArticleRepository.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.SqlSugarCore/Repositories/ArticleRepository.cs @@ -15,7 +15,7 @@ namespace Yi.Framework.Bbs.SqlSugarCore.Repositories public async Task> GetTreeAsync(Expression> where) { - return await _DbQueryable.Where(where).ToTreeAsync(x => x.Children, x => x.ParentId, 0); + return await _DbQueryable.Where(where).ToTreeAsync(x => x.Children, x => x.ParentId, Guid.Empty); } } } diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/FileManager/FileGetListOutputDto.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/FileManager/FileGetListOutputDto.cs new file mode 100644 index 00000000..26bdd8f3 --- /dev/null +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/Dtos/FileManager/FileGetListOutputDto.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; + +namespace Yi.Framework.Rbac.Application.FileManger +{ + public class FileGetListOutputDto:EntityDto + { + } +} diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IFileService.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IFileService.cs new file mode 100644 index 00000000..9653c305 --- /dev/null +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IFileService.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Http; +using Volo.Abp.Application.Services; +using Yi.Framework.Rbac.Application.FileManger; + +namespace Yi.Framework.Rbac.Application.Contracts.IServices +{ + public interface IFileService : IApplicationService + { + Task GetReturnPathAsync(Guid code, bool? isThumbnail); + Task> Post(IFormFileCollection file); + } +} diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/FileService.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/FileService.cs new file mode 100644 index 00000000..79c2dbf5 --- /dev/null +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Services/FileService.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Mapster; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; +using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Guids; +using Yi.Framework.Core.Enums; +using Yi.Framework.Core.Helper; +using Yi.Framework.Rbac.Application.Contracts.IServices; +using Yi.Framework.Rbac.Application.FileManger; +using Yi.Framework.Rbac.Domain.Entities; + +namespace Yi.Framework.Rbac.Application.Services +{ + public class FileService : ApplicationService, IFileService + { + private readonly IRepository _repository; + private readonly HttpContext _httpContext; + private IGuidGenerator _guidGenerator; + public FileService(IRepository repository, IHttpContextAccessor httpContextAccessor, IGuidGenerator guidGenerator) + { + _guidGenerator = guidGenerator; + _repository = repository; + _httpContext = httpContextAccessor.HttpContext; + } + + /// + /// 下载文件,是否缩略图 + /// + /// + [Route("file/{code}/{isThumbnail?}")] + public async Task Get([FromRoute] Guid code, [FromRoute] bool? isThumbnail) + { + var path = await GetReturnPathAsync(code, isThumbnail); + + var steam = await File.ReadAllBytesAsync(path); + + //考虑从路径中获取 + var fileContentType = MimeHelper.GetMimeMapping(Path.GetFileName(path)); + //设置附件下载,下载名称 + //_httpContext.FileAttachmentHandle(file.FileName); + return new FileContentResult(steam, fileContentType ?? @"text/plain"); + } + + public async Task GetReturnPathAsync(Guid code, bool? isThumbnail) + { + var file = await _repository.GetAsync(x => x.Id == code); + if (file is null) + { + throw new UserFriendlyException("文件编号未匹配", "404"); + } + var path = file.FilePath; + //如果为缩略图,需要修改路径 + if (isThumbnail is true) + { + path = $"wwwroot/{FileTypeEnum.Thumbnail}/{file.Id}{Path.GetExtension(file.FileName)}"; + } + //路径为: 文件路径/文件id+文件扩展名 + + if (!File.Exists(path)) + { + throw new UserFriendlyException("本地文件不存在", "404"); + } + + return path; + } + + /// + /// 上传文件 + /// + /// + public async Task> Post([FromForm] IFormFileCollection file) + { + if (file.Count() == 0) + { + throw new ArgumentException("文件上传为空!"); + } + //批量插入 + List entities = new(); + + foreach (var f in file) + { + FileAggregateRoot data = new(_guidGenerator.Create()); + data.FileSize = (decimal)f.Length / 1024; + data.FileName = f.FileName; + + var type = MimeHelper.GetFileType(f.FileName); + + //落盘文件,文件名为雪花id+自己的扩展名 + string filename = data.Id.ToString() + Path.GetExtension(f.FileName); + string typePath = $"wwwroot/{type}"; + if (!Directory.Exists(typePath)) + { + Directory.CreateDirectory(typePath); + } + var filePath = Path.Combine(typePath, filename); + data.FilePath = filePath; + + + //生成文件 + using (var stream = new FileStream(filePath, FileMode.CreateNew, FileAccess.ReadWrite)) + { + await f.CopyToAsync(stream); + + //如果是图片类型,还需要生成缩略图,当然,如果图片很小,直接复制过去即可 + if (FileTypeEnum.Image.Equals(type)) + { + string thumbnailPath = $"wwwroot/{FileTypeEnum.Thumbnail}"; + if (!Directory.Exists(thumbnailPath)) + { + Directory.CreateDirectory(thumbnailPath); + } + string thumbnailFilePath = Path.Combine(thumbnailPath, filename); + try + { + // _imageSharpManager.ImageCompress(f.FileName, f.OpenReadStream(), thumbnailFilePath); + } + catch + { + var result = new byte[stream.Length]; + await stream.ReadAsync(result, 0, result.Length); + await File.WriteAllBytesAsync(thumbnailFilePath, result); + } + } + + + }; + entities.Add(data); + } + await _repository.InsertManyAsync(entities); + return entities.Adapt>(); + + + } + } +} diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Yi.Framework.Rbac.Application.csproj b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Yi.Framework.Rbac.Application.csproj index fc3f243c..213c052e 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Yi.Framework.Rbac.Application.csproj +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application/Yi.Framework.Rbac.Application.csproj @@ -1,5 +1,10 @@ + + + + + @@ -15,8 +20,4 @@ - - - - diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/FileAggregateRoot.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/FileAggregateRoot.cs new file mode 100644 index 00000000..00f87f92 --- /dev/null +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Domain/Entities/FileAggregateRoot.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SqlSugar; +using Volo.Abp.Auditing; +using Volo.Abp.Domain.Entities; + +namespace Yi.Framework.Rbac.Domain.Entities +{ + public class FileAggregateRoot : AggregateRoot, IAuditedObject + { + public FileAggregateRoot() + { + } + + public FileAggregateRoot(Guid fileId) + { + this.Id = fileId; + } + + [SugarColumn(IsPrimaryKey = true)] + public override Guid Id { get; protected set; } + /// + /// 文件大小 + /// + [SugarColumn(ColumnName = "FileSize")] + public decimal FileSize { get; set; } + /// + /// 文件名 + /// + [SugarColumn(ColumnName = "FileName")] + public string FileName { get; set; } + /// + /// 文件路径 + /// + [SugarColumn(ColumnName = "FilePath")] + public string FilePath { get; set; } + + public DateTime CreationTime { get; set; } + public Guid? CreatorId { get; set; } + + public Guid? LastModifierId { get; set; } + + public DateTime? LastModificationTime { get; set; } + } +} diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuDataSeed.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuDataSeed.cs index 16e30083..8c4ae728 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuDataSeed.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/DataSeeds/MenuDataSeed.cs @@ -652,7 +652,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds IsCache = true, Component = "system/role/index", MenuIcon = "peoples", - OrderNum = 100, + OrderNum = 99, ParentId = system.Id, IsDeleted = false }; @@ -720,7 +720,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds IsCache = true, Component = "system/menu/index", MenuIcon = "tree-table", - OrderNum = 100, + OrderNum = 98, ParentId = system.Id, IsDeleted = false }; @@ -787,7 +787,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds IsCache = true, Component = "system/dept/index", MenuIcon = "tree", - OrderNum = 100, + OrderNum = 97, ParentId = system.Id, IsDeleted = false }; @@ -856,7 +856,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds IsCache = true, Component = "system/post/index", MenuIcon = "post", - OrderNum = 100, + OrderNum = 96, ParentId = system.Id, IsDeleted = false }; @@ -923,7 +923,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds IsCache = true, Component = "system/dict/index", MenuIcon = "dict", - OrderNum = 100, + OrderNum = 95, ParentId = system.Id, IsDeleted = false }; @@ -991,7 +991,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds IsCache = true, Component = "system/config/index", MenuIcon = "edit", - OrderNum = 100, + OrderNum = 94, ParentId = system.Id, IsDeleted = false }; @@ -1058,7 +1058,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.DataSeeds IsShow = true, IsLink = false, MenuIcon = "log", - OrderNum = 100, + OrderNum = 93, ParentId = system.Id, IsDeleted = false }; diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/Repositories/UserRepository.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/Repositories/UserRepository.cs index e5d95b7d..4d776466 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/Repositories/UserRepository.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.SqlSugarCore/Repositories/UserRepository.cs @@ -73,7 +73,7 @@ namespace Yi.Framework.Rbac.SqlSugarCore.Repositories user.Roles = new List(); userRoleMenu.User = user.Adapt(); - + userRoleMenu.Menus = userRoleMenu.Menus.OrderByDescending(x => x.OrderNum).ToHashSet(); return userRoleMenu; } } diff --git a/Yi.Abp.Net8/src/Yi.Abp.Web/Logs/log-20231215.txt b/Yi.Abp.Net8/src/Yi.Abp.Web/Logs/log-20231215.txt new file mode 100644 index 00000000..b9ae1d97 --- /dev/null +++ b/Yi.Abp.Net8/src/Yi.Abp.Web/Logs/log-20231215.txt @@ -0,0 +1,84 @@ +2023-12-15 00:10:51.343 +08:00 [INF] Yi框架-Abp.vNext,启动! +2023-12-15 00:10:57.118 +08:00 [INF] Loaded ABP modules: +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Abp.Web.YiAbpWebModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Abp.SqlsugarCore.YiAbpSqlSugarCoreModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Abp.Domain.YiAbpDomainModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Abp.Domain.Shared.YiAbpDomainSharedModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Rbac.Domain.Shared.YiFrameworkRbacDomainSharedModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainSharedModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Data.AbpDataModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Mapster.YiFrameworkMapsterModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Core.YiFrameworkCoreModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Bbs.Domain.Shared.YiFrameworkBbsDomainSharedModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Rbac.Domain.YiFrameworkRbacDomainModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.AspNetCore.SignalR.AbpAspNetCoreSignalRModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Json.AbpJsonAbstractionsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Bbs.Domain.YiFrameworkBbsDomainModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Rbac.SqlSugarCore.YiFrameworkRbacSqlSugarCoreModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.SqlSugarCore.YiFrameworkSqlSugarCoreModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Bbs.SqlSugarCore.YiFrameworkBbsSqlSugarCoreModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Abp.Application.YiAbpApplicationModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Abp.Application.Contracts.YiAbpApplicationContractsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Rbac.Application.Contracts.YiFrameworkRbacApplicationContractsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Ddd.Application.Contracts.YiFrameworkDddApplicationContractsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Bbs.Application.Contracts.YiFrameworkBbsApplicationContractsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Rbac.Application.YiFrameworkRbacApplicationModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Ddd.Application.YiFrameworkDddApplicationModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.BackgroundWorkers.Quartz.AbpBackgroundWorkersQuartzModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Quartz.AbpQuartzModule +2023-12-15 00:10:57.120 +08:00 [INF] - Yi.Framework.Bbs.Application.YiFrameworkBbsApplicationModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.UI.AbpUiModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule +2023-12-15 00:10:57.120 +08:00 [INF] - Volo.Abp.Swashbuckle.AbpSwashbuckleModule +2023-12-15 00:10:57.121 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule +2023-12-15 00:10:57.121 +08:00 [INF] - Volo.Abp.AspNetCore.Authentication.JwtBearer.AbpAspNetCoreAuthenticationJwtBearerModule +2023-12-15 00:10:57.121 +08:00 [INF] - Yi.Framework.AspNetCore.YiFrameworkAspNetCoreModule +2023-12-15 00:10:58.044 +08:00 [INF] User profile is available. Using 'C:\Users\45431\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest. +2023-12-15 00:10:58.208 +08:00 [INF] Initialized all ABP modules. +2023-12-15 00:10:58.431 +08:00 [INF] Now listening on: http://[::]:19001 +2023-12-15 00:10:58.431 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2023-12-15 00:10:58.431 +08:00 [INF] Hosting environment: Development +2023-12-15 00:10:58.431 +08:00 [INF] Content root path: D:\CSharp\Yi\Yi.Abp.Net8\src\Yi.Abp.Web diff --git a/Yi.Bbs.Vue3/.env.development b/Yi.Bbs.Vue3/.env.development index a26e1ee1..b78611ef 100644 --- a/Yi.Bbs.Vue3/.env.development +++ b/Yi.Bbs.Vue3/.env.development @@ -1,4 +1,5 @@ # 接口前缀 VITE_APP_BASEAPI="/api-dev" VITE_APP_URL="http://123.207.63.87:19001/api/app" +# VITE_APP_URL="http://localhost:19001/api/app" VITE_APP_ENV_NAME = "dev" \ No newline at end of file diff --git a/Yi.Bbs.Vue3/.env.production b/Yi.Bbs.Vue3/.env.production index 3d11abbd..aa1823ea 100644 --- a/Yi.Bbs.Vue3/.env.production +++ b/Yi.Bbs.Vue3/.env.production @@ -1,4 +1,4 @@ # 接口前缀 VITE_APP_BASEAPI="/prod-api" VITE_APP_URL="http://123.207.63.87:19001/api/app" -VITE_APP_ENV_NAME = "production" \ No newline at end of file +VITE_APP_ENV_NAME = "pro" \ No newline at end of file diff --git a/Yi.Bbs.Vue3/package-lock.json b/Yi.Bbs.Vue3/package-lock.json index 7e77e335..5ab5fb8b 100644 --- a/Yi.Bbs.Vue3/package-lock.json +++ b/Yi.Bbs.Vue3/package-lock.json @@ -19,10 +19,12 @@ "mavon-editor": "^3.0.0", "nprogress": "^0.2.0", "pinia": "^2.0.32", + "pinia-plugin-persistedstate": "^3.2.0", "vue": "^3.2.47", "vue-cropper": "1.0.3", "vue-router": "^4.1.6", - "yarm": "^0.4.0" + "yarm": "^0.4.0", + "yarn": "^1.22.21" }, "devDependencies": { "@vitejs/plugin-vue": "^4.0.0", @@ -30,7 +32,8 @@ "sass": "1.52.1", "unplugin-auto-import": "^0.15.0", "unplugin-vue-components": "^0.24.0", - "vite": "^4.1.3" + "vite": "^4.1.3", + "vite-plugin-require-transform": "^1.0.21" } }, "node_modules/@ampproject/remapping": { @@ -53,12 +56,13 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" @@ -109,12 +113,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.21.1", - "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.21.1.tgz", - "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "version": "7.23.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@babel/types": "^7.21.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -181,34 +185,34 @@ "dev": true }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.23.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -258,30 +262,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.23.4", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -311,13 +315,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -325,9 +329,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.21.2", - "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.2.tgz", - "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", + "version": "7.23.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -345,34 +349,34 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.15", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.2", - "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.21.2.tgz", - "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", + "version": "7.23.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.2", - "@babel/types": "^7.21.2", - "debug": "^4.1.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -380,13 +384,13 @@ } }, "node_modules/@babel/types": { - "version": "7.21.2", - "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.21.2.tgz", - "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "version": "7.23.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1524,7 +1528,7 @@ }, "node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "resolved": "https://mirrors.cloud.tencent.com/npm/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { @@ -1652,7 +1656,7 @@ }, "node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "resolved": "https://mirrors.cloud.tencent.com/npm/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { @@ -1666,8 +1670,8 @@ }, "node_modules/chalk/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "resolved": "https://mirrors.cloud.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, "engines": { "node": ">=0.8.0" @@ -1715,7 +1719,7 @@ }, "node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "resolved": "https://mirrors.cloud.tencent.com/npm/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { @@ -1724,8 +1728,8 @@ }, "node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "resolved": "https://mirrors.cloud.tencent.com/npm/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "node_modules/colorette": { @@ -2294,8 +2298,8 @@ }, "node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "resolved": "https://mirrors.cloud.tencent.com/npm/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { "node": ">=4" @@ -2482,7 +2486,7 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "resolved": "https://mirrors.cloud.tencent.com/npm/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, @@ -2898,6 +2902,14 @@ } } }, + "node_modules/pinia-plugin-persistedstate": { + "version": "3.2.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz", + "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==", + "peerDependencies": { + "pinia": "^2.0.0" + } + }, "node_modules/pinia/node_modules/vue-demi": { "version": "0.13.11", "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz", @@ -3226,7 +3238,7 @@ }, "node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "resolved": "https://mirrors.cloud.tencent.com/npm/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { @@ -3660,6 +3672,18 @@ } } }, + "node_modules/vite-plugin-require-transform": { + "version": "1.0.21", + "resolved": "https://mirrors.cloud.tencent.com/npm/vite-plugin-require-transform/-/vite-plugin-require-transform-1.0.21.tgz", + "integrity": "sha512-A3SrHhVg9tCW35O7E8kcuB71YTEdVd3EaM1zh6gbH4zxy4WzXSfcNf0UiWmaHHhr6wdFhiiAGdpR6S0SUxXkGQ==", + "dev": true, + "dependencies": { + "@babel/generator": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, "node_modules/vue": { "version": "3.2.47", "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz", @@ -3863,6 +3887,19 @@ "resolved": "https://registry.npmmirror.com/yarm/-/yarm-0.4.0.tgz", "integrity": "sha512-yCoX5QCA5Upb+VP7/UBuNGBz7MO5oWyc6degv5AifeGnakpaHeNwE/SNOPMefFKpQBionZyUeRdBo63Dl+awDQ==" }, + "node_modules/yarn": { + "version": "1.22.21", + "resolved": "https://registry.npmmirror.com/yarn/-/yarn-1.22.21.tgz", + "integrity": "sha512-ynXaJsADJ9JiZ84zU25XkPGOvVMmZ5b7tmTSpKURYwgELdjucAOydqIOrOfTxVYcNXe91xvLZwcRh68SR3liCg==", + "hasInstallScript": true, + "bin": { + "yarn": "bin/yarn.js", + "yarnpkg": "bin/yarn.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/zrender": { "version": "5.4.3", "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.3.tgz", @@ -3890,12 +3927,13 @@ "dev": true }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" } }, "@babel/compat-data": { @@ -3936,12 +3974,12 @@ } }, "@babel/generator": { - "version": "7.21.1", - "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.21.1.tgz", - "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "version": "7.23.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "requires": { - "@babel/types": "^7.21.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -3997,28 +4035,28 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true }, "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.23.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-module-imports": { @@ -4056,24 +4094,24 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.23.4", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/helper-validator-option": { @@ -4094,20 +4132,20 @@ } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.21.2", - "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.2.tgz", - "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==" + "version": "7.23.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==" }, "@babel/standalone": { "version": "7.21.2", @@ -4116,42 +4154,42 @@ "dev": true }, "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.15", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.21.2", - "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.21.2.tgz", - "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", + "version": "7.23.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.2", - "@babel/types": "^7.21.2", - "debug": "^4.1.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.21.2", - "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.21.2.tgz", - "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "version": "7.23.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -4985,7 +5023,7 @@ }, "ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "resolved": "https://mirrors.cloud.tencent.com/npm/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { @@ -5095,7 +5133,7 @@ }, "chalk": { "version": "2.4.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "resolved": "https://mirrors.cloud.tencent.com/npm/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { @@ -5106,8 +5144,8 @@ "dependencies": { "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "resolved": "https://mirrors.cloud.tencent.com/npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true } } @@ -5143,7 +5181,7 @@ }, "color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "resolved": "https://mirrors.cloud.tencent.com/npm/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { @@ -5152,8 +5190,8 @@ }, "color-name": { "version": "1.1.3", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "resolved": "https://mirrors.cloud.tencent.com/npm/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "colorette": { @@ -5611,8 +5649,8 @@ }, "has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "resolved": "https://mirrors.cloud.tencent.com/npm/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "hash-sum": { @@ -5759,7 +5797,7 @@ }, "js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "resolved": "https://mirrors.cloud.tencent.com/npm/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, @@ -6089,6 +6127,12 @@ } } }, + "pinia-plugin-persistedstate": { + "version": "3.2.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz", + "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==", + "requires": {} + }, "pkg-types": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.2.tgz", @@ -6344,7 +6388,7 @@ }, "supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "resolved": "https://mirrors.cloud.tencent.com/npm/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { @@ -6662,6 +6706,18 @@ "rollup": "^3.10.0" } }, + "vite-plugin-require-transform": { + "version": "1.0.21", + "resolved": "https://mirrors.cloud.tencent.com/npm/vite-plugin-require-transform/-/vite-plugin-require-transform-1.0.21.tgz", + "integrity": "sha512-A3SrHhVg9tCW35O7E8kcuB71YTEdVd3EaM1zh6gbH4zxy4WzXSfcNf0UiWmaHHhr6wdFhiiAGdpR6S0SUxXkGQ==", + "dev": true, + "requires": { + "@babel/generator": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, "vue": { "version": "3.2.47", "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz", @@ -6830,6 +6886,11 @@ "resolved": "https://registry.npmmirror.com/yarm/-/yarm-0.4.0.tgz", "integrity": "sha512-yCoX5QCA5Upb+VP7/UBuNGBz7MO5oWyc6degv5AifeGnakpaHeNwE/SNOPMefFKpQBionZyUeRdBo63Dl+awDQ==" }, + "yarn": { + "version": "1.22.21", + "resolved": "https://registry.npmmirror.com/yarn/-/yarn-1.22.21.tgz", + "integrity": "sha512-ynXaJsADJ9JiZ84zU25XkPGOvVMmZ5b7tmTSpKURYwgELdjucAOydqIOrOfTxVYcNXe91xvLZwcRh68SR3liCg==" + }, "zrender": { "version": "5.4.3", "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.3.tgz", diff --git a/Yi.Bbs.Vue3/package.json b/Yi.Bbs.Vue3/package.json index 4e367592..f83b8fcc 100644 --- a/Yi.Bbs.Vue3/package.json +++ b/Yi.Bbs.Vue3/package.json @@ -19,10 +19,12 @@ "mavon-editor": "^3.0.0", "nprogress": "^0.2.0", "pinia": "^2.0.32", + "pinia-plugin-persistedstate": "^3.2.0", "vue": "^3.2.47", "vue-cropper": "1.0.3", "vue-router": "^4.1.6", - "yarm": "^0.4.0" + "yarm": "^0.4.0", + "yarn": "^1.22.21" }, "devDependencies": { "@vitejs/plugin-vue": "^4.0.0", @@ -30,6 +32,7 @@ "sass": "1.52.1", "unplugin-auto-import": "^0.15.0", "unplugin-vue-components": "^0.24.0", - "vite": "^4.1.3" + "vite": "^4.1.3", + "vite-plugin-require-transform": "^1.0.21" } } diff --git a/Yi.Bbs.Vue3/src/assets/logo.ico b/Yi.Bbs.Vue3/public/logo.ico similarity index 100% rename from Yi.Bbs.Vue3/src/assets/logo.ico rename to Yi.Bbs.Vue3/public/logo.ico diff --git a/Yi.Bbs.Vue3/src/components/AvatarInfo.vue b/Yi.Bbs.Vue3/src/components/AvatarInfo.vue index 81bd78a0..b2fc999f 100644 --- a/Yi.Bbs.Vue3/src/components/AvatarInfo.vue +++ b/Yi.Bbs.Vue3/src/components/AvatarInfo.vue @@ -1,131 +1,144 @@ -